addons.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. define([], function () {
  2. window.UMEDITOR_HOME_URL = Config.__CDN__ + "/assets/addons/umeditor/";
  3. require.config({
  4. paths: {
  5. 'umeditor': '../addons/umeditor/umeditor',
  6. 'umeditor.config': '../addons/umeditor/umeditor.config',
  7. 'umeditor.lang': '../addons/umeditor/lang/zh-cn/zh-cn',
  8. },
  9. shim: {
  10. 'umeditor': {
  11. deps: [
  12. 'umeditor.config',
  13. 'css!../addons/umeditor/themes/default/css/umeditor.min.css'
  14. ],
  15. exports: 'UM',
  16. },
  17. 'umeditor.lang': ['umeditor']
  18. }
  19. });
  20. require(['form', 'upload'], function (Form, Upload) {
  21. //监听上传文本框的事件
  22. $(document).on("edui.file.change", ".edui-image-file", function (e, up, me, input, callback) {
  23. for (var i = 0; i < this.files.length; i++) {
  24. Upload.api.send(this.files[i], function (data) {
  25. var url = data.url;
  26. me.uploadComplete(JSON.stringify({url: url, state: "SUCCESS"}));
  27. });
  28. }
  29. up.updateInput(input);
  30. me.toggleMask("Loading....");
  31. callback && callback();
  32. });
  33. var _bindevent = Form.events.bindevent;
  34. Form.events.bindevent = function (form) {
  35. _bindevent.apply(this, [form]);
  36. require(['umeditor', 'umeditor.lang'], function (UME, undefined) {
  37. //重写编辑器加载
  38. UME.plugins['autoupload'] = function () {
  39. var me = this;
  40. me.setOpt('pasteImageEnabled', true);
  41. me.setOpt('dropFileEnabled', true);
  42. var sendAndInsertImage = function (file, editor) {
  43. try {
  44. Upload.api.send(file, function (data) {
  45. var url = Fast.api.cdnurl(data.url, true);
  46. editor.execCommand('insertimage', {
  47. src: url,
  48. _src: url
  49. });
  50. });
  51. } catch (er) {
  52. }
  53. };
  54. function getPasteImage(e) {
  55. return e.clipboardData && e.clipboardData.items && e.clipboardData.items.length == 1 && /^image\//.test(e.clipboardData.items[0].type) ? e.clipboardData.items : null;
  56. }
  57. function getDropImage(e) {
  58. return e.dataTransfer && e.dataTransfer.files ? e.dataTransfer.files : null;
  59. }
  60. me.addListener('ready', function () {
  61. if (window.FormData && window.FileReader) {
  62. var autoUploadHandler = function (e) {
  63. var hasImg = false,
  64. items;
  65. //获取粘贴板文件列表或者拖放文件列表
  66. items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent);
  67. if (items) {
  68. var len = items.length,
  69. file;
  70. while (len--) {
  71. file = items[len];
  72. if (file.getAsFile)
  73. file = file.getAsFile();
  74. if (file && file.size > 0 && /image\/\w+/i.test(file.type)) {
  75. sendAndInsertImage(file, me);
  76. hasImg = true;
  77. }
  78. }
  79. if (hasImg)
  80. return false;
  81. }
  82. };
  83. me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler);
  84. me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler);
  85. //取消拖放图片时出现的文字光标位置提示
  86. me.$body.on('dragover', function (e) {
  87. if (e.originalEvent.dataTransfer.types[0] == 'Files') {
  88. return false;
  89. }
  90. });
  91. }
  92. });
  93. };
  94. $(".editor", form).each(function () {
  95. var id = $(this).attr("id");
  96. $(this).removeClass('form-control');
  97. UME.list[id] = UME.getEditor(id, {
  98. serverUrl: Fast.api.fixurl('/addons/umeditor/api/'),
  99. initialFrameWidth: '100%',
  100. zIndex: 90,
  101. xssFilterRules: false,
  102. outputXssFilter: false,
  103. inputXssFilter: false,
  104. autoFloatEnabled: false,
  105. imageUrl: '',
  106. imagePath: Config.upload.cdnurl
  107. });
  108. });
  109. });
  110. }
  111. });
  112. });