/ * R e d m i n e - p r o j e c t m a n a g e m e n t s o f t w a r e
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' : 'color-green iconfont icon-fujian mr5 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 ;