/**
|
* @fileoverview 上传方式类的基类
|
* @author: 剑平(明河)<minghe36@126.com>,紫英<daxingplay@gmail.com>
|
**/
|
KISSY.add('gallery/form/1.3/uploader/type/base',function(S, Node, Base) {
|
var EMPTY = '',$ = Node.all;
|
|
/**
|
* @name UploadType
|
* @class 上传方式类的基类,定义通用的事件和方法,一般不直接监听此类的事件
|
* @constructor
|
* @extends Base
|
* @param {Object} config 组件配置(下面的参数为配置项,配置会写入属性,详细的配置说明请看属性部分)
|
* @param {String} config.action *,服务器端路径
|
* @param {Object} config.data 传送给服务器端的参数集合(会被转成hidden元素post到服务器端)
|
*
|
*/
|
function UploadType(config) {
|
var self = this;
|
//调用父类构造函数
|
UploadType.superclass.constructor.call(self, config);
|
}
|
|
S.mix(UploadType, /** @lends UploadType*/{
|
/**
|
* 事件列表
|
*/
|
event : {
|
//开始上传后触发
|
START : 'start',
|
//停止上传后触发
|
STOP : 'stop',
|
//成功请求
|
SUCCESS : 'success',
|
//上传失败后触发
|
ERROR : 'error'
|
}
|
});
|
|
/**
|
* @name UploadType#start
|
* @desc 开始上传后触发
|
* @event
|
*/
|
/**
|
* @name UploadType#stop
|
* @desc 停止上传后触发
|
* @event
|
*/
|
/**
|
* @name UploadType#success
|
* @desc 上传成功后触发
|
* @event
|
*/
|
/**
|
* @name UploadType#error
|
* @desc 上传失败后触发
|
* @event
|
*/
|
//继承于Base,属性getter和setter委托于Base处理
|
S.extend(UploadType, Base, /** @lends UploadType.prototype*/{
|
/**
|
* 上传文件
|
*/
|
upload : function() {
|
|
},
|
/**
|
* 停止上传
|
*/
|
stop : function(){
|
|
},
|
/**
|
* 处理服务器端返回的结果集
|
* @private
|
*/
|
_processResponse:function(responseText){
|
var self = this;
|
var filter = self.get('filter');
|
var result = {};
|
if(filter != EMPTY) responseText = filter.call(self,responseText);
|
//格式化成json数据
|
if(S.isString(responseText)){
|
try{
|
result = S.JSON.parse(responseText);
|
result = self._fromUnicode(result);
|
}catch(e){
|
var msg = responseText + ',返回结果集responseText格式不合法!';
|
S.log(msg);
|
self.fire('error',{status:-1, result:{msg:msg}});
|
}
|
}else if(S.isObject(responseText)){
|
result = self._fromUnicode(responseText);
|
}
|
S.log('服务器端输出:' + S.JSON.stringify(result));
|
return result;
|
},
|
/**
|
* 将unicode的中文转换成正常显示的文字,(为了修复flash的中文乱码问题)
|
* @private
|
*/
|
_fromUnicode:function(data){
|
if(!S.isObject(data)) return data;
|
_each(data);
|
function _each(data){
|
S.each(data,function(v,k){
|
if(S.isObject(data[k])){
|
_each(data[k]);
|
}else{
|
data[k] = S.isString(v) && S.fromUnicode(v) || v;
|
}
|
});
|
}
|
return data;
|
}
|
|
}, {ATTRS : /** @lends UploadType.prototype*/{
|
/**
|
* 服务器端路径
|
* @type String
|
* @default ""
|
*/
|
action : {value : EMPTY},
|
/**
|
* 传送给服务器端的参数集合(会被转成hidden元素post到服务器端)
|
* @type Object
|
* @default {}
|
*/
|
data : {value : {}},
|
/**
|
* 服务器端返回的数据的过滤器
|
* @type Function
|
* @default ''
|
*/
|
filter:{
|
value:EMPTY
|
}
|
}});
|
|
return UploadType;
|
}, {requires:['node','base']});
|