771 lines
29 KiB
JavaScript
771 lines
29 KiB
JavaScript
/* 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(
|
||
$('<input>', {
|
||
'type': 'text',
|
||
'class': 'upload_filename readonly',
|
||
'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',
|
||
'data-containerid': id
|
||
}).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';
|
||
if (true) {
|
||
deleteallfiles = $(inputEl).data('deleteAllFiles');
|
||
var attachmentId = addFile.nextAttachmentId++;
|
||
|
||
var fileSpan = $('<span>', {
|
||
'id': 'attachments_' + attachmentId,
|
||
'class': 'attachment'
|
||
});
|
||
|
||
fileSpan.append(
|
||
$('<input>', {
|
||
'type': 'text',
|
||
'class': 'upload_filename readonly',
|
||
'name': 'attachments[' + attachmentId + '][filename]',
|
||
'readonly': 'readonly',
|
||
'style': 'border:none;'
|
||
}).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'
|
||
}).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;
|
||
}
|
||
addFile.nextAttachmentId = 1;
|
||
|
||
function addReviseFile(inputEl, file, eagerUpload,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'
|
||
});
|
||
|
||
fileSpan.append(
|
||
$('<input>', {
|
||
'type': 'text',
|
||
'class': 'upload_filename readonly',
|
||
'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'
|
||
}).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('#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');
|
||
}
|
||
//更改progressbar的值
|
||
function onProgress(e) {
|
||
if (e.lengthComputable) {
|
||
this.progressbar('value', e.loaded * 100 / e.total);
|
||
}
|
||
}
|
||
|
||
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) {
|
||
progressSpan.progressbar('value', 100).remove(); //上传完成就去掉该文件名后的进度条
|
||
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');
|
||
$('#' + btnId).removeAttr("disabled");
|
||
$('#' + btnId).val('确定')
|
||
$('#' + btnId).css('background-color', '#269ac9')
|
||
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');
|
||
if (containerid == undefined) {
|
||
var count = $('#attachments_fields>span').length;
|
||
$('#'+btnId).attr("disabled",true);
|
||
$('#'+btnId).val('提交中');
|
||
$('#'+btnId).css('background-color','#c1c1c1')
|
||
$('#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;
|
||
$('#'+btnId).attr("disabled",true);
|
||
$('#'+btnId).val('提交中');
|
||
$('#'+btnId).css('background-color','#c1c1c1')
|
||
$('#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 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;
|
||
$.each(files, function() {
|
||
if (this.size && maxFileSize != null && this.size > parseInt(maxFileSize)) {
|
||
sizeExceeded = true;
|
||
}
|
||
});
|
||
if (sizeExceeded) {
|
||
window.alert(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) {
|
||
window.alert(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) {
|
||
window.alert(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) {
|
||
window.alert(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',
|
||
'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',
|
||
'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'
|
||
}).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; |