aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/js
diff options
context:
space:
mode:
authorkondou <kondou@ts.unde.re>2013-08-31 12:56:36 +0200
committerkondou <kondou@ts.unde.re>2013-08-31 12:56:36 +0200
commit5d653753bd8f6f1294dfbfa112757e5509ddc80d (patch)
tree54853c3cf28f4d3ec58d7f9230be68e8e70d4998 /apps/files/js
parent30526ded803e352f3f7322ed96ebc480d5e3f9c1 (diff)
parent92e90c8eb995c886b3e9cd77c14e3f0b25b95cd7 (diff)
downloadnextcloud-server-5d653753bd8f6f1294dfbfa112757e5509ddc80d.tar.gz
nextcloud-server-5d653753bd8f6f1294dfbfa112757e5509ddc80d.zip
Merge branch 'master' into oc_avatars
Diffstat (limited to 'apps/files/js')
-rw-r--r--apps/files/js/file-upload.js12
-rw-r--r--apps/files/js/filelist.js122
-rw-r--r--apps/files/js/files.js22
3 files changed, 144 insertions, 12 deletions
diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js
index 1e6ab74fb6d..3d620c5640b 100644
--- a/apps/files/js/file-upload.js
+++ b/apps/files/js/file-upload.js
@@ -227,7 +227,7 @@ $(document).ready(function() {
$(this).data('text',text);
$(this).children('p').remove();
var form=$('<form></form>');
- var input=$('<input>');
+ var input=$('<input type="text">');
form.append(input);
$(this).append(form);
input.focus();
@@ -268,8 +268,9 @@ $(document).ready(function() {
tr.attr('data-mime',result.data.mime);
tr.attr('data-id', result.data.id);
tr.find('.filesize').text(humanFileSize(result.data.size));
- getMimeIcon(result.data.mime,function(path){
- tr.find('td.filename').attr('style','background-image:url('+path+')');
+ var path = getPathForPreview(name);
+ lazyLoadPreview(path, result.data.mime, function(previewpath){
+ tr.find('td.filename').attr('style','background-image:url('+previewpath+')');
});
} else {
OC.dialogs.alert(result.data.message, t('core', 'Error'));
@@ -330,8 +331,9 @@ $(document).ready(function() {
var tr=$('tr').filterAttr('data-file',localName);
tr.data('mime',mime).data('id',id);
tr.attr('data-id', id);
- getMimeIcon(mime,function(path){
- tr.find('td.filename').attr('style','background-image:url('+path+')');
+ var path = $('#dir').val()+'/'+localName;
+ lazyLoadPreview(path, mime, function(previewpath){
+ tr.find('td.filename').attr('style','background-image:url('+previewpath+')');
});
});
eventSource.listen('error',function(error){
diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 10801af3ead..05e31094502 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -15,9 +15,10 @@ var FileList={
// filename td
td = $('<td></td>').attr({
"class": "filename",
- "style": 'background-image:url('+iconurl+'); background-size: 16px;'
+ "style": 'background-image:url('+iconurl+'); background-size: 32px;'
});
- td.append('<input type="checkbox" />');
+ var rand = Math.random().toString(16).slice(2);
+ td.append('<input id="select-'+rand+'" type="checkbox" /><label for="select-'+rand+'"></label>');
var link_elem = $('<a></a>').attr({
"class": "name",
"href": linktarget
@@ -144,6 +145,7 @@ var FileList={
remove:function(name){
$('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy');
$('tr').filterAttr('data-file',name).remove();
+ FileList.updateFileSummary();
if($('tr[data-file]').length==0){
$('#emptyfolder').show();
}
@@ -176,6 +178,7 @@ var FileList={
$('#fileList').append(element);
}
$('#emptyfolder').hide();
+ FileList.updateFileSummary();
},
loadingDone:function(name, id){
var mime, tr=$('tr').filterAttr('data-file',name);
@@ -185,8 +188,9 @@ var FileList={
if (id != null) {
tr.attr('data-id', id);
}
- getMimeIcon(mime,function(path){
- tr.find('td.filename').attr('style','background-image:url('+path+')');
+ var path = getPathForPreview(name);
+ lazyLoadPreview(path, mime, function(previewpath){
+ tr.find('td.filename').attr('style','background-image:url('+previewpath+')');
});
tr.find('td.filename').draggable(dragOptions);
},
@@ -198,7 +202,7 @@ var FileList={
tr=$('tr').filterAttr('data-file',name);
tr.data('renaming',true);
td=tr.children('td.filename');
- input=$('<input class="filename"/>').val(name);
+ input=$('<input type="text" class="filename"/>').val(name);
form=$('<form></form>');
form.append(input);
td.children('a.name').hide();
@@ -391,6 +395,7 @@ var FileList={
});
procesSelection();
checkTrashStatus();
+ FileList.updateFileSummary();
} else {
$.each(files,function(index,file) {
var deleteAction = $('tr').filterAttr('data-file',files[i]).children("td.date").children(".action.delete");
@@ -398,6 +403,111 @@ var FileList={
});
}
});
+ },
+ createFileSummary: function() {
+ if( $('#fileList tr').length > 0 ) {
+ var totalDirs = 0;
+ var totalFiles = 0;
+ var totalSize = 0;
+
+ // Count types and filesize
+ $.each($('tr[data-file]'), function(index, value) {
+ if ($(value).data('type') === 'dir') {
+ totalDirs++;
+ } else if ($(value).data('type') === 'file') {
+ totalFiles++;
+ }
+ totalSize += parseInt($(value).data('size'));
+ });
+
+ // Get translations
+ var directoryInfo = n('files', '%n folder', '%n folders', totalDirs);
+ var fileInfo = n('files', '%n file', '%n files', totalFiles);
+
+ var infoVars = {
+ dirs: '<span class="dirinfo">'+directoryInfo+'</span><span class="connector">',
+ files: '</span><span class="fileinfo">'+fileInfo+'</span>'
+ }
+
+ var info = t('files', '{dirs} and {files}', infoVars);
+
+ // don't show the filesize column, if filesize is NaN (e.g. in trashbin)
+ if (isNaN(totalSize)) {
+ var fileSize = '';
+ } else {
+ var fileSize = '<td class="filesize">'+humanFileSize(totalSize)+'</td>';
+ }
+
+ $('#fileList').append('<tr class="summary"><td><span class="info">'+info+'</span></td>'+fileSize+'<td></td></tr>');
+
+ var $dirInfo = $('.summary .dirinfo');
+ var $fileInfo = $('.summary .fileinfo');
+ var $connector = $('.summary .connector');
+
+ // Show only what's necessary, e.g.: no files: don't show "0 files"
+ if ($dirInfo.html().charAt(0) === "0") {
+ $dirInfo.hide();
+ $connector.hide();
+ }
+ if ($fileInfo.html().charAt(0) === "0") {
+ $fileInfo.hide();
+ $connector.hide();
+ }
+ }
+ },
+ updateFileSummary: function() {
+ var $summary = $('.summary');
+
+ // Check if we should remove the summary to show "Upload something"
+ if ($('#fileList tr').length === 1 && $summary.length === 1) {
+ $summary.remove();
+ }
+ // If there's no summary create one (createFileSummary checks if there's data)
+ else if ($summary.length === 0) {
+ FileList.createFileSummary();
+ }
+ // There's a summary and data -> Update the summary
+ else if ($('#fileList tr').length > 1 && $summary.length === 1) {
+ var totalDirs = 0;
+ var totalFiles = 0;
+ var totalSize = 0;
+ $.each($('tr[data-file]'), function(index, value) {
+ if ($(value).data('type') === 'dir') {
+ totalDirs++;
+ } else if ($(value).data('type') === 'file') {
+ totalFiles++;
+ }
+ if ($(value).data('size') !== undefined) {
+ totalSize += parseInt($(value).data('size'));
+ }
+ });
+
+ var $dirInfo = $('.summary .dirinfo');
+ var $fileInfo = $('.summary .fileinfo');
+ var $connector = $('.summary .connector');
+
+ // Substitute old content with new translations
+ $dirInfo.html(n('files', '%n folder', '%n folders', totalDirs));
+ $fileInfo.html(n('files', '%n file', '%n files', totalFiles));
+ $('.summary .filesize').html(humanFileSize(totalSize));
+
+ // Show only what's necessary (may be hidden)
+ if ($dirInfo.html().charAt(0) === "0") {
+ $dirInfo.hide();
+ $connector.hide();
+ } else {
+ $dirInfo.show();
+ }
+ if ($fileInfo.html().charAt(0) === "0") {
+ $fileInfo.hide();
+ $connector.hide();
+ } else {
+ $fileInfo.show();
+ }
+ if ($dirInfo.html().charAt(0) !== "0" && $fileInfo.html().charAt(0) !== "0") {
+ $connector.show();
+ }
+ }
}
};
@@ -599,4 +709,6 @@ $(document).ready(function(){
$(window).unload(function (){
$(window).trigger('beforeunload');
});
+
+ FileList.createFileSummary();
});
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index 87311237e36..d729077ea72 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -454,8 +454,9 @@ var createDragShadow = function(event){
if (elem.type === 'dir') {
newtr.find('td.filename').attr('style','background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')');
} else {
- getMimeIcon(elem.mime,function(path){
- newtr.find('td.filename').attr('style','background-image:url('+path+')');
+ var path = getPathForPreview(elem.name);
+ lazyLoadPreview(path, elem.mime, function(previewpath){
+ newtr.find('td.filename').attr('style','background-image:url('+previewpath+')');
});
}
});
@@ -631,6 +632,23 @@ function getMimeIcon(mime, ready){
}
getMimeIcon.cache={};
+function getPathForPreview(name) {
+ var path = $('#dir').val() + '/' + name;
+ return path;
+}
+
+function lazyLoadPreview(path, mime, ready) {
+ getMimeIcon(mime,ready);
+ var x = $('#filestable').data('preview-x');
+ var y = $('#filestable').data('preview-y');
+ var previewURL = OC.Router.generate('core_ajax_preview', {file: encodeURIComponent(path), x:x, y:y});
+ $.get(previewURL, function() {
+ previewURL = previewURL.replace('(','%28');
+ previewURL = previewURL.replace(')','%29');
+ ready(previewURL + '&reload=true');
+ });
+}
+
function getUniqueName(name){
if($('tr').filterAttr('data-file',name).length>0){
var parts=name.split('.');