multiimage.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /**
  2. * HTML5 批量文件上传
  3. * @author yangjian <yangjian102621@gmail.com>
  4. * @since v4.1.12(2017-09-12)
  5. * @site http://git.oschina.net/blackfox/kindeditor
  6. */
  7. KindEditor.plugin('multiimage', function(K) {
  8. var self = this, name = 'multiimage',
  9. uploadJson = K.undef(self.uploadJson, self.basePath + 'php/upload_json.php'),
  10. fileManagerJson = K.undef(self.fileManagerJson, self.basePath + 'php/file_manager_json.php'),
  11. imageSizeLimit = K.undef(self.imageSizeLimit, 2048), //单位KB
  12. imageFileTypes = K.undef(self.imageFileTypes, 'jpg|png|gif|jpeg'),
  13. imageUploadLimit = K.undef(self.imageUploadLimit, 20),
  14. filePostName = K.undef(self.filePostName, 'imgFile'),
  15. extraParams = K.undef(self.extraFileUploadParams, {}),
  16. lang = self.lang(name + '.');
  17. if(typeof jQuery == 'undefined') {
  18. K.options.errorMsgHandler(lang.depJQueryError, "error");
  19. return;
  20. } else {
  21. K.loadScript(K.options.pluginsPath+name+"/BUpload.js");
  22. K.loadStyle(K.options.pluginsPath+name+"/css/upload.css");
  23. }
  24. //锁屏插件
  25. K.locker = function () {
  26. var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth);
  27. var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop;
  28. return K.widget({
  29. x : 0,
  30. y : 0,
  31. cls : 'ke-dialog-lock',
  32. width : docWidth,
  33. height : docHeight
  34. });
  35. }
  36. self.plugin.multiImageDialog = function(options) {
  37. var clickFn = options.clickFn;
  38. var locker = K.locker();
  39. locker.show();
  40. var dialog = new BUpload({
  41. src : filePostName,
  42. upload_url : uploadJson,
  43. list_url : fileManagerJson, //图片列表数据获取url
  44. max_filesize : imageSizeLimit,
  45. max_filenum : imageUploadLimit,
  46. ext_allow : imageFileTypes,
  47. extra_params : extraParams,
  48. lang : lang,
  49. top : self.dialogOffset,
  50. fileType : "image",
  51. errorHandler : K.options.errorMsgHandler,
  52. callback : function(data) {
  53. //console.log(data);
  54. clickFn.call(this, data);
  55. },
  56. close : function () {
  57. locker.remove();
  58. }
  59. });
  60. return dialog;
  61. };
  62. self.clickToolbar(name, function() {
  63. self.plugin.multiImageDialog({
  64. clickFn : function (urlList) {
  65. if (urlList.length === 0) {
  66. return;
  67. }
  68. K.each(urlList, function(i, data) {
  69. if (self.afterUpload) {
  70. self.afterUpload.call(self, data, data, 'multiimage');
  71. }
  72. self.exec('insertimage', data);
  73. });
  74. // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog
  75. setTimeout(function() {
  76. self.hideDialog().focus();
  77. }, 0);
  78. }
  79. });
  80. });
  81. });