|
@@ -45,13 +45,11 @@
|
|
|
$('#' + file.id).attr('data-md5', file.md5).attr('data-src', url);
|
|
|
/* {if $mode === 'one'} */
|
|
|
top.$('[name="{$field}"]').map(function () {
|
|
|
- top.$(this).attr('data-srcs', ret.url).attr('data-md5', file.md5).val(url).trigger('change');
|
|
|
- });
|
|
|
+ top.$(this).attr('data-srcs', ret.url).attr('data-md5', file.md5).val(url).trigger('change');});
|
|
|
//top.$.msg.tips('文件上传成功!');
|
|
|
var index = top.layer.getFrameIndex(window.name);
|
|
|
top.layer.close(index);
|
|
|
- /* {/if} {$mode}*/
|
|
|
- }
|
|
|
+ /* {/if} {$mode}*/}
|
|
|
|
|
|
function confirmSelected() {
|
|
|
var srcs = new Array();
|
|
@@ -59,26 +57,19 @@
|
|
|
$('[data-md5] .success').map(function () {
|
|
|
var $li = $(this).parents('[data-md5]');
|
|
|
md5s.push($li.attr('data-md5'));
|
|
|
- srcs.push($li.attr('data-src'));
|
|
|
- });
|
|
|
+ srcs.push($li.attr('data-src'));});
|
|
|
if (srcs.length < 1) {
|
|
|
- return top.$.msg.tips('还没有选择文件,请勾选需要使用的文件!');
|
|
|
- }
|
|
|
+ return top.$.msg.tips('还没有选择文件,请勾选需要使用的文件!');}
|
|
|
top.$('[name="{$field}"]').map(function () {
|
|
|
- top.$(this).attr('data-srcs', srcs.join('|')).attr('data-md5', md5s.join('|')).val(srcs.join('|')).trigger('change');
|
|
|
- });
|
|
|
+ top.$(this).attr('data-srcs', srcs.join('|')).attr('data-md5', md5s.join('|')).val(srcs.join('|')).trigger('change');});
|
|
|
var index = top.layer.getFrameIndex(window.name);
|
|
|
- top.layer.close(index);
|
|
|
- }
|
|
|
+ top.layer.close(index);}
|
|
|
|
|
|
function completed() {
|
|
|
var btnHTML = '完成上传';
|
|
|
$('.uploadBtn').on('click', function () {
|
|
|
if (this.innerHTML === btnHTML) {
|
|
|
- confirmSelected.call(this);
|
|
|
- }
|
|
|
- }).html(btnHTML);
|
|
|
- }
|
|
|
+ confirmSelected.call(this);}}).html(btnHTML);}
|
|
|
|
|
|
// 当domReady的时候开始初始化
|
|
|
$(function () {
|
|
@@ -113,33 +104,24 @@
|
|
|
var support = true;
|
|
|
data.onload = data.onerror = function () {
|
|
|
if (this.width != 1 || this.height != 1) {
|
|
|
- support = false;
|
|
|
- }
|
|
|
- };
|
|
|
+ support = false;}};
|
|
|
data.src = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==";
|
|
|
- return support;
|
|
|
- }.call(this)),
|
|
|
+ return support;}.call(this)),
|
|
|
/*检测是否已经安装flash,检测flash的版本*/
|
|
|
flashVersion = (function () {
|
|
|
var version;
|
|
|
try {
|
|
|
version = navigator.plugins[ 'Shockwave Flash' ];
|
|
|
- version = version.description;
|
|
|
- } catch (ex) {
|
|
|
+ version = version.description;} catch (ex) {
|
|
|
try {
|
|
|
- version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
|
|
|
- } catch (ex2) {
|
|
|
- version = '0.0';
|
|
|
- }
|
|
|
- }
|
|
|
+ version = new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');} catch (ex2) {
|
|
|
+ version = '0.0';}}
|
|
|
version = version.match(/\d+/g);
|
|
|
- return parseFloat(version[ 0 ] + '.' + version[ 1 ], 10);
|
|
|
- })(),
|
|
|
+ return parseFloat(version[ 0 ] + '.' + version[ 1 ], 10);})(),
|
|
|
supportTransition = (function () {
|
|
|
var s = document.createElement('p').style, r = 'transition' in s || 'WebkitTransition' in s || 'MozTransition' in s || 'msTransition' in s || 'OTransition' in s;
|
|
|
s = null;
|
|
|
- return r;
|
|
|
- })(),
|
|
|
+ return r;})(),
|
|
|
uploader;
|
|
|
if (!WebUploader.Uploader.support('flash') && WebUploader.browser.ie) {
|
|
|
/*flash 安装了但是版本过低*/
|
|
@@ -155,36 +137,27 @@
|
|
|
break;
|
|
|
default:
|
|
|
alert('安装已成功,请刷新!');
|
|
|
- break;
|
|
|
- }
|
|
|
- delete window['expressinstallcallback'];
|
|
|
- };
|
|
|
+ break;}
|
|
|
+ delete window['expressinstallcallback'];};
|
|
|
var swf = '__PUBLIC__/static/plugs/uploader/expressInstall.swf';
|
|
|
var html = '<object type="application/' + 'x-shockwave-flash" data="' + swf + '" ';
|
|
|
if (WebUploader.browser.ie) {
|
|
|
- html += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
|
|
|
- }
|
|
|
+ html += 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';}
|
|
|
html += 'width="100%" height="100%" style="outline:0">' +
|
|
|
'<param name="movie" value="' + swf + '" />' +
|
|
|
'<param name="wmode" value="transparent" />' +
|
|
|
'<param name="allowscriptaccess" value="always" />' +
|
|
|
'</object>';
|
|
|
- container.html(html);
|
|
|
- })($wrap);
|
|
|
- } else {
|
|
|
- $wrap.html('<a href="http://www.adobe.com/go/getflashplayer" target="_blank" border="0"><img alt="get flash player" src="http://www.adobe.com/macromedia/style_guide/images/160x41_Get_Flash_Player.jpg" /></a>');
|
|
|
- }
|
|
|
- return;
|
|
|
- } else if (!WebUploader.Uploader.support()) {
|
|
|
+ container.html(html);})($wrap);} else {
|
|
|
+ $wrap.html('<a href="http://www.adobe.com/go/getflashplayer" target="_blank" border="0"><img alt="get flash player" src="http://www.adobe.com/macromedia/style_guide/images/160x41_Get_Flash_Player.jpg" /></a>');}
|
|
|
+ return;} else if (!WebUploader.Uploader.support()) {
|
|
|
alert('Web Uploader 不支持您的浏览器!');
|
|
|
- return;
|
|
|
- }
|
|
|
+ return;}
|
|
|
|
|
|
WebUploader.Uploader.register({'before-send-file': 'preupload'}, {preupload: function (file) {
|
|
|
var me = this, owner = this.owner, deferred = WebUploader.Deferred();
|
|
|
owner.md5File(file.source).fail(function () {
|
|
|
- deferred.reject();
|
|
|
- }).then(function (md5) {
|
|
|
+ deferred.reject();}).then(function (md5) {
|
|
|
file.md5 = md5;
|
|
|
var data = {id: file.id, md5: md5, uptype: '{$uptype}', filename: file.name};
|
|
|
$.ajax("{:url('admin/plugs/upstate')}", {dataType: 'json', method: 'post', data: data, success: function (ret) {
|
|
@@ -193,38 +166,29 @@
|
|
|
uploaded.call(uploader, ret.data, file);
|
|
|
percentages[file.id] = [file.size, 1];
|
|
|
updateTotalProgress();
|
|
|
- console.log('文件秒传成功 --> ' + file.name);
|
|
|
- } else {
|
|
|
+ console.log('文件秒传成功 --> ' + file.name);} else {
|
|
|
file.md5 = md5;
|
|
|
file.token = ret.data.token;
|
|
|
file.key = ret.data.file_url;
|
|
|
- me.options.server = ret.data.server;
|
|
|
- }
|
|
|
- deferred.resolve();
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
- return deferred.promise();
|
|
|
- }
|
|
|
- });
|
|
|
+ me.options.server = ret.data.server;}
|
|
|
+ deferred.resolve();}});});
|
|
|
+ return deferred.promise();}});
|
|
|
|
|
|
// 实例化
|
|
|
uploader = WebUploader.create({
|
|
|
pick: {
|
|
|
id: '#filePicker',
|
|
|
label: '点击选择文件',
|
|
|
- multiple: false
|
|
|
- },
|
|
|
+ multiple: false},
|
|
|
accept: {
|
|
|
title: '选择文件',
|
|
|
extensions: '{$types}', //'gif,jpg,jpeg,bmp,png',
|
|
|
- mimeTypes: '{$mimes}'
|
|
|
- },
|
|
|
+ mimeTypes: '{$mimes}'},
|
|
|
formData: {},
|
|
|
/*{if $mode === 'one'}*/
|
|
|
fileNumLimit: 1,
|
|
|
auto: true,
|
|
|
- /* {else /} */
|
|
|
+ /* {else} */
|
|
|
auto: false,
|
|
|
fileNumLimit: 300,
|
|
|
/* {/if} */
|
|
@@ -237,8 +201,7 @@
|
|
|
server: '{:url("admin/plugs/upload")}',
|
|
|
disableGlobalDnd: true,
|
|
|
fileSizeLimit: 200 * 1024 * 1024, // 200 M
|
|
|
- fileSingleSizeLimit: 200 * 1024 * 1024 // 200 M
|
|
|
- });
|
|
|
+ fileSingleSizeLimit: 200 * 1024 * 1024 // 200 M});
|
|
|
|
|
|
/**
|
|
|
* 处理上传后的结果
|
|
@@ -248,10 +211,8 @@
|
|
|
uploader.on('uploadAccept', function (fieldata, ret) {
|
|
|
if (ret.code === 'SUCCESS') {
|
|
|
uploaded.call(uploader, ret.data, fieldata.file);
|
|
|
- return true;
|
|
|
- }
|
|
|
- return false;
|
|
|
- });
|
|
|
+ return true;}
|
|
|
+ return false;});
|
|
|
|
|
|
// 拖拽时不接受 js, txt 文件。
|
|
|
uploader.on('dndAccept', function (items) {
|
|
@@ -260,11 +221,8 @@
|
|
|
for (var i = 0; i < len; i++) {
|
|
|
if (~unAllowed.indexOf(items[ i ].type)) {
|
|
|
denied = true;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- return !denied;
|
|
|
- });
|
|
|
+ break;}}
|
|
|
+ return !denied;});
|
|
|
|
|
|
/* 上传开始前的处理 */
|
|
|
uploader.on('uploadBeforeSend', function (file, data, header) {
|
|
@@ -272,18 +230,15 @@
|
|
|
data['allowed_types'] = this.options.accept[0].extensions.split(',').join('|');
|
|
|
data['md5'] = file.file.md5;
|
|
|
data['key'] = file.file.key;
|
|
|
- data['token'] = file.file.token;
|
|
|
- });
|
|
|
+ data['token'] = file.file.token;});
|
|
|
|
|
|
// 添加“添加文件”的按钮,
|
|
|
uploader.addButton({
|
|
|
id: '#filePicker2',
|
|
|
- label: '继续添加'
|
|
|
- });
|
|
|
+ label: '继续添加'});
|
|
|
|
|
|
uploader.on('ready', function () {
|
|
|
- window.uploader = uploader;
|
|
|
- });
|
|
|
+ window.uploader = uploader;});
|
|
|
|
|
|
// 当有文件添加进来时执行,负责view的创建
|
|
|
function addFile(file) {
|
|
@@ -309,72 +264,51 @@
|
|
|
break;
|
|
|
default:
|
|
|
text = '上传失败,请重试';
|
|
|
- break;
|
|
|
- }
|
|
|
- $info.text(text).appendTo($li);
|
|
|
- };
|
|
|
+ break;}
|
|
|
+ $info.text(text).appendTo($li);};
|
|
|
if (file.getStatus() === 'invalid') {
|
|
|
- showError(file.statusText);
|
|
|
- } else {
|
|
|
+ showError(file.statusText);} else {
|
|
|
// @todo lazyload
|
|
|
$wrap.text('预览中');
|
|
|
uploader.makeThumb(file, function (error, src) {
|
|
|
var img;
|
|
|
if (error) {
|
|
|
$wrap.text('不能预览');
|
|
|
- return;
|
|
|
- }
|
|
|
+ return;}
|
|
|
if (isSupportBase64) {
|
|
|
img = $('<img src="' + src + '">');
|
|
|
- $wrap.empty().append(img);
|
|
|
- } else {
|
|
|
+ $wrap.empty().append(img);} else {
|
|
|
$.ajax('{"plugs/file/preview"|url}', {method: 'POST', data: src, dataType: 'json'}).done(function (response) {
|
|
|
if (response.result) {
|
|
|
img = $('<img src="' + response.result + '">');
|
|
|
- $wrap.empty().append(img);
|
|
|
- } else {
|
|
|
- $wrap.text("预览出错");
|
|
|
- }
|
|
|
- });
|
|
|
- }
|
|
|
- }, thumbnailWidth, thumbnailHeight);
|
|
|
+ $wrap.empty().append(img);} else {
|
|
|
+ $wrap.text("预览出错");}});}}, thumbnailWidth, thumbnailHeight);
|
|
|
percentages[ file.id ] = [file.size, 0];
|
|
|
file.rotation = 0;
|
|
|
- $upload.html('开始上传');
|
|
|
- }
|
|
|
+ $upload.html('开始上传');}
|
|
|
|
|
|
file.on('statuschange', function (cur, prev) {
|
|
|
if (prev === 'progress') {
|
|
|
- $prgress.hide().width(0);
|
|
|
- } else if (prev === 'queued') {
|
|
|
+ $prgress.hide().width(0);} else if (prev === 'queued') {
|
|
|
$li.off('mouseenter mouseleave');
|
|
|
- $btns.remove();
|
|
|
- }
|
|
|
+ $btns.remove();}
|
|
|
// 成功
|
|
|
if (cur === 'error' || cur === 'invalid') {
|
|
|
showError(file.statusText);
|
|
|
- percentages[ file.id ][ 1 ] = 1;
|
|
|
- } else if (cur === 'interrupt') {
|
|
|
- showError('interrupt');
|
|
|
- } else if (cur === 'queued') {
|
|
|
- percentages[ file.id ][ 1 ] = 0;
|
|
|
- } else if (cur === 'progress') {
|
|
|
+ percentages[ file.id ][ 1 ] = 1;} else if (cur === 'interrupt') {
|
|
|
+ showError('interrupt');} else if (cur === 'queued') {
|
|
|
+ percentages[ file.id ][ 1 ] = 0;} else if (cur === 'progress') {
|
|
|
$info.remove();
|
|
|
- $prgress.css('display', 'block');
|
|
|
- } else if (cur === 'complete') {
|
|
|
- $li.append('<span class="success"></span>');
|
|
|
- }
|
|
|
+ $prgress.css('display', 'block');} else if (cur === 'complete') {
|
|
|
+ $li.append('<span class="success"></span>');}
|
|
|
|
|
|
- $li.removeClass('state-' + prev).addClass('state-' + cur);
|
|
|
- });
|
|
|
+ $li.removeClass('state-' + prev).addClass('state-' + cur);});
|
|
|
|
|
|
$li.on('mouseenter', function () {
|
|
|
- $btns.stop().animate({height: 30});
|
|
|
- });
|
|
|
+ $btns.stop().animate({height: 30});});
|
|
|
|
|
|
$li.on('mouseleave', function () {
|
|
|
- $btns.stop().animate({height: 0});
|
|
|
- });
|
|
|
+ $btns.stop().animate({height: 0});});
|
|
|
|
|
|
$btns.on('click', 'span', function () {
|
|
|
var index = $(this).index(), deg;
|
|
@@ -387,62 +321,47 @@
|
|
|
break;
|
|
|
case 2:
|
|
|
file.rotation -= 90;
|
|
|
- break;
|
|
|
- }
|
|
|
+ break;}
|
|
|
if (supportTransition) {
|
|
|
deg = 'rotate(' + file.rotation + 'deg)';
|
|
|
- $wrap.css({'-webkit-transform': deg, '-mos-transform': deg, '-o-transform': deg, 'transform': deg});
|
|
|
- } else {
|
|
|
- $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');
|
|
|
- }
|
|
|
- });
|
|
|
- $li.appendTo($queue);
|
|
|
- }
|
|
|
+ $wrap.css({'-webkit-transform': deg, '-mos-transform': deg, '-o-transform': deg, 'transform': deg});} else {
|
|
|
+ $wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation=' + (~~((file.rotation / 90) % 4 + 4) % 4) + ')');}});
|
|
|
+ $li.appendTo($queue);}
|
|
|
|
|
|
// 负责view的销毁
|
|
|
function removeFile(file) {
|
|
|
var $li = $('#' + file.id);
|
|
|
delete percentages[ file.id ];
|
|
|
updateTotalProgress();
|
|
|
- $li.off().find('.file-panel').off().end().remove();
|
|
|
- }
|
|
|
+ $li.off().find('.file-panel').off().end().remove();}
|
|
|
|
|
|
function updateTotalProgress() {
|
|
|
var loaded = 0, total = 0, spans = $progress.children(), percent;
|
|
|
$.each(percentages, function (k, v) {
|
|
|
total += v[ 0 ];
|
|
|
- loaded += v[ 0 ] * v[ 1 ];
|
|
|
- });
|
|
|
+ loaded += v[ 0 ] * v[ 1 ];});
|
|
|
percent = total ? loaded / total : 0;
|
|
|
spans.eq(0).text(Math.round(percent * 100) + '%');
|
|
|
spans.eq(1).css('width', Math.round(percent * 100) + '%');
|
|
|
- updateStatus();
|
|
|
- }
|
|
|
+ updateStatus();}
|
|
|
|
|
|
function updateStatus() {
|
|
|
var text = '', stats;
|
|
|
if (state === 'ready') {
|
|
|
- text = '选中' + fileCount + '个文件,共' + WebUploader.formatSize(fileSize) + '。';
|
|
|
- } else if (state === 'confirm') {
|
|
|
+ text = '选中' + fileCount + '个文件,共' + WebUploader.formatSize(fileSize) + '。';} else if (state === 'confirm') {
|
|
|
stats = uploader.getStats();
|
|
|
if (stats.uploadFailNum) {
|
|
|
- text = '已成功上传' + stats.successNum + '个文件,' + stats.uploadFailNum + '个文件上传失败,<a class="retry" href="#">重新上传</a>失败文件'
|
|
|
- }
|
|
|
- } else {
|
|
|
+ text = '已成功上传' + stats.successNum + '个文件,' + stats.uploadFailNum + '个文件上传失败,<a class="retry" href="#">重新上传</a>失败文件'}} else {
|
|
|
stats = uploader.getStats();
|
|
|
text = '共' + fileCount + '个(' + WebUploader.formatSize(fileSize) + '),已上传' + stats.successNum + '个';
|
|
|
if (stats.uploadFailNum) {
|
|
|
- text += ',失败' + stats.uploadFailNum + '个';
|
|
|
- }
|
|
|
- }
|
|
|
- $info.html(text);
|
|
|
- }
|
|
|
+ text += ',失败' + stats.uploadFailNum + '个';}}
|
|
|
+ $info.html(text);}
|
|
|
|
|
|
function setState(val) {
|
|
|
var file, stats;
|
|
|
if (val === state) {
|
|
|
- return;
|
|
|
- }
|
|
|
+ return;}
|
|
|
$upload.removeClass('state-' + state);
|
|
|
$upload.addClass('state-' + val);
|
|
|
state = val;
|
|
@@ -476,51 +395,41 @@
|
|
|
stats = uploader.getStats();
|
|
|
if (stats.successNum && !stats.uploadFailNum) {
|
|
|
setState('finish');
|
|
|
- return;
|
|
|
- }
|
|
|
+ return;}
|
|
|
break;
|
|
|
case 'finish':
|
|
|
stats = uploader.getStats();
|
|
|
if (stats.successNum) {
|
|
|
- completed.call(this);
|
|
|
- } else {
|
|
|
+ completed.call(this);} else {
|
|
|
// 没有成功的文件,重设
|
|
|
state = 'done';
|
|
|
- location.reload();
|
|
|
- }
|
|
|
- break;
|
|
|
- }
|
|
|
- updateStatus();
|
|
|
- }
|
|
|
+ location.reload();}
|
|
|
+ break;}
|
|
|
+ updateStatus();}
|
|
|
|
|
|
uploader.onUploadProgress = function (file, percentage) {
|
|
|
var $li = $('#' + file.id), $percent = $li.find('.progress span');
|
|
|
$percent.css('width', percentage * 100 + '%');
|
|
|
percentages[ file.id ][ 1 ] = percentage;
|
|
|
- updateTotalProgress();
|
|
|
- };
|
|
|
+ updateTotalProgress();};
|
|
|
|
|
|
uploader.onFileQueued = function (file) {
|
|
|
fileCount++;
|
|
|
fileSize += file.size;
|
|
|
if (fileCount === 1) {
|
|
|
$placeHolder.addClass('element-invisible');
|
|
|
- $statusBar.show();
|
|
|
- }
|
|
|
+ $statusBar.show();}
|
|
|
addFile(file);
|
|
|
setState('ready');
|
|
|
- updateTotalProgress();
|
|
|
- };
|
|
|
+ updateTotalProgress();};
|
|
|
|
|
|
uploader.onfieldequeued = function (file) {
|
|
|
fileCount--;
|
|
|
fileSize -= file.size;
|
|
|
if (!fileCount) {
|
|
|
- setState('pedding');
|
|
|
- }
|
|
|
+ setState('pedding');}
|
|
|
removeFile(file);
|
|
|
- updateTotalProgress();
|
|
|
- };
|
|
|
+ updateTotalProgress();};
|
|
|
|
|
|
uploader.on('all', function (type) {
|
|
|
switch (type) {
|
|
@@ -532,34 +441,24 @@
|
|
|
break;
|
|
|
case 'stopUpload':
|
|
|
setState('paused');
|
|
|
- break;
|
|
|
- }
|
|
|
- });
|
|
|
+ break;}});
|
|
|
|
|
|
uploader.onError = function (code) {
|
|
|
- //alert('Eroor: ' + code);
|
|
|
- };
|
|
|
+ //alert('Eroor: ' + code);};
|
|
|
|
|
|
$upload.on('click', function () {
|
|
|
if ($(this).hasClass('disabled')) {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ return false;}
|
|
|
if (state === 'ready') {
|
|
|
- uploader.upload();
|
|
|
- } else if (state === 'paused') {
|
|
|
- uploader.upload();
|
|
|
- } else if (state === 'uploading') {
|
|
|
- uploader.stop();
|
|
|
- }
|
|
|
- });
|
|
|
+ uploader.upload();} else if (state === 'paused') {
|
|
|
+ uploader.upload();} else if (state === 'uploading') {
|
|
|
+ uploader.stop();}});
|
|
|
|
|
|
$info.on('click', '.retry', function () {
|
|
|
- uploader.retry();
|
|
|
- });
|
|
|
+ uploader.retry();});
|
|
|
|
|
|
$upload.addClass('state-' + state);
|
|
|
- updateTotalProgress();
|
|
|
- });
|
|
|
+ updateTotalProgress();});
|
|
|
|
|
|
</script>
|
|
|
</body>
|