addons.js 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. define([], function () {
  2. require.config({
  3. paths: {
  4. 'jquery-colorpicker': '../addons/cms/js/jquery.colorpicker.min',
  5. 'jquery-autocomplete': '../addons/cms/js/jquery.autocomplete',
  6. 'jquery-tagsinput': '../addons/cms/js/jquery.tagsinput',
  7. 'clipboard': '../addons/cms/js/clipboard.min',
  8. },
  9. shim: {
  10. 'jquery-colorpicker': {
  11. deps: ['jquery'],
  12. exports: '$.fn.extend'
  13. },
  14. 'jquery-autocomplete': {
  15. deps: ['jquery'],
  16. exports: '$.fn.extend'
  17. },
  18. 'jquery-tagsinput': {
  19. deps: ['jquery', 'jquery-autocomplete', 'css!../addons/cms/css/jquery.tagsinput.min.css'],
  20. exports: '$.fn.extend'
  21. }
  22. }
  23. });
  24. require.config({
  25. paths: {
  26. 'summernote': '../addons/summernote/lang/summernote-zh-CN.min'
  27. },
  28. shim: {
  29. 'summernote': ['../addons/summernote/js/summernote.min', 'css!../addons/summernote/css/summernote.min.css'],
  30. }
  31. });
  32. require(['form', 'upload'], function (Form, Upload) {
  33. var _bindevent = Form.events.bindevent;
  34. Form.events.bindevent = function (form) {
  35. _bindevent.apply(this, [form]);
  36. try {
  37. //绑定summernote事件
  38. if ($(Config.summernote.classname || '.editor', form).length > 0) {
  39. var selectUrl = typeof Config !== 'undefined' && Config.modulename === 'index' ? 'user/attachment' : 'general/attachment/select';
  40. require(['summernote'], function () {
  41. var imageButton = function (context) {
  42. var ui = $.summernote.ui;
  43. var button = ui.button({
  44. contents: '<i class="fa fa-file-image-o"/>',
  45. tooltip: __('Choose'),
  46. click: function () {
  47. parent.Fast.api.open(selectUrl + "?element_id=&multiple=true&mimetype=image/", __('Choose'), {
  48. callback: function (data) {
  49. var urlArr = data.url.split(/\,/);
  50. $.each(urlArr, function () {
  51. var url = Fast.api.cdnurl(this, true);
  52. context.invoke('editor.insertImage', url);
  53. });
  54. }
  55. });
  56. return false;
  57. }
  58. });
  59. return button.render();
  60. };
  61. var attachmentButton = function (context) {
  62. var ui = $.summernote.ui;
  63. var button = ui.button({
  64. contents: '<i class="fa fa-file"/>',
  65. tooltip: __('Choose'),
  66. click: function () {
  67. parent.Fast.api.open(selectUrl + "?element_id=&multiple=true&mimetype=*", __('Choose'), {
  68. callback: function (data) {
  69. var urlArr = data.url.split(/\,/);
  70. $.each(urlArr, function () {
  71. var url = Fast.api.cdnurl(this, true);
  72. var node = $("<a href='" + url + "'>" + url + "</a>");
  73. context.invoke('insertNode', node[0]);
  74. });
  75. }
  76. });
  77. return false;
  78. }
  79. });
  80. return button.render();
  81. };
  82. $(Config.summernote.classname || '.editor', form).each(function () {
  83. $(this).summernote($.extend(true, {}, {
  84. height: 250,
  85. lang: 'zh-CN',
  86. fontNames: [
  87. 'Arial', 'Arial Black', 'Serif', 'Sans', 'Courier',
  88. 'Courier New', 'Comic Sans MS', 'Helvetica', 'Impact', 'Lucida Grande',
  89. "Open Sans", "Hiragino Sans GB", "Microsoft YaHei",
  90. '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆',
  91. ],
  92. fontNamesIgnoreCheck: [
  93. "Open Sans", "Microsoft YaHei",
  94. '微软雅黑', '宋体', '黑体', '仿宋', '楷体', '幼圆'
  95. ],
  96. toolbar: [
  97. ['style', ['style', 'undo', 'redo']],
  98. ['font', ['bold', 'underline', 'strikethrough', 'clear']],
  99. ['fontname', ['color', 'fontname', 'fontsize']],
  100. ['para', ['ul', 'ol', 'paragraph', 'height']],
  101. ['table', ['table', 'hr']],
  102. ['insert', ['link', 'picture', 'video']],
  103. ['select', ['image', 'attachment']],
  104. ['view', ['fullscreen', 'codeview', 'help']],
  105. ],
  106. buttons: {
  107. image: imageButton,
  108. attachment: attachmentButton,
  109. },
  110. dialogsInBody: true,
  111. followingToolbar: false,
  112. callbacks: {
  113. onChange: function (contents) {
  114. $(this).val(contents);
  115. $(this).trigger('change');
  116. },
  117. onInit: function () {
  118. },
  119. onImageUpload: function (files) {
  120. var that = this;
  121. //依次上传图片
  122. for (var i = 0; i < files.length; i++) {
  123. Upload.api.send(files[i], function (data) {
  124. var url = Fast.api.cdnurl(data.url, true);
  125. $(that).summernote("insertImage", url, 'filename');
  126. });
  127. }
  128. }
  129. }
  130. }, $(this).data("summernote-options") || {}));
  131. });
  132. });
  133. }
  134. } catch (e) {
  135. }
  136. };
  137. });
  138. });