aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files/js/files.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/files/js/files.js')
-rw-r--r--apps/files/js/files.js544
1 files changed, 105 insertions, 439 deletions
diff --git a/apps/files/js/files.js b/apps/files/js/files.js
index f4546120702..6d167851e64 100644
--- a/apps/files/js/files.js
+++ b/apps/files/js/files.js
@@ -8,8 +8,8 @@
*
*/
-/* global OC, t, n, FileList, FileActions */
-/* global getURLParameter, isPublic */
+/* global OC, t, FileList */
+/* global getURLParameter */
var Files = {
// file space size sync
_updateStorageStatistics: function() {
@@ -89,16 +89,17 @@ var Files = {
*/
isFileNameValid: function (name) {
var trimmedName = name.trim();
- if (trimmedName === '.' || trimmedName === '..') {
+ if (trimmedName === '.' || trimmedName === '..')
+ {
throw t('files', '"{name}" is an invalid file name.', {name: name});
} else if (trimmedName.length === 0) {
throw t('files', 'File name cannot be empty.');
}
// check for invalid characters
- var invalid_characters =
+ var invalidCharacters =
['\\', '/', '<', '>', ':', '"', '|', '?', '*', '\n'];
- for (var i = 0; i < invalid_characters.length; i++) {
- if (trimmedName.indexOf(invalid_characters[i]) !== -1) {
+ for (var i = 0; i < invalidCharacters.length; i++) {
+ if (trimmedName.indexOf(invalidCharacters[i]) !== -1) {
throw t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.");
}
}
@@ -115,7 +116,8 @@ var Files = {
return;
}
if (usedSpacePercent > 90) {
- OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent}));
+ OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)',
+ {usedSpacePercent: usedSpacePercent}));
}
},
@@ -128,19 +130,20 @@ var Files = {
var encryptedFiles = $('#encryptedFiles').val();
var initStatus = $('#encryptionInitStatus').val();
if (initStatus === '0') { // enc not initialized, but should be
- OC.Notification.show(t('files_encryption', 'Encryption App is enabled but your keys are not initialized, please log-out and log-in again'));
+ OC.Notification.show(t('files', 'Encryption App is enabled but your keys are not initialized, please log-out and log-in again'));
return;
}
if (initStatus === '1') { // encryption tried to init but failed
- OC.Notification.showHtml(t('files_encryption', 'Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.'));
+ OC.Notification.show(t('files', 'Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.'));
return;
}
if (encryptedFiles === '1') {
- OC.Notification.show(t('files_encryption', 'Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files.'));
+ OC.Notification.show(t('files', 'Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files.'));
return;
}
},
+ // TODO: move to FileList class
setupDragAndDrop: function() {
var $fileList = $('#fileList');
@@ -158,77 +161,33 @@ var Files = {
});
},
- lastWidth: 0,
-
- initBreadCrumbs: function () {
- var $controls = $('#controls');
-
- Files.lastWidth = 0;
- Files.breadcrumbs = [];
-
- // initialize with some extra space
- Files.breadcrumbsWidth = 64;
- if ( document.getElementById("navigation") ) {
- Files.breadcrumbsWidth += $('#navigation').get(0).offsetWidth;
+ /**
+ * Returns the download URL of the given file(s)
+ * @param filename string or array of file names to download
+ * @param dir optional directory in which the file name is, defaults to the current directory
+ */
+ getDownloadUrl: function(filename, dir) {
+ if ($.isArray(filename)) {
+ filename = JSON.stringify(filename);
}
- Files.hiddenBreadcrumbs = 0;
-
- $.each($('.crumb'), function(index, breadcrumb) {
- Files.breadcrumbs[index] = breadcrumb;
- Files.breadcrumbsWidth += $(breadcrumb).get(0).offsetWidth;
- });
-
- $.each($('#controls .actions>div'), function(index, action) {
- Files.breadcrumbsWidth += $(action).get(0).offsetWidth;
- });
-
- // event handlers for breadcrumb items
- $controls.find('.crumb a').on('click', onClickBreadcrumb);
-
- // setup drag and drop
- $controls.find('.crumb:not(.last)').droppable(crumbDropOptions);
+ var params = {
+ dir: dir || FileList.getCurrentDirectory(),
+ files: filename
+ };
+ return this.getAjaxUrl('download', params);
},
- resizeBreadcrumbs: function (width, firstRun) {
- if (width !== Files.lastWidth) {
- if ((width < Files.lastWidth || firstRun) && width < Files.breadcrumbsWidth) {
- if (Files.hiddenBreadcrumbs === 0) {
- Files.breadcrumbsWidth -= $(Files.breadcrumbs[1]).get(0).offsetWidth;
- $(Files.breadcrumbs[1]).find('a').hide();
- $(Files.breadcrumbs[1]).append('<span>...</span>');
- Files.breadcrumbsWidth += $(Files.breadcrumbs[1]).get(0).offsetWidth;
- Files.hiddenBreadcrumbs = 2;
- }
- var i = Files.hiddenBreadcrumbs;
- while (width < Files.breadcrumbsWidth && i > 1 && i < Files.breadcrumbs.length - 1) {
- Files.breadcrumbsWidth -= $(Files.breadcrumbs[i]).get(0).offsetWidth;
- $(Files.breadcrumbs[i]).hide();
- Files.hiddenBreadcrumbs = i;
- i++;
- }
- } else if (width > Files.lastWidth && Files.hiddenBreadcrumbs > 0) {
- var i = Files.hiddenBreadcrumbs;
- while (width > Files.breadcrumbsWidth && i > 0) {
- if (Files.hiddenBreadcrumbs === 1) {
- Files.breadcrumbsWidth -= $(Files.breadcrumbs[1]).get(0).offsetWidth;
- $(Files.breadcrumbs[1]).find('span').remove();
- $(Files.breadcrumbs[1]).find('a').show();
- Files.breadcrumbsWidth += $(Files.breadcrumbs[1]).get(0).offsetWidth;
- } else {
- $(Files.breadcrumbs[i]).show();
- Files.breadcrumbsWidth += $(Files.breadcrumbs[i]).get(0).offsetWidth;
- if (Files.breadcrumbsWidth > width) {
- Files.breadcrumbsWidth -= $(Files.breadcrumbs[i]).get(0).offsetWidth;
- $(Files.breadcrumbs[i]).hide();
- break;
- }
- }
- i--;
- Files.hiddenBreadcrumbs = i;
- }
- }
- Files.lastWidth = width;
+ /**
+ * Returns the ajax URL for a given action
+ * @param action action string
+ * @param params optional params map
+ */
+ getAjaxUrl: function(action, params) {
+ var q = '';
+ if (params) {
+ q = '?' + OC.buildQueryString(params);
}
+ return OC.filePath('files', 'ajax', action + '.php') + q;
}
};
$(document).ready(function() {
@@ -239,14 +198,10 @@ $(document).ready(function() {
Files.displayEncryptionWarning();
Files.bindKeyboardShortcuts(document, jQuery);
- FileList.postProcessList();
Files.setupDragAndDrop();
$('#file_action_panel').attr('activeAction', false);
- // allow dropping on the "files" app icon
- $('ul#apps li:first-child').data('dir','').droppable(crumbDropOptions);
-
// Triggers invisible file input
$('#upload a').on('click', function() {
$(this).parent().children('#file_upload_start').trigger('click');
@@ -256,7 +211,7 @@ $(document).ready(function() {
// Trigger cancelling of file upload
$('#uploadprogresswrapper .stop').on('click', function() {
OC.Upload.cancelUploads();
- procesSelection();
+ FileList.updateSelectionSummary();
});
// Show trash bin
@@ -264,149 +219,15 @@ $(document).ready(function() {
window.location=OC.filePath('files_trashbin', '', 'index.php');
});
- var lastChecked;
-
- // Sets the file link behaviour :
- $('#fileList').on('click','td.filename a',function(event) {
- if (event.ctrlKey || event.shiftKey) {
- event.preventDefault();
- if (event.shiftKey) {
- var last = $(lastChecked).parent().parent().prevAll().length;
- var first = $(this).parent().parent().prevAll().length;
- var start = Math.min(first, last);
- var end = Math.max(first, last);
- var rows = $(this).parent().parent().parent().children('tr');
- for (var i = start; i < end; i++) {
- $(rows).each(function(index) {
- if (index === i) {
- var checkbox = $(this).children().children('input:checkbox');
- $(checkbox).attr('checked', 'checked');
- $(checkbox).parent().parent().addClass('selected');
- }
- });
- }
- }
- var checkbox = $(this).parent().children('input:checkbox');
- lastChecked = checkbox;
- if ($(checkbox).attr('checked')) {
- $(checkbox).removeAttr('checked');
- $(checkbox).parent().parent().removeClass('selected');
- $('#select_all').removeAttr('checked');
- } else {
- $(checkbox).attr('checked', 'checked');
- $(checkbox).parent().parent().toggleClass('selected');
- var selectedCount = $('td.filename input:checkbox:checked').length;
- if (selectedCount === $('td.filename input:checkbox').length) {
- $('#select_all').attr('checked', 'checked');
- }
- }
- procesSelection();
- } else {
- var filename=$(this).parent().parent().attr('data-file');
- var tr = FileList.findFileEl(filename);
- var renaming=tr.data('renaming');
- if (!renaming && !FileList.isLoading(filename)) {
- FileActions.currentFile = $(this).parent();
- var mime=FileActions.getCurrentMimeType();
- var type=FileActions.getCurrentType();
- var permissions = FileActions.getCurrentPermissions();
- var action=FileActions.getDefault(mime,type, permissions);
- if (action) {
- event.preventDefault();
- action(filename);
- }
- }
- }
-
- });
-
- // Sets the select_all checkbox behaviour :
- $('#select_all').click(function() {
- if ($(this).attr('checked')) {
- // Check all
- $('td.filename input:checkbox').attr('checked', true);
- $('td.filename input:checkbox').parent().parent().addClass('selected');
- } else {
- // Uncheck all
- $('td.filename input:checkbox').attr('checked', false);
- $('td.filename input:checkbox').parent().parent().removeClass('selected');
- }
- procesSelection();
- });
-
- $('#fileList').on('change', 'td.filename input:checkbox',function(event) {
- if (event.shiftKey) {
- var last = $(lastChecked).parent().parent().prevAll().length;
- var first = $(this).parent().parent().prevAll().length;
- var start = Math.min(first, last);
- var end = Math.max(first, last);
- var rows = $(this).parent().parent().parent().children('tr');
- for (var i = start; i < end; i++) {
- $(rows).each(function(index) {
- if (index === i) {
- var checkbox = $(this).children().children('input:checkbox');
- $(checkbox).attr('checked', 'checked');
- $(checkbox).parent().parent().addClass('selected');
- }
- });
- }
- }
- var selectedCount=$('td.filename input:checkbox:checked').length;
- $(this).parent().parent().toggleClass('selected');
- if (!$(this).attr('checked')) {
- $('#select_all').attr('checked',false);
- } else {
- if (selectedCount===$('td.filename input:checkbox').length) {
- $('#select_all').attr('checked',true);
- }
- }
- procesSelection();
- });
-
- $('.download').click('click',function(event) {
- var files;
- var dir = FileList.getCurrentDirectory();
- if (FileList.isAllSelected()) {
- files = OC.basename(dir);
- dir = OC.dirname(dir) || '/';
- }
- else {
- files = getSelectedFilesTrash('name');
- }
- OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.'));
- OC.redirect(FileList.getDownloadUrl(files, dir));
- return false;
- });
-
- $('.delete-selected').click(function(event) {
- var files=getSelectedFilesTrash('name');
- event.preventDefault();
- if (FileList.isAllSelected()) {
- files = null;
- }
- FileList.do_delete(files);
- return false;
- });
-
// drag&drop support using jquery.fileupload
// TODO use OC.dialogs
$(document).bind('drop dragover', function (e) {
e.preventDefault(); // prevent browser from doing anything, if file isn't dropped in dropZone
- });
+ });
//do a background scan if needed
scanFiles();
- Files.initBreadCrumbs();
-
- $(window).resize(function() {
- var width = $(this).width();
- Files.resizeBreadcrumbs(width, false);
- });
-
- var width = $(this).width();
- Files.resizeBreadcrumbs(width, true);
-
// display storage warnings
setTimeout(Files.displayStorageWarnings, 100);
OC.Notification.setDefault(Files.displayStorageWarnings);
@@ -479,34 +300,22 @@ function scanFiles(force, dir, users) {
}
scanFiles.scanning=false;
-function boolOperationFinished(data, callback) {
- result = jQuery.parseJSON(data.responseText);
- Files.updateMaxUploadFilesize(result);
- if (result.status === 'success') {
- callback.call();
- } else {
- alert(result.data.message);
- }
-}
-
+// TODO: move to FileList
var createDragShadow = function(event) {
//select dragged file
var isDragSelected = $(event.target).parents('tr').find('td input:first').prop('checked');
if (!isDragSelected) {
//select dragged file
- $(event.target).parents('tr').find('td input:first').prop('checked',true);
+ FileList._selectFileEl($(event.target).parents('tr:first'), true);
}
- var selectedFiles = getSelectedFilesTrash();
+ // do not show drag shadow for too many files
+ var selectedFiles = _.first(FileList.getSelectedFiles(), FileList.pageSize);
+ selectedFiles.sort(FileList._fileInfoCompare);
if (!isDragSelected && selectedFiles.length === 1) {
//revert the selection
- $(event.target).parents('tr').find('td input:first').prop('checked',false);
- }
-
- //also update class when we dragged more than one file
- if (selectedFiles.length > 1) {
- $(event.target).parents('tr').addClass('selected');
+ FileList._selectFileEl($(event.target).parents('tr:first'), false);
}
// build dragshadow
@@ -517,9 +326,12 @@ var createDragShadow = function(event) {
var dir=$('#dir').val();
$(selectedFiles).each(function(i,elem) {
- var newtr = $('<tr/>').attr('data-dir', dir).attr('data-filename', elem.name).attr('data-origin', elem.origin);
+ var newtr = $('<tr/>')
+ .attr('data-dir', dir)
+ .attr('data-file', elem.name)
+ .attr('data-origin', elem.origin);
newtr.append($('<td/>').addClass('filename').text(elem.name));
- newtr.append($('<td/>').addClass('size').text(humanFileSize(elem.size)));
+ newtr.append($('<td/>').addClass('size').text(OC.Util.humanFileSize(elem.size)));
tbody.append(newtr);
if (elem.type === 'dir') {
newtr.find('td.filename').attr('style','background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')');
@@ -536,205 +348,64 @@ var createDragShadow = function(event) {
//options for file drag/drop
//start&stop handlers needs some cleaning up
+// TODO: move to FileList class
var dragOptions={
revert: 'invalid', revertDuration: 300,
opacity: 0.7, zIndex: 100, appendTo: 'body', cursorAt: { left: 24, top: 18 },
helper: createDragShadow, cursor: 'move',
- start: function(event, ui){
- var $selectedFiles = $('td.filename input:checkbox:checked');
- if($selectedFiles.length > 1){
- $selectedFiles.parents('tr').fadeTo(250, 0.2);
- }
- else{
- $(this).fadeTo(250, 0.2);
- }
- },
- stop: function(event, ui) {
- var $selectedFiles = $('td.filename input:checkbox:checked');
- if($selectedFiles.length > 1){
- $selectedFiles.parents('tr').fadeTo(250, 1);
- }
- else{
- $(this).fadeTo(250, 1);
- }
- $('#fileList tr td.filename').addClass('ui-draggable');
+ start: function(event, ui){
+ var $selectedFiles = $('td.filename input:checkbox:checked');
+ if($selectedFiles.length > 1){
+ $selectedFiles.parents('tr').fadeTo(250, 0.2);
}
+ else{
+ $(this).fadeTo(250, 0.2);
+ }
+ },
+ stop: function(event, ui) {
+ var $selectedFiles = $('td.filename input:checkbox:checked');
+ if($selectedFiles.length > 1){
+ $selectedFiles.parents('tr').fadeTo(250, 1);
+ }
+ else{
+ $(this).fadeTo(250, 1);
+ }
+ $('#fileList tr td.filename').addClass('ui-draggable');
+ }
};
// sane browsers support using the distance option
if ( $('html.ie').length === 0) {
dragOptions['distance'] = 20;
}
-var folderDropOptions={
+// TODO: move to FileList class
+var folderDropOptions = {
hoverClass: "canDrop",
drop: function( event, ui ) {
- //don't allow moving a file into a selected folder
+ // don't allow moving a file into a selected folder
if ($(event.target).parents('tr').find('td input:first').prop('checked') === true) {
return false;
}
- var target = $(this).closest('tr').data('file');
-
- var files = ui.helper.find('tr');
- $(files).each(function(i,row) {
- var dir = $(row).data('dir');
- var file = $(row).data('filename');
- //slapdash selector, tracking down our original element that the clone budded off of.
- var origin = $('tr[data-id=' + $(row).data('origin') + ']');
- var td = origin.children('td.filename');
- var oldBackgroundImage = td.css('background-image');
- td.css('background-image', 'url('+ OC.imagePath('core', 'loading.gif') + ')');
- $.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: dir+'/'+target }, function(result) {
- if (result) {
- if (result.status === 'success') {
- //recalculate folder size
- var oldFile = FileList.findFileEl(target);
- var newFile = FileList.findFileEl(file);
- var oldSize = oldFile.data('size');
- var newSize = oldSize + newFile.data('size');
- oldFile.data('size', newSize);
- oldFile.find('td.filesize').text(humanFileSize(newSize));
-
- FileList.remove(file);
- procesSelection();
- $('#notification').hide();
- } else {
- $('#notification').hide();
- $('#notification').text(result.data.message);
- $('#notification').fadeIn();
- }
- } else {
- OC.dialogs.alert(t('files', 'Error moving file'), t('files', 'Error'));
- }
- td.css('background-image', oldBackgroundImage);
- });
- });
- },
- tolerance: 'pointer'
-};
+ var targetPath = FileList.getCurrentDirectory() + '/' + $(this).closest('tr').data('file');
-var crumbDropOptions={
- drop: function( event, ui ) {
- var target=$(this).data('dir');
- var dir = $('#dir').val();
- while(dir.substr(0,1) === '/') {//remove extra leading /'s
- dir=dir.substr(1);
- }
- dir = '/' + dir;
- if (dir.substr(-1,1) !== '/') {
- dir = dir + '/';
- }
- if (target === dir || target+'/' === dir) {
- return;
+ var files = FileList.getSelectedFiles();
+ if (files.length === 0) {
+ // single one selected without checkbox?
+ files = _.map(ui.helper.find('tr'), FileList.elementToFile);
}
- var files = ui.helper.find('tr');
- $(files).each(function(i,row) {
- var dir = $(row).data('dir');
- var file = $(row).data('filename');
- //slapdash selector, tracking down our original element that the clone budded off of.
- var origin = $('tr[data-id=' + $(row).data('origin') + ']');
- var td = origin.children('td.filename');
- var oldBackgroundImage = td.css('background-image');
- td.css('background-image', 'url('+ OC.imagePath('core', 'loading.gif') + ')');
- $.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: target }, function(result) {
- if (result) {
- if (result.status === 'success') {
- FileList.remove(file);
- procesSelection();
- $('#notification').hide();
- } else {
- $('#notification').hide();
- $('#notification').text(result.data.message);
- $('#notification').fadeIn();
- }
- } else {
- OC.dialogs.alert(t('files', 'Error moving file'), t('files', 'Error'));
- }
- td.css('background-image', oldBackgroundImage);
- });
- });
+
+ FileList.move(_.pluck(files, 'name'), targetPath);
},
tolerance: 'pointer'
};
-function procesSelection() {
- var selected = getSelectedFilesTrash();
- var selectedFiles = selected.filter(function(el) {
- return el.type==='file';
- });
- var selectedFolders = selected.filter(function(el) {
- return el.type==='dir';
- });
- if (selectedFiles.length === 0 && selectedFolders.length === 0) {
- $('#headerName span.name').text(t('files','Name'));
- $('#headerSize').text(t('files','Size'));
- $('#modified').text(t('files','Modified'));
- $('table').removeClass('multiselect');
- $('.selectedActions').hide();
- $('#select_all').removeAttr('checked');
- }
- else {
- $('.selectedActions').show();
- var totalSize = 0;
- for(var i=0; i<selectedFiles.length; i++) {
- totalSize+=selectedFiles[i].size;
- }
- for(var i=0; i<selectedFolders.length; i++) {
- totalSize+=selectedFolders[i].size;
- }
- $('#headerSize').text(humanFileSize(totalSize));
- var selection = '';
- if (selectedFolders.length > 0) {
- selection += n('files', '%n folder', '%n folders', selectedFolders.length);
- if (selectedFiles.length > 0) {
- selection += ' & ';
- }
- }
- if (selectedFiles.length>0) {
- selection += n('files', '%n file', '%n files', selectedFiles.length);
- }
- $('#headerName span.name').text(selection);
- $('#modified').text('');
- $('table').addClass('multiselect');
- }
-}
-
-/**
- * @brief get a list of selected files
- * @param {string} property (option) the property of the file requested
- * @return {array}
- *
- * possible values for property: name, mime, size and type
- * if property is set, an array with that property for each file is returnd
- * if it's ommited an array of objects with all properties is returned
- */
-function getSelectedFilesTrash(property) {
- var elements=$('td.filename input:checkbox:checked').parent().parent();
- var files=[];
- elements.each(function(i,element) {
- var file={
- name:$(element).attr('data-file'),
- mime:$(element).data('mime'),
- type:$(element).data('type'),
- size:$(element).data('size'),
- etag:$(element).data('etag'),
- origin: $(element).data('id')
- };
- if (property) {
- files.push(file[property]);
- } else {
- files.push(file);
- }
- });
- return files;
-}
-
Files.getMimeIcon = function(mime, ready) {
if (Files.getMimeIcon.cache[mime]) {
ready(Files.getMimeIcon.cache[mime]);
} else {
$.get( OC.filePath('files','ajax','mimeicon.php'), {mime: mime}, function(path) {
- if(SVGSupport()){
+ if(OC.Util.hasSVGSupport()){
path = path.substr(0, path.length-4) + '.svg';
}
Files.getMimeIcon.cache[mime]=path;
@@ -749,25 +420,32 @@ function getPathForPreview(name) {
return path;
}
+/**
+ * Generates a preview URL based on the URL space.
+ * @param urlSpec map with {x: width, y: height, file: file path}
+ * @return preview URL
+ */
+Files.generatePreviewUrl = function(urlSpec) {
+ urlSpec = urlSpec || {};
+ if (!urlSpec.x) {
+ urlSpec.x = $('#filestable').data('preview-x');
+ }
+ if (!urlSpec.y) {
+ urlSpec.y = $('#filestable').data('preview-y');
+ }
+ urlSpec.y *= window.devicePixelRatio;
+ urlSpec.x *= window.devicePixelRatio;
+ urlSpec.forceIcon = 0;
+ return OC.generateUrl('/core/preview.png?') + $.param(urlSpec);
+};
+
Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
// get mime icon url
Files.getMimeIcon(mime, function(iconURL) {
- var urlSpec = {};
- var previewURL;
+ var previewURL,
+ urlSpec = {};
ready(iconURL); // set mimeicon URL
- // now try getting a preview thumbnail URL
- if ( ! width ) {
- width = $('#filestable').data('preview-x');
- }
- if ( ! height ) {
- height = $('#filestable').data('preview-y');
- }
- // note: the order of arguments must match the one
- // from the server's template so that the browser
- // knows it's the same file for caching
- urlSpec.x = width;
- urlSpec.y = height;
urlSpec.file = Files.fixPath(path);
if (etag){
@@ -778,15 +456,9 @@ Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
console.warn('Files.lazyLoadPreview(): missing etag argument');
}
- if ( $('#isPublic').length ) {
- urlSpec.t = $('#dirToken').val();
- previewURL = OC.Router.generate('core_ajax_public_preview', urlSpec);
- } else {
- previewURL = OC.Router.generate('core_ajax_preview', urlSpec);
- }
+ previewURL = Files.generatePreviewUrl(urlSpec);
previewURL = previewURL.replace('(', '%28');
previewURL = previewURL.replace(')', '%29');
- previewURL += '&forceIcon=0';
// preload image to prevent delay
// this will make the browser cache the image
@@ -796,7 +468,7 @@ Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
if (img.width > 5) {
ready(previewURL);
}
- }
+ };
img.src = previewURL;
});
};
@@ -835,14 +507,8 @@ function checkTrashStatus() {
});
}
-function onClickBreadcrumb(e) {
- var $el = $(e.target).closest('.crumb'),
- $targetDir = $el.data('dir'),
- isPublic = !!$('#isPublic').val();
-
- if ($targetDir !== undefined && !isPublic) {
- e.preventDefault();
- FileList.changeDirectory(decodeURIComponent($targetDir));
- }
+// override core's fileDownloadPath (legacy)
+function fileDownloadPath(dir, file) {
+ return Files.getDownloadUrl(file, dir);
}