2012-09-04 23:27:04 +04:00
var FileList = {
2012-04-15 17:48:02 +04:00
useUndo : true ,
2011-06-04 20:44:14 +04:00
update : function ( fileListHtml ) {
$ ( '#fileList' ) . empty ( ) . html ( fileListHtml ) ;
} ,
2012-09-05 08:12:11 +04:00
addFile : function ( name , size , lastModified , loading , hidden ) {
2012-09-23 05:16:52 +04:00
var basename , extension , simpleSize , sizeColor , lastModifiedTime , modifiedColor ,
img = ( loading ) ? OC . imagePath ( 'core' , 'loading.gif' ) : OC . imagePath ( 'core' , 'filetypes/file.png' ) ,
html = '<tr data-type="file" data-size="' + size + '" data-permissions="' + $ ( '#permissions' ) . val ( ) + '">' ;
2011-07-29 01:52:49 +04:00
if ( name . indexOf ( '.' ) != - 1 ) {
2012-09-23 05:16:52 +04:00
basename = name . substr ( 0 , name . lastIndexOf ( '.' ) ) ;
extension = name . substr ( name . lastIndexOf ( '.' ) ) ;
2011-07-29 01:52:49 +04:00
} else {
2012-09-23 05:16:52 +04:00
basename = name ;
extension = false ;
2011-07-29 01:52:49 +04:00
}
2011-08-02 05:17:26 +04:00
html += '<td class="filename" style="background-image:url(' + img + ')"><input type="checkbox" />' ;
2012-10-12 16:02:19 +04:00
html += '<a class="name" href="download.php?file=' + $ ( '#dir' ) . val ( ) . replace ( /</ , '<' ) . replace ( />/ , '>' ) + '/' + escapeHTML ( name ) + '"><span class="nametext">' + escapeHTML ( basename ) ;
2012-04-15 15:32:45 +04:00
if ( extension ) {
2012-10-12 16:02:19 +04:00
html += '<span class="extension">' + escapeHTML ( extension ) + '</span>' ;
2011-07-29 01:52:49 +04:00
}
html += '</span></a></td>' ;
if ( size != 'Pending' ) {
simpleSize = simpleFileSize ( size ) ;
} else {
simpleSize = 'Pending' ;
}
2011-07-30 17:42:34 +04:00
sizeColor = Math . round ( 200 - size / ( 1024 * 1024 ) * 2 ) ;
2011-07-29 03:10:08 +04:00
lastModifiedTime = Math . round ( lastModified . getTime ( ) / 1000 ) ;
2011-07-30 17:31:11 +04:00
modifiedColor = Math . round ( ( Math . round ( ( new Date ( ) ) . getTime ( ) / 1000 ) - lastModifiedTime ) / 60 / 60 / 24 * 14 ) ;
2011-07-29 01:52:49 +04:00
html += '<td class="filesize" title="' + humanFileSize ( size ) + '" style="color:rgb(' + sizeColor + ',' + sizeColor + ',' + sizeColor + ')">' + simpleSize + '</td>' ;
2011-09-25 22:18:33 +04:00
html += '<td class="date"><span class="modified" title="' + formatDate ( lastModified ) + '" style="color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')">' + relative _modified _date ( lastModified . getTime ( ) / 1000 ) + '</span></td>' ;
2011-06-04 20:44:14 +04:00
html += '</tr>' ;
2011-11-02 01:35:13 +04:00
FileList . insertElement ( name , 'file' , $ ( html ) . attr ( 'data-file' , name ) ) ;
2012-11-08 01:06:05 +04:00
var row = $ ( 'tr' ) . filterAttr ( 'data-file' , name ) ;
2011-07-19 22:57:40 +04:00
if ( loading ) {
2012-11-08 01:06:05 +04:00
row . data ( 'loading' , true ) ;
2011-07-19 22:57:40 +04:00
} else {
2012-11-08 01:06:05 +04:00
row . find ( 'td.filename' ) . draggable ( dragOptions ) ;
2011-07-19 22:57:40 +04:00
}
2012-09-05 08:12:11 +04:00
if ( hidden ) {
2012-11-08 01:06:05 +04:00
row . hide ( ) ;
2012-09-05 08:12:11 +04:00
}
2012-11-08 01:13:07 +04:00
FileActions . display ( row . find ( 'td.filename' ) ) ;
2011-06-04 20:44:14 +04:00
} ,
2012-09-05 08:12:11 +04:00
addDir : function ( name , size , lastModified , hidden ) {
2012-09-23 05:16:52 +04:00
var html , td , link _elem , sizeColor , lastModifiedTime , modifiedColor ;
2012-09-06 05:46:59 +04:00
html = $ ( '<tr></tr>' ) . attr ( { "data-type" : "dir" , "data-size" : size , "data-file" : name , "data-permissions" : $ ( '#permissions' ) . val ( ) } ) ;
2011-11-02 01:35:13 +04:00
td = $ ( '<td></td>' ) . attr ( { "class" : "filename" , "style" : 'background-image:url(' + OC . imagePath ( 'core' , 'filetypes/folder.png' ) + ')' } ) ;
td . append ( '<input type="checkbox" />' ) ;
2012-09-28 17:38:49 +04:00
link _elem = $ ( '<a></a>' ) . attr ( { "class" : "name" , "href" : OC . linkTo ( 'files' , 'index.php' ) + "?dir=" + encodeURIComponent ( $ ( '#dir' ) . val ( ) + '/' + name ) . replace ( /%2F/g , '/' ) } ) ;
2011-11-02 01:35:13 +04:00
link _elem . append ( $ ( '<span></span>' ) . addClass ( 'nametext' ) . text ( name ) ) ;
2012-03-27 23:38:55 +04:00
link _elem . append ( $ ( '<span></span>' ) . attr ( { 'class' : 'uploadtext' , 'currentUploads' : 0 } ) ) ;
2011-11-02 01:35:13 +04:00
td . append ( link _elem ) ;
html . append ( td ) ;
2011-07-29 03:10:08 +04:00
if ( size != 'Pending' ) {
simpleSize = simpleFileSize ( size ) ;
} else {
simpleSize = 'Pending' ;
}
sizeColor = Math . round ( 200 - Math . pow ( ( size / ( 1024 * 1024 ) ) , 2 ) ) ;
lastModifiedTime = Math . round ( lastModified . getTime ( ) / 1000 ) ;
modifiedColor = Math . round ( ( Math . round ( ( new Date ( ) ) . getTime ( ) / 1000 ) - lastModifiedTime ) / 60 / 60 / 24 * 5 ) ;
2011-11-02 01:35:13 +04:00
td = $ ( '<td></td>' ) . attr ( { "class" : "filesize" , "title" : humanFileSize ( size ) , "style" : 'color:rgb(' + sizeColor + ',' + sizeColor + ',' + sizeColor + ')' } ) . text ( simpleSize ) ;
html . append ( td ) ;
2012-05-31 21:46:32 +04:00
2011-11-02 01:35:13 +04:00
td = $ ( '<td></td>' ) . attr ( { "class" : "date" } ) ;
td . append ( $ ( '<span></span>' ) . attr ( { "class" : "modified" , "title" : formatDate ( lastModified ) , "style" : 'color:rgb(' + modifiedColor + ',' + modifiedColor + ',' + modifiedColor + ')' } ) . text ( relative _modified _date ( lastModified . getTime ( ) / 1000 ) ) ) ;
html . append ( td ) ;
FileList . insertElement ( name , 'dir' , html ) ;
2012-11-08 01:06:05 +04:00
var row = $ ( 'tr' ) . filterAttr ( 'data-file' , name ) ;
row . find ( 'td.filename' ) . draggable ( dragOptions ) ;
row . find ( 'td.filename' ) . droppable ( folderDropOptions ) ;
2012-09-05 08:12:11 +04:00
if ( hidden ) {
2012-11-08 01:06:05 +04:00
row . hide ( ) ;
2012-09-05 08:12:11 +04:00
}
2012-11-08 01:13:07 +04:00
FileActions . display ( row . find ( 'td.filename' ) ) ;
2011-06-04 20:44:14 +04:00
} ,
refresh : function ( data ) {
2012-09-23 05:16:52 +04:00
var result = jQuery . parseJSON ( data . responseText ) ;
2011-06-04 20:44:14 +04:00
if ( typeof ( result . data . breadcrumb ) != 'undefined' ) {
updateBreadcrumb ( result . data . breadcrumb ) ;
}
FileList . update ( result . data . files ) ;
resetFileActionPanel ( ) ;
} ,
remove : function ( name ) {
2011-11-02 01:35:13 +04:00
$ ( 'tr' ) . filterAttr ( 'data-file' , name ) . find ( 'td.filename' ) . draggable ( 'destroy' ) ;
$ ( 'tr' ) . filterAttr ( 'data-file' , name ) . remove ( ) ;
2011-07-30 16:42:58 +04:00
if ( $ ( 'tr[data-file]' ) . length == 0 ) {
$ ( '#emptyfolder' ) . show ( ) ;
}
2011-06-04 20:44:14 +04:00
} ,
insertElement : function ( name , type , element ) {
//find the correct spot to insert the file or folder
2012-09-23 05:16:52 +04:00
var pos , fileElements = $ ( 'tr[data-file][data-type="' + type + '"]:visible' ) ;
2011-06-04 20:44:14 +04:00
if ( name . localeCompare ( $ ( fileElements [ 0 ] ) . attr ( 'data-file' ) ) < 0 ) {
2011-07-26 18:55:28 +04:00
pos = - 1 ;
2011-06-04 20:44:14 +04:00
} else if ( name . localeCompare ( $ ( fileElements [ fileElements . length - 1 ] ) . attr ( 'data-file' ) ) > 0 ) {
pos = fileElements . length - 1 ;
} else {
2012-09-23 05:16:52 +04:00
for ( pos = 0 ; pos < fileElements . length - 1 ; pos ++ ) {
2011-06-04 20:44:14 +04:00
if ( name . localeCompare ( $ ( fileElements [ pos ] ) . attr ( 'data-file' ) ) > 0 && name . localeCompare ( $ ( fileElements [ pos + 1 ] ) . attr ( 'data-file' ) ) < 0 ) {
break ;
}
}
}
2011-07-04 23:46:20 +04:00
if ( fileElements . length ) {
2011-07-26 18:55:28 +04:00
if ( pos == - 1 ) {
$ ( fileElements [ 0 ] ) . before ( element ) ;
} else {
$ ( fileElements [ pos ] ) . after ( element ) ;
}
} else if ( type == 'dir' && $ ( 'tr[data-file]' ) . length > 0 ) {
$ ( 'tr[data-file]' ) . first ( ) . before ( element ) ;
2011-07-04 23:46:20 +04:00
} else {
$ ( '#fileList' ) . append ( element ) ;
}
2011-07-30 16:42:58 +04:00
$ ( '#emptyfolder' ) . hide ( ) ;
2011-07-19 22:57:40 +04:00
} ,
2012-10-08 19:28:56 +04:00
loadingDone : function ( name , id ) {
2012-09-23 05:16:52 +04:00
var mime , tr = $ ( 'tr' ) . filterAttr ( 'data-file' , name ) ;
2011-10-08 23:18:47 +04:00
tr . data ( 'loading' , false ) ;
2012-09-23 05:16:52 +04:00
mime = tr . data ( 'mime' ) ;
2011-10-08 23:18:47 +04:00
tr . attr ( 'data-mime' , mime ) ;
2012-10-08 19:47:02 +04:00
if ( id != null ) {
tr . attr ( 'data-id' , id ) ;
}
2011-10-08 23:18:47 +04:00
getMimeIcon ( mime , function ( path ) {
tr . find ( 'td.filename' ) . attr ( 'style' , 'background-image:url(' + path + ')' ) ;
} ) ;
tr . find ( 'td.filename' ) . draggable ( dragOptions ) ;
2011-07-19 22:57:40 +04:00
} ,
isLoading : function ( name ) {
2011-11-02 01:35:13 +04:00
return $ ( 'tr' ) . filterAttr ( 'data-file' , name ) . data ( 'loading' ) ;
2011-07-29 01:04:34 +04:00
} ,
rename : function ( name ) {
2012-09-23 05:16:52 +04:00
var tr , td , input , form ;
tr = $ ( 'tr' ) . filterAttr ( 'data-file' , name ) ;
2011-07-29 04:26:20 +04:00
tr . data ( 'renaming' , true ) ;
2012-09-23 05:16:52 +04:00
td = tr . children ( 'td.filename' ) ;
2012-11-16 13:23:40 +04:00
input = $ ( '<input class="filename"/>' ) . val ( name ) ;
2012-09-23 05:16:52 +04:00
form = $ ( '<form></form>' ) ;
2011-07-29 01:04:34 +04:00
form . append ( input ) ;
2012-10-18 16:16:59 +04:00
td . children ( 'a.name' ) . hide ( ) ;
td . append ( form ) ;
2011-07-29 01:04:34 +04:00
input . focus ( ) ;
form . submit ( function ( event ) {
event . stopPropagation ( ) ;
event . preventDefault ( ) ;
2011-07-29 19:51:17 +04:00
var newname = input . val ( ) ;
2013-01-06 15:52:00 +04:00
if ( ! Files . isFileNameValid ( newname ) ) {
2012-11-22 16:03:17 +04:00
return false ;
2013-01-07 13:39:35 +04:00
} else if ( newname != name ) {
2012-09-05 08:12:11 +04:00
if ( FileList . checkName ( name , newname , false ) ) {
2012-07-30 20:21:58 +04:00
newname = name ;
2012-10-14 23:04:08 +04:00
} else {
2012-07-30 20:21:58 +04:00
$ . get ( OC . filePath ( 'files' , 'ajax' , 'rename.php' ) , { dir : $ ( '#dir' ) . val ( ) , newname : newname , file : name } , function ( result ) {
if ( ! result || result . status == 'error' ) {
OC . dialogs . alert ( result . data . message , 'Error moving file' ) ;
newname = name ;
}
} ) ;
2012-10-14 23:04:08 +04:00
2012-09-19 16:05:09 +04:00
}
2012-10-02 20:38:17 +04:00
}
2012-11-15 20:16:18 +04:00
tr . data ( 'renaming' , false ) ;
2012-10-02 20:38:17 +04:00
tr . attr ( 'data-file' , newname ) ;
var path = td . children ( 'a.name' ) . attr ( 'href' ) ;
td . children ( 'a.name' ) . attr ( 'href' , path . replace ( encodeURIComponent ( name ) , encodeURIComponent ( newname ) ) ) ;
if ( newname . indexOf ( '.' ) > 0 && tr . data ( 'type' ) != 'dir' ) {
var basename = newname . substr ( 0 , newname . lastIndexOf ( '.' ) ) ;
} else {
var basename = newname ;
}
2012-10-18 16:16:59 +04:00
td . find ( 'a.name span.nametext' ) . text ( basename ) ;
2012-10-02 20:38:17 +04:00
if ( newname . indexOf ( '.' ) > 0 && tr . data ( 'type' ) != 'dir' ) {
2012-10-18 16:16:59 +04:00
if ( td . find ( 'a.name span.extension' ) . length == 0 ) {
td . find ( 'a.name span.nametext' ) . append ( '<span class="extension"></span>' ) ;
}
td . find ( 'a.name span.extension' ) . text ( newname . substr ( newname . lastIndexOf ( '.' ) ) ) ;
2012-07-30 20:21:58 +04:00
}
2012-10-18 16:16:59 +04:00
form . remove ( ) ;
td . children ( 'a.name' ) . show ( ) ;
2011-12-06 02:51:44 +04:00
return false ;
2011-07-29 01:04:34 +04:00
} ) ;
2012-12-18 19:39:01 +04:00
input . keyup ( function ( event ) {
if ( event . keyCode == 27 ) {
tr . data ( 'renaming' , false ) ;
form . remove ( ) ;
td . children ( 'a.name' ) . show ( ) ;
}
} ) ;
2011-12-06 02:51:44 +04:00
input . click ( function ( event ) {
2011-07-29 01:04:34 +04:00
event . stopPropagation ( ) ;
event . preventDefault ( ) ;
} ) ;
input . blur ( function ( ) {
2011-07-29 19:51:17 +04:00
form . trigger ( 'submit' ) ;
2011-07-29 01:04:34 +04:00
} ) ;
2011-08-04 02:22:44 +04:00
} ,
2012-09-05 08:12:11 +04:00
checkName : function ( oldName , newName , isNewFile ) {
if ( isNewFile || $ ( 'tr' ) . filterAttr ( 'data-file' , newName ) . length > 0 ) {
if ( isNewFile ) {
2012-09-26 09:46:04 +04:00
$ ( '#notification' ) . html ( t ( 'files' , '{new_name} already exists' , { new _name : escapeHTML ( newName ) } ) + '<span class="replace">' + t ( 'files' , 'replace' ) + '</span><span class="suggest">' + t ( 'files' , 'suggest name' ) + '</span><span class="cancel">' + t ( 'files' , 'cancel' ) + '</span>' ) ;
2012-09-05 08:12:11 +04:00
} else {
2012-09-26 09:46:04 +04:00
$ ( '#notification' ) . html ( t ( 'files' , '{new_name} already exists' , { new _name : escapeHTML ( newName ) } ) + '<span class="replace">' + t ( 'files' , 'replace' ) + '</span><span class="cancel">' + t ( 'files' , 'cancel' ) + '</span>' ) ;
2012-09-05 08:12:11 +04:00
}
$ ( '#notification' ) . data ( 'oldName' , oldName ) ;
$ ( '#notification' ) . data ( 'newName' , newName ) ;
$ ( '#notification' ) . data ( 'isNewFile' , isNewFile ) ;
$ ( '#notification' ) . fadeIn ( ) ;
return true ;
} else {
return false ;
}
} ,
replace : function ( oldName , newName , isNewFile ) {
2012-07-30 20:21:58 +04:00
// Finish any existing actions
if ( FileList . lastAction || ! FileList . useUndo ) {
FileList . lastAction ( ) ;
}
2012-09-05 08:12:11 +04:00
$ ( 'tr' ) . filterAttr ( 'data-file' , oldName ) . hide ( ) ;
$ ( 'tr' ) . filterAttr ( 'data-file' , newName ) . hide ( ) ;
var tr = $ ( 'tr' ) . filterAttr ( 'data-file' , oldName ) . clone ( ) ;
tr . attr ( 'data-replace' , 'true' ) ;
tr . attr ( 'data-file' , newName ) ;
var td = tr . children ( 'td.filename' ) ;
td . children ( 'a.name .span' ) . text ( newName ) ;
var path = td . children ( 'a.name' ) . attr ( 'href' ) ;
td . children ( 'a.name' ) . attr ( 'href' , path . replace ( encodeURIComponent ( oldName ) , encodeURIComponent ( newName ) ) ) ;
if ( newName . indexOf ( '.' ) > 0 ) {
var basename = newName . substr ( 0 , newName . lastIndexOf ( '.' ) ) ;
} else {
var basename = newName ;
}
td . children ( 'a.name' ) . empty ( ) ;
var span = $ ( '<span class="nametext"></span>' ) ;
span . text ( basename ) ;
td . children ( 'a.name' ) . append ( span ) ;
if ( newName . indexOf ( '.' ) > 0 ) {
span . append ( $ ( '<span class="extension">' + newName . substr ( newName . lastIndexOf ( '.' ) ) + '</span>' ) ) ;
}
FileList . insertElement ( newName , tr . data ( 'type' ) , tr ) ;
tr . show ( ) ;
2012-07-30 20:21:58 +04:00
FileList . replaceCanceled = false ;
FileList . replaceOldName = oldName ;
FileList . replaceNewName = newName ;
2012-09-05 08:12:11 +04:00
FileList . replaceIsNewFile = isNewFile ;
2012-08-20 19:24:10 +04:00
FileList . lastAction = function ( ) {
2012-07-30 20:21:58 +04:00
FileList . finishReplace ( ) ;
} ;
2012-09-05 08:12:11 +04:00
if ( isNewFile ) {
2012-09-26 09:46:04 +04:00
$ ( '#notification' ) . html ( t ( 'files' , 'replaced {new_name}' , { new _name : newName } ) + '<span class="undo">' + t ( 'files' , 'undo' ) + '</span>' ) ;
2012-09-05 08:12:11 +04:00
} else {
2012-09-26 09:46:04 +04:00
$ ( '#notification' ) . html ( t ( 'files' , 'replaced {new_name} with {old_name}' , { new _name : newName } , { old _name : oldName } ) + '<span class="undo">' + t ( 'files' , 'undo' ) + '</span>' ) ;
2012-09-05 08:12:11 +04:00
}
2012-07-30 20:21:58 +04:00
$ ( '#notification' ) . fadeIn ( ) ;
} ,
finishReplace : function ( ) {
if ( ! FileList . replaceCanceled && FileList . replaceOldName && FileList . replaceNewName ) {
2012-09-06 06:13:50 +04:00
$ . ajax ( { url : OC . filePath ( 'files' , 'ajax' , 'rename.php' ) , async : false , data : { dir : $ ( '#dir' ) . val ( ) , newname : FileList . replaceNewName , file : FileList . replaceOldName } , success : function ( result ) {
if ( result && result . status == 'success' ) {
$ ( 'tr' ) . filterAttr ( 'data-replace' , 'true' ) . removeAttr ( 'data-replace' ) ;
} else {
OC . dialogs . alert ( result . data . message , 'Error moving file' ) ;
}
FileList . replaceCanceled = true ;
FileList . replaceOldName = null ;
FileList . replaceNewName = null ;
FileList . lastAction = null ;
} } ) ;
2012-07-30 20:21:58 +04:00
}
} ,
2011-08-28 03:32:48 +04:00
do _delete : function ( files ) {
2012-07-30 20:21:58 +04:00
// Finish any existing actions
2012-09-19 13:56:31 +04:00
if ( FileList . lastAction ) {
2012-07-30 20:21:58 +04:00
FileList . lastAction ( ) ;
2011-08-04 02:22:44 +04:00
}
2012-10-14 23:04:08 +04:00
2012-08-20 19:24:10 +04:00
FileList . prepareDeletion ( files ) ;
2012-10-14 23:04:08 +04:00
2012-09-19 13:56:31 +04:00
if ( ! FileList . useUndo ) {
FileList . lastAction ( ) ;
2012-09-07 08:01:52 +04:00
} else {
2012-09-19 13:56:31 +04:00
// NOTE: Temporary fix to change the text to unshared for files in root of Shared folder
if ( $ ( '#dir' ) . val ( ) == '/Shared' ) {
2012-09-26 09:46:04 +04:00
$ ( '#notification' ) . html ( t ( 'files' , 'unshared {files}' , { 'files' : escapeHTML ( files ) } ) + '<span class="undo">' + t ( 'files' , 'undo' ) + '</span>' ) ;
2012-09-19 13:56:31 +04:00
} else {
2012-09-26 09:46:04 +04:00
$ ( '#notification' ) . html ( t ( 'files' , 'deleted {files}' , { 'files' : escapeHTML ( files ) } ) + '<span class="undo">' + t ( 'files' , 'undo' ) + '</span>' ) ;
2012-09-19 13:56:31 +04:00
}
$ ( '#notification' ) . fadeIn ( ) ;
2012-09-07 08:01:52 +04:00
}
2011-08-04 02:22:44 +04:00
} ,
finishDelete : function ( ready , sync ) {
if ( ! FileList . deleteCanceled && FileList . deleteFiles ) {
2012-12-13 21:11:00 +04:00
var fileNames = JSON . stringify ( FileList . deleteFiles ) ;
2011-08-04 02:22:44 +04:00
$ . ajax ( {
2012-04-29 18:09:41 +04:00
url : OC . filePath ( 'files' , 'ajax' , 'delete.php' ) ,
2011-08-04 02:22:44 +04:00
async : ! sync ,
2012-06-14 19:43:21 +04:00
type : 'post' ,
2012-04-29 18:09:41 +04:00
data : { dir : $ ( '#dir' ) . val ( ) , files : fileNames } ,
2011-08-04 02:22:44 +04:00
complete : function ( data ) {
boolOperationFinished ( data , function ( ) {
2012-09-05 08:12:11 +04:00
$ ( '#notification' ) . fadeOut ( '400' ) ;
2011-08-04 02:22:44 +04:00
$ . each ( FileList . deleteFiles , function ( index , file ) {
FileList . remove ( file ) ;
} ) ;
FileList . deleteCanceled = true ;
FileList . deleteFiles = null ;
2012-07-30 20:21:58 +04:00
FileList . lastAction = null ;
2011-08-04 02:22:44 +04:00
if ( ready ) {
ready ( ) ;
}
} ) ;
}
} ) ;
}
2012-08-20 19:24:10 +04:00
} ,
prepareDeletion : function ( files ) {
if ( files . substr ) {
files = [ files ] ;
}
$ . each ( files , function ( index , file ) {
var files = $ ( 'tr' ) . filterAttr ( 'data-file' , file ) ;
files . hide ( ) ;
files . find ( 'input[type="checkbox"]' ) . removeAttr ( 'checked' ) ;
files . removeClass ( 'selected' ) ;
} ) ;
procesSelection ( ) ;
FileList . deleteCanceled = false ;
FileList . deleteFiles = files ;
FileList . lastAction = function ( ) {
FileList . finishDelete ( null , true ) ;
} ;
2011-06-04 20:44:14 +04:00
}
2012-09-23 05:16:52 +04:00
} ;
2011-08-04 02:22:44 +04:00
$ ( document ) . ready ( function ( ) {
2011-08-05 09:37:08 +04:00
$ ( '#notification' ) . hide ( ) ;
2012-07-30 00:00:46 +04:00
$ ( '#notification .undo' ) . live ( 'click' , function ( ) {
2012-07-30 20:21:58 +04:00
if ( FileList . deleteFiles ) {
2011-10-17 22:39:01 +04:00
$ . each ( FileList . deleteFiles , function ( index , file ) {
2011-11-02 01:35:13 +04:00
$ ( 'tr' ) . filterAttr ( 'data-file' , file ) . show ( ) ;
2011-10-17 22:39:01 +04:00
} ) ;
FileList . deleteCanceled = true ;
FileList . deleteFiles = null ;
2012-07-30 20:21:58 +04:00
} else if ( FileList . replaceOldName && FileList . replaceNewName ) {
2012-09-05 08:12:11 +04:00
if ( FileList . replaceIsNewFile ) {
// Delete the new uploaded file
FileList . deleteCanceled = false ;
FileList . deleteFiles = [ FileList . replaceOldName ] ;
FileList . finishDelete ( null , true ) ;
} else {
$ ( 'tr' ) . filterAttr ( 'data-file' , FileList . replaceOldName ) . show ( ) ;
}
$ ( 'tr' ) . filterAttr ( 'data-replace' , 'true' ) . remove ( ) ;
$ ( 'tr' ) . filterAttr ( 'data-file' , FileList . replaceNewName ) . show ( ) ;
2012-07-30 20:21:58 +04:00
FileList . replaceCanceled = true ;
FileList . replaceOldName = null ;
FileList . replaceNewName = null ;
2012-09-05 08:12:11 +04:00
FileList . replaceIsNewFile = null ;
2011-10-17 22:39:01 +04:00
}
2012-08-23 01:08:10 +04:00
FileList . lastAction = null ;
2012-09-05 08:12:11 +04:00
$ ( '#notification' ) . fadeOut ( '400' ) ;
2011-08-04 02:22:44 +04:00
} ) ;
2012-07-30 20:21:58 +04:00
$ ( '#notification .replace' ) . live ( 'click' , function ( ) {
$ ( '#notification' ) . fadeOut ( '400' , function ( ) {
2012-09-05 08:12:11 +04:00
FileList . replace ( $ ( '#notification' ) . data ( 'oldName' ) , $ ( '#notification' ) . data ( 'newName' ) , $ ( '#notification' ) . data ( 'isNewFile' ) ) ;
2012-07-30 20:21:58 +04:00
} ) ;
} ) ;
2012-09-05 08:12:11 +04:00
$ ( '#notification .suggest' ) . live ( 'click' , function ( ) {
$ ( 'tr' ) . filterAttr ( 'data-file' , $ ( '#notification' ) . data ( 'oldName' ) ) . show ( ) ;
$ ( '#notification' ) . fadeOut ( '400' ) ;
} ) ;
2012-07-30 20:21:58 +04:00
$ ( '#notification .cancel' ) . live ( 'click' , function ( ) {
2012-09-05 08:12:11 +04:00
if ( $ ( '#notification' ) . data ( 'isNewFile' ) ) {
FileList . deleteCanceled = false ;
FileList . deleteFiles = [ $ ( '#notification' ) . data ( 'oldName' ) ] ;
FileList . finishDelete ( null , true ) ;
}
2012-07-30 20:21:58 +04:00
} ) ;
2012-09-23 05:16:52 +04:00
FileList . useUndo = ( window . onbeforeunload ) ? true : false ;
2011-08-04 02:22:44 +04:00
$ ( window ) . bind ( 'beforeunload' , function ( ) {
2012-07-30 20:21:58 +04:00
if ( FileList . lastAction ) {
FileList . lastAction ( ) ;
}
2011-08-04 02:22:44 +04:00
} ) ;
2012-11-05 21:42:44 +04:00
$ ( window ) . unload ( function ( ) {
$ ( window ) . trigger ( 'beforeunload' ) ;
} ) ;
2011-08-04 02:22:44 +04:00
} ) ;