Merge pull request #2034 from owncloud/fix_bug47

Fix #47 - Duplicate files create a (2) when multiples are uploaded
This commit is contained in:
Michael Gapczynski 2013-03-03 11:49:04 -08:00
commit 0488968443
2 changed files with 68 additions and 58 deletions

View File

@ -246,14 +246,17 @@ var FileList={
}, },
checkName:function(oldName, newName, isNewFile) { checkName:function(oldName, newName, isNewFile) {
if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) { if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) {
$('#notification').data('oldName', oldName); var html;
$('#notification').data('newName', newName); if(isNewFile){
$('#notification').data('isNewFile', isNewFile); 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>&nbsp;<span class="cancel">'+t('files', 'cancel')+'</span>';
if (isNewFile) { }else{
OC.Notification.showHtml(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>'); 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>';
} else { }
OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>'); html = $('<span>' + html + '</span>');
} html.attr('data-oldName', oldName);
html.attr('data-newName', newName);
html.attr('data-isNewFile', isNewFile);
OC.Notification.showHtml(html);
return true; return true;
} else { } else {
return false; return false;
@ -291,9 +294,7 @@ var FileList={
FileList.lastAction = function() { FileList.lastAction = function() {
FileList.finishReplace(); FileList.finishReplace();
}; };
if (isNewFile) { if (!isNewFile) {
OC.Notification.showHtml(t('files', 'replaced {new_name}', {new_name: newName})+'<span class="undo">'+t('files', 'undo')+'</span>');
} else {
OC.Notification.showHtml(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+'<span class="undo">'+t('files', 'undo')+'</span>'); OC.Notification.showHtml(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+'<span class="undo">'+t('files', 'undo')+'</span>');
} }
}, },
@ -376,19 +377,19 @@ $(document).ready(function(){
FileList.lastAction = null; FileList.lastAction = null;
OC.Notification.hide(); OC.Notification.hide();
}); });
$('#notification').on('click', '.replace', function() { $('#notification:first-child').on('click', '.replace', function() {
OC.Notification.hide(function() { OC.Notification.hide(function() {
FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile')); FileList.replace($('#notification > span').attr('data-oldName'), $('#notification > span').attr('data-newName'), $('#notification > span').attr('data-isNewFile'));
}); });
}); });
$('#notification').on('click', '.suggest', function() { $('#notification:first-child').on('click', '.suggest', function() {
$('tr').filterAttr('data-file', $('#notification').data('oldName')).show(); $('tr').filterAttr('data-file', $('#notification > span').attr('data-oldName')).show();
OC.Notification.hide(); OC.Notification.hide();
}); });
$('#notification').on('click', '.cancel', function() { $('#notification:first-child').on('click', '.cancel', function() {
if ($('#notification').data('isNewFile')) { if ($('#notification > span').attr('data-isNewFile')) {
FileList.deleteCanceled = false; FileList.deleteCanceled = false;
FileList.deleteFiles = [$('#notification').data('oldName')]; FileList.deleteFiles = [$('#notification > span').attr('data-oldName')];
} }
}); });
FileList.useUndo=(window.onbeforeunload)?true:false; FileList.useUndo=(window.onbeforeunload)?true:false;

View File

@ -1,7 +1,7 @@
/** /**
* Disable console output unless DEBUG mode is enabled. * Disable console output unless DEBUG mode is enabled.
* Add * Add
* define('DEBUG', true); * define('DEBUG', true);
* To the end of config/config.php to enable debug mode. * To the end of config/config.php to enable debug mode.
* The undefined checks fix the broken ie8 console * The undefined checks fix the broken ie8 console
*/ */
@ -44,13 +44,13 @@ function t(app,text, vars){
} }
} }
var _build = function (text, vars) { var _build = function (text, vars) {
return text.replace(/{([^{}]*)}/g, return text.replace(/{([^{}]*)}/g,
function (a, b) { function (a, b) {
var r = vars[b]; var r = vars[b];
return typeof r === 'string' || typeof r === 'number' ? r : a; return typeof r === 'string' || typeof r === 'number' ? r : a;
} }
); );
}; };
if( typeof( t.cache[app][text] ) !== 'undefined' ){ if( typeof( t.cache[app][text] ) !== 'undefined' ){
if(typeof vars === 'object') { if(typeof vars === 'object') {
return _build(t.cache[app][text], vars); return _build(t.cache[app][text], vars);
@ -274,7 +274,7 @@ var OC={
var popup = $('#appsettings_popup'); var popup = $('#appsettings_popup');
if(popup.length == 0) { if(popup.length == 0) {
$('body').prepend('<div class="popup hidden" id="appsettings_popup"></div>'); $('body').prepend('<div class="popup hidden" id="appsettings_popup"></div>');
popup = $('#appsettings_popup'); popup = $('#appsettings_popup');
popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft'); popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft');
} }
if(popup.is(':visible')) { if(popup.is(':visible')) {
@ -317,35 +317,44 @@ OC.addStyle.loaded=[];
OC.addScript.loaded=[]; OC.addScript.loaded=[];
OC.Notification={ OC.Notification={
getDefaultNotificationFunction: null, queuedNotifications: [],
setDefault: function(callback) { getDefaultNotificationFunction: null,
OC.Notification.getDefaultNotificationFunction = callback; setDefault: function(callback) {
}, OC.Notification.getDefaultNotificationFunction = callback;
hide: function(callback) { },
$("#notification").text(''); hide: function(callback) {
$('#notification').fadeOut('400', function(){ $('#notification').fadeOut('400', function(){
if (OC.Notification.isHidden()) { if (OC.Notification.isHidden()) {
if (OC.Notification.getDefaultNotificationFunction) { if (OC.Notification.getDefaultNotificationFunction) {
OC.Notification.getDefaultNotificationFunction.call(); OC.Notification.getDefaultNotificationFunction.call();
} }
} }
if (callback) { if (callback) {
callback.call(); callback.call();
} }
}); $('#notification').empty();
}, if(OC.Notification.queuedNotifications.length > 0){
showHtml: function(html) { OC.Notification.showHtml(OC.Notification.queuedNotifications[0]);
var notification = $('#notification'); OC.Notification.queuedNotifications.shift();
notification.hide(); }
notification.html(html); });
notification.fadeIn().css("display","inline"); },
}, showHtml: function(html) {
show: function(text) { if(($('#notification').filter('span.undo').length == 1) || OC.Notification.isHidden()){
var notification = $('#notification'); $('#notification').html(html);
notification.hide(); $('#notification').fadeIn().css("display","inline");
notification.text(text); }else{
notification.fadeIn().css("display","inline"); OC.Notification.queuedNotifications.push(html);
}, }
},
show: function(text) {
if(($('#notification').filter('span.undo').length == 1) || OC.Notification.isHidden()){
$('#notification').html(html);
$('#notification').fadeIn().css("display","inline");
}else{
OC.Notification.queuedNotifications.push($(text).html());
}
},
isHidden: function() { isHidden: function() {
return ($("#notification").text() === ''); return ($("#notification").text() === '');
} }
@ -548,7 +557,7 @@ function replaceSVG(){
*/ */
function object(o) { function object(o) {
function F() {} function F() {}
F.prototype = o; F.prototype = o;
return new F(); return new F();
} }