addons.js 6.3 KB

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