addons.js 7.9 KB

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