/** * @fileoverview 改造自jquery的异步上传插件uploadify * @author 明河 **/ KISSY.add('gallery/form/1.3/uploader/themes/uploadify/index', function (S, Node, Theme) { var EMPTY = '', $ = Node.all; /** * @name Uploadify * @class 改造自jquery的异步上传插件uploadify * @constructor * @extends Theme * @requires Theme * @requires ProgressBar * @author 明河 */ function Uploadify(config) { var self = this; //调用父类构造函数 Uploadify.superclass.constructor.call(self, config); } S.extend(Uploadify, Theme, /** @lends Uploadify.prototype*/{ /** * 在上传组件运行完毕后执行的方法(对上传组件所有的控制都应该在这个函数内) * @param {Uploader} uploader */ afterUploaderRender:function (uploader) { }, /** * 在完成文件dom插入后执行的方法 * @param {Object} ev 类似{index:0,file:{},target:$target} */ _addFileHandler:function(ev){ }, /** * 获取状态容器 * @param {KISSY.NodeList} target 文件的对应的dom(一般是li元素) * @return {KISSY.NodeList} */ _getStatusWrapper:function (target) { return target.children('.J_FileStatus'); }, /** * 文件处于等待上传状态时触发 */ _waitingHandler:function (ev) { }, /** * 文件处于开始上传状态时触发 */ _startHandler:function (ev) { var self = this, uploader = ev.uploader, index = ev.index, queue = self.get('queue'), //上传方式 uploadType = uploader.get('type'); //如果是ajax或flash异步上传,加入进度条 if(uploadType == 'ajax' || uploadType == 'flash'){ } }, /** * 文件处于正在上传状态时触发 */ _progressHandler:function (ev) { var file = ev.file, //已加载字节数 loaded = ev.loaded, //总字节数 total = ev.total, val = Math.ceil((loaded/total) * 100); }, /** * 文件处于上传成功状态时触发 */ _successHandler:function (ev) { }, /** * 文件处于上传错误状态时触发 */ _errorHandler:function (ev) { var self = this,msg = ev.msg, id = ev.id; //打印错误消息 $('.J_ErrorMsg_' + id).html(msg); self._setDisplayMsg(true,ev.file); //向控制台打印错误消息 S.log(msg); }, /** * 获取成功上传的图片张数,不传参的情况获取成功上传的张数 * @param {String} status 状态 * @return {Number} 图片数量 */ getFilesLen:function(status){ if(!status) status = 'success'; var self = this, queue = self.get('queue'), //成功上传的文件数 successFiles = queue.getFiles(status); return successFiles.length; } }, {ATTRS:/** @lends Uploadify.prototype*/{ /** * 主题名(文件名),此名称跟样式息息相关 * @type String * @default "uploadify" */ name:{value:'uploadify'}, /** * css模块路径 * @type String * @default "gallery/form/1.3/uploader/themes/imageUploader/style.css" */ cssUrl:{value:'gallery/form/1.3/uploader/themes/uploadify/style.css'}, /** * 队列使用的模板 * @type String * @default "" */ fileTpl:{value: '
  • ' + '
    {name}
    ' + '
    ' + '
    0%
    ' + '
    ' + '{msg}点此删除' + '
    ' + '
    ' + '
    {textSize}
    ' + '
  • ' }, /** * 需要加载的插件,需要手动实例化 * @type Array * @default ['progressBar'] 进度条 */ plugins:{ value:['progressBar'] }, /** * 统计上传张数的容器 * @type KISSY.NodeList * @default '#J_UploadCount' */ elCount:{value:'#J_UploadCount'} }}); return Uploadify; }, {requires:['node', '../../theme']});