|
|
/* Redmine - project management software
|
|
|
Copyright (C) 2006-2013 Jean-Philippe Lang */
|
|
|
|
|
|
function postUpMsg(attachmentId) {
|
|
|
$.ajax({
|
|
|
url: '/attachments/renderTag',
|
|
|
type: "GET",
|
|
|
data: {
|
|
|
attachmentId: attachmentId
|
|
|
}
|
|
|
|
|
|
})
|
|
|
}
|
|
|
|
|
|
function reload(fileSpan) {
|
|
|
fileSpan.remove();
|
|
|
$('#upload_file_count').html("<%= l(:label_no_file_uploaded)%>");
|
|
|
$old_file = $("#_file");
|
|
|
$new_file = $old_file.clone(true);
|
|
|
$old_file.replaceWith($new_file);
|
|
|
$new_file.show();
|
|
|
|
|
|
}
|
|
|
|
|
|
function addFile_board(inputEl, file, eagerUpload, id,btnId) {
|
|
|
|
|
|
var attachments_frame = '#attachments_fields' + id;
|
|
|
if ($(attachments_frame).children().length < 30) {
|
|
|
deleteallfiles = $(inputEl).data('deleteAllFiles');
|
|
|
var attachmentId = addFile.nextAttachmentId++;
|
|
|
|
|
|
var fileSpan = $('<span>', {
|
|
|
'id': 'attachments_' + attachmentId,
|
|
|
'class': 'attachment'
|
|
|
});
|
|
|
|
|
|
fileSpan.append(
|
|
|
$('<i></i>').attr({
|
|
|
'class': ' iconfont icon-fujian ml20mr20Color',
|
|
|
'aria-hidden': true
|
|
|
}),
|
|
|
$('<input>', {
|
|
|
'type': 'text',
|
|
|
'class': 'upload_filename readonly hidden fl',
|
|
|
'name': 'attachments[' + attachmentId + '][filename]',
|
|
|
'readonly': 'readonly',
|
|
|
'style': 'border:none; white-space: nowrap; text-overflow:ellipsis;'
|
|
|
}).val(file.name),
|
|
|
$('<font></font>').attr({
|
|
|
'class': 'ml20 mr20'
|
|
|
}).html(conver_size(file.size)),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'text',
|
|
|
// 'class': 'description',
|
|
|
// 'name': 'attachments[' + attachmentId + '][description]',
|
|
|
// 'maxlength': 254,
|
|
|
// 'placeholder': $(inputEl).data('descriptionPlaceholder')
|
|
|
// }).toggle(!eagerUpload),
|
|
|
// $('<span >' + $(inputEl).data('fieldIsPublic') + ':</span>').attr({
|
|
|
// 'class': 'ispublic-label'
|
|
|
// }),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'checkbox',
|
|
|
// 'class': 'is_public_checkbox',
|
|
|
// 'value': 1,
|
|
|
// 'name': 'attachments[' + attachmentId + '][is_public_checkbox]',
|
|
|
// checked: 'checked'
|
|
|
// }).toggle(!eagerUpload),
|
|
|
$('<a><i class="iconfont ml20mr20Color"></i></a>').attr({
|
|
|
'href': "#",
|
|
|
'class': 'remove-upload fl',
|
|
|
'style': 'vertical-align:top;'
|
|
|
}).click(function() {
|
|
|
if (confirm($(inputEl).data('areYouSure'))) {
|
|
|
removeFile();
|
|
|
if (!eagerUpload) {
|
|
|
(function(e) {
|
|
|
reload(e);
|
|
|
})(fileSpan);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}).toggle(!eagerUpload),
|
|
|
$('<div>', {
|
|
|
'class': 'div_attachments',
|
|
|
'name': 'div_' + 'attachments_' + attachmentId
|
|
|
})
|
|
|
).appendTo(attachments_frame);
|
|
|
|
|
|
if (eagerUpload) {
|
|
|
ajaxUpload(file, attachmentId, fileSpan, inputEl,btnId);
|
|
|
|
|
|
}
|
|
|
return attachmentId;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
function addFile(inputEl, file, eagerUpload,btnId) {
|
|
|
|
|
|
var attachments_frame = '#attachments_fields';
|
|
|
// $("#issue_confirm").attr('href', '#');
|
|
|
$('#issue_confirm').attr("disabled",true);
|
|
|
$('#issue_confirm').css('background-color','#c1c1c1');
|
|
|
$('#issue_confirm').css('cursor','default');
|
|
|
if (true) {
|
|
|
deleteallfiles = $(inputEl).data('deleteAllFiles');
|
|
|
var attachmentId = addFile.nextAttachmentId++;
|
|
|
|
|
|
var fileSpan = $('<span>', {
|
|
|
'id': 'attachments_' + attachmentId,
|
|
|
'class': 'attachment'
|
|
|
});
|
|
|
|
|
|
fileSpan.append(
|
|
|
$('<i></i>').attr({
|
|
|
'class': 'fa fa-folder mr5 color-blue fl mt8',
|
|
|
'aria-hidden': true
|
|
|
}),
|
|
|
$('<input>', {
|
|
|
'type': 'text',
|
|
|
'class': 'upload_filename color-grey readonly hidden fl',
|
|
|
'name': 'attachments[' + attachmentId + '][filename]',
|
|
|
'readonly': 'readonly',
|
|
|
'style': 'border:none; white-space: nowrap;color:#676767; text-overflow:ellipsis;font-family: Consolas;'
|
|
|
}).val(file.name),
|
|
|
$('<span></span>').attr({
|
|
|
'class': 'mr10 color-grey fl mt3',
|
|
|
'style': 'vertical-align: middle;'
|
|
|
}).html(conver_size(file.size)),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'text',
|
|
|
// 'class': 'description',
|
|
|
// 'name': 'attachments[' + attachmentId + '][description]',
|
|
|
// 'maxlength': 254,
|
|
|
// 'placeholder': $(inputEl).data('descriptionPlaceholder')
|
|
|
// }).toggle(!eagerUpload),
|
|
|
// $('<span >' + $(inputEl).data('fieldIsPublic') + ':</span>').attr({
|
|
|
// 'class': 'ispublic-label'
|
|
|
// }),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'checkbox',
|
|
|
// 'class': 'is_public_checkbox',
|
|
|
// 'value': 1,
|
|
|
// 'name': 'attachments[' + attachmentId + '][is_public_checkbox]',
|
|
|
// checked: 'checked'
|
|
|
// }).toggle(!eagerUpload),
|
|
|
$('<a><i class="fa fa-trash-o mr5"></i></a>').attr({
|
|
|
'href': "#",
|
|
|
'class': 'remove-upload fl'
|
|
|
}).click(function() {
|
|
|
if (confirm($(inputEl).data('areYouSure'))) {
|
|
|
removeFile();
|
|
|
if (!eagerUpload) {
|
|
|
(function(e) {
|
|
|
reload(e);
|
|
|
})(fileSpan);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}).toggle(!eagerUpload),
|
|
|
$('<div>', {
|
|
|
'class': 'div_attachments',
|
|
|
'name': 'div_' + 'attachments_' + attachmentId
|
|
|
})
|
|
|
).appendTo('#attachments_fields');
|
|
|
$('#attachments_fields').append("<div class='cl'></div>");
|
|
|
|
|
|
// 计算文件名所占的size大小 中文1.8个size 其他1个size
|
|
|
var len = file.name.length;
|
|
|
var iSize = 0;
|
|
|
for(var i = 0; i < len; i++){
|
|
|
var regex =/^[\u4E00-\u9FA5]+$/;
|
|
|
var ch = file.name[i];
|
|
|
var judge = regex.test(ch);
|
|
|
if(regex.test(ch)){
|
|
|
iSize += 1.9;
|
|
|
}else{
|
|
|
iSize += 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$("input[name='attachments[" + attachmentId + "][filename]']").attr("size", iSize);
|
|
|
if (eagerUpload) {
|
|
|
ajaxUpload(file, attachmentId, fileSpan, inputEl,btnId);
|
|
|
}
|
|
|
return attachmentId;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
addFile.nextAttachmentId = 1;
|
|
|
|
|
|
function addReviseFile(inputEl, file, eagerUpload,btnId) {
|
|
|
|
|
|
var attachments_frame = '#revise_attachments_fields';
|
|
|
if ($(attachments_frame).children().length < 30) {
|
|
|
deleteallfiles = $(inputEl).data('deleteAllFiles');
|
|
|
var attachmentId = addFile.nextAttachmentId++;
|
|
|
|
|
|
var fileSpan = $('<span>', {
|
|
|
'id': 'attachments_' + attachmentId,
|
|
|
'class': 'attachment'
|
|
|
});
|
|
|
|
|
|
fileSpan.append($('<i></i>').attr({
|
|
|
'class': 'iconfont icon-fujian ml20mr20Color',
|
|
|
'aria-hidden': true
|
|
|
}),
|
|
|
$('<input>', {
|
|
|
'type': 'text',
|
|
|
'class': 'upload_filename readonly hidden fl',
|
|
|
'name': 'attachments[' + attachmentId + '][filename]',
|
|
|
'readonly': 'readonly',
|
|
|
'style': 'border:none; white-space: nowrap; text-overflow:ellipsis;vertical-align:middle;'
|
|
|
}).val(file.name),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'text',
|
|
|
// 'class': 'description',
|
|
|
// 'name': 'attachments[' + attachmentId + '][description]',
|
|
|
// 'maxlength': 254,
|
|
|
// 'placeholder': $(inputEl).data('descriptionPlaceholder')
|
|
|
// }).toggle(!eagerUpload),
|
|
|
// $('<span >' + $(inputEl).data('fieldIsPublic') + ':</span>').attr({
|
|
|
// 'class': 'ispublic-label'
|
|
|
// }),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'checkbox',
|
|
|
// 'class': 'is_public_checkbox',
|
|
|
// 'value': 1,
|
|
|
// 'name': 'attachments[' + attachmentId + '][is_public_checkbox]',
|
|
|
// checked: 'checked'
|
|
|
// }).toggle(!eagerUpload),
|
|
|
$('<a><i class="iconfont ml20 mr20"></i></a>').attr({
|
|
|
'href': "#",
|
|
|
'class': 'remove-upload fl',
|
|
|
'style': 'vertical-align:top;'
|
|
|
}).click(function() {
|
|
|
if (confirm($(inputEl).data('areYouSure'))) {
|
|
|
removeReviseFile();
|
|
|
if (!eagerUpload) {
|
|
|
(function(e) {
|
|
|
reload(e);
|
|
|
})(fileSpan);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}).toggle(!eagerUpload),
|
|
|
$('<div>', {
|
|
|
'class': 'div_attachments',
|
|
|
'name': 'div_' + 'attachments_' + attachmentId
|
|
|
})
|
|
|
).appendTo('#revise_attachments_fields');
|
|
|
|
|
|
$("#uploadReviseBox").addClass('disable_link');
|
|
|
$("#choose_revise_attach").attr("onclick","return false;");
|
|
|
|
|
|
if (eagerUpload) {
|
|
|
ajaxUpload(file, attachmentId, fileSpan, inputEl,btnId);
|
|
|
}
|
|
|
return attachmentId;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
function ajaxUpload(file, attachmentId, fileSpan, inputEl,btnId) {
|
|
|
//上传开始调用函数
|
|
|
function onLoadstart(e) {
|
|
|
fileSpan.removeClass('ajax-waiting');
|
|
|
fileSpan.addClass('ajax-loading');
|
|
|
$('input:submit', $(this).parents('form')).attr('disabled', 'disabled');
|
|
|
$(".submit_form").attr("disabled",true).removeClass("task-btn-orange").css("pointer-events","none");
|
|
|
}
|
|
|
//更改progressbar的值
|
|
|
function onProgress(e) {
|
|
|
if (e.lengthComputable) {
|
|
|
try{
|
|
|
this.progressbar('value', e.loaded * 100 / e.total);
|
|
|
} catch (e){
|
|
|
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function actualUpload(file, attachmentId, fileSpan, inputEl,btnId) {
|
|
|
|
|
|
ajaxUpload.uploading++;
|
|
|
|
|
|
uploadBlob(file, $(inputEl).data('upload-path'), attachmentId, {
|
|
|
loadstartEventHandler: onLoadstart.bind(progressSpan),
|
|
|
progressEventHandler: onProgress.bind(progressSpan)
|
|
|
})
|
|
|
.done(function(result) {
|
|
|
try{
|
|
|
progressSpan.progressbar('value', 100).remove(); //上传完成就去掉该文件名后的进度条
|
|
|
} catch (e){
|
|
|
|
|
|
}
|
|
|
fileSpan.find('input.description, a').css('display', 'inline-block');
|
|
|
fileSpan.find('input.is_public_checkbox, a').css('display', 'inline-block');
|
|
|
})
|
|
|
.fail(function(result) {
|
|
|
progressSpan.text("");
|
|
|
if ($("#network_issue")) { //在上传处都要给出一个network_issue的div用来显示错误
|
|
|
$("#network_issue").show();
|
|
|
}
|
|
|
}).always(function() {
|
|
|
ajaxUpload.uploading--;
|
|
|
fileSpan.removeClass('ajax-loading');
|
|
|
var containerid = $(inputEl).data('containerid');//多个上传控件需要的容器id
|
|
|
if(containerid == undefined ){
|
|
|
var count = 1;//同步上传参数为1,所以不需要去获取正在上传的文件就知道是1
|
|
|
// $('#upload_file_count').html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('lebelFileUploding'));
|
|
|
}
|
|
|
else{
|
|
|
var count = 1;
|
|
|
$('#upload_file_count' + containerid).html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('lebelFileUploding'));
|
|
|
}
|
|
|
var form = fileSpan.parents('form');
|
|
|
if (form.queue('upload').length == 0 && ajaxUpload.uploading == 0) { //所有文件上传完毕,更改状态
|
|
|
$('input:submit', form).removeAttr('disabled');
|
|
|
$(".submit_form").removeAttr("disabled").addClass("task-btn-orange").css("pointer-events","auto");
|
|
|
$('#' + btnId).css('background-color', '#ff7500');
|
|
|
$('#'+btnId).attr("onclick",$('#'+btnId).attr("click-bf")).removeAttr("click-bf");
|
|
|
|
|
|
if(containerid == undefined ){
|
|
|
var count = $('#attachments_fields>span').length;
|
|
|
// $('#upload_file_count').html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('fileCount'));
|
|
|
}else{
|
|
|
var count = $('#attachments_fields' + containerid + '>span').length;
|
|
|
$('#upload_file_count'+containerid).html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('fileCount'));
|
|
|
}
|
|
|
|
|
|
}
|
|
|
form.dequeue('upload');//上传完成一个就退出一个
|
|
|
});
|
|
|
|
|
|
//gcm files count and add delete_all link
|
|
|
|
|
|
//modify by yutao 2015-5-14 <20><>1<EFBFBD><31>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ϴ<EFBFBD><CFB4>ؼ<EFBFBD>ʱ<EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug <20>ʸ<EFBFBD>֮ start
|
|
|
var containerid = $(inputEl).data('containerid');
|
|
|
$('#'+btnId).css('background-color','#c1c1c1');
|
|
|
$('#'+btnId).attr("click-bf",$('#'+btnId).attr("onclick")).removeAttr("onclick");//禁用a标签
|
|
|
|
|
|
if (containerid == undefined) {
|
|
|
var count = $('#attachments_fields>span').length;
|
|
|
// $('#upload_file_count').html("<span id=\"count\">1</span>" + $(inputEl).data('lebelFileUploding'));//目前肯定是穿一个文件
|
|
|
if (count >= 1) {
|
|
|
var add_attachs = $('.add_attachment');
|
|
|
var delete_all = $('.remove_all');
|
|
|
if (delete_all.length < 1) {
|
|
|
add_attachs.append($("<a> </a>").attr({
|
|
|
"href": "javascript:void(0)",
|
|
|
'class': 'remove_all',
|
|
|
"onclick": "removeAll()"
|
|
|
}));
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
var count = $('#attachments_fields' + containerid + '>span').length;
|
|
|
$('#upload_file_count' + containerid).html("<span id=\"count\">1</span>" + $(inputEl).data('lebelFileUploding'));//目前肯定是穿一个文件
|
|
|
if (count >= 1) {
|
|
|
var add_attachs = $('.add_attachment').filter(function(index) {
|
|
|
return $(this).data('containerid') == containerid;
|
|
|
});
|
|
|
var delete_all = $('.remove_all').filter(function(index) {
|
|
|
return $(this).data('containerid') == containerid;
|
|
|
});
|
|
|
if (delete_all.length < 1) {
|
|
|
add_attachs.append($("<a> </a>").attr({
|
|
|
"href": "javascript:void(0)",
|
|
|
'class': 'remove_all',
|
|
|
'data-containerid': containerid,
|
|
|
"onclick": "removeAll('" + containerid + "')"
|
|
|
}));
|
|
|
}
|
|
|
}
|
|
|
//modify by yutao 2015-5-14 <20><>1<EFBFBD><31>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ϴ<EFBFBD><CFB4>ؼ<EFBFBD>ʱ<EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug <20>ʸ<EFBFBD>֮ end
|
|
|
}
|
|
|
|
|
|
//gcm
|
|
|
|
|
|
}
|
|
|
//在插入文件名的后边插入div
|
|
|
var progressSpan = $('<div>').insertAfter(fileSpan.find('input.upload_filename'));
|
|
|
progressSpan.progressbar(); //将div处理成progress bar
|
|
|
fileSpan.addClass('ajax-waiting'); //添加文件正在上传的状态
|
|
|
var containerid = $(inputEl).data('containerid');//多个上传控件需要的容器id
|
|
|
if(containerid == undefined ){ //选择了多少个文件也要显示,因为有时候文件过大,一时半会传不完,但还是显示文件没有选择
|
|
|
var count = $('#attachments_fields>span').length;
|
|
|
$('#upload_file_count').html("<span id=\"count\">" + count + "</span>" + '个文件被选择');
|
|
|
}else{
|
|
|
var count = $('#attachments_fields' + containerid + '>span').length;
|
|
|
$('#upload_file_count'+containerid).html("<span id=\"count\">" + count + "</span>" + '个文件被选择');
|
|
|
}
|
|
|
//最大的同步上传参数
|
|
|
var maxSyncUpload = 1 //$(inputEl).data('max-concurrent-uploads');
|
|
|
//如果没有指定同步上传参数 或者参数不对,或者需要上传的文件已经小于同步上传的个数,那么直接上传
|
|
|
if (maxSyncUpload == null || maxSyncUpload <= 0 || ajaxUpload.uploading < maxSyncUpload)
|
|
|
actualUpload(file, attachmentId, fileSpan, inputEl,btnId);
|
|
|
else //否则就进行队列上传
|
|
|
$(inputEl).parents('form').queue('upload', actualUpload.bind(this, file, attachmentId, fileSpan, inputEl,btnId));
|
|
|
}
|
|
|
|
|
|
ajaxUpload.uploading = 0;
|
|
|
|
|
|
function removeFile() {
|
|
|
$(this).parent('span').remove();
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
function removeReviseFile() {
|
|
|
$(this).parent('span').remove();
|
|
|
$("#uploadReviseBox").removeClass('disable_link');
|
|
|
$("#choose_revise_attach").attr("onclick","_file.click();");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
//gcm delete all file
|
|
|
//modify by yutao 2015-5-14 <20><>1<EFBFBD><31>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ϴ<EFBFBD><CFB4>ؼ<EFBFBD>ʱ<EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug <20>ʸ<EFBFBD>֮ start
|
|
|
function removeAll(containerid) {
|
|
|
if (confirm(deleteallfiles)) {
|
|
|
if (containerid == undefined) {
|
|
|
$(".remove-upload").removeAttr("data-confirm");
|
|
|
$(".remove-upload").click();
|
|
|
} else {
|
|
|
var arr = $(".remove-upload").filter(function() {
|
|
|
return $(this).data('containerid') == containerid;
|
|
|
});
|
|
|
arr.removeAttr("data-confirm");
|
|
|
arr.click();
|
|
|
}
|
|
|
}
|
|
|
// return false;
|
|
|
}
|
|
|
//modify by yutao 2015-5-14 <20><>1<EFBFBD><31>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>ڶ<EFBFBD><DAB6><EFBFBD>ϴ<EFBFBD><CFB4>ؼ<EFBFBD>ʱ<EFBFBD>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug <20>ʸ<EFBFBD>֮ end
|
|
|
//gcm
|
|
|
|
|
|
function uploadBlob(blob, uploadUrl, attachmentId, options) {
|
|
|
|
|
|
var actualOptions = $.extend({
|
|
|
loadstartEventHandler: $.noop,
|
|
|
progressEventHandler: $.noop
|
|
|
}, options);
|
|
|
if (uploadUrl.indexOf('?') > 0) {
|
|
|
uploadUrl = uploadUrl + '&attachment_id=' + attachmentId;
|
|
|
} else {
|
|
|
uploadUrl = uploadUrl + '?attachment_id=' + attachmentId;
|
|
|
}
|
|
|
if (blob instanceof window.File) {
|
|
|
uploadUrl += '&filename=' + encodeURIComponent(blob.name);
|
|
|
}
|
|
|
|
|
|
return $.ajax(uploadUrl, {
|
|
|
type: 'POST',
|
|
|
contentType: 'application/octet-stream',
|
|
|
beforeSend: function(jqXhr) {
|
|
|
jqXhr.setRequestHeader('Accept', 'application/js');
|
|
|
},
|
|
|
xhr: function() {
|
|
|
var xhr = $.ajaxSettings.xhr();
|
|
|
xhr.upload.onloadstart = actualOptions.loadstartEventHandler;
|
|
|
xhr.upload.onprogress = actualOptions.progressEventHandler;
|
|
|
return xhr;
|
|
|
},
|
|
|
data: blob,
|
|
|
cache: false,
|
|
|
processData: false
|
|
|
});
|
|
|
}
|
|
|
|
|
|
function addReviseInputFiles(inputEl,btnId) {
|
|
|
// var clearedFileInput = $(inputEl).clone().val('');
|
|
|
if (inputEl.files) {
|
|
|
uploadAndAttachReviseFiles(inputEl.files, inputEl,btnId);
|
|
|
// $(inputEl).remove();
|
|
|
} else {
|
|
|
// browser not supporting the file API, upload on form submission
|
|
|
var attachmentId;
|
|
|
var aFilename = inputEl.value.split(/\/|\\/);
|
|
|
var count = $('#attachments_fields>span').length;
|
|
|
attachmentId = addReviseFile(inputEl, {
|
|
|
name: aFilename[aFilename.length - 1]
|
|
|
}, false);
|
|
|
if (attachmentId) {
|
|
|
$(inputEl).attr({
|
|
|
name: 'attachments[' + attachmentId + '][file]'
|
|
|
}).hide();
|
|
|
if (count <= 0) count = 1;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//clearedFileInput.insertAfter('#attachments_fields');
|
|
|
}
|
|
|
|
|
|
function imageAddInputFiles(inputEl){
|
|
|
var extStart = inputEl.value.lastIndexOf(".");
|
|
|
var ext = inputEl.value.substring(extStart,inputEl.value.length).toUpperCase();
|
|
|
if(ext != ".BMP" && ext!=".PNG" && ext != ".GIF" && ext != ".JPG" && ext != ".JPEG" ){
|
|
|
notice_box("图片仅支持BMP、JPG、GIF、PNG、JPEG格式");
|
|
|
return;
|
|
|
}
|
|
|
addInputFiles(inputEl)
|
|
|
}
|
|
|
|
|
|
function addInputFiles(inputEl,btnId) {
|
|
|
// var clearedFileInput = $(inputEl).clone().val('');
|
|
|
if (inputEl.files) {
|
|
|
// if(inputEl.files.length >= 5){
|
|
|
// alert('一次选择的文件不能超过5个')
|
|
|
// return;
|
|
|
// }
|
|
|
// upload files using ajax
|
|
|
uploadAndAttachFiles(inputEl.files, inputEl,btnId);
|
|
|
// $(inputEl).remove();
|
|
|
} else {
|
|
|
// browser not supporting the file API, upload on form submission
|
|
|
var attachmentId;
|
|
|
var aFilename = inputEl.value.split(/\/|\\/);
|
|
|
var count = $('#attachments_fields>span').length;
|
|
|
attachmentId = addFile(inputEl, {
|
|
|
name: aFilename[aFilename.length - 1]
|
|
|
}, false);
|
|
|
if (attachmentId) {
|
|
|
$(inputEl).attr({
|
|
|
name: 'attachments[' + attachmentId + '][file]'
|
|
|
}).hide();
|
|
|
if (count <= 0) count = 1;
|
|
|
$('#upload_file_count').html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('fileCount'));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//clearedFileInput.insertAfter('#attachments_fields');
|
|
|
}
|
|
|
|
|
|
function addInputFiles_board(inputEl, id,btnId) {
|
|
|
// var clearedFileInput = $(inputEl).clone().val('');
|
|
|
|
|
|
if (inputEl.files) {
|
|
|
// if(inputEl.files.length >= 5){
|
|
|
// alert('一次选择的文件不能超过5个')
|
|
|
// return;
|
|
|
// }
|
|
|
// upload files using ajax
|
|
|
uploadAndAttachFiles_board(inputEl.files, inputEl, id,btnId);
|
|
|
// $(inputEl).remove();
|
|
|
} else {
|
|
|
// browser not supporting the file API, upload on form submission
|
|
|
var attachmentId;
|
|
|
var aFilename = inputEl.value.split(/\/|\\/);
|
|
|
attachmentId = addFile_board(inputEl, {
|
|
|
name: aFilename[aFilename.length - 1]
|
|
|
}, false, id);
|
|
|
if (attachmentId) {
|
|
|
$(inputEl).attr({
|
|
|
name: 'attachments[' + attachmentId + '][file]'
|
|
|
}).hide();
|
|
|
$('#upload_file_count').html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('fileCount'));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//clearedFileInput.insertAfter('#attachments_fields');
|
|
|
}
|
|
|
|
|
|
function uploadAndAttachReviseFiles(files, inputEl,btnId) {
|
|
|
|
|
|
var maxFileSize = $(inputEl).data('max-file-size');
|
|
|
var maxFileSizeExceeded = $(inputEl).data('max-file-size-message');
|
|
|
|
|
|
var sizeExceeded = false;
|
|
|
if(files.length > 1){
|
|
|
$("#hint_message").html("只能上传一个附件").show();
|
|
|
} else{
|
|
|
$("#hint_message").html("只能上传一个附件").hide();
|
|
|
$.each(files, function() {
|
|
|
if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {
|
|
|
sizeExceeded = true;
|
|
|
}
|
|
|
});
|
|
|
if (sizeExceeded) {
|
|
|
notice_sure_box(maxFileSizeExceeded);
|
|
|
} else {
|
|
|
$.each(files, function() {
|
|
|
addReviseFile(inputEl, this, true,btnId);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
function uploadAndAttachFiles(files, inputEl,btnId) {
|
|
|
|
|
|
var maxFileSize = $(inputEl).data('max-file-size');
|
|
|
var maxFileSizeExceeded = $(inputEl).data('max-file-size-message');
|
|
|
|
|
|
var sizeExceeded = false;
|
|
|
$.each(files, function() {
|
|
|
if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {
|
|
|
sizeExceeded = true;
|
|
|
}
|
|
|
});
|
|
|
if (sizeExceeded) {
|
|
|
notice_sure_box(maxFileSizeExceeded);
|
|
|
} else {
|
|
|
$.each(files, function() {
|
|
|
addFile(inputEl, this, true,btnId);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function uploadAndAttachFiles_board(files, inputEl, id,btnId) {
|
|
|
|
|
|
var maxFileSize = $(inputEl).data('max-file-size');
|
|
|
var maxFileSizeExceeded = $(inputEl).data('max-file-size-message');
|
|
|
|
|
|
var sizeExceeded = false;
|
|
|
$.each(files, function() {
|
|
|
if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {
|
|
|
sizeExceeded = true;
|
|
|
}
|
|
|
});
|
|
|
if (sizeExceeded) {
|
|
|
notice_sure_box(maxFileSizeExceeded);
|
|
|
} else {
|
|
|
$.each(files, function() {
|
|
|
addFile_board(inputEl, this, true, id,btnId);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function handleFileDropEvent(e) {
|
|
|
|
|
|
$(this).removeClass('fileover');
|
|
|
blockEventPropagation(e);
|
|
|
|
|
|
if ($.inArray('Files', e.dataTransfer.types) > -1) {
|
|
|
uploadAndAttachFiles(e.dataTransfer.files, $('input:file.file_selector'));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function dragOverHandler(e) {
|
|
|
$(this).addClass('fileover');
|
|
|
blockEventPropagation(e);
|
|
|
}
|
|
|
|
|
|
function dragOutHandler(e) {
|
|
|
$(this).removeClass('fileover');
|
|
|
blockEventPropagation(e);
|
|
|
}
|
|
|
|
|
|
function setupFileDrop() {
|
|
|
if (window.File && window.FileList && window.ProgressEvent && window.FormData) {
|
|
|
|
|
|
$.event.fixHooks.drop = {
|
|
|
props: ['dataTransfer']
|
|
|
};
|
|
|
|
|
|
$('form div.box').has('input:file').each(function() {
|
|
|
$(this).on({
|
|
|
dragover: dragOverHandler,
|
|
|
dragleave: dragOutHandler,
|
|
|
drop: handleFileDropEvent
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$(document).ready(setupFileDrop);
|
|
|
$(function() {
|
|
|
$(".file_selector").each(function() {
|
|
|
deleteallfiles = $(this).data('deleteAllFiles');
|
|
|
var containerid = $(this).data('containerid');
|
|
|
if (containerid == undefined) containerid = '';
|
|
|
var count = $('#attachments_fields' + containerid + '>span').length;
|
|
|
if (count >= 1) {
|
|
|
$('#upload_file_count' + containerid).html("<span id=\"count\">" + count + "</span>" + $(this).data('fileCount'));
|
|
|
var add_attachs = $('.add_attachment').filter(function(index) {
|
|
|
return $(this).data('containerid') == containerid;
|
|
|
});
|
|
|
var delete_all = $('.remove_all').filter(function(index) {
|
|
|
return $(this).data('containerid') == containerid;
|
|
|
});
|
|
|
if (delete_all.length < 1) {
|
|
|
add_attachs.append($("<a> </a>").attr({
|
|
|
"href": "javascript:void(0)",
|
|
|
'class': 'remove_all',
|
|
|
'data-containerid': containerid,
|
|
|
"onclick": "removeAll('" + containerid + "')"
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
|
|
|
//课程课件
|
|
|
function addInputFilesCourseSource(inputEl) {
|
|
|
checkBox = arguments[1] == 'public' ? false : true;
|
|
|
btnId = arguments[2];
|
|
|
// var clearedFileInput = $(inputEl).clone().val('');
|
|
|
if (inputEl.files) {
|
|
|
// if(inputEl.files.length >= 5){
|
|
|
// alert('一次选择的文件不能超过5个')
|
|
|
// return;
|
|
|
// }
|
|
|
// upload files using ajax
|
|
|
uploadAndAttachFilesCourseSource(inputEl.files, inputEl,checkBox,btnId);
|
|
|
// $(inputEl).remove();
|
|
|
} else {
|
|
|
// browser not supporting the file API, upload on form submission
|
|
|
var attachmentId;
|
|
|
var aFilename = inputEl.value.split(/\/|\\/);
|
|
|
var count = $('#attachments_fields>span').length;
|
|
|
attachmentId = addFile(inputEl, {
|
|
|
name: aFilename[aFilename.length - 1]
|
|
|
}, false);
|
|
|
if (attachmentId) {
|
|
|
$(inputEl).attr({
|
|
|
name: 'attachments[' + attachmentId + '][file]'
|
|
|
}).hide();
|
|
|
if (count <= 0) count = 1;
|
|
|
// $('#upload_file_count').html("<span id=\"count\">" + count + "</span>" + $(inputEl).data('fileCount'));
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//clearedFileInput.insertAfter('#attachments_fields');
|
|
|
}
|
|
|
|
|
|
function uploadAndAttachFilesCourseSource(files, inputEl,checkBox,btnId) {
|
|
|
|
|
|
var maxFileSize = $(inputEl).data('max-file-size');
|
|
|
var maxFileSizeExceeded = $(inputEl).data('max-file-size-message');
|
|
|
|
|
|
var sizeExceeded = false;
|
|
|
$.each(files, function() {
|
|
|
if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {
|
|
|
sizeExceeded = true;
|
|
|
}
|
|
|
});
|
|
|
if (sizeExceeded) {
|
|
|
notice_sure_box(maxFileSizeExceeded);
|
|
|
} else {
|
|
|
$.each(files, function() {
|
|
|
addFileCourseSource(inputEl, this, true,checkBox,btnId);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function addFileCourseSource(inputEl, file, eagerUpload,checkBox,btnId) {
|
|
|
|
|
|
var attachments_frame = '#attachments_fields';
|
|
|
if ($(attachments_frame).children().length < 30) {
|
|
|
deleteallfiles = $(inputEl).data('deleteAllFiles');
|
|
|
var attachmentId = addFile.nextAttachmentId++;
|
|
|
|
|
|
var fileSpan = $('<span>', {
|
|
|
'id': 'attachments_' + attachmentId,
|
|
|
'class': 'attachment'
|
|
|
});
|
|
|
//alert(checkBox);
|
|
|
if(checkBox){
|
|
|
fileSpan.append(
|
|
|
$('<input>', {
|
|
|
'type': 'text',
|
|
|
'class': 'upload_filename readonly fl',
|
|
|
'name': 'attachments[' + attachmentId + '][filename]',
|
|
|
'readonly': 'readonly'
|
|
|
}).val(file.name),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'text',
|
|
|
// 'class': 'description',
|
|
|
// 'name': 'attachments[' + attachmentId + '][description]',
|
|
|
// 'maxlength': 254,
|
|
|
// 'placeholder': $(inputEl).data('descriptionPlaceholder')
|
|
|
// }).toggle(!eagerUpload),
|
|
|
$('<div>', {
|
|
|
'class': 'div_attachments',
|
|
|
'name': 'div_' + 'attachments_' + attachmentId
|
|
|
})
|
|
|
).appendTo('#attachments_fields');
|
|
|
}else {
|
|
|
fileSpan.append(
|
|
|
$('<input>', {
|
|
|
'type': 'text',
|
|
|
'class': 'upload_filename readonly fl',
|
|
|
'name': 'attachments[' + attachmentId + '][filename]',
|
|
|
'readonly': 'readonly'
|
|
|
}).val(file.name),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'text',
|
|
|
// 'class': 'description',
|
|
|
// 'name': 'attachments[' + attachmentId + '][description]',
|
|
|
// 'maxlength': 254,
|
|
|
// 'placeholder': $(inputEl).data('descriptionPlaceholder')
|
|
|
// }).toggle(!eagerUpload),
|
|
|
// $('<span >' + $(inputEl).data('fieldIsPublic') + ':</span>').attr({
|
|
|
// 'class': 'ispublic-label'
|
|
|
// }),
|
|
|
// $('<input>', {
|
|
|
// 'type': 'checkbox',
|
|
|
// 'class': 'is_public_checkbox',
|
|
|
// 'value': 1,
|
|
|
// 'name': 'attachments[' + attachmentId + '][is_public_checkbox]',
|
|
|
// checked: 'checked'
|
|
|
// }).toggle(!eagerUpload),
|
|
|
$('<a> </a>').attr({
|
|
|
'href': "#",
|
|
|
'class': 'remove-upload fl'
|
|
|
}).click(function () {
|
|
|
if (confirm($(inputEl).data('areYouSure'))) {
|
|
|
removeFile();
|
|
|
if (!eagerUpload) {
|
|
|
(function (e) {
|
|
|
reload(e);
|
|
|
})(fileSpan);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}).toggle(!eagerUpload),
|
|
|
$('<div>', {
|
|
|
'class': 'div_attachments',
|
|
|
'name': 'div_' + 'attachments_' + attachmentId
|
|
|
})
|
|
|
).appendTo('#attachments_fields');
|
|
|
}
|
|
|
|
|
|
if (eagerUpload) {
|
|
|
ajaxUpload(file, attachmentId, fileSpan, inputEl,btnId);
|
|
|
|
|
|
}
|
|
|
return attachmentId;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
addFileCourseSource.nextAttachmentId = 1; |