diff --git a/public/assets/js/require-upload.js b/public/assets/js/require-upload.js
index bfd6628af4d069361752415c7b79e21b71e17b25..b1e251075722a09f9b418ee7178c43ef6daa4e2c 100755
--- a/public/assets/js/require-upload.js
+++ b/public/assets/js/require-upload.js
@@ -1,464 +1,465 @@
define(['jquery', 'bootstrap', 'dropzone', 'template'], function ($, undefined, Dropzone, Template) {
var Upload = {
- list: {},
- options: {},
- config: {
- container: document.body,
- classname: '.plupload:not([initialized]),.faupload:not([initialized])',
- previewtpl: '
\';this.onerror=null;" class="img-responsive">',
- },
- events: {
- //初始化
- onInit: function () {
+ list: {},
+ options: {},
+ config: {
+ container: document.body,
+ classname: '.plupload:not([initialized]),.faupload:not([initialized])',
+ previewtpl: '
\';this.onerror=null;" class="img-responsive">',
+ },
+ events: {
+ //初始化
+ onInit: function () {
- },
- //上传成功的回调
- onUploadSuccess: function (up, ret, file) {
- var button = up.element;
- var onUploadSuccess = up.options.onUploadSuccess;
- var data = typeof ret.data !== 'undefined' ? ret.data : null;
- //上传成功后回调
- if (button) {
- //如果有文本框则填充
- var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
- if (input_id) {
- var urlArr = [];
- var inputObj = $("#" + input_id);
- if ($(button).data("multiple") && inputObj.val() !== "") {
- urlArr.push(inputObj.val());
- }
- var url = Config.upload.fullmode ? (data.fullurl ? data.fullurl : Fast.api.cdnurl(data.url)) : data.url;
- urlArr.push(url);
- inputObj.val(urlArr.join(",")).trigger("change").trigger("validate");
+ },
+ //上传成功的回调
+ onUploadSuccess: function (up, ret, file) {
+ var button = up.element;
+ var onUploadSuccess = up.options.onUploadSuccess;
+ var data = typeof ret.data !== 'undefined' ? ret.data : null;
+ //上传成功后回调
+ if (button) {
+ //如果有文本框则填充
+ var input_id = $(button).data("input-id") ? $(button).data("input-id") : "";
+ if (input_id) {
+ var urlArr = [];
+ var inputObj = $("#" + input_id);
+ if ($(button).data("multiple") && inputObj.val() !== "") {
+ urlArr.push(inputObj.val());
}
- //如果有回调函数
- var onDomUploadSuccess = $(button).data("upload-success");
- if (onDomUploadSuccess) {
- if (typeof onDomUploadSuccess !== 'function' && typeof Upload.api.custom[onDomUploadSuccess] === 'function') {
- onDomUploadSuccess = Upload.api.custom[onDomUploadSuccess];
- }
- if (typeof onDomUploadSuccess === 'function') {
- var result = onDomUploadSuccess.call(button, data, ret, up, file);
- if (result === false)
- return;
- }
+ var url = Config.upload.fullmode ? (data.fullurl ? data.fullurl : Fast.api.cdnurl(data.url)) : data.url;
+ urlArr.push(url);
+ inputObj.val(urlArr.join(",")).trigger("change").trigger("validate");
+ }
+ //如果有回调函数
+ var onDomUploadSuccess = $(button).data("upload-success");
+ if (onDomUploadSuccess) {
+ if (typeof onDomUploadSuccess !== 'function' && typeof Upload.api.custom[onDomUploadSuccess] === 'function') {
+ onDomUploadSuccess = Upload.api.custom[onDomUploadSuccess];
+ }
+ if (typeof onDomUploadSuccess === 'function') {
+ var result = onDomUploadSuccess.call(button, data, ret, up, file);
+ if (result === false)
+ return;
}
}
+ }
- if (typeof onUploadSuccess === 'function') {
- var result = onUploadSuccess.call(button, data, ret, up, file);
- if (result === false)
- return;
- }
- },
- //上传错误的回调
- onUploadError: function (up, ret, file) {
- var button = up.element;
- var onUploadError = up.options.onUploadError;
- var data = typeof ret.data !== 'undefined' ? ret.data : null;
- if (button) {
- var onDomUploadError = $(button).data("upload-error");
- if (onDomUploadError) {
- if (typeof onDomUploadError !== 'function' && typeof Upload.api.custom[onDomUploadError] === 'function') {
- onDomUploadError = Upload.api.custom[onDomUploadError];
- }
- if (typeof onDomUploadError === 'function') {
- var result = onDomUploadError.call(button, data, ret, up, file);
- if (result === false)
- return;
- }
+ if (typeof onUploadSuccess === 'function') {
+ var result = onUploadSuccess.call(button, data, ret, up, file);
+ if (result === false)
+ return;
+ }
+ },
+ //上传错误的回调
+ onUploadError: function (up, ret, file) {
+ var button = up.element;
+ var onUploadError = up.options.onUploadError;
+ var data = typeof ret.data !== 'undefined' ? ret.data : null;
+ if (button) {
+ var onDomUploadError = $(button).data("upload-error");
+ if (onDomUploadError) {
+ if (typeof onDomUploadError !== 'function' && typeof Upload.api.custom[onDomUploadError] === 'function') {
+ onDomUploadError = Upload.api.custom[onDomUploadError];
+ }
+ if (typeof onDomUploadError === 'function') {
+ var result = onDomUploadError.call(button, data, ret, up, file);
+ if (result === false)
+ return;
}
}
+ }
- if (typeof onUploadError === 'function') {
- var result = onUploadError.call(button, data, ret, up, file);
- if (result === false) {
- return;
- }
+ if (typeof onUploadError === 'function') {
+ var result = onUploadError.call(button, data, ret, up, file);
+ if (result === false) {
+ return;
}
- Toastr.error(ret.msg.toString().replace(/(<([^>]+)>)/gi, "") + "(code:" + ret.code + ")");
- },
- //服务器响应数据后
- onUploadResponse: function (response, up, file) {
- try {
- var ret = typeof response === 'object' ? response : JSON.parse(response);
- if (!ret.hasOwnProperty('code')) {
- $.extend(ret, {code: -2, msg: response, data: null});
- }
- } catch (e) {
- var ret = {code: -1, msg: e.message, data: null};
+ }
+ Toastr.error(ret.msg.toString().replace(/(<([^>]+)>)/gi, "") + "(code:" + ret.code + ")");
+ },
+ //服务器响应数据后
+ onUploadResponse: function (response, up, file) {
+ try {
+ var ret = typeof response === 'object' ? response : JSON.parse(response);
+ if (!ret.hasOwnProperty('code')) {
+ $.extend(ret, { code: -2, msg: response, data: null });
}
- return ret;
- },
- //上传全部结束后
- onUploadComplete: function (up, files) {
- var button = up.element;
- var onUploadComplete = up.options.onUploadComplete;
- if (button) {
- var onDomUploadComplete = $(button).data("upload-complete");
- if (onDomUploadComplete) {
- if (typeof onDomUploadComplete !== 'function' && typeof Upload.api.custom[onDomUploadComplete] === 'function') {
- onDomUploadComplete = Upload.api.custom[onDomUploadComplete];
- }
- if (typeof onDomUploadComplete === 'function') {
- var result = onDomUploadComplete.call(button, files);
- if (result === false)
- return;
- }
+ } catch (e) {
+ var ret = { code: -1, msg: e.message, data: null };
+ }
+ return ret;
+ },
+ //上传全部结束后
+ onUploadComplete: function (up, files) {
+ var button = up.element;
+ var onUploadComplete = up.options.onUploadComplete;
+ if (button) {
+ var onDomUploadComplete = $(button).data("upload-complete");
+ if (onDomUploadComplete) {
+ if (typeof onDomUploadComplete !== 'function' && typeof Upload.api.custom[onDomUploadComplete] === 'function') {
+ onDomUploadComplete = Upload.api.custom[onDomUploadComplete];
+ }
+ if (typeof onDomUploadComplete === 'function') {
+ var result = onDomUploadComplete.call(button, files);
+ if (result === false)
+ return;
}
}
+ }
- if (typeof onUploadComplete === 'function') {
- var result = onUploadComplete.call(button, files);
- if (result === false) {
- return;
- }
+ if (typeof onUploadComplete === 'function') {
+ var result = onUploadComplete.call(button, files);
+ if (result === false) {
+ return;
}
}
- },
- api: {
- //上传接口
- upload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
- element = typeof element === 'undefined' ? Upload.config.classname : element;
- $(element, Upload.config.container).each(function () {
- if ($(this).attr("initialized")) {
- return true;
- }
- $(this).attr("initialized", true);
- var that = this;
- var id = $(this).prop("id") || $(this).prop("name") || Dropzone.uuidv4();
- var url = $(this).data("url");
- var maxsize = $(this).data("maxsize");
- var maxcount = $(this).data("maxcount");
- var mimetype = $(this).data("mimetype");
- var multipart = $(this).data("multipart");
- var multiple = $(this).data("multiple");
+ }
+ },
+ api: {
+ //上传接口
+ upload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
+ element = typeof element === 'undefined' ? Upload.config.classname : element;
+ $(element, Upload.config.container).each(function () {
+ if ($(this).attr("initialized")) {
+ return true;
+ }
+ $(this).attr("initialized", true);
+ var that = this;
+ var id = $(this).prop("id") || $(this).prop("name") || Dropzone.uuidv4();
+ var url = $(this).data("url");
+ var maxsize = $(this).data("maxsize");
+ var maxcount = $(this).data("maxcount");
+ var mimetype = $(this).data("mimetype");
+ var multipart = $(this).data("multipart");
+ var multiple = $(this).data("multiple");
- //填充ID
- var input_id = $(that).data("input-id") ? $(that).data("input-id") : "";
- //预览ID
- var preview_id = $(that).data("preview-id") ? $(that).data("preview-id") : "";
+ //填充ID
+ var input_id = $(that).data("input-id") ? $(that).data("input-id") : "";
+ //预览ID
+ var preview_id = $(that).data("preview-id") ? $(that).data("preview-id") : "";
- //上传URL
- url = url ? url : Config.upload.uploadurl;
- url = Fast.api.fixurl(url);
- var chunking = false, chunkSize = Config.upload.chunksize || 2097152, timeout = Config.upload.timeout || 600000;
+ //上传URL
+ url = url ? url : Config.upload.uploadurl;
+ url = Fast.api.fixurl(url);
+ var chunking = false, chunkSize = Config.upload.chunksize || 2097152, timeout = Config.upload.timeout || 600000;
- //最大可上传文件大小
- maxsize = typeof maxsize !== "undefined" ? maxsize : Config.upload.maxsize;
- //文件类型
- mimetype = typeof mimetype !== "undefined" ? mimetype : Config.upload.mimetype;
- //请求的表单参数
- multipart = typeof multipart !== "undefined" ? multipart : Config.upload.multipart;
- //是否支持批量上传
- multiple = typeof multiple !== "undefined" ? multiple : Config.upload.multiple;
- //后缀特殊处理
- mimetype = mimetype.split(",").map(function (k) {
- return k.indexOf("/") > -1 ? k : (!k || k === "*" || k.charAt(0) === "." ? k : "." + k);
- }).join(",");
- mimetype = mimetype === '*' ? null : mimetype;
+ //最大可上传文件大小
+ maxsize = typeof maxsize !== "undefined" ? maxsize : Config.upload.maxsize;
+ //文件类型
+ mimetype = typeof mimetype !== "undefined" ? mimetype : Config.upload.mimetype;
+ //请求的表单参数
+ multipart = typeof multipart !== "undefined" ? multipart : Config.upload.multipart;
+ //是否支持批量上传
+ multiple = typeof multiple !== "undefined" ? multiple : Config.upload.multiple;
+ //后缀特殊处理
+ mimetype = mimetype.split(",").map(function (k) {
+ return k.indexOf("/") > -1 ? k : (!k || k === "*" || k.charAt(0) === "." ? k : "." + k);
+ }).join(",");
+ mimetype = mimetype === '*' ? null : mimetype;
- //最大文件限制转换成mb
- var maxFilesize = (function (maxsize) {
- var matches = maxsize.toString().match(/^([0-9\.]+)(\w+)$/);
- var size = matches ? parseFloat(matches[1]) : parseFloat(maxsize),
- unit = matches ? matches[2].toLowerCase() : 'b';
- var unitDict = {'b': 0, 'k': 1, 'kb': 1, 'm': 2, 'mb': 2, 'gb': 3, 'g': 3, 'tb': 4, 't': 4};
- var y = typeof unitDict[unit] !== 'undefined' ? unitDict[unit] : 0;
- var bytes = size * Math.pow(1024, y);
- return bytes / Math.pow(1024, 2);
- }(maxsize));
+ //最大文件限制转换成mb
+ var maxFilesize = (function (maxsize) {
+ var matches = maxsize.toString().match(/^([0-9\.]+)(\w+)$/);
+ var size = matches ? parseFloat(matches[1]) : parseFloat(maxsize),
+ unit = matches ? matches[2].toLowerCase() : 'b';
+ var unitDict = { 'b': 0, 'k': 1, 'kb': 1, 'm': 2, 'mb': 2, 'gb': 3, 'g': 3, 'tb': 4, 't': 4 };
+ var y = typeof unitDict[unit] !== 'undefined' ? unitDict[unit] : 0;
+ var bytes = size * Math.pow(1024, y);
+ return bytes / Math.pow(1024, 2);
+ }(maxsize));
- var options = $(this).data() || {};
- options = $.extend(true, {}, options, $(this).data("upload-options") || {});
- delete options.success;
- delete options.url;
- // delete options.params;
- multipart = $.isArray(multipart) ? {} : multipart;
+ var options = $(this).data() || {};
+ options = $.extend(true, {}, options, $(this).data("upload-options") || {});
+ delete options.success;
+ delete options.url;
+ // delete options.params;
+ multipart = $.isArray(multipart) ? {} : multipart;
- Upload.list[id] = new Dropzone(this, $.extend({
- url: url,
- params: function (files, xhr, chunk) {
- var params = multipart;
- if (chunk) {
- return $.extend({}, params, {
- filesize: chunk.file.size,
- filename: chunk.file.name,
- chunkid: chunk.file.upload.uuid,
- chunkindex: chunk.index,
- chunkcount: chunk.file.upload.totalChunkCount,
- chunksize: this.options.chunkSize,
- chunkfilesize: chunk.dataBlock.data.size,
- width: chunk.file.width || 0,
- height: chunk.file.height || 0,
- type: chunk.file.type,
- });
- }
- return params;
- },
- chunking: chunking,
- chunkSize: chunkSize,
- maxFilesize: maxFilesize,
- acceptedFiles: mimetype,
- maxFiles: (maxcount && parseInt(maxcount) > 1 ? maxcount : (multiple ? null : 1)),
- timeout: timeout,
- parallelUploads: 1,
- previewsContainer: false,
- dictDefaultMessage: __("Drop files here to upload"),
- dictFallbackMessage: __("Your browser does not support drag'n'drop file uploads"),
- dictFallbackText: __("Please use the fallback form below to upload your files like in the olden days"),
- dictFileTooBig: __("File is too big (%sMiB), Max filesize: %sMiB", "{{filesize}}", "{{maxFilesize}}"),
- dictInvalidFileType: __("You can't upload files of this type"),
- dictResponseError: __("Server responded with %s code.", "{{statusCode}}"),
- dictCancelUpload: __("Cancel upload"),
- dictUploadCanceled: __("Upload canceled"),
- dictCancelUploadConfirmation: __("Are you sure you want to cancel this upload?"),
- dictRemoveFile: __("Remove file"),
- dictMaxFilesExceeded: __("You can only upload a maximum of %s files", "{{maxFiles}}"),
- init: function () {
- Upload.events.onInit.call(this);
- //必须添加dz-message,否则点击icon无法唤起上传窗口
- $(">i", this.element).addClass("dz-message");
- this.options.elementHtml = $(this.element).html();
- },
- sending: function (file, xhr, formData) {
- if (typeof file.category !== 'undefined') {
- formData.append('category', file.category);
- }
- },
- addedfile: function (file) {
- var params = $(this.element).data("params") || {};
- var category = typeof params.category !== 'undefined' ? params.category : ($(this.element).data("category") || '');
- file.category = typeof category === 'function' ? category.call(this, file) : category;
- },
- addedfiles: function (files) {
- if (this.options.maxFiles && (!this.options.maxFiles || this.options.maxFiles > 1) && this.options.inputId) {
- var inputObj = $("#" + this.options.inputId);
- if (inputObj.length > 0) {
- var value = $.trim(inputObj.val());
- var nums = value === '' ? 0 : value.split(/\,/).length;
- var remain = this.options.maxFiles - nums;
- if (remain === 0 || files.length > remain) {
- files = Array.prototype.slice.call(files, remain);
- for (var i = 0; i < files.length; i++) {
- this.removeFile(files[i]);
- }
- Toastr.error(__("You can only upload a maximum of %s files", this.options.maxFiles));
+ Upload.list[id] = new Dropzone(this, $.extend({
+ url: url,
+ params: function (files, xhr, chunk) {
+ var params = multipart;
+ if (chunk) {
+ return $.extend({}, params, {
+ filesize: chunk.file.size,
+ filename: chunk.file.name,
+ chunkid: chunk.file.upload.uuid,
+ chunkindex: chunk.index,
+ chunkcount: chunk.file.upload.totalChunkCount,
+ chunksize: this.options.chunkSize,
+ chunkfilesize: chunk.dataBlock.data.size,
+ width: chunk.file.width || 0,
+ height: chunk.file.height || 0,
+ type: chunk.file.type,
+ });
+ }
+ return params;
+ },
+ chunking: chunking,
+ chunkSize: chunkSize,
+ maxFilesize: maxFilesize,
+ acceptedFiles: mimetype,
+ maxFiles: (maxcount && parseInt(maxcount) > 1 ? maxcount : (multiple ? null : 1)),
+ timeout: timeout,
+ parallelUploads: 1,
+ previewsContainer: false,
+ dictDefaultMessage: __("Drop files here to upload"),
+ dictFallbackMessage: __("Your browser does not support drag'n'drop file uploads"),
+ dictFallbackText: __("Please use the fallback form below to upload your files like in the olden days"),
+ dictFileTooBig: __("File is too big (%sMiB), Max filesize: %sMiB", "{{filesize}}", "{{maxFilesize}}"),
+ dictInvalidFileType: __("You can't upload files of this type"),
+ dictResponseError: __("Server responded with %s code.", "{{statusCode}}"),
+ dictCancelUpload: __("Cancel upload"),
+ dictUploadCanceled: __("Upload canceled"),
+ dictCancelUploadConfirmation: __("Are you sure you want to cancel this upload?"),
+ dictRemoveFile: __("Remove file"),
+ dictMaxFilesExceeded: __("You can only upload a maximum of %s files", "{{maxFiles}}"),
+ init: function () {
+ Upload.events.onInit.call(this);
+ //必须添加dz-message,否则点击icon无法唤起上传窗口
+ $(">i", this.element).addClass("dz-message");
+ this.options.elementHtml = $(this.element).html();
+ },
+ sending: function (file, xhr, formData) {
+ if (typeof file.category !== 'undefined') {
+ formData.append('category', file.category);
+ }
+ },
+ addedfile: function (file) {
+ var params = $(this.element).data("params") || {};
+ var category = typeof params.category !== 'undefined' ? params.category : ($(this.element).data("category") || '');
+ file.category = typeof category === 'function' ? category.call(this, file) : category;
+ },
+ addedfiles: function (files) {
+ if (this.options.maxFiles && (!this.options.maxFiles || this.options.maxFiles > 1) && this.options.inputId) {
+ var inputObj = $("#" + this.options.inputId);
+ if (inputObj.length > 0) {
+ var value = $.trim(inputObj.val());
+ var nums = value === '' ? 0 : value.split(/\,/).length;
+ var remain = this.options.maxFiles - nums;
+ if (remain === 0 || files.length > remain) {
+ files = Array.prototype.slice.call(files, remain);
+ for (var i = 0; i < files.length; i++) {
+ this.removeFile(files[i]);
}
+ Toastr.error(__("You can only upload a maximum of %s files", this.options.maxFiles));
}
}
- },
- success: function (file, response) {
- var ret = Upload.events.onUploadResponse(response, this, file);
- file.ret = ret;
- if (ret.code === 1) {
- Upload.events.onUploadSuccess(this, ret, file);
- } else {
- Upload.events.onUploadError(this, ret, file);
- }
- },
- error: function (file, response, xhr) {
- var responseObj = $("" + (xhr && typeof xhr.responseText !== 'undefined' ? xhr.responseText : response) + "
");
- responseObj.find("style, title, script").remove();
- var msg = responseObj.text() || __('Network error');
- var ret = {code: 0, data: null, msg: msg};
+ }
+ },
+ success: function (file, response) {
+ var ret = Upload.events.onUploadResponse(response, this, file);
+ file.ret = ret;
+ if (ret.code === 1) {
+ Upload.events.onUploadSuccess(this, ret, file);
+ } else {
Upload.events.onUploadError(this, ret, file);
- },
- uploadprogress: function (file, progress, bytesSent) {
- if (file.upload.chunked) {
- $(this.element).prop("disabled", true).html(" " + __('Upload') + Math.floor((file.upload.bytesSent / file.size) * 100) + "%");
- }
- },
- totaluploadprogress: function (progress, bytesSent) {
- if (this.getActiveFiles().length > 0 && !this.options.chunking) {
- $(this.element).prop("disabled", true).html(" " + __('Upload') + Math.floor(progress) + "%");
- }
- },
- queuecomplete: function () {
- Upload.events.onUploadComplete(this, this.files);
- this.removeAllFiles(true);
- $(this.element).prop("disabled", false).html(this.options.elementHtml);
- },
- chunkSuccess: function (chunk, file, response) {
- },
- chunksUploaded: function (file, done) {
- var that = this;
- Fast.api.ajax({
- url: this.options.url,
- data: $.extend({}, multipart, {
- action: 'merge',
- filesize: file.size,
- filename: file.name,
- chunkid: file.upload.uuid,
- chunkcount: file.upload.totalChunkCount,
- })
- }, function (data, ret) {
- done(JSON.stringify(ret));
- return false;
- }, function (data, ret) {
- file.accepted = false;
- that._errorProcessing([file], ret.msg);
- });
- },
- onUploadSuccess: onUploadSuccess,
- onUploadError: onUploadError,
- onUploadComplete: onUploadComplete,
- }, Upload.options, options));
-
- //拖动排序
- if (preview_id && multiple) {
- require(['dragsort'], function () {
- $("#" + preview_id).dragsort({
- dragSelector: "li a:not(.btn-trash)",
- dragEnd: function () {
- $("#" + preview_id).trigger("fa.preview.change");
- },
- placeHolderTemplate: ''
- });
- });
- }
- //刷新隐藏textarea的值
- var refresh = function (name) {
- var data = {};
- var textarea = $("textarea[name='" + name + "']");
- var container = textarea.prev("ul");
- $.each($("input,select,textarea", container).serializeArray(), function (i, j) {
- var reg = /\[?(\w+)\]?\[(\w+)\]$/g;
- var match = reg.exec(j.name);
- if (!match)
- return true;
- if (!isNaN(match[2])) {
- data[i] = j.value;
- } else {
- match[1] = "x" + parseInt(match[1]);
- if (typeof data[match[1]] === 'undefined') {
- data[match[1]] = {};
- }
- data[match[1]][match[2]] = j.value;
- }
+ }
+ },
+ error: function (file, response, xhr) {
+ var responseObj = $("" + (xhr && typeof xhr.responseText !== 'undefined' ? xhr.responseText : response) + "
");
+ responseObj.find("style, title, script").remove();
+ var msg = responseObj.text() || __('Network error');
+ var ret = { code: 0, data: null, msg: msg };
+ Upload.events.onUploadError(this, ret, file);
+ },
+ uploadprogress: function (file, progress, bytesSent) {
+ if (file.upload.chunked) {
+ $(this.element).prop("disabled", true).html(" " + __('Upload') + Math.floor((file.upload.bytesSent / file.size) * 100) + "%");
+ }
+ },
+ totaluploadprogress: function (progress, bytesSent) {
+ if (this.getActiveFiles().length > 0 && !this.options.chunking) {
+ $(this.element).prop("disabled", true).html(" " + __('Upload') + Math.floor(progress) + "%");
+ }
+ },
+ queuecomplete: function () {
+ Upload.events.onUploadComplete(this, this.files);
+ this.removeAllFiles(true);
+ $(this.element).prop("disabled", false).html(this.options.elementHtml);
+ },
+ chunkSuccess: function (chunk, file, response) {
+ },
+ chunksUploaded: function (file, done) {
+ var that = this;
+ Fast.api.ajax({
+ url: this.options.url,
+ data: $.extend({}, multipart, {
+ action: 'merge',
+ filesize: file.size,
+ filename: file.name,
+ chunkid: file.upload.uuid,
+ chunkcount: file.upload.totalChunkCount,
+ })
+ }, function (data, ret) {
+ done(JSON.stringify(ret));
+ return false;
+ }, function (data, ret) {
+ file.accepted = false;
+ that._errorProcessing([file], ret.msg);
+ return false;
});
- var result = [];
- $.each(data, function (i, j) {
- result.push(j);
+ },
+ onUploadSuccess: onUploadSuccess,
+ onUploadError: onUploadError,
+ onUploadComplete: onUploadComplete,
+ }, Upload.options, options));
+
+ //拖动排序
+ if (preview_id && multiple) {
+ require(['dragsort'], function () {
+ $("#" + preview_id).dragsort({
+ dragSelector: "li a:not(.btn-trash)",
+ dragEnd: function () {
+ $("#" + preview_id).trigger("fa.preview.change");
+ },
+ placeHolderTemplate: ''
});
- textarea.val(JSON.stringify(result));
- };
- if (preview_id && input_id) {
- $(document.body).on("keyup change", "#" + input_id, function (e) {
- var inputStr = $("#" + input_id).val();
- var inputArr = inputStr.split(/\,/);
- var previewObj = $("#" + preview_id);
- previewObj.empty();
- var tpl = previewObj.data("template") ? previewObj.data("template") : "";
- var extend = previewObj.next().is("textarea") ? previewObj.next("textarea").val() : "{}";
- var json = {};
- try {
- json = JSON.parse(extend);
- } catch (e) {
+ });
+ }
+ //刷新隐藏textarea的值
+ var refresh = function (name) {
+ var data = {};
+ var textarea = $("textarea[name='" + name + "']");
+ var container = textarea.prev("ul");
+ $.each($("input,select,textarea", container).serializeArray(), function (i, j) {
+ var reg = /\[?(\w+)\]?\[(\w+)\]$/g;
+ var match = reg.exec(j.name);
+ if (!match)
+ return true;
+ if (!isNaN(match[2])) {
+ data[i] = j.value;
+ } else {
+ match[1] = "x" + parseInt(match[1]);
+ if (typeof data[match[1]] === 'undefined') {
+ data[match[1]] = {};
}
- $.each(inputArr, function (i, j) {
- if (!j) {
- return true;
- }
- var suffix = /[\.]?([a-zA-Z0-9]+)$/.exec(j);
- suffix = suffix ? suffix[1] : 'file';
- var btnData = $(that).data();
- var fullurl = typeof btnData.cdnurl!=='undefined' ? Fast.api.cdnurl(j, btnData.cdnurl) : Fast.api.cdnurl(j);
- j = Config.upload.fullmode ? fullurl : j;
- var value = (json && typeof json[i] !== 'undefined' ? json[i] : null);
- var data = {url: j, fullurl: fullurl, data: btnData, key: i, index: i, value: value, row: value, suffix: suffix};
- var html = tpl ? Template(tpl, data) : Template.render(Upload.config.previewtpl, data);
- previewObj.append(html);
- });
- refresh(previewObj.data("name"));
- });
- $("#" + input_id).trigger("change");
- }
- if (preview_id) {
- //监听文本框改变事件
- $("#" + preview_id).on('change keyup', "input,textarea,select", function () {
- refresh($(this).closest("ul").data("name"));
- });
- // 监听事件
- $(document.body).on("fa.preview.change", "#" + preview_id, function () {
- var urlArr = [];
- $("#" + preview_id + " [data-url]").each(function (i, j) {
- urlArr.push($(this).data("url"));
- });
- if (input_id) {
- $("#" + input_id).val(urlArr.join(","));
+ data[match[1]][match[2]] = j.value;
+ }
+ });
+ var result = [];
+ $.each(data, function (i, j) {
+ result.push(j);
+ });
+ textarea.val(JSON.stringify(result));
+ };
+ if (preview_id && input_id) {
+ $(document.body).on("keyup change", "#" + input_id, function (e) {
+ var inputStr = $("#" + input_id).val();
+ var inputArr = inputStr.split(/\,/);
+ var previewObj = $("#" + preview_id);
+ previewObj.empty();
+ var tpl = previewObj.data("template") ? previewObj.data("template") : "";
+ var extend = previewObj.next().is("textarea") ? previewObj.next("textarea").val() : "{}";
+ var json = {};
+ try {
+ json = JSON.parse(extend);
+ } catch (e) {
+ }
+ $.each(inputArr, function (i, j) {
+ if (!j) {
+ return true;
}
- refresh($("#" + preview_id).data("name"));
+ var suffix = /[\.]?([a-zA-Z0-9]+)$/.exec(j);
+ suffix = suffix ? suffix[1] : 'file';
+ var btnData = $(that).data();
+ var fullurl = typeof btnData.cdnurl !== 'undefined' ? Fast.api.cdnurl(j, btnData.cdnurl) : Fast.api.cdnurl(j);
+ j = Config.upload.fullmode ? fullurl : j;
+ var value = (json && typeof json[i] !== 'undefined' ? json[i] : null);
+ var data = { url: j, fullurl: fullurl, data: btnData, key: i, index: i, value: value, row: value, suffix: suffix };
+ var html = tpl ? Template(tpl, data) : Template.render(Upload.config.previewtpl, data);
+ previewObj.append(html);
});
- // 移除按钮事件
- $(document.body).on("click", "#" + preview_id + " .btn-trash", function () {
- $(this).closest("li").remove();
- $("#" + preview_id).trigger("fa.preview.change");
- });
- }
- if (input_id) {
- $("#" + input_id).closest("form").on("reset", function () {
- setTimeout($.proxy(function () {
- $("#" + input_id, this).trigger("change");
- }, this), 0);
+ refresh(previewObj.data("name"));
+ });
+ $("#" + input_id).trigger("change");
+ }
+ if (preview_id) {
+ //监听文本框改变事件
+ $("#" + preview_id).on('change keyup', "input,textarea,select", function () {
+ refresh($(this).closest("ul").data("name"));
+ });
+ // 监听事件
+ $(document.body).on("fa.preview.change", "#" + preview_id, function () {
+ var urlArr = [];
+ $("#" + preview_id + " [data-url]").each(function (i, j) {
+ urlArr.push($(this).data("url"));
});
- //粘贴上传、拖拽上传
- $("body").on('paste drop', "#" + input_id, function (event) {
- var originEvent = event.originalEvent;
- var button = $(".plupload[data-input-id='" + $(this).attr("id") + "'],.faupload[data-input-id='" + $(this).attr("id") + "']");
- if (event.type === 'paste' && originEvent.clipboardData && originEvent.clipboardData.items) {
- var items = originEvent.clipboardData.items;
- if ((items.length === 1 && items[0].type.indexOf("text") > -1) || (items.length === 2 && items[1].type.indexOf("text") > -1)) {
+ if (input_id) {
+ $("#" + input_id).val(urlArr.join(","));
+ }
+ refresh($("#" + preview_id).data("name"));
+ });
+ // 移除按钮事件
+ $(document.body).on("click", "#" + preview_id + " .btn-trash", function () {
+ $(this).closest("li").remove();
+ $("#" + preview_id).trigger("fa.preview.change");
+ });
+ }
+ if (input_id) {
+ $("#" + input_id).closest("form").on("reset", function () {
+ setTimeout($.proxy(function () {
+ $("#" + input_id, this).trigger("change");
+ }, this), 0);
+ });
+ //粘贴上传、拖拽上传
+ $("body").on('paste drop', "#" + input_id, function (event) {
+ var originEvent = event.originalEvent;
+ var button = $(".plupload[data-input-id='" + $(this).attr("id") + "'],.faupload[data-input-id='" + $(this).attr("id") + "']");
+ if (event.type === 'paste' && originEvent.clipboardData && originEvent.clipboardData.items) {
+ var items = originEvent.clipboardData.items;
+ if ((items.length === 1 && items[0].type.indexOf("text") > -1) || (items.length === 2 && items[1].type.indexOf("text") > -1)) {
- } else {
- Upload.list[button.attr("id")].paste(originEvent);
- return false;
- }
- }
- if (event.type === 'drop' && originEvent.dataTransfer && originEvent.dataTransfer.files) {
- Upload.list[button.attr("id")].drop(originEvent);
+ } else {
+ Upload.list[button.attr("id")].paste(originEvent);
return false;
}
- });
- }
- });
- },
- /**
- * @deprecated Use upload instead.
- */
- plupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
- return Upload.api.upload(element, onUploadSuccess, onUploadError, onUploadComplete);
- },
- /**
- * @deprecated Use upload instead.
- */
- faupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
- return Upload.api.upload(element, onUploadSuccess, onUploadError, onUploadComplete);
- },
- // AJAX异步上传
- send: function (file, onUploadSuccess, onUploadError, onUploadComplete) {
- var index = Layer.msg(__('Uploading'), {offset: 't', time: 0});
- var id = "dropzone-" + Dropzone.uuidv4();
- $('').appendTo("body");
- $("#" + id).data("upload-complete", function (files) {
- Layer.close(index);
- Upload.list[id].removeAllFiles(true);
- });
- Upload.api.upload("#" + id, onUploadSuccess, onUploadError, onUploadComplete);
- setTimeout(function () {
- Upload.list[id].addFile(file);
- }, 1);
+ }
+ if (event.type === 'drop' && originEvent.dataTransfer && originEvent.dataTransfer.files) {
+ Upload.list[button.attr("id")].drop(originEvent);
+ return false;
+ }
+ });
+ }
+ });
+ },
+ /**
+ * @deprecated Use upload instead.
+ */
+ plupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
+ return Upload.api.upload(element, onUploadSuccess, onUploadError, onUploadComplete);
+ },
+ /**
+ * @deprecated Use upload instead.
+ */
+ faupload: function (element, onUploadSuccess, onUploadError, onUploadComplete) {
+ return Upload.api.upload(element, onUploadSuccess, onUploadError, onUploadComplete);
+ },
+ // AJAX异步上传
+ send: function (file, onUploadSuccess, onUploadError, onUploadComplete) {
+ var index = Layer.msg(__('Uploading'), { offset: 't', time: 0 });
+ var id = "dropzone-" + Dropzone.uuidv4();
+ $('').appendTo("body");
+ $("#" + id).data("upload-complete", function (files) {
+ Layer.close(index);
+ Upload.list[id].removeAllFiles(true);
+ });
+ Upload.api.upload("#" + id, onUploadSuccess, onUploadError, onUploadComplete);
+ setTimeout(function () {
+ Upload.list[id].addFile(file);
+ }, 1);
+ },
+ custom: {
+ //自定义上传完成回调
+ afteruploadcallback: function (response) {
+ console.log(this, response);
+ alert("Custom Callback,Response URL:" + response.url);
},
- custom: {
- //自定义上传完成回调
- afteruploadcallback: function (response) {
- console.log(this, response);
- alert("Custom Callback,Response URL:" + response.url);
- },
- }
}
}
- ;
+ }
+ ;
return Upload;
});