graft.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. /*******************************************************************************
  2. * KindEditor - WYSIWYG HTML Editor for Internet
  3. * Copyright (C) 2006-2011 kindsoft.net
  4. *
  5. * @author Roddy <luolonghao@gmail.com>
  6. * @site http://www.kindsoft.net/
  7. * @licence http://www.kindsoft.net/license.php
  8. *******************************************************************************/
  9. KindEditor.plugin('graft', function(K) {
  10. var self = this, name = 'graft',
  11. uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
  12. allowUploadGraft = K.undef(self.allowUploadGraft, true),
  13. lang = self.lang(name + '.');
  14. if(typeof jQuery == 'undefined') {
  15. K.options.errorMsgHandler(lang.depJQueryError, "error");
  16. return;
  17. } else {
  18. K.loadStyle(K.options.pluginsPath+"graft/css/scrawl.css");
  19. K.loadScript(K.options.pluginsPath+"graft/scrawl.js");
  20. }
  21. self.plugin.graftDialog = function(options) {
  22. var clickFn = options.clickFn;
  23. var html = [
  24. '<div class="scrawl-main" id="scrawl-main">',
  25. //绘图区域
  26. '<div class="hot">',
  27. '<div class="drawBoard border_style">',
  28. '<canvas id="canvas-borad" class="brushBorad">你的浏览器不支持 canvas 绘图</canvas>',
  29. '<div class="picBoard" id="picBoard" style=""></div>',
  30. '</div>',
  31. '<div class="operateBar">',
  32. '<button id="J_prevStep" class="prevStep" title="上一步">',
  33. '<em class="icon"></em>',
  34. '</button>',
  35. '<button id="J_nextStep" class="nextStep" title="下一步">',
  36. '<em class="icon"></em>',
  37. '</button>',
  38. '<button id="J_clearBoard" class="clearBoard" title="清空">',
  39. '<em class="icon"></em>',
  40. '</button>',
  41. '</div>',
  42. '</div>',
  43. //绘图区域 end
  44. //工具栏
  45. '<div class="drawToolbar border_style">',
  46. '<div class="colorBar">',
  47. '<span data-color="#0099CC" style="background:#0099CC;" class="active"></span>',
  48. '<span data-color="#003366" style="background:#003366;"></span>',
  49. '<span data-color="#993333" style="background:#993333;"></span>',
  50. '<span data-color="#FF9900" style="background:#FF9900;"></span>',
  51. '<span data-color="#0000CC" style="background:#0000CC;"></span>',
  52. '<span data-color="#CC3333" style="background:#CC3333;"></span>',
  53. '<span data-color="#F4D03F" style="background:#641E16;"></span>',
  54. '<span data-color="#4A235A" style="background:#4A235A;"></span>',
  55. '<span data-color="#009966" style="background:#009966;"></span>',
  56. '<span data-color="#ffff00" style="background:#ffff00;"></span>',
  57. '<span data-color="#7D6608" style="background:#7D6608;"></span>',
  58. '<span data-color="#FF33CC" style="background:#FF33CC;"></span>',
  59. '<span data-color="#990066" style="background:#990066;"></span>',
  60. '<span data-color="#ffffff" style="background:#ffffff;"></span>',
  61. '<span data-color="#9bbb59" style="background:#9bbb59;"></span>',
  62. '<span data-color="#CCFFFF" style="background:#CCFFFF;"></span>',
  63. '<span data-color="#FFCCCC" style="background:#FFCCCC;"></span>',
  64. '<span data-color="#CC99CC" style="background:#CC99CC;"></span>',
  65. '</div>',
  66. //笔刷设置
  67. '<div class="sectionBar">',
  68. '<em class="brushIcon"></em>',
  69. '<a href="javascript:void(0)" class="brush-size size1">1</a>',
  70. '<a href="javascript:void(0)" class="brush-size size2">3</a>',
  71. '<a href="javascript:void(0)" class="brush-size size3">5</a>',
  72. '<a href="javascript:void(0)" class="brush-size size4">7</a>',
  73. '</div>',
  74. '<div class="sectionBar">',
  75. '<em class="eraserIcon"></em>',
  76. '<a href="javascript:void(0)" class="eraser-size size1">5</a>',
  77. '<a href="javascript:void(0)" class="eraser-size size2">10</a>',
  78. '<a href="javascript:void(0)" class="eraser-size size3">15</a>',
  79. '<a href="javascript:void(0)" class="eraser-size size4">20</a>',
  80. '</div>',
  81. '<div class="sectionBar">',
  82. '<em class="blurIcon"></em>',
  83. '<a href="javascript:void(0)" class="blur-size size1">2</a>',
  84. '<a href="javascript:void(0)" class="blur-size size2">4</a>',
  85. '<a href="javascript:void(0)" class="blur-size size3">6</a>',
  86. '<a href="javascript:void(0)" class="blur-size size4">8</a>',
  87. '</div>',
  88. //end 笔刷设置
  89. '<div class="sectionBar">',
  90. '<span id="clearSetting" class="clearSetting">',
  91. '<em class="icon"></em>',
  92. '<em class="text">初始化设置</em>',
  93. '</span>',
  94. '</div>',
  95. '<div class="sectionBar">',
  96. '<div id="J_addImg" class="addImgH">',
  97. '<em class="icon"></em>',
  98. '<em class="text">添加背景</em>',
  99. '<input type="file" class="upload" id="J_canvas_bg" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"/>',
  100. '</div>',
  101. '</div>',
  102. '<div class="sectionBar">',
  103. '<span id="J_removeImg" class="removeImg">',
  104. '<em class="icon"></em>',
  105. '<em class="text">删除背景</em>',
  106. '</span>',
  107. '</div>',
  108. '</div>'
  109. ].join('');
  110. var dialog = self.createDialog({
  111. name : name,
  112. width : 750,
  113. height : 440,
  114. title : self.lang(name),
  115. body : html,
  116. yesBtn : {
  117. name : lang.btnText,
  118. click : function(e) {
  119. if (dialog.isLoading) {
  120. return;
  121. }
  122. if (canvas.isEmpty()) {
  123. K.options.errorMsgHandler(lang.empty, "error");
  124. return;
  125. }
  126. canvas.save(function(data) {
  127. //上传涂鸦到服务器
  128. if (allowUploadGraft) {
  129. dialog.showLoading(self.lang('uploadLoading'));
  130. $.post(uploadJson, {
  131. img_base64_data : data,
  132. fileType : "image",
  133. base64 : 1
  134. }, function(res) {
  135. dialog.hideLoading();
  136. if (res.code == "000") {
  137. K.options.errorMsgHandler(lang.uploadSuccess, "ok");
  138. clickFn.call(self, res.data.url);
  139. self.hideDialog().focus();
  140. } else {
  141. K.options.errorMsgHandler(lang.uploadFaild, "error");
  142. }
  143. }, "json");
  144. } else {
  145. clickFn.call(self, data);
  146. self.hideDialog().focus();
  147. }
  148. });
  149. }
  150. }
  151. });
  152. //console.log(div);
  153. //var urlBox = K('[name="url"]', div),
  154. // viewServerBtn = K('[name="viewServer"]', div),
  155. // titleBox = K('[name="title"]', div);
  156. var canvas = new Canvas({
  157. canvasId : "canvas-borad",
  158. width : 600,
  159. height : 320
  160. });
  161. };
  162. self.clickToolbar(name, function() {
  163. self.plugin.graftDialog({
  164. clickFn : function(url) {
  165. self.exec('insertimage', url);
  166. }
  167. });
  168. });
  169. });