/**
|
* @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:
|
'<li id="queue-file-{id}" class="clearfix queue-file" data-name="{name}">' +
|
'<div class="f-l file-name">{name}</div>' +
|
'<div class="f-r file-status status-wrapper J_FileStatus">' +
|
'<div class="status waiting-status start-status progress-status success-status clearfix"><div class="f-l J_ProgressNum_{id}">0%</div><div class="f-l uploader-icon del-icon J_Del_{id"></div></div>' +
|
'<div class="status error-status tips-upload-error">' +
|
'{msg}<a href="#fileDel" class="J_FileDel">点此删除</a>' +
|
'</div>' +
|
'</div>' +
|
'<div class="f-r file-size">{textSize}</div>' +
|
'</li>'
|
},
|
/**
|
* 需要加载的插件,需要手动实例化
|
* @type Array
|
* @default ['progressBar'] 进度条
|
*/
|
plugins:{
|
value:['progressBar']
|
},
|
/**
|
* 统计上传张数的容器
|
* @type KISSY.NodeList
|
* @default '#J_UploadCount'
|
*/
|
elCount:{value:'#J_UploadCount'}
|
}});
|
return Uploadify;
|
}, {requires:['node', '../../theme']});
|