]> source.dussan.org Git - nextcloud-server.git/commitdiff
extract common code
authorJörn Friedrich Dreyer <jfd@butonic.de>
Sat, 9 Feb 2013 13:42:03 +0000 (14:42 +0100)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Sat, 9 Feb 2013 13:42:03 +0000 (14:42 +0100)
apps/files/js/filelist.js

index 4a66b33694d37148c516622ad3c4ba5375f48333..cc107656da8dc55055cf57b4cc910053a624958c 100644 (file)
@@ -3,35 +3,92 @@ var FileList={
        update:function(fileListHtml) {
                $('#fileList').empty().html(fileListHtml);
        },
-       addFile:function(name,size,lastModified,loading,hidden){
-               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()+'">';
-               if(name.indexOf('.')!=-1){
+       createRow:function(type, name, iconurl, linktarget, size, lastModified, permissions){
+               var td, simpleSize, basename, extension;
+               //containing tr
+               var tr = $('<tr></tr>').attr({
+                       "data-type": type,
+                       "data-size": size,
+                       "data-file": name,
+                       "data-permissions": permissions
+               });
+               // filename td
+               td = $('<td></td>').attr({
+                       "class": "filename",
+                       "style": 'background-image:url('+iconurl+')'
+               });
+               td.append('<input type="checkbox" />');
+               var link_elem = $('<a></a>').attr({
+                       "class": "name",
+                       "href": linktarget
+               });
+               //split extension from filename for non dirs
+               if (type != 'dir' && name.indexOf('.')!=-1) {
                        basename=name.substr(0,name.lastIndexOf('.'));
                        extension=name.substr(name.lastIndexOf('.'));
-               }else{
+               } else {
                        basename=name;
                        extension=false;
                }
-               html+='<td class="filename" style="background-image:url('+img+')"><input type="checkbox" />';
-               html+='<a class="name" href="' +OC.Router.generate('download', { file: $('#dir').val()+'/'+name }) +'"><span class="nametext">'+escapeHTML(basename);
+               var name_span=$('<span></span>').addClass('nametext').text(basename);
+               link_elem.append(name_span);
                if(extension){
-                       html+='<span class="extension">'+escapeHTML(extension)+'</span>';
+                       name_span.append($('<span></span>').addClass('extension').text(extension));
+               }
+               //dirs can show the number of uploaded files 
+               if (type == 'dir') {
+                       link_elem.append($('<span></span>').attr({
+                               'class': 'uploadtext',
+                               'currentUploads': 0
+                       }));
                }
-               html+='</span></a></td>';
-               if(size!='Pending'){
+               td.append(link_elem);
+               tr.append(td);
+               
+               //size column
+               if(size!=t('files', 'Pending')){
                        simpleSize=simpleFileSize(size);
                }else{
-                       simpleSize='Pending';
+                       simpleSize=t('files', 'Pending');
                }
-               sizeColor = Math.round(200-size/(1024*1024)*2);
-               lastModifiedTime=Math.round(lastModified.getTime() / 1000);
-               modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*14);
-               html+='<td class="filesize" title="'+humanFileSize(size)+'" style="color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')">'+simpleSize+'</td>';
-               html+='<td class="date"><span class="modified" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</span></td>';
-               html+='</tr>';
-               FileList.insertElement(name,'file',$(html).attr('data-file',name));
+               var sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2));
+               var lastModifiedTime = Math.round(lastModified.getTime() / 1000);
+               td = $('<td></td>').attr({
+                       "class": "filesize",
+                       "title": humanFileSize(size),
+                       "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')'
+               }).text(simpleSize);
+               tr.append(td);
+               
+               // date column
+               var modifiedColor = Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5);
+               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) ));
+               tr.append(td);
+               return tr;
+       },
+       addFile:function(name,size,lastModified,loading,hidden){
+               var imgurl;
+               if (loading) {
+                       imgurl = OC.imagePath('core', 'loading.gif');
+               } else {
+                       imgurl = OC.imagePath('core', 'filetypes/file.png');
+               }
+               var tr = this.createRow(
+                       'file',
+                       name,
+                       imgurl,
+                       OC.Router.generate('download', { file: $('#dir').val()+'/'+name }),
+                       size,
+                       lastModified,
+                       $('#permissions').val()
+               );
+                       
+               FileList.insertElement(name, 'file', tr.attr('data-file',name));
                var row = $('tr').filterAttr('data-file',name);
                if(loading){
                        row.data('loading',true);
@@ -44,30 +101,18 @@ var FileList={
                FileActions.display(row.find('td.filename'));
        },
        addDir:function(name,size,lastModified,hidden){
-               var html, td, link_elem, sizeColor, lastModifiedTime, modifiedColor;
-               html = $('<tr></tr>').attr({ "data-type": "dir", "data-size": size, "data-file": name, "data-permissions": $('#permissions').val()});
-               td = $('<td></td>').attr({"class": "filename", "style": 'background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')' });
-               td.append('<input type="checkbox" />');
-               link_elem = $('<a></a>').attr({ "class": "name", "href": OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/') });
-               link_elem.append($('<span></span>').addClass('nametext').text(name));
-               link_elem.append($('<span></span>').attr({'class': 'uploadtext', 'currentUploads': 0}));
-               td.append(link_elem);
-               html.append(td);
-               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);
-               td = $('<td></td>').attr({ "class": "filesize", "title": humanFileSize(size), "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')'}).text(simpleSize);
-               html.append(td);
-
-               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);
+               
+               var tr = this.createRow(
+                       'dir',
+                       name,
+                       OC.imagePath('core', 'filetypes/folder.png'),
+                       OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/'),
+                       size,
+                       lastModified,
+                       $('#permissions').val()
+               );
+                       
+               FileList.insertElement(name,'dir',tr);
                var row = $('tr').filterAttr('data-file',name);
                row.find('td.filename').draggable(dragOptions);
                row.find('td.filename').droppable(folderDropOptions);