From eda9ce4cf8059b88c9c8e65037548357fc792257 Mon Sep 17 00:00:00 2001 From: libasys Date: Wed, 14 Nov 2012 16:05:24 +0100 Subject: Fixes two issues if you using IE8. IE8 has problems with .bind actions and since jquery 1.7.2 using .bind is old school style for event delegation. the new and better way is using .on() function. The second is using $.each instead of for() to walkthrough an array! Now it works perfect, the events after uploads are triggered. --- apps/files/js/fileactions.js | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'apps/files/js') diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 40dd9f14a69..80b9c01f838 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -70,34 +70,43 @@ var FileActions = { } parent.children('a.name').append(''); var defaultAction = FileActions.getDefault(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions()); - var actionHandler = function (parent, action, event) { + + var actionHandler = function (event) { event.stopPropagation(); event.preventDefault(); - FileActions.currentFile = parent; - file = FileActions.getCurrentFile(); - action(file); + + FileActions.currentFile = event.data.elem; + var file = FileActions.getCurrentFile(); + + event.data.actionFunc(file); }; - for (name in actions) { + + $.each(actions, function (name, action) { // NOTE: Temporary fix to prevent rename action in root of Shared directory if (name === 'Rename' && $('#dir').val() === '/Shared') { - continue; + return true; } - if ((name === 'Download' || actions[name] !== defaultAction) && name !== 'Delete') { + + if ((name === 'Download' || action !== defaultAction) && name !== 'Delete') { var img = FileActions.icons[name]; if (img.call) { img = img(file); } var html = ''; if (img) { - html += ' '; + html += ' '; } html += t('files', name) + ''; + var element = $(html); element.data('action', name); - element.click(actionHandler.bind(null, parent, actions[name])); + //alert(element); + element.on('click',{a:null, elem:parent, actionFunc:actions[name]},actionHandler); parent.find('a.name>span.fileactions').append(element); } - } + + }); + if (actions['Delete']) { var img = FileActions.icons['Delete']; if (img.call) { @@ -114,7 +123,7 @@ var FileActions = { element.append($('')); } element.data('action', actions['Delete']); - element.click(actionHandler.bind(null, parent, actions['Delete'])); + element.on('click',{a:null, elem:parent, actionFunc:actions['Delete']},actionHandler); parent.parent().children().last().append(element); } }, -- cgit v1.2.3 From 1793e85a523174f66575ca4c40ceecbbe2b1c09d Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Fri, 16 Nov 2012 12:16:23 +0100 Subject: Also reject names with \ in the name fixes issues #435 and #437 --- apps/files/js/files.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'apps/files/js') diff --git a/apps/files/js/files.js b/apps/files/js/files.js index bb80841055b..b8972bed6b8 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -505,8 +505,8 @@ $(document).ready(function() { $(this).append(input); input.focus(); input.change(function(){ - if(type != 'web' && $(this).val().indexOf('/')!=-1){ - $('#notification').text(t('files','Invalid name, \'/\' is not allowed.')); + if(type != 'web' && ($(this).val().indexOf('/')!=-1 || $(this).val().indexOf('\\')!=-1)) { + $('#notification').text(t('files', 'Invalid name, \'/\' or \'\\\' is not allowed.')); $('#notification').fadeIn(); return; } -- cgit v1.2.3 From cd495bf9ba47b606c1258f2ab07907b65f5951b7 Mon Sep 17 00:00:00 2001 From: Thomas Mueller Date: Thu, 22 Nov 2012 11:22:16 +0100 Subject: some more invalid characters have been added --- apps/files/js/files.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'apps/files/js') diff --git a/apps/files/js/files.js b/apps/files/js/files.js index b8972bed6b8..8d0f9e06ad7 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -505,12 +505,17 @@ $(document).ready(function() { $(this).append(input); input.focus(); input.change(function(){ - if(type != 'web' && ($(this).val().indexOf('/')!=-1 || $(this).val().indexOf('\\')!=-1)) { - $('#notification').text(t('files', 'Invalid name, \'/\' or \'\\\' is not allowed.')); - $('#notification').fadeIn(); - return; - } - var name = getUniqueName($(this).val()); + if (type != 'web') { + var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*']; + for (var i = 0; i < invalid_characters.length; i++) { + if ($(this).val().indexOf(invalid_characters[i]) != -1) { + $('#notification').text(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.")); + $('#notification').fadeIn(); + return; + } + } + } + var name = getUniqueName($(this).val()); if (name != $(this).val()) { FileList.checkName(name, $(this).val(), true); var hidden = true; -- cgit v1.2.3 From a81d7cd79ff78122521dc0c8db864a9654710863 Mon Sep 17 00:00:00 2001 From: Jörn Friedrich Dreyer Date: Thu, 22 Nov 2012 13:03:17 +0100 Subject: introduce Files.containsInvalidCharacters(), use when creating or renaming files --- apps/files/js/filelist.js | 3 +++ apps/files/js/files.js | 27 ++++++++++++++++----------- 2 files changed, 19 insertions(+), 11 deletions(-) (limited to 'apps/files/js') diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index a5550dc9926..5674206632b 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -151,6 +151,9 @@ var FileList={ event.stopPropagation(); event.preventDefault(); var newname=input.val(); + if (Files.containsInvalidCharacters(newname)) { + return false; + } if (newname != name) { if (FileList.checkName(name, newname, false)) { newname = name; diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 8d0f9e06ad7..9fa2a384b5d 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -25,6 +25,18 @@ Files={ delete uploadingFiles[index]; }); procesSelection(); + }, + containsInvalidCharacters:function (name) { + var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*']; + for (var i = 0; i < invalid_characters.length; i++) { + if (name.indexOf(invalid_characters[i]) != -1) { + $('#notification').text(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.")); + $('#notification').fadeIn(); + return true; + } + } + $('#notification').fadeOut(); + return false; } }; $(document).ready(function() { @@ -505,17 +517,10 @@ $(document).ready(function() { $(this).append(input); input.focus(); input.change(function(){ - if (type != 'web') { - var invalid_characters = ['\\', '/', '<', '>', ':', '"', '|', '?', '*']; - for (var i = 0; i < invalid_characters.length; i++) { - if ($(this).val().indexOf(invalid_characters[i]) != -1) { - $('#notification').text(t('files', "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed.")); - $('#notification').fadeIn(); - return; - } - } - } - var name = getUniqueName($(this).val()); + if (type != 'web' && Files.containsInvalidCharacters($(this).val())) { + return; + } + var name = getUniqueName($(this).val()); if (name != $(this).val()) { FileList.checkName(name, $(this).val(), true); var hidden = true; -- cgit v1.2.3