/* 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) { var attachments_frame = '#attachments_fields' + id; if ($(attachments_frame).children().length < 30) { deleteallfiles = $(inputEl).data('deleteAllFiles'); var attachmentId = addFile.nextAttachmentId++; var fileSpan = $('', { 'id': 'attachments_' + attachmentId, 'class': 'attachment' }); fileSpan.append( $('', { 'type': 'text', 'class': 'filename readonly', 'name': 'attachments[' + attachmentId + '][filename]', 'readonly': 'readonly' }).val(file.name), $('', { 'type': 'text', 'class': 'description', 'name': 'attachments[' + attachmentId + '][description]', 'maxlength': 254, 'placeholder': $(inputEl).data('descriptionPlaceholder') }).toggle(!eagerUpload), $('' + $(inputEl).data('fieldIsPublic') + ':').attr({ 'class': 'ispublic-label' }), $('', { 'type': 'checkbox', 'class': 'is_public_checkbox', 'value': 1, 'name': 'attachments[' + attachmentId + '][is_public_checkbox]', checked: 'checked' }).toggle(!eagerUpload), $(' ').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), $('
', { 'class': 'div_attachments', 'name': 'div_' + 'attachments_' + attachmentId }) ).appendTo(attachments_frame); if (eagerUpload) { ajaxUpload(file, attachmentId, fileSpan, inputEl); } return attachmentId; } return null; } function addFile(inputEl, file, eagerUpload) { var attachments_frame = '#attachments_fields'; if ($(attachments_frame).children().length < 30) { deleteallfiles = $(inputEl).data('deleteAllFiles'); var attachmentId = addFile.nextAttachmentId++; var fileSpan = $('', { 'id': 'attachments_' + attachmentId, 'class': 'attachment' }); fileSpan.append( $('', { 'type': 'text', 'class': 'filename readonly', 'name': 'attachments[' + attachmentId + '][filename]', 'readonly': 'readonly' }).val(file.name), $('', { 'type': 'text', 'class': 'description', 'name': 'attachments[' + attachmentId + '][description]', 'maxlength': 254, 'placeholder': $(inputEl).data('descriptionPlaceholder') }).toggle(!eagerUpload), $('' + $(inputEl).data('fieldIsPublic') + ':').attr({ 'class': 'ispublic-label' }), $('', { 'type': 'checkbox', 'class': 'is_public_checkbox', 'value': 1, 'name': 'attachments[' + attachmentId + '][is_public_checkbox]', checked: 'checked' }).toggle(!eagerUpload), $(' ').attr({ 'href': "#", 'class': 'remove-upload' }).click(function() { if (confirm($(inputEl).data('areYouSure'))) { removeFile(); if (!eagerUpload) { (function(e) { reload(e); })(fileSpan); } } }).toggle(!eagerUpload), $('
', { 'class': 'div_attachments', 'name': 'div_' + 'attachments_' + attachmentId }) ).appendTo('#attachments_fields'); if (eagerUpload) { ajaxUpload(file, attachmentId, fileSpan, inputEl); } return attachmentId; } return null; } addFile.nextAttachmentId = 1; function ajaxUpload(file, attachmentId, fileSpan, inputEl) { function onLoadstart(e) { fileSpan.removeClass('ajax-waiting'); fileSpan.addClass('ajax-loading'); $('input:submit', $(this).parents('form')).attr('disabled', 'disabled'); } function onProgress(e) { if (e.lengthComputable) { this.progressbar('value', e.loaded * 100 / e.total); } } function actualUpload(file, attachmentId, fileSpan, inputEl) { 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(result.statusText); if ($("#network_issue")) { $("#network_issue").show(); } }).always(function() { ajaxUpload.uploading--; fileSpan.removeClass('ajax-loading'); var form = fileSpan.parents('form'); if (form.queue('upload').length == 0 && ajaxUpload.uploading == 0) { $('input:submit', form).removeAttr('disabled'); } form.dequeue('upload'); }); //gcm files count and add delete_all link //modify by yutao 2015-5-14 ��1��ҳ����ڶ���ϴ��ؼ�ʱ�˿�������bug �ʸ�֮ start var containerid = $(inputEl).data('containerid'); if (containerid == undefined) { var count = $('#attachments_fields>span').length; $('#upload_file_count').html("" + count + "" + $(inputEl).data('fileCount')); if (count >= 1) { var add_attachs = $('.add_attachment'); var delete_all = $('.remove_all'); if (delete_all.length < 1) { add_attachs.append($(" ").attr({ "href": "javascript:void(0)", 'class': 'remove_all', "onclick": "removeAll()" })); } } } else { var count = $('#attachments_fields' + containerid + '>span').length; $('#upload_file_count' + containerid).html("" + count + "" + $(inputEl).data('fileCount')); 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($(" ").attr({ "href": "javascript:void(0)", 'class': 'remove_all', 'data-containerid': containerid, "onclick": "removeAll('" + containerid + "')" })); } } //modify by yutao 2015-5-14 ��1��ҳ����ڶ���ϴ��ؼ�ʱ�˿�������bug �ʸ�֮ end } //gcm } var progressSpan = $('
').insertAfter(fileSpan.find('input.filename')); progressSpan.progressbar(); fileSpan.addClass('ajax-waiting'); var maxSyncUpload = $(inputEl).data('max-concurrent-uploads'); if (maxSyncUpload == null || maxSyncUpload <= 0 || ajaxUpload.uploading < maxSyncUpload) actualUpload(file, attachmentId, fileSpan, inputEl); else $(inputEl).parents('form').queue('upload', actualUpload.bind(this, file, attachmentId, fileSpan, inputEl)); } ajaxUpload.uploading = 0; function removeFile() { $(this).parent('span').remove(); return false; } //gcm delete all file //modify by yutao 2015-5-14 ��1��ҳ����ڶ���ϴ��ؼ�ʱ�˿�������bug �ʸ�֮ 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 ��1��ҳ����ڶ���ϴ��ؼ�ʱ�˿�������bug �ʸ�֮ 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 addInputFiles(inputEl) { // var clearedFileInput = $(inputEl).clone().val(''); if (inputEl.files) { // upload files using ajax uploadAndAttachFiles(inputEl.files, inputEl); // $(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("" + count + "" + $(inputEl).data('fileCount')); } } //clearedFileInput.insertAfter('#attachments_fields'); } function addInputFiles_board(inputEl, id) { // var clearedFileInput = $(inputEl).clone().val(''); if (inputEl.files) { // upload files using ajax uploadAndAttachFiles_board(inputEl.files, inputEl, id); // $(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("" + count + "" + $(inputEl).data('fileCount')); } } //clearedFileInput.insertAfter('#attachments_fields'); } function uploadAndAttachFiles(files, inputEl) { 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); }); } } function uploadAndAttachFiles_board(files, inputEl, id) { 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); }); } } 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("" + count + "" + $(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($(" ").attr({ "href": "javascript:void(0)", 'class': 'remove_all', 'data-containerid': containerid, "onclick": "removeAll('" + containerid + "')" })); } } }); }); //课程课件 function addInputFilesCourseSource(inputEl) { checkBox = arguments[1] == 'public' ? false : true; // var clearedFileInput = $(inputEl).clone().val(''); if (inputEl.files) { // upload files using ajax uploadAndAttachFilesCourseSource(inputEl.files, inputEl,checkBox); // $(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("" + count + "" + $(inputEl).data('fileCount')); } } //clearedFileInput.insertAfter('#attachments_fields'); } function uploadAndAttachFilesCourseSource(files, inputEl,checkBox) { 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); }); } } function addFileCourseSource(inputEl, file, eagerUpload,checkBox) { var attachments_frame = '#attachments_fields'; if ($(attachments_frame).children().length < 30) { deleteallfiles = $(inputEl).data('deleteAllFiles'); var attachmentId = addFile.nextAttachmentId++; var fileSpan = $('', { 'id': 'attachments_' + attachmentId, 'class': 'attachment' }); //alert(checkBox); if(checkBox){ fileSpan.append( $('', { 'type': 'text', 'class': 'filename readonly', 'name': 'attachments[' + attachmentId + '][filename]', 'readonly': 'readonly' }).val(file.name), $('', { 'type': 'text', 'class': 'description', 'name': 'attachments[' + attachmentId + '][description]', 'maxlength': 254, 'placeholder': $(inputEl).data('descriptionPlaceholder') }).toggle(!eagerUpload), $('
', { 'class': 'div_attachments', 'name': 'div_' + 'attachments_' + attachmentId }) ).appendTo('#attachments_fields'); }else { fileSpan.append( $('', { 'type': 'text', 'class': 'filename readonly', 'name': 'attachments[' + attachmentId + '][filename]', 'readonly': 'readonly' }).val(file.name), $('', { 'type': 'text', 'class': 'description', 'name': 'attachments[' + attachmentId + '][description]', 'maxlength': 254, 'placeholder': $(inputEl).data('descriptionPlaceholder') }).toggle(!eagerUpload), $('' + $(inputEl).data('fieldIsPublic') + ':').attr({ 'class': 'ispublic-label' }), $('', { 'type': 'checkbox', 'class': 'is_public_checkbox', 'value': 1, 'name': 'attachments[' + attachmentId + '][is_public_checkbox]', checked: 'checked' }).toggle(!eagerUpload), $(' ').attr({ 'href': "#", 'class': 'remove-upload' }).click(function () { if (confirm($(inputEl).data('areYouSure'))) { removeFile(); if (!eagerUpload) { (function (e) { reload(e); })(fileSpan); } } }).toggle(!eagerUpload), $('
', { 'class': 'div_attachments', 'name': 'div_' + 'attachments_' + attachmentId }) ).appendTo('#attachments_fields'); } if (eagerUpload) { ajaxUpload(file, attachmentId, fileSpan, inputEl); } return attachmentId; } return null; } addFileCourseSource.nextAttachmentId = 1;