multiimage.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  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. lang = self.lang(name + '.');
  16. if(typeof jQuery == 'undefined') {
  17. K.options.errorMsgHandler(lang.depJQueryError, "error");
  18. return;
  19. } else {
  20. K.loadScript(K.options.pluginsPath+name+"/BUpload.js");
  21. K.loadStyle(K.options.pluginsPath+name+"/css/upload.css");
  22. }
  23. //锁屏插件
  24. K.locker = function () {
  25. var docWidth = Math.max(document.documentElement.clientWidth, document.body.clientWidth);
  26. var docHeight = Math.max(document.documentElement.clientHeight, document.body.clientHeight, $(document).height()) + document.documentElement.scrollTop;
  27. return K.widget({
  28. x : 0,
  29. y : 0,
  30. cls : 'ke-dialog-lock',
  31. width : docWidth,
  32. height : docHeight
  33. });
  34. }
  35. self.plugin.multiImageDialog = function(options) {
  36. if ( !window.applicationCache ) {
  37. K.options.errorMsgHandler("您当前的浏览器不支持HTML5,请先升级浏览器才能使用该上传插件!", "error");
  38. return;
  39. }
  40. var clickFn = options.clickFn;
  41. var locker = K.locker();
  42. locker.show();
  43. var dialog = new BUpload({
  44. src : filePostName,
  45. upload_url : uploadJson,
  46. list_url : fileManagerJson, //图片列表数据获取url
  47. max_filesize : imageSizeLimit,
  48. max_filenum : imageUploadLimit,
  49. ext_allow : imageFileTypes,
  50. lang : lang,
  51. top : self.dialogOffset,
  52. fileType : "image",
  53. errorHandler : K.options.errorMsgHandler,
  54. callback : function(data) {
  55. //console.log(data);
  56. clickFn.call(this, data);
  57. },
  58. close : function () {
  59. locker.remove();
  60. }
  61. });
  62. return dialog;
  63. };
  64. self.clickToolbar(name, function() {
  65. self.plugin.multiImageDialog({
  66. clickFn : function (urlList) {
  67. if (urlList.length === 0) {
  68. return;
  69. }
  70. K.each(urlList, function(i, data) {
  71. if (self.afterUpload) {
  72. self.afterUpload.call(self, data, data, 'multiimage');
  73. }
  74. self.exec('insertimage', data);
  75. });
  76. // Bugfix: [Firefox] 上传图片后,总是出现正在加载的样式,需要延迟执行hideDialog
  77. setTimeout(function() {
  78. self.hideDialog().focus();
  79. }, 0);
  80. }
  81. });
  82. });
  83. });