');
+ var tbody = $('');
+ dragshadow.append(tbody);
+
+ var dir=$('#dir').val();
+
+ $(selectedFiles).each(function(i,elem){
+ var newtr = $('
'
+ +'
'+elem.name+'
'+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')+')');
+ } else {
+ getMimeIcon(elem.mime,function(path){
+ newtr.find('td.filename').attr('style','background-image:url('+path+')');
+ });
+ }
+ });
+
+ return dragshadow;
+}
+
+//options for file drag/drop
var dragOptions={
- distance: 20, revert: 'invalid', opacity: 0.7, helper: 'clone',
+ revert: 'invalid', revertDuration: 300,
+ opacity: 0.7, zIndex: 100, appendTo: 'body', cursorAt: { left: -5, top: -5 },
+ helper: createDragShadow, cursor: 'move',
stop: function(event, ui) {
$('#fileList tr td.filename').addClass('ui-draggable');
}
-};
+}
+
var folderDropOptions={
drop: function( event, ui ) {
- var file=ui.draggable.parent().data('file');
- var target=$(this).find('.nametext').text().trim();
- var dir=$('#dir').val();
- $.ajax({
- url: OC.filePath('files', 'ajax', 'move.php'),
- data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(dir)+'/'+encodeURIComponent(target),
- complete: function(data){boolOperationFinished(data, function(){
- var el = $('#fileList tr').filterAttr('data-file',file).find('td.filename');
- el.draggable('destroy');
- FileList.remove(file);
- });}
+ //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=$.trim($(this).find('.nametext').text());
+
+ var files = ui.helper.find('tr');
+ $(files).each(function(i,row){
+ var dir = $(row).data('dir');
+ var file = $(row).data('filename');
+ $.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 oldSize = $('#fileList tr').filterAttr('data-file',target).data('size');
+ var newSize = oldSize + $('#fileList tr').filterAttr('data-file',file).data('size');
+ $('#fileList tr').filterAttr('data-file',target).data('size', newSize);
+ $('#fileList tr').filterAttr('data-file',target).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('Error moving file'));
+ }
+ });
});
- }
+ },
+ tolerance: 'pointer'
}
+
var crumbDropOptions={
drop: function( event, ui ) {
- var file=ui.draggable.parent().data('file');
var target=$(this).data('dir');
var dir=$('#dir').val();
while(dir.substr(0,1)=='/'){//remove extra leading /'s
@@ -852,12 +917,25 @@ var crumbDropOptions={
if(target==dir || target+'/'==dir){
return;
}
- $.ajax({
- url: OC.filePath('files', 'ajax', 'move.php'),
- data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(target),
- complete: function(data){boolOperationFinished(data, function(){
- FileList.remove(file);
- });}
+ var files = ui.helper.find('tr');
+ $(files).each(function(i,row){
+ var dir = $(row).data('dir');
+ var file = $(row).data('filename');
+ $.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('Error moving file'));
+ }
+ });
});
},
tolerance: 'pointer'
@@ -964,7 +1042,7 @@ function getUniqueName(name){
num=parseInt(numMatch[numMatch.length-1])+1;
base=base.split('(')
base.pop();
- base=base.join('(').trim();
+ base=$.trim(base.join('('));
}
name=base+' ('+num+')';
if (extension) {
diff --git a/apps/files/js/upgrade.js b/apps/files/js/upgrade.js
new file mode 100644
index 0000000000..02d57fc9e6
--- /dev/null
+++ b/apps/files/js/upgrade.js
@@ -0,0 +1,17 @@
+$(document).ready(function () {
+ var eventSource, total, bar = $('#progressbar');
+ console.log('start');
+ bar.progressbar({value: 0});
+ eventSource = new OC.EventSource(OC.filePath('files', 'ajax', 'upgrade.php'));
+ eventSource.listen('total', function (count) {
+ total = count;
+ console.log(count + ' files needed to be migrated');
+ });
+ eventSource.listen('count', function (count) {
+ bar.progressbar({value: (count / total) * 100});
+ console.log(count);
+ });
+ eventSource.listen('done', function () {
+ document.location.reload();
+ });
+});
diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php
index d59463bb7a..986d92f85f 100644
--- a/apps/files/l10n/bn_BD.php
+++ b/apps/files/l10n/bn_BD.php
@@ -1,7 +1,4 @@
"%s কে স্থানান্তর করা সম্ভব হলো না - এই নামের ফাইল বিদ্যমান",
-"Could not move %s" => "%s কে স্থানান্তর করা সম্ভব হলো না",
-"Unable to rename file" => "ফাইলের নাম পরিবর্তন করা সম্ভব হলো না",
"No file was uploaded. Unknown error" => "কোন ফাইল আপলোড করা হয় নি। সমস্যা অজ্ঞাত।",
"There is no error, the file uploaded with success" => "কোন সমস্যা নেই, ফাইল আপলোড সুসম্পন্ন হয়েছে",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "আপলোড করা ফাইলটি php.ini তে বর্ণিত upload_max_filesize নির্দেশিত আয়তন অতিক্রম করছেঃ",
@@ -37,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "ফাইল আপলোড চলমান। এই পৃষ্ঠা পরিত্যাগ করলে আপলোড বাতিল করা হবে।",
"URL cannot be empty." => "URL ফাঁকা রাখা যাবে না।",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ফোল্ডারের নামটি সঠিক নয়। 'ভাগাভাগি করা' শুধুমাত্র Owncloud এর জন্য সংরক্ষিত।",
-"{count} files scanned" => "{count} টি ফাইল স্ক্যান করা হয়েছে",
-"error while scanning" => "স্ক্যান করার সময় সমস্যা দেখা দিয়েছে",
"Name" => "নাম",
"Size" => "আকার",
"Modified" => "পরিবর্তিত",
diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php
index ceec026478..5c8d5626d1 100644
--- a/apps/files/l10n/ca.php
+++ b/apps/files/l10n/ca.php
@@ -1,7 +1,4 @@
"No s'ha pogut moure %s - Ja hi ha un fitxer amb aquest nom",
-"Could not move %s" => " No s'ha pogut moure %s",
-"Unable to rename file" => "No es pot canviar el nom del fitxer",
"No file was uploaded. Unknown error" => "No s'ha carregat cap fitxer. Error desconegut",
"There is no error, the file uploaded with success" => "El fitxer s'ha pujat correctament",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "L’arxiu que voleu carregar supera el màxim definit en la directiva upload_max_filesize del php.ini:",
@@ -10,7 +7,6 @@
"No file was uploaded" => "El fitxer no s'ha pujat",
"Missing a temporary folder" => "S'ha perdut un fitxer temporal",
"Failed to write to disk" => "Ha fallat en escriure al disc",
-"Not enough storage available" => "No hi ha prou espai disponible",
"Invalid directory." => "Directori no vàlid.",
"Files" => "Fitxers",
"Unshare" => "Deixa de compartir",
@@ -41,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà.",
"URL cannot be empty." => "La URL no pot ser buida",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nom de carpeta no vàlid. L'ús de 'Shared' està reservat per Owncloud",
-"{count} files scanned" => "{count} fitxers escannejats",
-"error while scanning" => "error durant l'escaneig",
"Name" => "Nom",
"Size" => "Mida",
"Modified" => "Modificat",
diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php
index 7a93c502b5..b231e70809 100644
--- a/apps/files/l10n/cs_CZ.php
+++ b/apps/files/l10n/cs_CZ.php
@@ -1,7 +1,4 @@
"Nelze přesunout %s - existuje soubor se stejným názvem",
-"Could not move %s" => "Nelze přesunout %s",
-"Unable to rename file" => "Nelze přejmenovat soubor",
"No file was uploaded. Unknown error" => "Soubor nebyl odeslán. Neznámá chyba",
"There is no error, the file uploaded with success" => "Soubor byl odeslán úspěšně",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Odesílaný soubor přesahuje velikost upload_max_filesize povolenou v php.ini:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' je neplatným názvem souboru.",
"File name cannot be empty." => "Název souboru nemůže být prázdný řetězec.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neplatný název, znaky '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nejsou povoleny.",
+"Your storage is full, files can not be updated or synced anymore!" => "Vaše úložiště je plné, nelze aktualizovat ani synchronizovat soubory.",
+"Your storage is almost full ({usedSpacePercent}%)" => "Vaše úložiště je téměř plné ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Vaše soubory ke stažení se připravují. Pokud jsou velké může to chvíli trvat.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů",
"Upload Error" => "Chyba odesílání",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Probíhá odesílání souboru. Opuštění stránky vyústí ve zrušení nahrávání.",
"URL cannot be empty." => "URL nemůže být prázdná",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatný název složky. Použití 'Shared' je rezervováno pro vnitřní potřeby Owncloud",
-"{count} files scanned" => "prozkoumáno {count} souborů",
-"error while scanning" => "chyba při prohledávání",
"Name" => "Název",
"Size" => "Velikost",
"Modified" => "Změněno",
diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php
index c5e3647a7f..051bb40a8e 100644
--- a/apps/files/l10n/da.php
+++ b/apps/files/l10n/da.php
@@ -7,6 +7,7 @@
"No file was uploaded" => "Ingen fil blev uploadet",
"Missing a temporary folder" => "Mangler en midlertidig mappe",
"Failed to write to disk" => "Fejl ved skrivning til disk.",
+"Invalid directory." => "Ugyldig mappe.",
"Files" => "Filer",
"Unshare" => "Fjern deling",
"Delete" => "Slet",
@@ -20,7 +21,12 @@
"replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}",
"unshared {files}" => "ikke delte {files}",
"deleted {files}" => "slettede {files}",
+"'.' is an invalid file name." => "'.' er et ugyldigt filnavn.",
+"File name cannot be empty." => "Filnavnet kan ikke stå tomt.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldigt navn, '\\', '/', '<', '>', ':' | '?', '\"', '', og '*' er ikke tilladt.",
+"Your storage is full, files can not be updated or synced anymore!" => "Din opbevaringsplads er fyldt op, filer kan ikke opdateres eller synkroniseres længere!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Din opbevaringsplads er næsten fyldt op ({usedSpacePercent}%)",
+"Your download is being prepared. This might take some time if the files are big." => "Dit download forberedes. Dette kan tage lidt tid ved større filer.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kunne ikke uploade din fil, da det enten er en mappe eller er tom",
"Upload Error" => "Fejl ved upload",
"Close" => "Luk",
@@ -30,8 +36,7 @@
"Upload cancelled." => "Upload afbrudt.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.",
"URL cannot be empty." => "URLen kan ikke være tom.",
-"{count} files scanned" => "{count} filer skannet",
-"error while scanning" => "fejl under scanning",
+"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ugyldigt mappenavn. Brug af \"Shared\" er forbeholdt Owncloud",
"Name" => "Navn",
"Size" => "Størrelse",
"Modified" => "Ændret",
diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php
index 84aed12b5c..072d155ab1 100644
--- a/apps/files/l10n/de.php
+++ b/apps/files/l10n/de.php
@@ -1,7 +1,4 @@
"Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits.",
-"Could not move %s" => "Konnte %s nicht verschieben",
-"Unable to rename file" => "Konnte Datei nicht umbenennen",
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ihr Speicherplatz ist voll, Dateien können nicht mehr aktualisiert oder synchronisiert werden!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicherplatz ist fast aufgebraucht ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Dein Download wird vorbereitet. Dies kann bei größeren Dateien etwas dauern.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.",
"Upload Error" => "Fehler beim Upload",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.",
"URL cannot be empty." => "Die URL darf nicht leer sein",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten.",
-"{count} files scanned" => "{count} Dateien wurden gescannt",
-"error while scanning" => "Fehler beim Scannen",
"Name" => "Name",
"Size" => "Größe",
"Modified" => "Bearbeitet",
diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php
index d9c9557399..f7275c6e58 100644
--- a/apps/files/l10n/de_DE.php
+++ b/apps/files/l10n/de_DE.php
@@ -1,7 +1,4 @@
"Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits",
-"Could not move %s" => "Konnte %s nicht verschieben",
-"Unable to rename file" => "Konnte Datei nicht umbenennen",
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ihr Speicher ist voll. Daher können keine Dateien mehr aktualisiert oder synchronisiert werden!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicher ist fast voll ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Ihr Download wird vorbereitet. Dies kann bei größeren Dateien einen Moment dauern.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Ihre Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.",
"Upload Error" => "Fehler beim Upload",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"URL cannot be empty." => "Die URL darf nicht leer sein.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten",
-"{count} files scanned" => "{count} Dateien wurden gescannt",
-"error while scanning" => "Fehler beim Scannen",
"Name" => "Name",
"Size" => "Größe",
"Modified" => "Bearbeitet",
diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php
index e3fbb892ff..b8bb487203 100644
--- a/apps/files/l10n/el.php
+++ b/apps/files/l10n/el.php
@@ -1,7 +1,4 @@
"Αδυναμία μετακίνησης του %s - υπάρχει ήδη αρχείο με αυτό το όνομα",
-"Could not move %s" => "Αδυναμία μετακίνησης του %s",
-"Unable to rename file" => "Αδυναμία μετονομασίας αρχείου",
"No file was uploaded. Unknown error" => "Δεν ανέβηκε κάποιο αρχείο. Άγνωστο σφάλμα",
"There is no error, the file uploaded with success" => "Δεν υπάρχει σφάλμα, το αρχείο εστάλει επιτυχώς",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Το απεσταλμένο αρχείο ξεπερνά την οδηγία upload_max_filesize στο php.ini:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' είναι μη έγκυρο όνομα αρχείου.",
"File name cannot be empty." => "Το όνομα αρχείου δεν πρέπει να είναι κενό.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Μη έγκυρο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτρέπονται.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ο αποθηκευτικός σας χώρος είναι γεμάτος, τα αρχεία δεν μπορούν να ενημερωθούν ή να συγχρονιστούν πια!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ο αποθηκευτικός χώρος είναι σχεδόν γεμάτος ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Η λήψη προετοιμάζεται. Αυτό μπορεί να πάρει ώρα εάν τα αρχεία έχουν μεγάλο μέγεθος.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην αποστολή του αρχείου σας αφού είναι φάκελος ή έχει 0 bytes",
"Upload Error" => "Σφάλμα Αποστολής",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
"URL cannot be empty." => "Η URL δεν πρέπει να είναι κενή.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Μη έγκυρο όνομα φακέλου. Η χρήση του 'Κοινόχρηστος' χρησιμοποιείται από ο Owncloud",
-"{count} files scanned" => "{count} αρχεία ανιχνεύτηκαν",
-"error while scanning" => "σφάλμα κατά την ανίχνευση",
"Name" => "Όνομα",
"Size" => "Μέγεθος",
"Modified" => "Τροποποιήθηκε",
diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php
index fc4367c55a..f885bef5cd 100644
--- a/apps/files/l10n/eo.php
+++ b/apps/files/l10n/eo.php
@@ -1,7 +1,4 @@
"Ne eblis movi %s: dosiero kun ĉi tiu nomo jam ekzistas",
-"Could not move %s" => "Ne eblis movi %s",
-"Unable to rename file" => "Ne eblis alinomigi dosieron",
"No file was uploaded. Unknown error" => "Neniu dosiero alŝutiĝis. Nekonata eraro.",
"There is no error, the file uploaded with success" => "Ne estas eraro, la dosiero alŝutiĝis sukcese",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "La dosiero alŝutita superas la regulon upload_max_filesize el php.ini: ",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Dosieralŝuto plenumiĝas. Lasi la paĝon nun nuligus la alŝuton.",
"URL cannot be empty." => "URL ne povas esti malplena.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nevalida dosierujnomo. Uzo de “Shared” rezervatas de Owncloud.",
-"{count} files scanned" => "{count} dosieroj skaniĝis",
-"error while scanning" => "eraro dum skano",
"Name" => "Nomo",
"Size" => "Grando",
"Modified" => "Modifita",
diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php
index 1620208559..260ecd42e4 100644
--- a/apps/files/l10n/es.php
+++ b/apps/files/l10n/es.php
@@ -1,7 +1,4 @@
"No se puede mover %s - Ya existe un archivo con ese nombre",
-"Could not move %s" => "No se puede mover %s",
-"Unable to rename file" => "No se puede renombrar el archivo",
"No file was uploaded. Unknown error" => "Fallo no se subió el fichero",
"There is no error, the file uploaded with success" => "No se ha producido ningún error, el archivo se ha subido con éxito",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida.",
"URL cannot be empty." => "La URL no puede estar vacía.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta invalido. El uso de \"Shared\" esta reservado para Owncloud",
-"{count} files scanned" => "{count} archivos escaneados",
-"error while scanning" => "error escaneando",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php
index cd8347a14a..32219b4304 100644
--- a/apps/files/l10n/es_AR.php
+++ b/apps/files/l10n/es_AR.php
@@ -1,7 +1,4 @@
"No se pudo mover %s - Un archivo con este nombre ya existe",
-"Could not move %s" => "No se pudo mover %s ",
-"Unable to rename file" => "No fue posible cambiar el nombre al archivo",
"No file was uploaded. Unknown error" => "El archivo no fue subido. Error desconocido",
"There is no error, the file uploaded with success" => "No se han producido errores, el archivo se ha subido con éxito",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentás subir excede el tamaño definido por upload_max_filesize en el php.ini:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' es un nombre de archivo inválido.",
"File name cannot be empty." => "El nombre del archivo no puede quedar vacío.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre invalido, '\\', '/', '<', '>', ':', '\"', '|', '?' y '*' no están permitidos.",
+"Your storage is full, files can not be updated or synced anymore!" => "El almacenamiento está lleno, los archivos no se pueden seguir actualizando ni sincronizando",
+"Your storage is almost full ({usedSpacePercent}%)" => "El almacenamiento está casi lleno ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Tu descarga esta siendo preparada. Esto puede tardar algun tiempo si los archivos son muy grandes.",
"Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes",
"Upload Error" => "Error al subir el archivo",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.",
"URL cannot be empty." => "La URL no puede estar vacía",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta inválido. El uso de 'Shared' está reservado por ownCloud",
-"{count} files scanned" => "{count} archivos escaneados",
-"error while scanning" => "error mientras se escaneaba",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php
index 1df237baa8..dd183ff935 100644
--- a/apps/files/l10n/et_EE.php
+++ b/apps/files/l10n/et_EE.php
@@ -29,8 +29,6 @@
"Upload cancelled." => "Üleslaadimine tühistati.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
"URL cannot be empty." => "URL ei saa olla tühi.",
-"{count} files scanned" => "{count} faili skännitud",
-"error while scanning" => "viga skännimisel",
"Name" => "Nimi",
"Size" => "Suurus",
"Modified" => "Muudetud",
diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php
index 8b8f6d2bd1..4227c16543 100644
--- a/apps/files/l10n/eu.php
+++ b/apps/files/l10n/eu.php
@@ -1,7 +1,4 @@
"Ezin da %s mugitu - Izen hau duen fitxategia dagoeneko existitzen da",
-"Could not move %s" => "Ezin dira fitxategiak mugitu %s",
-"Unable to rename file" => "Ezin izan da fitxategia berrizendatu",
"No file was uploaded. Unknown error" => "Ez da fitxategirik igo. Errore ezezaguna",
"There is no error, the file uploaded with success" => "Ez da arazorik izan, fitxategia ongi igo da",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Igotako fitxategiak php.ini fitxategian ezarritako upload_max_filesize muga gainditu du:",
@@ -10,7 +7,6 @@
"No file was uploaded" => "Ez da fitxategirik igo",
"Missing a temporary folder" => "Aldi baterako karpeta falta da",
"Failed to write to disk" => "Errore bat izan da diskoan idazterakoan",
-"Not enough storage available" => "Ez dago behar aina leku erabilgarri,",
"Invalid directory." => "Baliogabeko karpeta.",
"Files" => "Fitxategiak",
"Unshare" => "Ez elkarbanatu",
@@ -41,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Fitxategien igoera martxan da. Orria orain uzteak igoera ezeztatutko du.",
"URL cannot be empty." => "URLa ezin da hutsik egon.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Baliogabeako karpeta izena. 'Shared' izena Owncloudek erreserbatzen du",
-"{count} files scanned" => "{count} fitxategi eskaneatuta",
-"error while scanning" => "errore bat egon da eskaneatzen zen bitartean",
"Name" => "Izena",
"Size" => "Tamaina",
"Modified" => "Aldatuta",
diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php
index 3d3bfad1f9..41eab2a60a 100644
--- a/apps/files/l10n/fa.php
+++ b/apps/files/l10n/fa.php
@@ -1,7 +1,4 @@
"%s نمی تواند حرکت کند - در حال حاضر پرونده با این نام وجود دارد. ",
-"Could not move %s" => "%s نمی تواند حرکت کند ",
-"Unable to rename file" => "قادر به تغییر نام پرونده نیست.",
"No file was uploaded. Unknown error" => "هیچ فایلی آپلود نشد.خطای ناشناس",
"There is no error, the file uploaded with success" => "هیچ خطایی وجود ندارد فایل با موفقیت بار گذاری شد",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "پرونده آپلود شده بیش ازدستور ماکزیمم_حجم فایل_برای آپلود در php.ini استفاده کرده است.",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "آپلودکردن پرونده در حال پیشرفت است. در صورت خروج از صفحه آپلود لغو میگردد. ",
"URL cannot be empty." => "URL نمی تواند خالی باشد.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "نام پوشه نامعتبر است. استفاده از \" به اشتراک گذاشته شده \" متعلق به سایت Owncloud است.",
-"{count} files scanned" => "{ شمار } فایل های اسکن شده",
-"error while scanning" => "خطا در حال انجام اسکن ",
"Name" => "نام",
"Size" => "اندازه",
"Modified" => "تغییر یافته",
diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php
index ce236a30ed..aa0393af32 100644
--- a/apps/files/l10n/fi_FI.php
+++ b/apps/files/l10n/fi_FI.php
@@ -1,7 +1,4 @@
"Kohteen %s siirto ei onnistunut - Tiedosto samalla nimellä on jo olemassa",
-"Could not move %s" => "Kohteen %s siirto ei onnistunut",
-"Unable to rename file" => "Tiedoston nimeäminen uudelleen ei onnistunut",
"No file was uploaded. Unknown error" => "Tiedostoa ei lähetetty. Tuntematon virhe",
"There is no error, the file uploaded with success" => "Ei virheitä, tiedosto lähetettiin onnistuneesti",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Lähetetty tiedosto ylittää HTML-lomakkeessa määritetyn MAX_FILE_SIZE-arvon ylärajan",
@@ -22,6 +19,8 @@
"'.' is an invalid file name." => "'.' on virheellinen nimi tiedostolle.",
"File name cannot be empty." => "Tiedoston nimi ei voi olla tyhjä.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Virheellinen nimi, merkit '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' eivät ole sallittuja.",
+"Your storage is full, files can not be updated or synced anymore!" => "Tallennustila on loppu, tiedostoja ei voi enää päivittää tai synkronoida!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Tallennustila on melkein loppu ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Lataustasi valmistellaan. Tämä saattaa kestää hetken, jos tiedostot ovat suuria kooltaan.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio",
"Upload Error" => "Lähetysvirhe.",
diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php
index 6229b7e3a4..d0459f644f 100644
--- a/apps/files/l10n/fr.php
+++ b/apps/files/l10n/fr.php
@@ -1,7 +1,4 @@
"Impossible de déplacer %s - Un fichier possédant ce nom existe déjà",
-"Could not move %s" => "Impossible de déplacer %s",
-"Unable to rename file" => "Impossible de renommer le fichier",
"No file was uploaded. Unknown error" => "Aucun fichier n'a été chargé. Erreur inconnue",
"There is no error, the file uploaded with success" => "Aucune erreur, le fichier a été téléversé avec succès",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Le fichier envoyé dépasse la valeur upload_max_filesize située dans le fichier php.ini:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' n'est pas un nom de fichier valide.",
"File name cannot be empty." => "Le nom de fichier ne peut être vide.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nom invalide, les caractères '\\', '/', '<', '>', ':', '\"', '|', '?' et '*' ne sont pas autorisés.",
+"Your storage is full, files can not be updated or synced anymore!" => "Votre espage de stockage est plein, les fichiers ne peuvent plus être téléversés ou synchronisés !",
+"Your storage is almost full ({usedSpacePercent}%)" => "Votre espace de stockage est presque plein ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Votre téléchargement est cours de préparation. Ceci peut nécessiter un certain temps si les fichiers sont volumineux.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet.",
"Upload Error" => "Erreur de chargement",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"URL cannot be empty." => "L'URL ne peut-être vide",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nom de dossier invalide. L'utilisation du mot 'Shared' est réservée à Owncloud",
-"{count} files scanned" => "{count} fichiers indexés",
-"error while scanning" => "erreur lors de l'indexation",
"Name" => "Nom",
"Size" => "Taille",
"Modified" => "Modifié",
diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php
index 3bac12b351..271945890c 100644
--- a/apps/files/l10n/gl.php
+++ b/apps/files/l10n/gl.php
@@ -1,7 +1,4 @@
"Non se moveu %s - Xa existe un ficheiro con ese nome.",
-"Could not move %s" => "Non se puido mover %s",
-"Unable to rename file" => "Non se pode renomear o ficheiro",
"No file was uploaded. Unknown error" => "Non se subiu ningún ficheiro. Erro descoñecido.",
"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini",
@@ -37,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.",
"URL cannot be empty." => "URL non pode quedar baleiro.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud",
-"{count} files scanned" => "{count} ficheiros escaneados",
-"error while scanning" => "erro mentres analizaba",
"Name" => "Nome",
"Size" => "Tamaño",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php
index 62b397e129..26090f6d69 100644
--- a/apps/files/l10n/he.php
+++ b/apps/files/l10n/he.php
@@ -30,8 +30,6 @@
"Upload cancelled." => "ההעלאה בוטלה.",
"File upload is in progress. Leaving the page now will cancel the upload." => "מתבצעת כעת העלאת קבצים. עזיבה של העמוד תבטל את ההעלאה.",
"URL cannot be empty." => "קישור אינו יכול להיות ריק.",
-"{count} files scanned" => "{count} קבצים נסרקו",
-"error while scanning" => "אירעה שגיאה במהלך הסריקה",
"Name" => "שם",
"Size" => "גודל",
"Modified" => "זמן שינוי",
diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php
index 7000caf0d1..4f4546aaf0 100644
--- a/apps/files/l10n/hr.php
+++ b/apps/files/l10n/hr.php
@@ -20,7 +20,6 @@
"1 file uploading" => "1 datoteka se učitava",
"Upload cancelled." => "Slanje poništeno.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Učitavanje datoteke. Napuštanjem stranice će prekinuti učitavanje.",
-"error while scanning" => "grečka prilikom skeniranja",
"Name" => "Naziv",
"Size" => "Veličina",
"Modified" => "Zadnja promjena",
diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php
index 922b4f3097..3b74026485 100644
--- a/apps/files/l10n/hu_HU.php
+++ b/apps/files/l10n/hu_HU.php
@@ -1,7 +1,4 @@
"%s áthelyezése nem sikerült - már létezik másik fájl ezzel a névvel",
-"Could not move %s" => "Nem sikerült %s áthelyezése",
-"Unable to rename file" => "Nem lehet átnevezni a fájlt",
"No file was uploaded. Unknown error" => "Nem történt feltöltés. Ismeretlen hiba",
"There is no error, the file uploaded with success" => "A fájlt sikerült feltölteni",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "A feltöltött fájl mérete meghaladja a php.ini állományban megadott upload_max_filesize paraméter értékét.",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' fájlnév érvénytelen.",
"File name cannot be empty." => "A fájlnév nem lehet semmi.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Érvénytelen elnevezés. Ezek a karakterek nem használhatók: '\\', '/', '<', '>', ':', '\"', '|', '?' és '*'",
+"Your storage is full, files can not be updated or synced anymore!" => "A tároló tele van, a fájlok nem frissíthetőek vagy szinkronizálhatóak a jövőben.",
+"Your storage is almost full ({usedSpacePercent}%)" => "A tároló majdnem tele van ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Készül a letöltendő állomány. Ez eltarthat egy ideig, ha nagyok a fájlok.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nem tölthető fel, mert mappa volt, vagy 0 byte méretű",
"Upload Error" => "Feltöltési hiba",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Fájlfeltöltés van folyamatban. Az oldal elhagyása megszakítja a feltöltést.",
"URL cannot be empty." => "Az URL nem lehet semmi.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Érvénytelen mappanév. A név használata csak a Owncloud számára lehetséges.",
-"{count} files scanned" => "{count} fájlt találtunk",
-"error while scanning" => "Hiba a fájllista-ellenőrzés során",
"Name" => "Név",
"Size" => "Méret",
"Modified" => "Módosítva",
diff --git a/apps/files/l10n/is.php b/apps/files/l10n/is.php
index 297853c816..3f379a621b 100644
--- a/apps/files/l10n/is.php
+++ b/apps/files/l10n/is.php
@@ -1,7 +1,4 @@
"Gat ekki fært %s - Skrá með þessu nafni er þegar til",
-"Could not move %s" => "Gat ekki fært %s",
-"Unable to rename file" => "Gat ekki endurskýrt skrá",
"No file was uploaded. Unknown error" => "Engin skrá var send inn. Óþekkt villa.",
"There is no error, the file uploaded with success" => "Engin villa, innsending heppnaðist",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Innsend skrá er stærri en upload_max stillingin í php.ini:",
@@ -37,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Innsending í gangi. Ef þú ferð af þessari síðu mun innsending misheppnast.",
"URL cannot be empty." => "Vefslóð má ekki vera tóm.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Óleyfilegt nafn á möppu. Nafnið 'Shared' er frátekið fyrir Owncloud",
-"{count} files scanned" => "{count} skrár skimaðar",
-"error while scanning" => "villa við skimun",
"Name" => "Nafn",
"Size" => "Stærð",
"Modified" => "Breytt",
diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php
index 63bc71d672..8a9060b310 100644
--- a/apps/files/l10n/it.php
+++ b/apps/files/l10n/it.php
@@ -1,7 +1,4 @@
"Impossibile spostare %s - un file con questo nome esiste già",
-"Could not move %s" => "Impossibile spostare %s",
-"Unable to rename file" => "Impossibile rinominare il file",
"No file was uploaded. Unknown error" => "Nessun file è stato inviato. Errore sconosciuto",
"There is no error, the file uploaded with success" => "Non ci sono errori, file caricato con successo",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Il file caricato supera la direttiva upload_max_filesize in php.ini:",
@@ -10,7 +7,6 @@
"No file was uploaded" => "Nessun file è stato caricato",
"Missing a temporary folder" => "Cartella temporanea mancante",
"Failed to write to disk" => "Scrittura su disco non riuscita",
-"Not enough storage available" => "Spazio di archiviazione insufficiente",
"Invalid directory." => "Cartella non valida.",
"Files" => "File",
"Unshare" => "Rimuovi condivisione",
@@ -41,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"URL cannot be empty." => "L'URL non può essere vuoto.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome della cartella non valido. L'uso di 'Shared' è riservato da ownCloud",
-"{count} files scanned" => "{count} file analizzati",
-"error while scanning" => "errore durante la scansione",
"Name" => "Nome",
"Size" => "Dimensione",
"Modified" => "Modificato",
diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php
index 5d4bf93e5e..ccb4eb04dc 100644
--- a/apps/files/l10n/ja_JP.php
+++ b/apps/files/l10n/ja_JP.php
@@ -1,7 +1,4 @@
"%s を移動できませんでした ― この名前のファイルはすでに存在します",
-"Could not move %s" => "%s を移動できませんでした",
-"Unable to rename file" => "ファイル名の変更ができません",
"No file was uploaded. Unknown error" => "ファイルは何もアップロードされていません。不明なエラー",
"There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "アップロードされたファイルはphp.ini の upload_max_filesize に設定されたサイズを超えています:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' は無効なファイル名です。",
"File name cannot be empty." => "ファイル名を空にすることはできません。",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "無効な名前、'\\', '/', '<', '>', ':', '\"', '|', '?', '*' は使用できません。",
+"Your storage is full, files can not be updated or synced anymore!" => "あなたのストレージは一杯です。ファイルの更新と同期はもうできません!",
+"Your storage is almost full ({usedSpacePercent}%)" => "あなたのストレージはほぼ一杯です({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "ダウンロードの準備中です。ファイルサイズが大きい場合は少し時間がかかるかもしれません。",
"Unable to upload your file as it is a directory or has 0 bytes" => "ディレクトリもしくは0バイトのファイルはアップロードできません",
"Upload Error" => "アップロードエラー",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"URL cannot be empty." => "URLは空にできません。",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無効なフォルダ名です。'Shared' の利用は ownCloud が予約済みです。",
-"{count} files scanned" => "{count} ファイルをスキャン",
-"error while scanning" => "スキャン中のエラー",
"Name" => "名前",
"Size" => "サイズ",
"Modified" => "更新日時",
diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php
index 08225c114d..72051c3ea9 100644
--- a/apps/files/l10n/ka_GE.php
+++ b/apps/files/l10n/ka_GE.php
@@ -26,8 +26,6 @@
"{count} files uploading" => "{count} ფაილი იტვირთება",
"Upload cancelled." => "ატვირთვა შეჩერებულ იქნა.",
"File upload is in progress. Leaving the page now will cancel the upload." => "მიმდინარეობს ფაილის ატვირთვა. სხვა გვერდზე გადასვლა გამოიწვევს ატვირთვის შეჩერებას",
-"{count} files scanned" => "{count} ფაილი სკანირებულია",
-"error while scanning" => "შეცდომა სკანირებისას",
"Name" => "სახელი",
"Size" => "ზომა",
"Modified" => "შეცვლილია",
diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php
index cd95d61e4d..b9b4ff1a76 100644
--- a/apps/files/l10n/ko.php
+++ b/apps/files/l10n/ko.php
@@ -1,7 +1,4 @@
"%s 항목을 이동시키지 못하였음 - 파일 이름이 이미 존재함",
-"Could not move %s" => "%s 항목을 이딩시키지 못하였음",
-"Unable to rename file" => "파일 이름바꾸기 할 수 없음",
"No file was uploaded. Unknown error" => "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다",
"There is no error, the file uploaded with success" => "업로드에 성공하였습니다.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "업로드한 파일이 php.ini의 upload_max_filesize보다 큽니다:",
@@ -37,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"URL cannot be empty." => "URL을 입력해야 합니다.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "폴더 이름이 유효하지 않습니다. ",
-"{count} files scanned" => "파일 {count}개 검색됨",
-"error while scanning" => "검색 중 오류 발생",
"Name" => "이름",
"Size" => "크기",
"Modified" => "수정됨",
diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php
index da209619e2..5172964658 100644
--- a/apps/files/l10n/lt_LT.php
+++ b/apps/files/l10n/lt_LT.php
@@ -26,8 +26,6 @@
"{count} files uploading" => "{count} įkeliami failai",
"Upload cancelled." => "Įkėlimas atšauktas.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Failo įkėlimas pradėtas. Jei paliksite šį puslapį, įkėlimas nutrūks.",
-"{count} files scanned" => "{count} praskanuoti failai",
-"error while scanning" => "klaida skanuojant",
"Name" => "Pavadinimas",
"Size" => "Dydis",
"Modified" => "Pakeista",
diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php
index 0ca08d6bc6..1b828d1be1 100644
--- a/apps/files/l10n/mk.php
+++ b/apps/files/l10n/mk.php
@@ -30,8 +30,6 @@
"Upload cancelled." => "Преземањето е прекинато.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Подигање на датотека е во тек. Напуштење на страницата ќе го прекине.",
"URL cannot be empty." => "Адресата неможе да биде празна.",
-"{count} files scanned" => "{count} датотеки скенирани",
-"error while scanning" => "грешка при скенирање",
"Name" => "Име",
"Size" => "Големина",
"Modified" => "Променето",
diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php
index 8bb7cfb2f9..3a500b4fb3 100644
--- a/apps/files/l10n/nb_NO.php
+++ b/apps/files/l10n/nb_NO.php
@@ -28,8 +28,6 @@
"Upload cancelled." => "Opplasting avbrutt.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Filopplasting pågår. Forlater du siden nå avbrytes opplastingen.",
"URL cannot be empty." => "URL-en kan ikke være tom.",
-"{count} files scanned" => "{count} filer lest inn",
-"error while scanning" => "feil under skanning",
"Name" => "Navn",
"Size" => "Størrelse",
"Modified" => "Endret",
diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php
index c78ac346d1..f99cdaa2c1 100644
--- a/apps/files/l10n/nl.php
+++ b/apps/files/l10n/nl.php
@@ -1,7 +1,4 @@
"Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam",
-"Could not move %s" => "Kon %s niet verplaatsen",
-"Unable to rename file" => "Kan bestand niet hernoemen",
"No file was uploaded. Unknown error" => "Er was geen bestand geladen. Onbekende fout",
"There is no error, the file uploaded with success" => "Geen fout opgetreden, bestand successvol geupload.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"URL cannot be empty." => "URL kan niet leeg zijn.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud",
-"{count} files scanned" => "{count} bestanden gescanned",
-"error while scanning" => "Fout tijdens het scannen",
"Name" => "Naam",
"Size" => "Bestandsgrootte",
"Modified" => "Laatst aangepast",
diff --git a/apps/files/l10n/oc.php b/apps/files/l10n/oc.php
index 76c8d6b655..78045b299e 100644
--- a/apps/files/l10n/oc.php
+++ b/apps/files/l10n/oc.php
@@ -19,7 +19,6 @@
"1 file uploading" => "1 fichièr al amontcargar",
"Upload cancelled." => "Amontcargar anullat.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ",
-"error while scanning" => "error pendant l'exploracion",
"Name" => "Nom",
"Size" => "Talha",
"Modified" => "Modificat",
diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php
index 477e14491f..badcacc29d 100644
--- a/apps/files/l10n/pl.php
+++ b/apps/files/l10n/pl.php
@@ -1,7 +1,4 @@
"Nie można było przenieść %s - Plik o takiej nazwie już istnieje",
-"Could not move %s" => "Nie można było przenieść %s",
-"Unable to rename file" => "Nie można zmienić nazwy pliku",
"No file was uploaded. Unknown error" => "Plik nie został załadowany. Nieznany błąd",
"There is no error, the file uploaded with success" => "Przesłano plik",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Wgrany plik przekracza wartość upload_max_filesize zdefiniowaną w php.ini: ",
@@ -37,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Wysyłanie pliku jest w toku. Teraz opuszczając stronę wysyłanie zostanie anulowane.",
"URL cannot be empty." => "URL nie może być pusty.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nazwa folderu nieprawidłowa. Wykorzystanie \"Shared\" jest zarezerwowane przez Owncloud",
-"{count} files scanned" => "{count} pliki skanowane",
-"error while scanning" => "Wystąpił błąd podczas skanowania",
"Name" => "Nazwa",
"Size" => "Rozmiar",
"Modified" => "Czas modyfikacji",
diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php
index 33014297ee..dd684db26a 100644
--- a/apps/files/l10n/pt_BR.php
+++ b/apps/files/l10n/pt_BR.php
@@ -7,6 +7,7 @@
"No file was uploaded" => "Nenhum arquivo foi transferido",
"Missing a temporary folder" => "Pasta temporária não encontrada",
"Failed to write to disk" => "Falha ao escrever no disco",
+"Invalid directory." => "Diretório inválido.",
"Files" => "Arquivos",
"Unshare" => "Descompartilhar",
"Delete" => "Excluir",
@@ -20,7 +21,10 @@
"replaced {new_name} with {old_name}" => "Substituído {old_name} por {new_name} ",
"unshared {files}" => "{files} não compartilhados",
"deleted {files}" => "{files} apagados",
+"'.' is an invalid file name." => "'.' é um nome de arquivo inválido.",
+"File name cannot be empty." => "O nome do arquivo não pode estar vazio.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome inválido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' não são permitidos.",
+"Your download is being prepared. This might take some time if the files are big." => "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes.",
"Upload Error" => "Erro de envio",
"Close" => "Fechar",
@@ -30,8 +34,7 @@
"Upload cancelled." => "Envio cancelado.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Upload em andamento. Sair da página agora resultará no cancelamento do envio.",
"URL cannot be empty." => "URL não pode ficar em branco",
-"{count} files scanned" => "{count} arquivos scaneados",
-"error while scanning" => "erro durante verificação",
+"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O uso de 'Shared' é reservado para o Owncloud",
"Name" => "Nome",
"Size" => "Tamanho",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php
index 3ec34c449d..38f914b960 100644
--- a/apps/files/l10n/pt_PT.php
+++ b/apps/files/l10n/pt_PT.php
@@ -1,7 +1,4 @@
"Não foi possível mover o ficheiro %s - Já existe um ficheiro com esse nome",
-"Could not move %s" => "Não foi possível move o ficheiro %s",
-"Unable to rename file" => "Não foi possível renomear o ficheiro",
"No file was uploaded. Unknown error" => "Nenhum ficheiro foi carregado. Erro desconhecido",
"There is no error, the file uploaded with success" => "Sem erro, ficheiro enviado com sucesso",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro enviado excede o limite permitido na directiva do php.ini upload_max_filesize",
@@ -10,7 +7,6 @@
"No file was uploaded" => "Não foi enviado nenhum ficheiro",
"Missing a temporary folder" => "Falta uma pasta temporária",
"Failed to write to disk" => "Falhou a escrita no disco",
-"Not enough storage available" => "Não há espaço suficiente em disco",
"Invalid directory." => "Directório Inválido",
"Files" => "Ficheiros",
"Unshare" => "Deixar de partilhar",
@@ -18,7 +14,7 @@
"Rename" => "Renomear",
"{new_name} already exists" => "O nome {new_name} já existe",
"replace" => "substituir",
-"suggest name" => "Sugira um nome",
+"suggest name" => "sugira um nome",
"cancel" => "cancelar",
"replaced {new_name}" => "{new_name} substituido",
"undo" => "desfazer",
@@ -37,12 +33,10 @@
"Pending" => "Pendente",
"1 file uploading" => "A enviar 1 ficheiro",
"{count} files uploading" => "A carregar {count} ficheiros",
-"Upload cancelled." => "O envio foi cancelado.",
+"Upload cancelled." => "Envio cancelado.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Envio de ficheiro em progresso. Irá cancelar o envio se sair da página agora.",
"URL cannot be empty." => "O URL não pode estar vazio.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de pasta inválido. O Uso de 'shared' é reservado para o ownCloud",
-"{count} files scanned" => "{count} ficheiros analisados",
-"error while scanning" => "erro ao analisar",
"Name" => "Nome",
"Size" => "Tamanho",
"Modified" => "Modificado",
diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php
index 424450e920..a06a7c1638 100644
--- a/apps/files/l10n/ro.php
+++ b/apps/files/l10n/ro.php
@@ -1,7 +1,4 @@
"Nu se poate de mutat %s - Fișier cu acest nume deja există",
-"Could not move %s" => "Nu s-a putut muta %s",
-"Unable to rename file" => "Nu s-a putut redenumi fișierul",
"No file was uploaded. Unknown error" => "Nici un fișier nu a fost încărcat. Eroare necunoscută",
"There is no error, the file uploaded with success" => "Nicio eroare, fișierul a fost încărcat cu succes",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: ",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Fișierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.",
"URL cannot be empty." => "Adresa URL nu poate fi goală.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Invalid folder name. Usage of 'Shared' is reserved by Ownclou",
-"{count} files scanned" => "{count} fisiere scanate",
-"error while scanning" => "eroare la scanarea",
"Name" => "Nume",
"Size" => "Dimensiune",
"Modified" => "Modificat",
diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php
index ae103a9e81..f953d78ad4 100644
--- a/apps/files/l10n/ru.php
+++ b/apps/files/l10n/ru.php
@@ -1,7 +1,4 @@
"Невозможно переместить %s - файл с таким именем уже существует",
-"Could not move %s" => "Невозможно переместить %s",
-"Unable to rename file" => "Невозможно переименовать файл",
"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка",
"There is no error, the file uploaded with success" => "Файл успешно загружен",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Файл превышает размер установленный upload_max_filesize в php.ini:",
@@ -37,8 +34,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процессе загрузки. Покинув страницу вы прервёте загрузку.",
"URL cannot be empty." => "Ссылка не может быть пустой.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неправильное имя каталога. Имя 'Shared' зарезервировано.",
-"{count} files scanned" => "{count} файлов просканировано",
-"error while scanning" => "ошибка во время санирования",
"Name" => "Название",
"Size" => "Размер",
"Modified" => "Изменён",
diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php
index 60a7fd0f71..be7cf6c4d8 100644
--- a/apps/files/l10n/ru_RU.php
+++ b/apps/files/l10n/ru_RU.php
@@ -30,8 +30,6 @@
"Upload cancelled." => "Загрузка отменена",
"File upload is in progress. Leaving the page now will cancel the upload." => "Процесс загрузки файла. Если покинуть страницу сейчас, загрузка будет отменена.",
"URL cannot be empty." => "URL не должен быть пустым.",
-"{count} files scanned" => "{количество} файлов отсканировано",
-"error while scanning" => "ошибка при сканировании",
"Name" => "Имя",
"Size" => "Размер",
"Modified" => "Изменен",
diff --git a/apps/files/l10n/si_LK.php b/apps/files/l10n/si_LK.php
index 133737cb57..316470d839 100644
--- a/apps/files/l10n/si_LK.php
+++ b/apps/files/l10n/si_LK.php
@@ -20,7 +20,6 @@
"Upload cancelled." => "උඩුගත කිරීම අත් හරින්න ලදී",
"File upload is in progress. Leaving the page now will cancel the upload." => "උඩුගතකිරීමක් සිදුවේ. පිටුව හැර යාමෙන් එය නැවතෙනු ඇත",
"URL cannot be empty." => "යොමුව හිස් විය නොහැක",
-"error while scanning" => "පරීක්ෂා කිරීමේදී දෝෂයක්",
"Name" => "නම",
"Size" => "ප්රමාණය",
"Modified" => "වෙනස් කළ",
diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php
index bae5670d06..d9a65a92a6 100644
--- a/apps/files/l10n/sk_SK.php
+++ b/apps/files/l10n/sk_SK.php
@@ -1,7 +1,4 @@
"Nie je možné presunúť %s - súbor s týmto menom už existuje",
-"Could not move %s" => "Nie je možné presunúť %s",
-"Unable to rename file" => "Nemožno premenovať súbor",
"No file was uploaded. Unknown error" => "Žiaden súbor nebol odoslaný. Neznáma chyba",
"There is no error, the file uploaded with success" => "Nenastala žiadna chyba, súbor bol úspešne nahraný",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Nahraný súbor predčil konfiguračnú direktívu upload_max_filesize v súbore php.ini:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' je neplatné meno súboru.",
"File name cannot be empty." => "Meno súboru nemôže byť prázdne",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty.",
+"Your storage is full, files can not be updated or synced anymore!" => "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Vaše úložisko je takmer plné ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Vaše sťahovanie sa pripravuje. Ak sú sťahované súbory veľké, môže to chvíľu trvať.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nemôžem nahrať súbor lebo je to priečinok alebo má 0 bajtov.",
"Upload Error" => "Chyba odosielania",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
"URL cannot be empty." => "URL nemôže byť prázdne",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Neplatné meno adresára. Používanie mena 'Shared' je vyhradené len pre Owncloud",
-"{count} files scanned" => "{count} súborov prehľadaných",
-"error while scanning" => "chyba počas kontroly",
"Name" => "Meno",
"Size" => "Veľkosť",
"Modified" => "Upravené",
diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php
index fbc6ab83b8..4c0345d16d 100644
--- a/apps/files/l10n/sl.php
+++ b/apps/files/l10n/sl.php
@@ -30,8 +30,6 @@
"Upload cancelled." => "Pošiljanje je preklicano.",
"File upload is in progress. Leaving the page now will cancel the upload." => "V teku je pošiljanje datoteke. Če zapustite to stran zdaj, bo pošiljanje preklicano.",
"URL cannot be empty." => "Naslov URL ne sme biti prazen.",
-"{count} files scanned" => "{count} files scanned",
-"error while scanning" => "napaka med pregledovanjem datotek",
"Name" => "Ime",
"Size" => "Velikost",
"Modified" => "Spremenjeno",
diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php
index 71da2da4d1..32addaff40 100644
--- a/apps/files/l10n/sr.php
+++ b/apps/files/l10n/sr.php
@@ -28,8 +28,6 @@
"{count} files uploading" => "Отпремам {count} датотеке/а",
"Upload cancelled." => "Отпремање је прекинуто.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Отпремање датотеке је у току. Ако сада напустите страницу, прекинућете отпремање.",
-"{count} files scanned" => "Скенирано датотека: {count}",
-"error while scanning" => "грешка при скенирању",
"Name" => "Назив",
"Size" => "Величина",
"Modified" => "Измењено",
diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php
index 5cb8d58e3a..42b82628d4 100644
--- a/apps/files/l10n/sv.php
+++ b/apps/files/l10n/sv.php
@@ -1,7 +1,4 @@
"Kunde inte flytta %s - Det finns redan en fil med detta namn",
-"Could not move %s" => "Kan inte flytta %s",
-"Unable to rename file" => "Kan inte byta namn på filen",
"No file was uploaded. Unknown error" => "Ingen fil uppladdad. Okänt fel",
"There is no error, the file uploaded with success" => "Inga fel uppstod. Filen laddades upp utan problem",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Den uppladdade filen överskrider upload_max_filesize direktivet php.ini:",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' är ett ogiltigt filnamn.",
"File name cannot be empty." => "Filnamn kan inte vara tomt.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillåtet.",
+"Your storage is full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan ej längre laddas upp eller synkas!",
+"Your storage is almost full ({usedSpacePercent}%)" => "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Din nedladdning förbereds. Det kan ta tid om det är stora filer.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes.",
"Upload Error" => "Uppladdningsfel",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"URL cannot be empty." => "URL kan inte vara tom.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ogiltigt mappnamn. Användande av 'Shared' är reserverat av ownCloud",
-"{count} files scanned" => "{count} filer skannade",
-"error while scanning" => "fel vid skanning",
"Name" => "Namn",
"Size" => "Storlek",
"Modified" => "Ändrad",
diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php
index 52916fed77..83843b8781 100644
--- a/apps/files/l10n/ta_LK.php
+++ b/apps/files/l10n/ta_LK.php
@@ -29,8 +29,6 @@
"Upload cancelled." => "பதிவேற்றல் இரத்து செய்யப்பட்டுள்ளது",
"File upload is in progress. Leaving the page now will cancel the upload." => "கோப்பு பதிவேற்றம் செயல்பாட்டில் உள்ளது. இந்தப் பக்கத்திலிருந்து வெறியேறுவதானது பதிவேற்றலை இரத்து செய்யும்.",
"URL cannot be empty." => "URL வெறுமையாக இருக்கமுடியாது.",
-"{count} files scanned" => "{எண்ணிக்கை} கோப்புகள் வருடப்பட்டது",
-"error while scanning" => "வருடும் போதான வழு",
"Name" => "பெயர்",
"Size" => "அளவு",
"Modified" => "மாற்றப்பட்டது",
diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php
index de5c7bec83..f31321694b 100644
--- a/apps/files/l10n/th_TH.php
+++ b/apps/files/l10n/th_TH.php
@@ -1,7 +1,4 @@
"ไม่สามารถย้าย %s ได้ - ไฟล์ที่ใช้ชื่อนี้มีอยู่แล้ว",
-"Could not move %s" => "ไม่สามารถย้าย %s ได้",
-"Unable to rename file" => "ไม่สามารถเปลี่ยนชื่อไฟล์ได้",
"No file was uploaded. Unknown error" => "ยังไม่มีไฟล์ใดที่ถูกอัพโหลด เกิดข้อผิดพลาดที่ไม่ทราบสาเหตุ",
"There is no error, the file uploaded with success" => "ไม่มีข้อผิดพลาดใดๆ ไฟล์ถูกอัพโหลดเรียบร้อยแล้ว",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "ขนาดไฟล์ที่อัพโหลดมีขนาดเกิน upload_max_filesize ที่ระบุไว้ใน php.ini",
@@ -27,6 +24,8 @@
"'.' is an invalid file name." => "'.' เป็นชื่อไฟล์ที่ไม่ถูกต้อง",
"File name cannot be empty." => "ชื่อไฟล์ไม่สามารถเว้นว่างได้",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ชื่อที่ใช้ไม่ถูกต้อง, '\\', '/', '<', '>', ':', '\"', '|', '?' และ '*' ไม่ได้รับอนุญาตให้ใช้งานได้",
+"Your storage is full, files can not be updated or synced anymore!" => "พื้นที่จัดเก็บข้อมูลของคุณเต็มแล้ว ไม่สามารถอัพเดทหรือผสานไฟล์ต่างๆได้อีกต่อไป",
+"Your storage is almost full ({usedSpacePercent}%)" => "พื้นที่จัดเก็บข้อมูลของคุณใกล้เต็มแล้ว ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "กำลังเตรียมดาวน์โหลดข้อมูล หากไฟล์มีขนาดใหญ่ อาจใช้เวลาสักครู่",
"Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจากไฟล์ดังกล่าวเป็นไดเร็กทอรี่หรือมีขนาด 0 ไบต์",
"Upload Error" => "เกิดข้อผิดพลาดในการอัพโหลด",
@@ -38,8 +37,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก",
"URL cannot be empty." => "URL ไม่สามารถเว้นว่างได้",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "ชื่อโฟลเดอร์ไม่ถูกต้อง การใช้งาน 'แชร์' สงวนไว้สำหรับ Owncloud เท่านั้น",
-"{count} files scanned" => "สแกนไฟล์แล้ว {count} ไฟล์",
-"error while scanning" => "พบข้อผิดพลาดในระหว่างการสแกนไฟล์",
"Name" => "ชื่อ",
"Size" => "ขนาด",
"Modified" => "ปรับปรุงล่าสุด",
diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php
index 2eba20fd0a..7552379468 100644
--- a/apps/files/l10n/tr.php
+++ b/apps/files/l10n/tr.php
@@ -1,7 +1,4 @@
"%s taşınamadı. Bu isimde dosya zaten var.",
-"Could not move %s" => "%s taşınamadı",
-"Unable to rename file" => "Dosya adı değiştirilemedi",
"No file was uploaded. Unknown error" => "Dosya yüklenmedi. Bilinmeyen hata",
"There is no error, the file uploaded with success" => "Bir hata yok, dosya başarıyla yüklendi",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "php.ini dosyasında upload_max_filesize ile belirtilen dosya yükleme sınırı aşıldı.",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "Dosya yükleme işlemi sürüyor. Şimdi sayfadan ayrılırsanız işleminiz iptal olur.",
"URL cannot be empty." => "URL boş olamaz.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Geçersiz dizin adı. Shared isminin kullanımı Owncloud tarafından rezerver edilmiştir.",
-"{count} files scanned" => "{count} dosya tarandı",
-"error while scanning" => "tararamada hata oluşdu",
"Name" => "Ad",
"Size" => "Boyut",
"Modified" => "Değiştirilme",
diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php
index aafa035ea0..894505e4e9 100644
--- a/apps/files/l10n/uk.php
+++ b/apps/files/l10n/uk.php
@@ -30,8 +30,6 @@
"Upload cancelled." => "Завантаження перервано.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Виконується завантаження файлу. Закриття цієї сторінки приведе до відміни завантаження.",
"URL cannot be empty." => "URL не може бути пустим.",
-"{count} files scanned" => "{count} файлів проскановано",
-"error while scanning" => "помилка при скануванні",
"Name" => "Ім'я",
"Size" => "Розмір",
"Modified" => "Змінено",
diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php
index ce4f3a7973..1d97973469 100644
--- a/apps/files/l10n/vi.php
+++ b/apps/files/l10n/vi.php
@@ -29,8 +29,6 @@
"Upload cancelled." => "Hủy tải lên",
"File upload is in progress. Leaving the page now will cancel the upload." => "Tập tin tải lên đang được xử lý. Nếu bạn rời khỏi trang bây giờ sẽ hủy quá trình này.",
"URL cannot be empty." => "URL không được để trống.",
-"{count} files scanned" => "{count} tập tin đã được quét",
-"error while scanning" => "lỗi trong khi quét",
"Name" => "Tên",
"Size" => "Kích cỡ",
"Modified" => "Thay đổi",
diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php
index ae1b603369..810bce353b 100644
--- a/apps/files/l10n/zh_CN.GB2312.php
+++ b/apps/files/l10n/zh_CN.GB2312.php
@@ -28,8 +28,6 @@
"Upload cancelled." => "上传取消了",
"File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传。关闭页面会取消上传。",
"URL cannot be empty." => "网址不能为空。",
-"{count} files scanned" => "{count} 个文件已扫描",
-"error while scanning" => "扫描出错",
"Name" => "名字",
"Size" => "大小",
"Modified" => "修改日期",
diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php
index 2e0f938dcd..2d7a140f52 100644
--- a/apps/files/l10n/zh_CN.php
+++ b/apps/files/l10n/zh_CN.php
@@ -1,7 +1,4 @@
"无法移动 %s - 同名文件已存在",
-"Could not move %s" => "无法移动 %s",
-"Unable to rename file" => "无法重命名文件",
"No file was uploaded. Unknown error" => "没有文件被上传。未知错误",
"There is no error, the file uploaded with success" => "没有发生错误,文件上传成功。",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上传文件大小已超过php.ini中upload_max_filesize所规定的值",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传中。现在离开此页会导致上传动作被取消。",
"URL cannot be empty." => "URL不能为空",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "无效文件夹名。'共享' 是 Owncloud 预留的文件夹名。",
-"{count} files scanned" => "{count} 个文件已扫描。",
-"error while scanning" => "扫描时出错",
"Name" => "名称",
"Size" => "大小",
"Modified" => "修改日期",
diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php
index 8d41a92735..67516bf015 100644
--- a/apps/files/l10n/zh_TW.php
+++ b/apps/files/l10n/zh_TW.php
@@ -1,7 +1,4 @@
"無法移動 %s - 同名的檔案已經存在",
-"Could not move %s" => "無法移動 %s",
-"Unable to rename file" => "無法重新命名檔案",
"No file was uploaded. Unknown error" => "沒有檔案被上傳。未知的錯誤。",
"There is no error, the file uploaded with success" => "無錯誤,檔案上傳成功",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上傳的檔案大小超過 php.ini 當中 upload_max_filesize 參數的設定:",
@@ -38,8 +35,6 @@
"File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳中。離開此頁面將會取消上傳。",
"URL cannot be empty." => "URL 不能為空白.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "無效的資料夾名稱,'Shared' 的使用被 Owncloud 保留",
-"{count} files scanned" => "{count} 個檔案已掃描",
-"error while scanning" => "掃描時發生錯誤",
"Name" => "名稱",
"Size" => "大小",
"Modified" => "修改",
diff --git a/apps/files/settings.php b/apps/files/settings.php
index ea730a5a72..8687f01313 100644
--- a/apps/files/settings.php
+++ b/apps/files/settings.php
@@ -32,7 +32,7 @@ OCP\Util::addscript( "files", "files" );
$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
$files = array();
-foreach( OC_Files::getdirectorycontent( $dir ) as $i ) {
+foreach( \OC\Files\Filesystem::getDirectoryContent( $dir ) as $i ) {
$i["date"] = date( $CONFIG_DATEFORMAT, $i["mtime"] );
$files[] = $i;
}
diff --git a/apps/files/templates/part.list.php b/apps/files/templates/part.list.php
index f3f06d61d6..5c39dda85f 100644
--- a/apps/files/templates/part.list.php
+++ b/apps/files/templates/part.list.php
@@ -13,7 +13,7 @@
$name = str_replace('%2F', '/', $name);
$directory = str_replace('+', '%20', urlencode($file['directory']));
$directory = str_replace('%2F', '/', $directory); ?>
-
-
+ t('Upgrading filesystem cache...');?>
+
+
diff --git a/apps/files_encryption/l10n/da.php b/apps/files_encryption/l10n/da.php
index 1b4664ce1c..d65963f46b 100644
--- a/apps/files_encryption/l10n/da.php
+++ b/apps/files_encryption/l10n/da.php
@@ -1,4 +1,15 @@
"Skift venligst til din ownCloud-klient og skift krypteringskoden for at fuldføre konverteringen.",
+"switched to client side encryption" => "skiftet til kryptering på klientsiden",
+"Change encryption password to login password" => "Udskift krypteringskode til login-adgangskode",
+"Please check your passwords and try again." => "Check adgangskoder og forsøg igen.",
+"Could not change your file encryption password to your login password" => "Kunne ikke udskifte krypteringskode med login-adgangskode",
+"Choose encryption mode:" => "Vælg krypteringsform:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Kryptering på klientsiden (mere sikker, men udelukker adgang til dataene fra webinterfacet)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Kryptering på serversiden (gør det muligt at tilgå filer fra webinterfacet såvel som desktopklienten)",
+"None (no encryption at all)" => "Ingen (ingen kryptering)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Vigtigt: Når der er valgt krypteringsform, kan det ikke ændres tilbage igen.",
+"User specific (let the user decide)" => "Brugerspecifik (lad brugeren bestemme)",
"Encryption" => "Kryptering",
"Exclude the following file types from encryption" => "Ekskluder følgende filtyper fra kryptering",
"None" => "Ingen"
diff --git a/apps/files_encryption/l10n/de.php b/apps/files_encryption/l10n/de.php
index 34c596dc4b..e187f72ab5 100644
--- a/apps/files_encryption/l10n/de.php
+++ b/apps/files_encryption/l10n/de.php
@@ -1,4 +1,15 @@
"Bitte wechseln Sie nun zum ownCloud Client und ändern Sie ihr Verschlüsselungspasswort um die Konvertierung abzuschließen.",
+"switched to client side encryption" => "Zur Clientseitigen Verschlüsselung gewechselt",
+"Change encryption password to login password" => "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort",
+"Please check your passwords and try again." => "Bitte überprüfen sie Ihr Passwort und versuchen Sie es erneut.",
+"Could not change your file encryption password to your login password" => "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden.",
+"Choose encryption mode:" => "Wählen Sie die Verschlüsselungsart:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Clientseitige Verschlüsselung (am sichersten, aber macht es unmöglich auf ihre Daten über das Webinterface zuzugreifen)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Serverseitige Verschlüsselung (erlaubt es ihnen auf ihre Daten über das Webinterface und den Desktop-Client zuzugreifen)",
+"None (no encryption at all)" => "Keine (ohne Verschlüsselung)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Wichtig: Sobald sie eine Verschlüsselungsmethode gewählt haben, können Sie diese nicht ändern!",
+"User specific (let the user decide)" => "Benutzerspezifisch (der Benutzer kann entscheiden)",
"Encryption" => "Verschlüsselung",
"Exclude the following file types from encryption" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen",
"None" => "Keine"
diff --git a/apps/files_encryption/l10n/de_DE.php b/apps/files_encryption/l10n/de_DE.php
index 261c52a75f..be4369ebf0 100644
--- a/apps/files_encryption/l10n/de_DE.php
+++ b/apps/files_encryption/l10n/de_DE.php
@@ -1,6 +1,14 @@
"Wählen Sie die Verschlüsselungsart:",
+"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "Bitte wechseln Sie nun zum ownCloud Client und ändern Sie ihr Verschlüsselungspasswort um die Konvertierung abzuschließen.",
+"switched to client side encryption" => "Zur Clientseitigen Verschlüsselung gewechselt",
+"Change encryption password to login password" => "Ändern des Verschlüsselungspasswortes zum Anmeldepasswort",
+"Please check your passwords and try again." => "Bitte überprüfen sie Ihr Passwort und versuchen Sie es erneut.",
+"Could not change your file encryption password to your login password" => "Ihr Verschlüsselungspasswort konnte nicht als Anmeldepasswort gesetzt werden.",
+"Choose encryption mode:" => "Wählen Sie die Verschlüsselungsmethode:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Clientseitige Verschlüsselung (am sichersten, aber macht es unmöglich auf ihre Daten über das Webinterface zuzugreifen)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Serverseitige Verschlüsselung (erlaubt es ihnen auf ihre Daten über das Webinterface und den Desktop-Client zuzugreifen)",
"None (no encryption at all)" => "Keine (ohne Verschlüsselung)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Wichtig: Sobald sie eine Verschlüsselungsmethode gewählt haben, können Sie diese nicht ändern!",
"User specific (let the user decide)" => "Benutzerspezifisch (der Benutzer kann entscheiden)",
"Encryption" => "Verschlüsselung",
"Exclude the following file types from encryption" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen",
diff --git a/apps/files_encryption/l10n/es.php b/apps/files_encryption/l10n/es.php
index 89ccb85297..2c6b650960 100644
--- a/apps/files_encryption/l10n/es.php
+++ b/apps/files_encryption/l10n/es.php
@@ -1,7 +1,15 @@
"Cambiar a encriptación en lado cliente",
+"Please switch to your ownCloud client and change your encryption password to complete the conversion." => "Por favor, cambie su cliente de ownCloud y cambie su clave de cifrado para completar la conversión.",
+"switched to client side encryption" => "Cambiar a cifrado del lado del cliente",
+"Change encryption password to login password" => "Cambie la clave de cifrado para su contraseña de inicio de sesión",
"Please check your passwords and try again." => "Por favor revise su contraseña e intentelo de nuevo.",
-"Choose encryption mode:" => "Elegir el modo de encriptado:",
+"Could not change your file encryption password to your login password" => "No se pudo cambiar la contraseña de cifrado de archivos de su contraseña de inicio de sesión",
+"Choose encryption mode:" => "Elegir el modo de cifrado:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Cifrado del lado del Cliente ( es el más seguro, pero hace que sea imposible acceder a sus datos desde la interfaz web)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Cifrado del lado del Servidor (le permite acceder a sus archivos desde la interfaz web y el cliente de escritorio)",
+"None (no encryption at all)" => "Ninguno (ningún cifrado en absoluto)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Una vez que haya seleccionado un modo de cifrado no existe forma de cambiarlo de nuevo",
+"User specific (let the user decide)" => "Específico del usuario (dejar que el usuario decida)",
"Encryption" => "Cifrado",
"Exclude the following file types from encryption" => "Excluir del cifrado los siguientes tipos de archivo",
"None" => "Ninguno"
diff --git a/apps/files_encryption/l10n/es_AR.php b/apps/files_encryption/l10n/es_AR.php
index 31898f50fd..5cf0b8e4ad 100644
--- a/apps/files_encryption/l10n/es_AR.php
+++ b/apps/files_encryption/l10n/es_AR.php
@@ -1,4 +1,15 @@
"Por favor, cambiá uu cliente de ownCloud y cambiá tu clave de encriptado para completar la conversión.",
+"switched to client side encryption" => "Cambiado a encriptación por parte del cliente",
+"Change encryption password to login password" => "Cambiá la clave de encriptado para tu contraseña de inicio de sesión",
+"Please check your passwords and try again." => "Por favor, revisá tu contraseña e intentalo de nuevo.",
+"Could not change your file encryption password to your login password" => "No se pudo cambiar la contraseña de encriptación de archivos de tu contraseña de inicio de sesión",
+"Choose encryption mode:" => "Elegir el modo de encriptación:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Encriptación por parte del cliente (es el modo más seguro, pero hace que sea imposible acceder a tus datos desde la interfaz web)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Encriptación por parte del servidor (te permite acceder a tus archivos desde la interfaz web y desde el cliente de escritorio)",
+"None (no encryption at all)" => "Ninguno (ninguna encriptación en absoluto)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Una vez que haya seleccionado un modo de encriptación, no existe forma de cambiarlo nuevamente",
+"User specific (let the user decide)" => "Específico por usuario (deja que el usuario decida)",
"Encryption" => "Encriptación",
"Exclude the following file types from encryption" => "Exceptuar de la encriptación los siguientes tipos de archivo",
"None" => "Ninguno"
diff --git a/apps/files_encryption/l10n/eu.php b/apps/files_encryption/l10n/eu.php
index 2bb1a46954..e7372937e4 100644
--- a/apps/files_encryption/l10n/eu.php
+++ b/apps/files_encryption/l10n/eu.php
@@ -1,4 +1,8 @@
"Mesedez egiaztatu zure pasahitza eta saia zaitez berriro:",
+"Choose encryption mode:" => "Hautatu enkriptazio modua:",
+"None (no encryption at all)" => "Bat ere ez (enkriptaziorik gabe)",
+"User specific (let the user decide)" => "Erabiltzaileak zehaztuta (utzi erabiltzaileari hautatzen)",
"Encryption" => "Enkriptazioa",
"Exclude the following file types from encryption" => "Ez enkriptatu hurrengo fitxategi motak",
"None" => "Bat ere ez"
diff --git a/apps/files_encryption/l10n/hu_HU.php b/apps/files_encryption/l10n/hu_HU.php
index 1ef1effd41..e32de01f97 100644
--- a/apps/files_encryption/l10n/hu_HU.php
+++ b/apps/files_encryption/l10n/hu_HU.php
@@ -1,4 +1,15 @@
"Kérjük, hogy váltson át az ownCloud kliensére, és változtassa meg a titkosítási jelszót az átalakítás befejezéséhez.",
+"switched to client side encryption" => "átváltva a kliens oldalai titkosításra",
+"Change encryption password to login password" => "Titkosítási jelszó módosítása a bejelentkezési jelszóra",
+"Please check your passwords and try again." => "Kérjük, ellenőrizze a jelszavait, és próbálja meg újra.",
+"Could not change your file encryption password to your login password" => "Nem módosíthatja a fájltitkosítási jelszavát a bejelentkezési jelszavára",
+"Choose encryption mode:" => "Válassza ki a titkosítási módot:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Kliens oldali titkosítás (biztonságosabb, de lehetetlenné teszi a fájlok elérését a böngészőből)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Kiszolgáló oldali titkosítás (lehetővé teszi a fájlok elérését úgy böngészőből mint az asztali kliensből)",
+"None (no encryption at all)" => "Semmi (semmilyen titkosítás)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Fontos: Ha egyszer kiválasztotta a titkosítás módját, többé már nem lehet megváltoztatni",
+"User specific (let the user decide)" => "Felhasználó specifikus (a felhasználó választhat)",
"Encryption" => "Titkosítás",
"Exclude the following file types from encryption" => "A következő fájltípusok kizárása a titkosításból",
"None" => "Egyik sem"
diff --git a/apps/files_encryption/l10n/pt_BR.php b/apps/files_encryption/l10n/pt_BR.php
index 086d073cf5..8bd6492a8f 100644
--- a/apps/files_encryption/l10n/pt_BR.php
+++ b/apps/files_encryption/l10n/pt_BR.php
@@ -1,4 +1,15 @@
"Por favor, vá ao seu cliente ownCloud e mude sua criptografia de senha para completar a conversão.",
+"switched to client side encryption" => "alterado para criptografia por parte do cliente",
+"Change encryption password to login password" => "Mudar senha de criptografia para senha de login",
+"Please check your passwords and try again." => "Por favor, verifique suas senhas e tente novamente.",
+"Could not change your file encryption password to your login password" => "Não foi possível mudar sua senha de criptografia de arquivos para sua senha de login",
+"Choose encryption mode:" => "Escolha o modo de criptografia:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Criptografia por parte do cliente (mais segura, mas torna impossível acessar seus dados a partir da interface web)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Criptografia por parte do servidor (permite que você acesse seus arquivos da interface web e do cliente desktop)",
+"None (no encryption at all)" => "Nenhuma (sem qualquer criptografia)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Importante: Uma vez que tiver escolhido um modo de criptografia, não há um meio de voltar atrás",
+"User specific (let the user decide)" => "Específico por usuário (deixa o usuário decidir)",
"Encryption" => "Criptografia",
"Exclude the following file types from encryption" => "Excluir os seguintes tipos de arquivo da criptografia",
"None" => "Nenhuma"
diff --git a/apps/files_encryption/l10n/sk_SK.php b/apps/files_encryption/l10n/sk_SK.php
index 5aebb6e35b..355b45a4ce 100644
--- a/apps/files_encryption/l10n/sk_SK.php
+++ b/apps/files_encryption/l10n/sk_SK.php
@@ -1,4 +1,15 @@
"Prosím, prejdite do svojho klienta ownCloud a zmente šifrovacie heslo na dokončenie konverzie.",
+"switched to client side encryption" => "prepnuté na šifrovanie prostredníctvom klienta",
+"Change encryption password to login password" => "Zmeniť šifrovacie heslo na prihlasovacie",
+"Please check your passwords and try again." => "Skontrolujte si heslo a skúste to znovu.",
+"Could not change your file encryption password to your login password" => "Nie je možné zmeniť šifrovacie heslo na prihlasovacie",
+"Choose encryption mode:" => "Vyberte režim šifrovania:",
+"Client side encryption (most secure but makes it impossible to access your data from the web interface)" => "Šifrovanie prostredníctvom klienta (najbezpečnejšia voľba, neumožňuje však prístup k súborom z webového rozhrania)",
+"Server side encryption (allows you to access your files from the web interface and the desktop client)" => "Šifrovanie na serveri (umožňuje pristupovať k súborom z webového rozhrania a desktopového klienta)",
+"None (no encryption at all)" => "Žiadne (žiadne šifrovanie)",
+"Important: Once you selected an encryption mode there is no way to change it back" => "Dôležité: ak si zvolíte režim šifrovania, nie je možné ho znovu zrušiť",
+"User specific (let the user decide)" => "Definovaný používateľom (umožňuje používateľovi vybrať si)",
"Encryption" => "Šifrovanie",
"Exclude the following file types from encryption" => "Vynechať nasledujúce súbory pri šifrovaní",
"None" => "Žiadne"
diff --git a/apps/files_external/ajax/addRootCertificate.php b/apps/files_external/ajax/addRootCertificate.php
index be60b415e1..2f67e801b2 100644
--- a/apps/files_external/ajax/addRootCertificate.php
+++ b/apps/files_external/ajax/addRootCertificate.php
@@ -12,8 +12,10 @@ $data = fread($fh, filesize($_FILES['rootcert_import']['tmp_name']));
fclose($fh);
$filename = $_FILES['rootcert_import']['name'];
-$view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files_external/uploads');
-if ( ! $view->file_exists('')) $view->mkdir('');
+$view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_external/uploads');
+if (!$view->file_exists('')){
+ $view->mkdir('');
+}
$isValid = openssl_pkey_get_public($data);
diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php
index 837d35c9c6..c58cfcd0f5 100644
--- a/apps/files_external/appinfo/app.php
+++ b/apps/files_external/appinfo/app.php
@@ -6,14 +6,14 @@
* See the COPYING-README file.
*/
-OC::$CLASSPATH['OC_FileStorage_StreamWrapper']='apps/files_external/lib/streamwrapper.php';
-OC::$CLASSPATH['OC_Filestorage_FTP']='apps/files_external/lib/ftp.php';
-OC::$CLASSPATH['OC_Filestorage_DAV']='apps/files_external/lib/webdav.php';
-OC::$CLASSPATH['OC_Filestorage_Google']='apps/files_external/lib/google.php';
-OC::$CLASSPATH['OC_Filestorage_SWIFT']='apps/files_external/lib/swift.php';
-OC::$CLASSPATH['OC_Filestorage_SMB']='apps/files_external/lib/smb.php';
-OC::$CLASSPATH['OC_Filestorage_AmazonS3']='apps/files_external/lib/amazons3.php';
-OC::$CLASSPATH['OC_Filestorage_Dropbox']='apps/files_external/lib/dropbox.php';
+OC::$CLASSPATH['OC\Files\Storage\StreamWrapper']='apps/files_external/lib/streamwrapper.php';
+OC::$CLASSPATH['OC\Files\Storage\FTP']='apps/files_external/lib/ftp.php';
+OC::$CLASSPATH['OC\Files\Storage\DAV']='apps/files_external/lib/webdav.php';
+OC::$CLASSPATH['OC\Files\Storage\Google']='apps/files_external/lib/google.php';
+OC::$CLASSPATH['OC\Files\Storage\SWIFT']='apps/files_external/lib/swift.php';
+OC::$CLASSPATH['OC\Files\Storage\SMB']='apps/files_external/lib/smb.php';
+OC::$CLASSPATH['OC\Files\Storage\AmazonS3']='apps/files_external/lib/amazons3.php';
+OC::$CLASSPATH['OC\Files\Storage\Dropbox']='apps/files_external/lib/dropbox.php';
OC::$CLASSPATH['OC_Mount_Config']='apps/files_external/lib/config.php';
OCP\App::registerAdmin('files_external', 'settings');
diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml
index 3da1913c5f..2c04216a9f 100644
--- a/apps/files_external/appinfo/info.xml
+++ b/apps/files_external/appinfo/info.xml
@@ -5,7 +5,7 @@
Mount external storage sourcesAGPLRobin Appelman, Michael Gapczynski
- 4.9
+ 4.91true
diff --git a/apps/files_external/js/dropbox.js b/apps/files_external/js/dropbox.js
index c1e3864070..a9a3155e67 100644
--- a/apps/files_external/js/dropbox.js
+++ b/apps/files_external/js/dropbox.js
@@ -1,6 +1,6 @@
$(document).ready(function() {
- $('#externalStorage tbody tr.OC_Filestorage_Dropbox').each(function() {
+ $('#externalStorage tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Dropbox').each(function() {
var configured = $(this).find('[data-parameter="configured"]');
if ($(configured).val() == 'true') {
$(this).find('.configuration input').attr('disabled', 'disabled');
@@ -38,7 +38,7 @@ $(document).ready(function() {
$('#externalStorage tbody tr input').live('keyup', function() {
var tr = $(this).parent().parent();
- if ($(tr).hasClass('OC_Filestorage_Dropbox') && $(tr).find('[data-parameter="configured"]').val() != 'true') {
+ if ($(tr).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Dropbox') && $(tr).find('[data-parameter="configured"]').val() != 'true') {
var config = $(tr).find('.configuration');
if ($(tr).find('.mountPoint input').val() != '' && $(config).find('[data-parameter="app_key"]').val() != '' && $(config).find('[data-parameter="app_secret"]').val() != '') {
if ($(tr).find('.dropbox').length == 0) {
diff --git a/apps/files_external/js/google.js b/apps/files_external/js/google.js
index 0b3c314eb5..7d759d13da 100644
--- a/apps/files_external/js/google.js
+++ b/apps/files_external/js/google.js
@@ -1,6 +1,6 @@
$(document).ready(function() {
- $('#externalStorage tbody tr.OC_Filestorage_Google').each(function() {
+ $('#externalStorage tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google').each(function() {
var configured = $(this).find('[data-parameter="configured"]');
if ($(configured).val() == 'true') {
$(this).find('.configuration')
@@ -34,7 +34,8 @@ $(document).ready(function() {
});
$('#externalStorage tbody tr').live('change', function() {
- if ($(this).hasClass('OC_Filestorage_Google') && $(this).find('[data-parameter="configured"]').val() != 'true') {
+ console.log('hello');
+ if ($(this).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Google') && $(this).find('[data-parameter="configured"]').val() != 'true') {
if ($(this).find('.mountPoint input').val() != '') {
if ($(this).find('.google').length == 0) {
$(this).find('.configuration').append(''+t('files_external', 'Grant access')+'');
@@ -45,7 +46,7 @@ $(document).ready(function() {
$('#externalStorage tbody tr .mountPoint input').live('keyup', function() {
var tr = $(this).parent().parent();
- if ($(tr).hasClass('OC_Filestorage_Google') && $(tr).find('[data-parameter="configured"]').val() != 'true' && $(tr).find('.google').length > 0) {
+ if ($(tr).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Google') && $(tr).find('[data-parameter="configured"]').val() != 'true' && $(tr).find('.google').length > 0) {
if ($(this).val() != '') {
$(tr).find('.google').show();
} else {
diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index 0dc983ca8a..6cbc218008 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -100,7 +100,7 @@ $(document).ready(function() {
td.append('');
}
});
- if (parameters['custom'] && $('#externalStorage tbody tr.'+backendClass).length == 1) {
+ if (parameters['custom'] && $('#externalStorage tbody tr.'+backendClass.replace(/\\/g, '\\\\')).length == 1) {
OC.addScript('files_external', parameters['custom']);
}
return false;
diff --git a/apps/files_external/l10n/pt_BR.php b/apps/files_external/l10n/pt_BR.php
index 26e927a423..8539395488 100644
--- a/apps/files_external/l10n/pt_BR.php
+++ b/apps/files_external/l10n/pt_BR.php
@@ -5,6 +5,8 @@
"Fill out all required fields" => "Preencha todos os campos obrigatórios",
"Please provide a valid Dropbox app key and secret." => "Por favor forneça um app key e secret válido do Dropbox",
"Error configuring Google Drive storage" => "Erro ao configurar armazenamento do Google Drive",
+"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Aviso: \"smbclient\" não está instalado. Não será possível montar compartilhamentos de CIFS/SMB. Por favor, peça ao seu administrador do sistema para instalá-lo.",
+"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Aviso: O suporte para FTP do PHP não está ativado ou instalado. Não será possível montar compartilhamentos FTP. Por favor, peça ao seu administrador do sistema para instalá-lo.",
"External Storage" => "Armazenamento Externo",
"Mount point" => "Ponto de montagem",
"Backend" => "Backend",
diff --git a/apps/files_external/l10n/sk_SK.php b/apps/files_external/l10n/sk_SK.php
index 04d5e3c7ee..0b6878a542 100644
--- a/apps/files_external/l10n/sk_SK.php
+++ b/apps/files_external/l10n/sk_SK.php
@@ -5,6 +5,8 @@
"Fill out all required fields" => "Vyplňte všetky vyžadované kolónky",
"Please provide a valid Dropbox app key and secret." => "Zadajte platný kľúč aplikácie a heslo Dropbox",
"Error configuring Google Drive storage" => "Chyba pri konfigurácii úložiska Google drive",
+"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Upozornenie: \"smbclient\" nie je nainštalovaný. Nie je možné pripojenie oddielov CIFS/SMB. Požiadajte administrátora systému, nech ho nainštaluje.",
+"Warning: The FTP support in PHP is not enabled or installed. Mounting of FTP shares is not possible. Please ask your system administrator to install it." => "Upozornenie: Podpora FTP v PHP nie je povolená alebo nainštalovaná. Nie je možné pripojenie oddielov FTP. Požiadajte administrátora systému, nech ho nainštaluje.",
"External Storage" => "Externé úložisko",
"Mount point" => "Prípojný bod",
"Backend" => "Backend",
diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php
index e5ef4eb097..494885a1dd 100644
--- a/apps/files_external/lib/amazons3.php
+++ b/apps/files_external/lib/amazons3.php
@@ -1,39 +1,43 @@
.
-*/
+ * ownCloud
+ *
+ * @author Michael Gapczynski
+ * @copyright 2012 Michael Gapczynski mtgap@owncloud.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library. If not, see .
+ */
+
+namespace OC\Files\Storage;
require_once 'aws-sdk/sdk.class.php';
-class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
+class AmazonS3 extends \OC\Files\Storage\Common {
private $s3;
private $bucket;
private $objects = array();
+ private $id;
private static $tempFiles = array();
// TODO options: storage class, encryption server side, encrypt before upload?
public function __construct($params) {
- $this->s3 = new AmazonS3(array('key' => $params['key'], 'secret' => $params['secret']));
+ $this->id = 'amazon::' . $params['key'] . md5($params['secret']);
+ $this->s3 = new \AmazonS3(array('key' => $params['key'], 'secret' => $params['secret']));
$this->bucket = $params['bucket'];
}
@@ -47,7 +51,7 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
return $response;
// This object could be a folder, a '/' must be at the end of the path
} else if (substr($path, -1) != '/') {
- $response = $this->s3->get_object_metadata($this->bucket, $path.'/');
+ $response = $this->s3->get_object_metadata($this->bucket, $path . '/');
if ($response) {
$this->objects[$path] = $response;
return $response;
@@ -57,6 +61,10 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
return false;
}
+ public function getId() {
+ return $this->id;
+ }
+
public function mkdir($path) {
// Folders in Amazon S3 are 0 byte objects with a '/' at the end of the name
if (substr($path, -1) != '/') {
@@ -96,8 +104,8 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
foreach ($response->body->CommonPrefixes as $object) {
$files[] = basename($object->Prefix);
}
- OC_FakeDirStream::$dirs['amazons3'.$path] = $files;
- return opendir('fakedir://amazons3'.$path);
+ \OC\Files\Stream\Dir::register('amazons3' . $path, $files);
+ return opendir('fakedir://amazons3' . $path);
}
return false;
}
@@ -107,15 +115,10 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
$stat['size'] = $this->s3->get_bucket_filesize($this->bucket);
$stat['atime'] = time();
$stat['mtime'] = $stat['atime'];
- $stat['ctime'] = $stat['atime'];
- } else {
- $object = $this->getObject($path);
- if ($object) {
- $stat['size'] = $object['Size'];
- $stat['atime'] = time();
- $stat['mtime'] = strtotime($object['LastModified']);
- $stat['ctime'] = $stat['mtime'];
- }
+ } else if ($object = $this->getObject($path)) {
+ $stat['size'] = $object['Size'];
+ $stat['atime'] = time();
+ $stat['mtime'] = strtotime($object['LastModified']);
}
if (isset($stat)) {
return $stat;
@@ -166,7 +169,7 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
switch ($mode) {
case 'r':
case 'rb':
- $tmpFile = OC_Helper::tmpFile();
+ $tmpFile = \OC_Helper::tmpFile();
$handle = fopen($tmpFile, 'w');
$response = $this->s3->get_object($this->bucket, $path, array('fileDownload' => $handle));
if ($response->isOK()) {
@@ -190,14 +193,14 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
} else {
$ext = '';
}
- $tmpFile = OC_Helper::tmpFile($ext);
- OC_CloseStreamWrapper::$callBacks[$tmpFile] = array($this, 'writeBack');
+ $tmpFile = \OC_Helper::tmpFile($ext);
+ \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
}
self::$tempFiles[$tmpFile] = $path;
- return fopen('close://'.$tmpFile, $mode);
+ return fopen('close://' . $tmpFile, $mode);
}
return false;
}
@@ -206,8 +209,8 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
if (isset(self::$tempFiles[$tmpFile])) {
$handle = fopen($tmpFile, 'r');
$response = $this->s3->create_object($this->bucket,
- self::$tempFiles[$tmpFile],
- array('fileUpload' => $handle));
+ self::$tempFiles[$tmpFile],
+ array('fileUpload' => $handle));
if ($response->isOK()) {
unlink($tmpFile);
}
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index fd3dc2ca0d..6b0df21461 100755
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -38,20 +38,20 @@ class OC_Mount_Config {
* @return array
*/
public static function getBackends() {
-
- $backends['OC_Filestorage_Local']=array(
+
+ $backends['\OC\Files\Storage\Local']=array(
'backend' => 'Local',
'configuration' => array(
'datadir' => 'Location'));
- $backends['OC_Filestorage_AmazonS3']=array(
+ $backends['\OC\Files\Storage\AmazonS3']=array(
'backend' => 'Amazon S3',
'configuration' => array(
'key' => 'Key',
'secret' => '*Secret',
'bucket' => 'Bucket'));
- $backends['OC_Filestorage_Dropbox']=array(
+ $backends['\OC\Files\Storage\Dropbox']=array(
'backend' => 'Dropbox',
'configuration' => array(
'configured' => '#configured',
@@ -61,7 +61,7 @@ class OC_Mount_Config {
'token_secret' => '#token_secret'),
'custom' => 'dropbox');
- if(OC_Mount_Config::checkphpftp()) $backends['OC_Filestorage_FTP']=array(
+ if(OC_Mount_Config::checkphpftp()) $backends['\OC\Files\Storage\FTP']=array(
'backend' => 'FTP',
'configuration' => array(
'host' => 'URL',
@@ -70,15 +70,15 @@ class OC_Mount_Config {
'root' => '&Root',
'secure' => '!Secure ftps://'));
- $backends['OC_Filestorage_Google']=array(
+ $backends['\OC\Files\Storage\Google']=array(
'backend' => 'Google Drive',
'configuration' => array(
'configured' => '#configured',
'token' => '#token',
'token_secret' => '#token secret'),
'custom' => 'google');
-
- $backends['OC_Filestorage_SWIFT']=array(
+
+ $backends['\OC\Files\Storage\SWIFT']=array(
'backend' => 'OpenStack Swift',
'configuration' => array(
'host' => 'URL',
@@ -86,8 +86,8 @@ class OC_Mount_Config {
'token' => '*Token',
'root' => '&Root',
'secure' => '!Secure ftps://'));
-
- if(OC_Mount_Config::checksmbclient()) $backends['OC_Filestorage_SMB']=array(
+
+ if(OC_Mount_Config::checksmbclient()) $backends['\OC\Files\Storage\SMB']=array(
'backend' => 'SMB / CIFS',
'configuration' => array(
'host' => 'URL',
@@ -95,8 +95,8 @@ class OC_Mount_Config {
'password' => '*Password',
'share' => 'Share',
'root' => '&Root'));
-
- $backends['OC_Filestorage_DAV']=array(
+
+ $backends['\OC\Files\Storage\DAV']=array(
'backend' => 'ownCloud / WebDAV',
'configuration' => array(
'host' => 'URL',
@@ -120,6 +120,10 @@ class OC_Mount_Config {
if (isset($mountPoints[self::MOUNT_TYPE_GROUP])) {
foreach ($mountPoints[self::MOUNT_TYPE_GROUP] as $group => $mounts) {
foreach ($mounts as $mountPoint => $mount) {
+ // Update old classes to new namespace
+ if (strpos($mount['class'], 'OC_Filestorage_') !== false) {
+ $mount['class'] = '\OC\Files\Storage\\'.substr($mount['class'], 15);
+ }
// Remove '/$user/files/' from mount point
$mountPoint = substr($mountPoint, 13);
// Merge the mount point into the current mount points
@@ -139,6 +143,10 @@ class OC_Mount_Config {
if (isset($mountPoints[self::MOUNT_TYPE_USER])) {
foreach ($mountPoints[self::MOUNT_TYPE_USER] as $user => $mounts) {
foreach ($mounts as $mountPoint => $mount) {
+ // Update old classes to new namespace
+ if (strpos($mount['class'], 'OC_Filestorage_') !== false) {
+ $mount['class'] = '\OC\Files\Storage\\'.substr($mount['class'], 15);
+ }
// Remove '/$user/files/' from mount point
$mountPoint = substr($mountPoint, 13);
// Merge the mount point into the current mount points
@@ -169,6 +177,10 @@ class OC_Mount_Config {
$personal = array();
if (isset($mountPoints[self::MOUNT_TYPE_USER][$uid])) {
foreach ($mountPoints[self::MOUNT_TYPE_USER][$uid] as $mountPoint => $mount) {
+ // Update old classes to new namespace
+ if (strpos($mount['class'], 'OC_Filestorage_') !== false) {
+ $mount['class'] = '\OC\Files\Storage\\'.substr($mount['class'], 15);
+ }
// Remove '/uid/files/' from mount point
$personal[substr($mountPoint, strlen($uid) + 8)] = array('class' => $mount['class'],
'backend' => $backends[$mount['class']]['backend'],
@@ -178,22 +190,6 @@ class OC_Mount_Config {
return $personal;
}
- /**
- * Add directory for mount point to the filesystem
- * @param OC_Fileview instance $view
- * @param string path to mount point
- */
- private static function addMountPointDirectory($view, $path) {
- $dir = '';
- foreach ( explode('/', $path) as $pathPart) {
- $dir = $dir.'/'.$pathPart;
- if ( !$view->file_exists($dir)) {
- $view->mkdir($dir);
- }
- }
- }
-
-
/**
* Add a mount point to the filesystem
* @param string Mount point
@@ -213,36 +209,11 @@ class OC_Mount_Config {
if ($isPersonal) {
// Verify that the mount point applies for the current user
// Prevent non-admin users from mounting local storage
- if ($applicable != OCP\User::getUser() || $class == 'OC_Filestorage_Local') {
+ if ($applicable != OCP\User::getUser() || $class == '\OC\Files\Storage\Local') {
return false;
}
- $view = new OC_FilesystemView('/'.OCP\User::getUser().'/files');
- self::addMountPointDirectory($view, ltrim($mountPoint, '/'));
$mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/');
} else {
- $view = new OC_FilesystemView('/');
- switch ($mountType) {
- case 'user':
- if ($applicable == "all") {
- $users = OCP\User::getUsers();
- foreach ( $users as $user ) {
- $path = $user.'/files/'.ltrim($mountPoint, '/');
- self::addMountPointDirectory($view, $path);
- }
- } else {
- $path = $applicable.'/files/'.ltrim($mountPoint, '/');
- self::addMountPointDirectory($view, $path);
- }
- break;
- case 'group' :
- $groupMembers = OC_Group::usersInGroups(array($applicable));
- foreach ( $groupMembers as $user ) {
- $path = $user.'/files/'.ltrim($mountPoint, '/');
- self::addMountPointDirectory($view, $path);
- }
- break;
- }
-
$mountPoint = '/$user/files/'.ltrim($mountPoint, '/');
}
$mount = array($applicable => array($mountPoint => array('class' => $class, 'options' => $classOptions)));
diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php
index 33ca14cab1..11644e4a2c 100755
--- a/apps/files_external/lib/dropbox.php
+++ b/apps/files_external/lib/dropbox.php
@@ -20,12 +20,15 @@
* License along with this library. If not, see .
*/
+namespace OC\Files\Storage;
+
require_once 'Dropbox/autoload.php';
-class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
+class Dropbox extends \OC\Files\Storage\Common {
private $dropbox;
private $root;
+ private $id;
private $metaData = array();
private static $tempFiles = array();
@@ -37,13 +40,14 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
&& isset($params['token'])
&& isset($params['token_secret'])
) {
+ $this->id = 'dropbox::'.$params['app_key'] . $params['token']. '/' . $params['root'];
$this->root=isset($params['root'])?$params['root']:'';
- $oauth = new Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']);
+ $oauth = new \Dropbox_OAuth_Curl($params['app_key'], $params['app_secret']);
$oauth->setToken($params['token'], $params['token_secret']);
- $this->dropbox = new Dropbox_API($oauth, 'dropbox');
+ $this->dropbox = new \Dropbox_API($oauth, 'dropbox');
$this->mkdir('');
} else {
- throw new Exception('Creating OC_Filestorage_Dropbox storage failed');
+ throw new \Exception('Creating \OC\Files\Storage\Dropbox storage failed');
}
}
@@ -55,8 +59,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
if ($list) {
try {
$response = $this->dropbox->getMetaData($path);
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
if ($response && isset($response['contents'])) {
@@ -76,21 +80,25 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
$response = $this->dropbox->getMetaData($path, 'false');
$this->metaData[$path] = $response;
return $response;
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
}
}
}
+ public function getId(){
+ return $this->id;
+ }
+
public function mkdir($path) {
$path = $this->root.$path;
try {
$this->dropbox->createFolder($path);
return true;
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
}
@@ -106,7 +114,7 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
foreach ($contents as $file) {
$files[] = basename($file['path']);
}
- OC_FakeDirStream::$dirs['dropbox'.$path] = $files;
+ \OC\Files\Stream\Dir::register('dropbox'.$path, $files);
return opendir('fakedir://dropbox'.$path);
}
return false;
@@ -118,7 +126,6 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
$stat['size'] = $metaData['bytes'];
$stat['atime'] = time();
$stat['mtime'] = (isset($metaData['modified'])) ? strtotime($metaData['modified']) : time();
- $stat['ctime'] = $stat['mtime'];
return $stat;
}
return false;
@@ -163,8 +170,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
try {
$this->dropbox->delete($path);
return true;
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
}
@@ -175,8 +182,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
try {
$this->dropbox->move($path1, $path2);
return true;
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
}
@@ -187,8 +194,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
try {
$this->dropbox->copy($path1, $path2);
return true;
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
}
@@ -198,13 +205,13 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
switch ($mode) {
case 'r':
case 'rb':
- $tmpFile = OC_Helper::tmpFile();
+ $tmpFile = \OC_Helper::tmpFile();
try {
$data = $this->dropbox->getFile($path);
file_put_contents($tmpFile, $data);
return fopen($tmpFile, 'r');
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
case 'w':
@@ -224,8 +231,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
} else {
$ext = '';
}
- $tmpFile = OC_Helper::tmpFile($ext);
- OC_CloseStreamWrapper::$callBacks[$tmpFile] = array($this, 'writeBack');
+ $tmpFile = \OC_Helper::tmpFile($ext);
+ \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
@@ -242,8 +249,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
try {
$this->dropbox->putFile(self::$tempFiles[$tmpFile], $handle);
unlink($tmpFile);
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
}
}
}
@@ -264,8 +271,8 @@ class OC_Filestorage_Dropbox extends OC_Filestorage_Common {
try {
$info = $this->dropbox->getAccountInfo();
return $info['quota_info']['quota'] - $info['quota_info']['normal'];
- } catch (Exception $exception) {
- OCP\Util::writeLog('files_external', $exception->getMessage(), OCP\Util::ERROR);
+ } catch (\Exception $exception) {
+ \OCP\Util::writeLog('files_external', $exception->getMessage(), \OCP\Util::ERROR);
return false;
}
}
diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php
index e796ae446b..9a27b63323 100644
--- a/apps/files_external/lib/ftp.php
+++ b/apps/files_external/lib/ftp.php
@@ -6,7 +6,9 @@
* See the COPYING-README file.
*/
-class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
+namespace OC\Files\Storage;
+
+class FTP extends \OC\Files\Storage\StreamWrapper{
private $password;
private $user;
private $host;
@@ -38,9 +40,13 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
}
}
+ public function getId(){
+ return 'ftp::' . $this->user . '@' . $this->host . '/' . $this->root;
+ }
+
/**
* construct the ftp url
- * @param string path
+ * @param string $path
* @return string
*/
public function constructUrl($path) {
@@ -51,7 +57,8 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
$url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path;
return $url;
}
- public function fopen($path, $mode) {
+ public function fopen($path,$mode) {
+ $this->init();
switch($mode) {
case 'r':
case 'rb':
@@ -61,7 +68,7 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
case 'ab':
//these are supported by the wrapper
$context = stream_context_create(array('ftp' => array('overwrite' => true)));
- return fopen($this->constructUrl($path), $mode, false, $context);
+ return fopen($this->constructUrl($path),$mode, false,$context);
case 'r+':
case 'w+':
case 'wb+':
@@ -77,16 +84,18 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
$ext='';
}
$tmpFile=OCP\Files::tmpFile($ext);
- OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
+ \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$this->getFile($path, $tmpFile);
}
self::$tempFiles[$tmpFile]=$path;
- return fopen('close://'.$tmpFile, $mode);
+ return fopen('close://'.$tmpFile,$mode);
}
+ return false;
}
public function writeBack($tmpFile) {
+ $this->init();
if (isset(self::$tempFiles[$tmpFile])) {
$this->uploadFile($tmpFile, self::$tempFiles[$tmpFile]);
unlink($tmpFile);
diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php
index c836a5a07c..7396c7e3f2 100644
--- a/apps/files_external/lib/google.php
+++ b/apps/files_external/lib/google.php
@@ -20,14 +20,17 @@
* License along with this library. If not, see .
*/
+namespace OC\Files\Storage;
+
require_once 'Google/common.inc.php';
-class OC_Filestorage_Google extends OC_Filestorage_Common {
+class Google extends \OC\Files\Storage\Common {
private $consumer;
private $oauth_token;
private $sig_method;
private $entries;
+ private $id;
private static $tempFiles = array();
@@ -38,12 +41,13 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
) {
$consumer_key = isset($params['consumer_key']) ? $params['consumer_key'] : 'anonymous';
$consumer_secret = isset($params['consumer_secret']) ? $params['consumer_secret'] : 'anonymous';
- $this->consumer = new OAuthConsumer($consumer_key, $consumer_secret);
- $this->oauth_token = new OAuthToken($params['token'], $params['token_secret']);
- $this->sig_method = new OAuthSignatureMethod_HMAC_SHA1();
+ $this->id = 'google::' . $params['token'];
+ $this->consumer = new \OAuthConsumer($consumer_key, $consumer_secret);
+ $this->oauth_token = new \OAuthToken($params['token'], $params['token_secret']);
+ $this->sig_method = new \OAuthSignatureMethod_HMAC_SHA1();
$this->entries = array();
} else {
- throw new Exception('Creating OC_Filestorage_Google storage failed');
+ throw new \Exception('Creating \OC\Files\Storage\Google storage failed');
}
}
@@ -68,7 +72,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
$tempStr .= '&' . urlencode($key) . '=' . urlencode($value);
}
$uri = preg_replace('/&/', '?', $tempStr, 1);
- $request = OAuthRequest::from_consumer_and_token($this->consumer,
+ $request = \OAuthRequest::from_consumer_and_token($this->consumer,
$this->oauth_token,
$httpMethod,
$uri,
@@ -110,7 +114,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
}
if ($isDownload) {
- $tmpFile = OC_Helper::tmpFile();
+ $tmpFile = \OC_Helper::tmpFile();
$handle = fopen($tmpFile, 'w');
curl_setopt($curl, CURLOPT_FILE, $handle);
}
@@ -139,7 +143,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
private function getFeed($feedUri, $httpMethod, $postData = null) {
$result = $this->sendRequest($feedUri, $httpMethod, $postData);
if ($result) {
- $dom = new DOMDocument();
+ $dom = new \DOMDocument();
$dom->loadXML($result);
return $dom;
}
@@ -194,6 +198,9 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
}
}
+ public function getId(){
+ return $this->id;
+ }
public function mkdir($path) {
$collection = dirname($path);
@@ -266,7 +273,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
$this->entries[$name] = $entry;
}
}
- OC_FakeDirStream::$dirs['google'.$path] = $files;
+ \OC\Files\Stream\Dir::register('google'.$path, $files);
return opendir('fakedir://google'.$path);
}
@@ -287,7 +294,6 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
//$stat['atime'] = strtotime($entry->getElementsByTagNameNS('http://schemas.google.com/g/2005',
// 'lastViewed')->item(0)->nodeValue);
$stat['mtime'] = strtotime($entry->getElementsByTagName('updated')->item(0)->nodeValue);
- $stat['ctime'] = strtotime($entry->getElementsByTagName('published')->item(0)->nodeValue);
}
}
if (isset($stat)) {
@@ -443,8 +449,8 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
} else {
$ext = '';
}
- $tmpFile = OC_Helper::tmpFile($ext);
- OC_CloseStreamWrapper::$callBacks[$tmpFile] = array($this, 'writeBack');
+ $tmpFile = \OC_Helper::tmpFile($ext);
+ \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
if ($this->file_exists($path)) {
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
@@ -482,7 +488,7 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
}
if (isset($uploadUri) && $handle = fopen($path, 'r')) {
$uploadUri .= '?convert=false';
- $mimetype = OC_Helper::getMimeType($path);
+ $mimetype = \OC_Helper::getMimeType($path);
$size = filesize($path);
$headers = array('X-Upload-Content-Type: ' => $mimetype, 'X-Upload-Content-Length: ' => $size);
$postData = '';
@@ -590,4 +596,4 @@ class OC_Filestorage_Google extends OC_Filestorage_Common {
}
-}
\ No newline at end of file
+}
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index 071a9cd5f9..96778b0b2e 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -6,9 +6,11 @@
* See the COPYING-README file.
*/
+namespace OC\Files\Storage;
+
require_once 'smb4php/smb.php';
-class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
+class SMB extends \OC\Files\Storage\StreamWrapper{
private $password;
private $user;
private $host;
@@ -30,14 +32,13 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
if ( ! $this->share || $this->share[0]!='/') {
$this->share='/'.$this->share;
}
- if (substr($this->share, -1, 1)=='/') {
- $this->share=substr($this->share, 0, -1);
+ if(substr($this->share, -1, 1)=='/') {
+ $this->share = substr($this->share,0,-1);
}
+ }
- //create the root folder if necesary
- if ( ! $this->is_dir('')) {
- $this->mkdir('');
- }
+ public function getId(){
+ return 'smb::' . $this->user . '@' . $this->host . '/' . $this->share . '/' . $this->root;
}
public function constructUrl($path) {
@@ -65,11 +66,13 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
/**
* check if a file or folder has been updated since $time
+ * @param string $path
* @param int $time
* @return bool
*/
- public function hasUpdated($path, $time) {
- if ( ! $path and $this->root=='/') {
+ public function hasUpdated($path,$time) {
+ $this->init();
+ if(!$path and $this->root=='/') {
// mtime doesn't work for shares, but giving the nature of the backend,
// doing a full update is still just fast enough
return true;
diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/streamwrapper.php
index a386e33399..7c3ddcf8a2 100644
--- a/apps/files_external/lib/streamwrapper.php
+++ b/apps/files_external/lib/streamwrapper.php
@@ -6,16 +6,33 @@
* See the COPYING-README file.
*/
+namespace OC\Files\Storage;
+
+abstract class StreamWrapper extends \OC\Files\Storage\Common{
+ private $ready = false;
+
+ protected function init(){
+ if($this->ready){
+ return;
+ }
+ $this->ready = true;
+
+ //create the root folder if necesary
+ if(!$this->is_dir('')) {
+ $this->mkdir('');
+ }
+ }
-abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
abstract public function constructUrl($path);
public function mkdir($path) {
+ $this->init();
return mkdir($this->constructUrl($path));
}
public function rmdir($path) {
- if ($this->file_exists($path)) {
+ $this->init();
+ if($this->file_exists($path)) {
$succes = rmdir($this->constructUrl($path));
clearstatcache();
return $succes;
@@ -25,10 +42,12 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
}
public function opendir($path) {
+ $this->init();
return opendir($this->constructUrl($path));
}
public function filetype($path) {
+ $this->init();
return filetype($this->constructUrl($path));
}
@@ -41,46 +60,54 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
}
public function file_exists($path) {
+ $this->init();
return file_exists($this->constructUrl($path));
}
public function unlink($path) {
+ $this->init();
$succes = unlink($this->constructUrl($path));
clearstatcache();
return $succes;
}
- public function fopen($path, $mode) {
- return fopen($this->constructUrl($path), $mode);
+ public function fopen($path,$mode) {
+ $this->init();
+ return fopen($this->constructUrl($path),$mode);
}
public function free_space($path) {
return 0;
}
- public function touch($path, $mtime = null) {
- if (is_null($mtime)) {
- $fh = $this->fopen($path, 'a');
- fwrite($fh, '');
+ public function touch($path,$mtime=null) {
+ $this->init();
+ if(is_null($mtime)) {
+ $fh = $this->fopen($path,'a');
+ fwrite($fh,'');
fclose($fh);
} else {
return false;//not supported
}
}
- public function getFile($path, $target) {
- return copy($this->constructUrl($path), $target);
+ public function getFile($path,$target) {
+ $this->init();
+ return copy($this->constructUrl($path),$target);
}
- public function uploadFile($path, $target) {
- return copy($path, $this->constructUrl($target));
+ public function uploadFile($path,$target) {
+ $this->init();
+ return copy($path,$this->constructUrl($target));
}
- public function rename($path1, $path2) {
- return rename($this->constructUrl($path1), $this->constructUrl($path2));
+ public function rename($path1,$path2) {
+ $this->init();
+ return rename($this->constructUrl($path1),$this->constructUrl($path2));
}
public function stat($path) {
+ $this->init();
return stat($this->constructUrl($path));
}
diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php
index a071dfdbb0..cbf2007052 100644
--- a/apps/files_external/lib/swift.php
+++ b/apps/files_external/lib/swift.php
@@ -6,24 +6,28 @@
* See the COPYING-README file.
*/
+namespace OC\Files\Storage;
+
require_once 'php-cloudfiles/cloudfiles.php';
-class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
+class SWIFT extends \OC\Files\Storage\Common{
+ private $id;
private $host;
private $root;
private $user;
private $token;
private $secure;
+ private $ready = false;
/**
- * @var CF_Authentication auth
+ * @var \CF_Authentication auth
*/
private $auth;
/**
- * @var CF_Connection conn
+ * @var \CF_Connection conn
*/
private $conn;
/**
- * @var CF_Container rootContainer
+ * @var \CF_Container rootContainer
*/
private $rootContainer;
@@ -35,18 +39,18 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* translate directory path to container name
- * @param string path
+ * @param string $path
* @return string
*/
private function getContainerName($path) {
- $path=trim(trim($this->root, '/')."/".$path, '/.');
+ $path=trim(trim($this->root, '/') . "/".$path, '/.');
return str_replace('/', '\\', $path);
}
/**
* get container by path
- * @param string path
- * @return CF_Container
+ * @param string $path
+ * @return \CF_Container
*/
private function getContainer($path) {
if ($path=='' or $path=='/') {
@@ -59,15 +63,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
$container=$this->conn->get_container($this->getContainerName($path));
$this->containers[$path]=$container;
return $container;
- } catch(NoSuchContainerException $e) {
+ } catch(\NoSuchContainerException $e) {
return null;
}
}
/**
* create container
- * @param string path
- * @return CF_Container
+ * @param string $path
+ * @return \CF_Container
*/
private function createContainer($path) {
if ($path=='' or $path=='/' or $path=='.') {
@@ -89,8 +93,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* get object by path
- * @param string path
- * @return CF_Object
+ * @param string $path
+ * @return \CF_Object
*/
private function getObject($path) {
if (isset($this->objects[$path])) {
@@ -107,7 +111,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
$obj=$container->get_object(basename($path));
$this->objects[$path]=$obj;
return $obj;
- } catch(NoSuchObjectException $e) {
+ } catch(\NoSuchObjectException $e) {
return null;
}
}
@@ -132,8 +136,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* create object
- * @param string path
- * @return CF_Object
+ * @param string $path
+ * @return \CF_Object
*/
private function createObject($path) {
$container=$this->getContainer(dirname($path));
@@ -154,7 +158,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* check if container for path exists
- * @param string path
+ * @param string $path
* @return bool
*/
private function containerExists($path) {
@@ -163,15 +167,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* get the list of emulated sub containers
- * @param CF_Container container
+ * @param \CF_Container $container
* @return array
*/
private function getSubContainers($container) {
- $tmpFile=OCP\Files::tmpFile();
+ $tmpFile=\OCP\Files::tmpFile();
$obj=$this->getSubContainerFile($container);
try {
$obj->save_to_filename($tmpFile);
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return array();
}
$obj->save_to_filename($tmpFile);
@@ -185,15 +189,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* add an emulated sub container
- * @param CF_Container container
- * @param string name
+ * @param \CF_Container $container
+ * @param string $name
* @return bool
*/
private function addSubContainer($container, $name) {
if ( ! $name) {
return false;
}
- $tmpFile=OCP\Files::tmpFile();
+ $tmpFile=\OCP\Files::tmpFile();
$obj=$this->getSubContainerFile($container);
try {
$obj->save_to_filename($tmpFile);
@@ -201,16 +205,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
foreach ($containers as &$sub) {
$sub=trim($sub);
}
- if (array_search($name, $containers)!==false) {
+ if(array_search($name, $containers) !== false) {
unlink($tmpFile);
return false;
} else {
$fh=fopen($tmpFile, 'a');
- fwrite($fh, $name."\n");
+ fwrite($fh,$name . "\n");
}
- } catch(Exception $e) {
- $containers=array();
- file_put_contents($tmpFile, $name."\n");
+ } catch(\Exception $e) {
+ file_put_contents($tmpFile, $name . "\n");
}
$obj->load_from_filename($tmpFile);
@@ -220,20 +223,20 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* remove an emulated sub container
- * @param CF_Container container
- * @param string name
+ * @param \CF_Container $container
+ * @param string $name
* @return bool
*/
private function removeSubContainer($container, $name) {
if ( ! $name) {
return false;
}
- $tmpFile=OCP\Files::tmpFile();
+ $tmpFile=\OCP\Files::tmpFile();
$obj=$this->getSubContainerFile($container);
try {
$obj->save_to_filename($tmpFile);
$containers=file($tmpFile);
- } catch (Exception $e) {
+ } catch (\Exception $e) {
return false;
}
foreach ($containers as &$sub) {
@@ -255,8 +258,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* ensure a subcontainer file exists and return it's object
- * @param CF_Container container
- * @return CF_Object
+ * @param \CF_Container $container
+ * @return \CF_Object
*/
private function getSubContainerFile($container) {
try {
@@ -283,10 +286,19 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
if ( ! $this->root || $this->root[0]!='/') {
$this->root='/'.$this->root;
}
- $this->auth = new CF_Authentication($this->user, $this->token, null, $this->host);
+
+ }
+
+ private function init(){
+ if($this->ready){
+ return;
+ }
+ $this->ready = true;
+
+ $this->auth = new \CF_Authentication($this->user, $this->token, null, $this->host);
$this->auth->authenticate();
- $this->conn = new CF_Connection($this->auth);
+ $this->conn = new \CF_Connection($this->auth);
if ( ! $this->containerExists('/')) {
$this->rootContainer=$this->createContainer('/');
@@ -295,8 +307,13 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
}
+ public function getId(){
+ return $this->id;
+ }
+
public function mkdir($path) {
+ $this->init();
if ($this->containerExists($path)) {
return false;
} else {
@@ -306,7 +323,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function rmdir($path) {
- if ( ! $this->containerExists($path)) {
+ $this->init();
+ if (!$this->containerExists($path)) {
return false;
} else {
$this->emptyContainer($path);
@@ -343,6 +361,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function opendir($path) {
+ $this->init();
$container=$this->getContainer($path);
$files=$this->getObjects($container);
$i=array_search(self::SUBCONTAINER_FILE, $files);
@@ -352,11 +371,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
$subContainers=$this->getSubContainers($container);
$files=array_merge($files, $subContainers);
$id=$this->getContainerName($path);
- OC_FakeDirStream::$dirs[$id]=$files;
+ \OC\Files\Stream\Dir::register($id, $files);
return opendir('fakedir://'.$id);
}
public function filetype($path) {
+ $this->init();
if ($this->containerExists($path)) {
return 'dir';
} else {
@@ -373,6 +393,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function file_exists($path) {
+ $this->init();
if ($this->is_dir($path)) {
return true;
} else {
@@ -381,6 +402,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function file_get_contents($path) {
+ $this->init();
$obj=$this->getObject($path);
if (is_null($obj)) {
return false;
@@ -389,6 +411,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function file_put_contents($path, $content) {
+ $this->init();
$obj=$this->getObject($path);
if (is_null($obj)) {
$container=$this->getContainer(dirname($path));
@@ -402,6 +425,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function unlink($path) {
+ $this->init();
if ($this->containerExists($path)) {
return $this->rmdir($path);
}
@@ -415,6 +439,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function fopen($path, $mode) {
+ $this->init();
switch($mode) {
case 'r':
case 'rb':
@@ -440,7 +465,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
case 'c':
case 'c+':
$tmpFile=$this->getTmpFile($path);
- OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
+ \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
self::$tempFiles[$tmpFile]=$path;
return fopen('close://'.$tmpFile, $mode);
}
@@ -458,6 +483,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function touch($path, $mtime=null) {
+ $this->init();
$obj=$this->getObject($path);
if (is_null($obj)) {
return false;
@@ -472,6 +498,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function rename($path1, $path2) {
+ $this->init();
$sourceContainer=$this->getContainer(dirname($path1));
$targetContainer=$this->getContainer(dirname($path2));
$result=$sourceContainer->move_object_to(basename($path1), $targetContainer, basename($path2));
@@ -484,6 +511,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function copy($path1, $path2) {
+ $this->init();
$sourceContainer=$this->getContainer(dirname($path1));
$targetContainer=$this->getContainer(dirname($path2));
$result=$sourceContainer->copy_object_to(basename($path1), $targetContainer, basename($path2));
@@ -495,6 +523,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function stat($path) {
+ $this->init();
$container=$this->getContainer($path);
if ( ! is_null($container)) {
return array(
@@ -523,17 +552,19 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
private function getTmpFile($path) {
+ $this->init();
$obj=$this->getObject($path);
if ( ! is_null($obj)) {
- $tmpFile=OCP\Files::tmpFile();
+ $tmpFile=\OCP\Files::tmpFile();
$obj->save_to_filename($tmpFile);
return $tmpFile;
} else {
- return OCP\Files::tmpFile();
+ return \OCP\Files::tmpFile();
}
}
private function fromTmpFile($tmpFile, $path) {
+ $this->init();
$obj=$this->getObject($path);
if (is_null($obj)) {
$obj=$this->createObject($path);
@@ -544,7 +575,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
/**
* remove custom mtime metadata
- * @param CF_Object obj
+ * @param \CF_Object $obj
*/
private function resetMTime($obj) {
if (isset($obj->metadata['Mtime'])) {
diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php
index 920aefc12d..571b4d79ae 100644
--- a/apps/files_external/lib/webdav.php
+++ b/apps/files_external/lib/webdav.php
@@ -6,14 +6,17 @@
* See the COPYING-README file.
*/
-class OC_FileStorage_DAV extends OC_Filestorage_Common{
+namespace OC\Files\Storage;
+
+class DAV extends \OC\Files\Storage\Common{
private $password;
private $user;
private $host;
private $secure;
private $root;
+ private $ready;
/**
- * @var Sabre_DAV_Client
+ * @var \Sabre_DAV_Client
*/
private $client;
@@ -43,6 +46,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
if (substr($this->root, -1, 1)!='/') {
$this->root.='/';
}
+ }
+
+ private function init(){
+ if($this->ready){
+ return;
+ }
+ $this->ready = true;
$settings = array(
'baseUri' => $this->createBaseUri(),
@@ -50,7 +60,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
'password' => $this->password,
);
- $this->client = new Sabre_DAV_Client($settings);
+ $this->client = new \Sabre_DAV_Client($settings);
$caview = \OCP\Files::getStorage('files_external');
if ($caview) {
@@ -63,6 +73,10 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$this->mkdir('');
}
+ public function getId(){
+ return 'webdav::' . $this->user . '@' . $this->host . '/' . $this->root;
+ }
+
private function createBaseUri() {
$baseUri='http';
if ($this->secure) {
@@ -73,40 +87,46 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
public function mkdir($path) {
+ $this->init();
$path=$this->cleanPath($path);
return $this->simpleResponse('MKCOL', $path, null, 201);
}
public function rmdir($path) {
+ $this->init();
$path=$this->cleanPath($path);
return $this->simpleResponse('DELETE', $path, null, 204);
}
public function opendir($path) {
+ $this->init();
$path=$this->cleanPath($path);
try {
$response=$this->client->propfind($path, array(), 1);
$id=md5('webdav'.$this->root.$path);
- OC_FakeDirStream::$dirs[$id]=array();
+ $content = array();
+ \OC_FakeDirStream::$dirs[$id]=array();
$files=array_keys($response);
array_shift($files);//the first entry is the current directory
foreach ($files as $file) {
$file = urldecode(basename($file));
- OC_FakeDirStream::$dirs[$id][]=$file;
+ $content[]=$file;
}
+ \OC\Files\Stream\Dir::register($id, $content);
return opendir('fakedir://'.$id);
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return false;
}
}
public function filetype($path) {
+ $this->init();
$path=$this->cleanPath($path);
try {
$response=$this->client->propfind($path, array('{DAV:}resourcetype'));
$responseType=$response["{DAV:}resourcetype"]->resourceType;
return (count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
- } catch(Exception $e) {
+ } catch(\Exception $e) {
error_log($e->getMessage());
\OCP\Util::writeLog("webdav client", \OCP\Util::sanitizeHTML($e->getMessage()), \OCP\Util::ERROR);
return false;
@@ -122,20 +142,23 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
public function file_exists($path) {
+ $this->init();
$path=$this->cleanPath($path);
try {
$this->client->propfind($path, array('{DAV:}resourcetype'));
return true;//no 404 exception
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return false;
}
}
public function unlink($path) {
- return $this->simpleResponse('DELETE', $path, null, 204);
+ $this->init();
+ return $this->simpleResponse('DELETE', $path, null ,204);
}
- public function fopen($path, $mode) {
+ public function fopen($path,$mode) {
+ $this->init();
$path=$this->cleanPath($path);
switch($mode) {
case 'r':
@@ -172,9 +195,9 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
} else {
$ext='';
}
- $tmpFile=OCP\Files::tmpFile($ext);
- OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this, 'writeBack');
- if ($this->file_exists($path)) {
+ $tmpFile = \OCP\Files::tmpFile($ext);
+ \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
+ if($this->file_exists($path)) {
$this->getFile($path, $tmpFile);
}
self::$tempFiles[$tmpFile]=$path;
@@ -190,6 +213,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
public function free_space($path) {
+ $this->init();
$path=$this->cleanPath($path);
try {
$response=$this->client->propfind($path, array('{DAV:}quota-available-bytes'));
@@ -198,12 +222,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
} else {
return 0;
}
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return 0;
}
}
public function touch($path, $mtime=null) {
+ $this->init();
if (is_null($mtime)) {
$mtime=time();
}
@@ -211,12 +236,14 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$this->client->proppatch($path, array('{DAV:}lastmodified' => $mtime));
}
- public function getFile($path, $target) {
- $source=$this->fopen($path, 'r');
- file_put_contents($target, $source);
+ public function getFile($path,$target) {
+ $this->init();
+ $source=$this->fopen($path,'r');
+ file_put_contents($target,$source);
}
- public function uploadFile($path, $target) {
+ public function uploadFile($path,$target) {
+ $this->init();
$source=fopen($path, 'r');
$curl = curl_init();
@@ -230,47 +257,46 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
curl_close ($curl);
}
- public function rename($path1, $path2) {
+ public function rename($path1,$path2) {
+ $this->init();
$path1=$this->cleanPath($path1);
$path2=$this->root.$this->cleanPath($path2);
try {
$this->client->request('MOVE', $path1, null, array('Destination'=>$path2));
return true;
- } catch(Exception $e) {
- echo $e;
- echo 'fail';
+ } catch(\Exception $e) {
return false;
}
}
- public function copy($path1, $path2) {
+ public function copy($path1,$path2) {
+ $this->init();
$path1=$this->cleanPath($path1);
$path2=$this->root.$this->cleanPath($path2);
try {
$this->client->request('COPY', $path1, null, array('Destination'=>$path2));
return true;
- } catch(Exception $e) {
- echo $e;
- echo 'fail';
+ } catch(\Exception $e) {
return false;
}
}
public function stat($path) {
+ $this->init();
$path=$this->cleanPath($path);
try {
$response=$this->client->propfind($path, array('{DAV:}getlastmodified', '{DAV:}getcontentlength'));
return array(
'mtime'=>strtotime($response['{DAV:}getlastmodified']),
'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0,
- 'ctime'=>-1,
);
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return array();
}
}
public function getMimeType($path) {
+ $this->init();
$path=$this->cleanPath($path);
try {
$response=$this->client->propfind($path, array('{DAV:}getcontenttype', '{DAV:}resourcetype'));
@@ -283,7 +309,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
} else {
return false;
}
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return false;
}
}
@@ -296,12 +322,12 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
}
- private function simpleResponse($method, $path, $body, $expected) {
+ private function simpleResponse($method,$path,$body,$expected) {
$path=$this->cleanPath($path);
try {
$response=$this->client->request($method, $path, $body);
return $response['statusCode']==$expected;
- } catch(Exception $e) {
+ } catch(\Exception $e) {
return false;
}
}
diff --git a/apps/files_external/personal.php b/apps/files_external/personal.php
index 4215b28787..268d188023 100755
--- a/apps/files_external/personal.php
+++ b/apps/files_external/personal.php
@@ -24,7 +24,7 @@ OCP\Util::addScript('files_external', 'settings');
OCP\Util::addStyle('files_external', 'settings');
$backends = OC_Mount_Config::getBackends();
// Remove local storage
-unset($backends['OC_Filestorage_Local']);
+unset($backends['\OC\Files\Storage\Local']);
$tmpl = new OCP\Template('files_external', 'settings');
$tmpl->assign('isAdminPage', false, false);
$tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints());
diff --git a/apps/files_external/tests/amazons3.php b/apps/files_external/tests/amazons3.php
index 39f96fe8e5..6b3a942b5b 100644
--- a/apps/files_external/tests/amazons3.php
+++ b/apps/files_external/tests/amazons3.php
@@ -20,7 +20,9 @@
* License along with this library. If not, see .
*/
-class Test_Filestorage_AmazonS3 extends Test_FileStorage {
+namespace Test\Files\Storage;
+
+class AmazonS3 extends Storage {
private $config;
private $id;
@@ -32,12 +34,12 @@ class Test_Filestorage_AmazonS3 extends Test_FileStorage {
$this->markTestSkipped('AmazonS3 backend not configured');
}
$this->config['amazons3']['bucket'] = $id; // Make sure we have a new empty bucket to work in
- $this->instance = new OC_Filestorage_AmazonS3($this->config['amazons3']);
+ $this->instance = new \OC\Files\Storage\AmazonS3($this->config['amazons3']);
}
public function tearDown() {
if ($this->instance) {
- $s3 = new AmazonS3(array('key' => $this->config['amazons3']['key'],
+ $s3 = new \AmazonS3(array('key' => $this->config['amazons3']['key'],
'secret' => $this->config['amazons3']['secret']));
if ($s3->delete_all_objects($this->id)) {
$s3->delete_bucket($this->id);
diff --git a/apps/files_external/tests/config.php b/apps/files_external/tests/config.php
index ff16b1c1d8..65127175ad 100644
--- a/apps/files_external/tests/config.php
+++ b/apps/files_external/tests/config.php
@@ -8,7 +8,7 @@ return array(
'root'=>'/test',
),
'webdav'=>array(
- 'run'=>false,
+ 'run'=>true,
'host'=>'localhost',
'user'=>'test',
'password'=>'test',
@@ -30,7 +30,7 @@ return array(
'root'=>'/',
),
'smb'=>array(
- 'run'=>false,
+ 'run'=>true,
'user'=>'test',
'password'=>'test',
'host'=>'localhost',
diff --git a/apps/files_external/tests/dropbox.php b/apps/files_external/tests/dropbox.php
index 304cb3ca38..e4e598b06b 100644
--- a/apps/files_external/tests/dropbox.php
+++ b/apps/files_external/tests/dropbox.php
@@ -6,7 +6,9 @@
* See the COPYING-README file.
*/
-class Test_Filestorage_Dropbox extends Test_FileStorage {
+namespace Test\Files\Storage;
+
+class Dropbox extends Storage {
private $config;
public function setUp() {
@@ -16,7 +18,7 @@ class Test_Filestorage_Dropbox extends Test_FileStorage {
$this->markTestSkipped('Dropbox backend not configured');
}
$this->config['dropbox']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
- $this->instance = new OC_Filestorage_Dropbox($this->config['dropbox']);
+ $this->instance = new \OC\Files\Storage\Dropbox($this->config['dropbox']);
}
public function tearDown() {
diff --git a/apps/files_external/tests/ftp.php b/apps/files_external/tests/ftp.php
index 91e4589ed1..923b5e3968 100644
--- a/apps/files_external/tests/ftp.php
+++ b/apps/files_external/tests/ftp.php
@@ -6,7 +6,9 @@
* See the COPYING-README file.
*/
-class Test_Filestorage_FTP extends Test_FileStorage {
+namespace Test\Files\Storage;
+
+class FTP extends Storage {
private $config;
public function setUp() {
@@ -16,12 +18,12 @@ class Test_Filestorage_FTP extends Test_FileStorage {
$this->markTestSkipped('FTP backend not configured');
}
$this->config['ftp']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
- $this->instance = new OC_Filestorage_FTP($this->config['ftp']);
+ $this->instance = new \OC\Files\Storage\FTP($this->config['ftp']);
}
public function tearDown() {
if ($this->instance) {
- OCP\Files::rmdirr($this->instance->constructUrl(''));
+ \OCP\Files::rmdirr($this->instance->constructUrl(''));
}
}
diff --git a/apps/files_external/tests/google.php b/apps/files_external/tests/google.php
index 379bf992ff..f344163a8b 100644
--- a/apps/files_external/tests/google.php
+++ b/apps/files_external/tests/google.php
@@ -20,8 +20,9 @@
* License along with this library. If not, see .
*/
-class Test_Filestorage_Google extends Test_FileStorage {
+namespace Test\Files\Storage;
+class Google extends Storage {
private $config;
public function setUp() {
@@ -31,7 +32,7 @@ class Test_Filestorage_Google extends Test_FileStorage {
$this->markTestSkipped('Google backend not configured');
}
$this->config['google']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
- $this->instance = new OC_Filestorage_Google($this->config['google']);
+ $this->instance = new \OC\Files\Storage\Google($this->config['google']);
}
public function tearDown() {
diff --git a/apps/files_external/tests/smb.php b/apps/files_external/tests/smb.php
index 2d6268ef26..be3ea5a830 100644
--- a/apps/files_external/tests/smb.php
+++ b/apps/files_external/tests/smb.php
@@ -6,7 +6,10 @@
* See the COPYING-README file.
*/
-class Test_Filestorage_SMB extends Test_FileStorage {
+namespace Test\Files\Storage;
+
+class SMB extends Storage {
+
private $config;
public function setUp() {
@@ -16,12 +19,12 @@ class Test_Filestorage_SMB extends Test_FileStorage {
$this->markTestSkipped('Samba backend not configured');
}
$this->config['smb']['root'] .= $id; //make sure we have an new empty folder to work in
- $this->instance = new OC_Filestorage_SMB($this->config['smb']);
+ $this->instance = new \OC\Files\Storage\SMB($this->config['smb']);
}
public function tearDown() {
if ($this->instance) {
- OCP\Files::rmdirr($this->instance->constructUrl(''));
+ \OCP\Files::rmdirr($this->instance->constructUrl(''));
}
}
}
diff --git a/apps/files_external/tests/swift.php b/apps/files_external/tests/swift.php
index 8b25db5099..5c78284024 100644
--- a/apps/files_external/tests/swift.php
+++ b/apps/files_external/tests/swift.php
@@ -6,7 +6,9 @@
* See the COPYING-README file.
*/
-class Test_Filestorage_SWIFT extends Test_FileStorage {
+namespace Test\Files\Storage;
+
+class SWIFT extends Storage {
private $config;
public function setUp() {
@@ -16,7 +18,7 @@ class Test_Filestorage_SWIFT extends Test_FileStorage {
$this->markTestSkipped('OpenStack SWIFT backend not configured');
}
$this->config['swift']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
- $this->instance = new OC_Filestorage_SWIFT($this->config['swift']);
+ $this->instance = new \OC\Files\Storage\SWIFT($this->config['swift']);
}
diff --git a/apps/files_external/tests/webdav.php b/apps/files_external/tests/webdav.php
index dd938a0c93..1702898045 100644
--- a/apps/files_external/tests/webdav.php
+++ b/apps/files_external/tests/webdav.php
@@ -6,7 +6,10 @@
* See the COPYING-README file.
*/
-class Test_Filestorage_DAV extends Test_FileStorage {
+namespace Test\Files\Storage;
+
+class DAV extends Storage {
+
private $config;
public function setUp() {
@@ -16,7 +19,7 @@ class Test_Filestorage_DAV extends Test_FileStorage {
$this->markTestSkipped('WebDAV backend not configured');
}
$this->config['webdav']['root'] .= '/' . $id; //make sure we have an new empty folder to work in
- $this->instance = new OC_Filestorage_DAV($this->config['webdav']);
+ $this->instance = new \OC\Files\Storage\DAV($this->config['webdav']);
}
public function tearDown() {
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php
index 0104d0d017..d3e05cc62d 100644
--- a/apps/files_sharing/appinfo/app.php
+++ b/apps/files_sharing/appinfo/app.php
@@ -2,8 +2,11 @@
OC::$CLASSPATH['OC_Share_Backend_File'] = "apps/files_sharing/lib/share/file.php";
OC::$CLASSPATH['OC_Share_Backend_Folder'] = 'apps/files_sharing/lib/share/folder.php';
-OC::$CLASSPATH['OC_Filestorage_Shared'] = "apps/files_sharing/lib/sharedstorage.php";
-OCP\Util::connectHook('OC_Filesystem', 'setup', 'OC_Filestorage_Shared', 'setup');
+OC::$CLASSPATH['OC\Files\Storage\Shared'] = "apps/files_sharing/lib/sharedstorage.php";
+OC::$CLASSPATH['OC\Files\Cache\Shared_Cache'] = 'apps/files_sharing/lib/cache.php';
+OC::$CLASSPATH['OC\Files\Cache\Shared_Permissions'] = 'apps/files_sharing/lib/permissions.php';
+OC::$CLASSPATH['OC\Files\Cache\Shared_Watcher'] = 'apps/files_sharing/lib/watcher.php';
+OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
OCP\Share::registerBackend('file', 'OC_Share_Backend_File');
OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file');
-OCP\Util::addScript('files_sharing', 'share');
\ No newline at end of file
+OCP\Util::addScript('files_sharing', 'share');
diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index a44d0338bb..1f24a4dde8 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -5,7 +5,7 @@
File sharing between usersAGPLMichael Gapczynski
- 4.9
+ 4.91true
diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index e998626f4a..1d22b32b50 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -9,10 +9,12 @@ if (version_compare($installedVersion, '0.3', '<')) {
OC_User::useBackend(new OC_User_Database());
OC_Group::useBackend(new OC_Group_Database());
OC_App::loadApps(array('authentication'));
+ $rootView = new \OC\Files\View('');
while ($row = $result->fetchRow()) {
- $itemSource = OC_FileCache::getId($row['source'], '');
+ $meta = $rootView->getFileInfo($$row['source']);
+ $itemSource = $meta['fileid'];
if ($itemSource != -1) {
- $file = OC_FileCache::get($row['source'], '');
+ $file = $meta;
if ($file['mimetype'] == 'httpd/unix-directory') {
$itemType = 'folder';
} else {
@@ -68,6 +70,6 @@ if (version_compare($installedVersion, '0.3.3', '<')) {
OC_App::loadApps(array('authentication'));
$users = OC_User::getUsers();
foreach ($users as $user) {
- OC_FileCache::delete('Shared', '/'.$user.'/files/');
+// OC_FileCache::delete('Shared', '/'.$user.'/files/');
}
-}
\ No newline at end of file
+}
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
new file mode 100644
index 0000000000..9655e44787
--- /dev/null
+++ b/apps/files_sharing/lib/cache.php
@@ -0,0 +1,258 @@
+.
+ */
+
+namespace OC\Files\Cache;
+
+/**
+ * Metadata cache for shared files
+ *
+ * don't use this class directly if you need to get metadata, use \OC\Files\Filesystem::getFileInfo instead
+ */
+class Shared_Cache extends Cache {
+
+ private $files = array();
+
+ public function __construct($storage) {
+
+ }
+
+ /**
+ * @brief Get the source cache of a shared file or folder
+ * @param string $target Shared target file path
+ * @return \OC\Files\Cache\Cache
+ */
+ private function getSourceCache($target) {
+ $source = \OC_Share_Backend_File::getSource($target);
+ if (isset($source['path'])) {
+ $source['path'] = '/' . $source['uid_owner'] . '/' . $source['path'];
+ \OC\Files\Filesystem::initMountPoints($source['uid_owner']);
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source['path']);
+ if ($storage) {
+ $this->files[$target] = $internalPath;
+ $cache = $storage->getCache();
+ $this->storageId = $storage->getId();
+ $this->numericId = $cache->getNumericStorageId();
+ return $cache;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * get the stored metadata of a file or folder
+ *
+ * @param string/int $file
+ * @return array
+ */
+ public function get($file) {
+ if ($file == '') {
+ return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_FILE_APP_ROOT);
+ } else if (is_string($file)) {
+ if ($cache = $this->getSourceCache($file)) {
+ return $cache->get($this->files[$file]);
+ }
+ } else {
+ $query = \OC_DB::prepare(
+ 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`
+ FROM `*PREFIX*filecache` WHERE `fileid` = ?');
+ $result = $query->execute(array($file));
+ $data = $result->fetchRow();
+ $data['fileid'] = (int)$data['fileid'];
+ $data['size'] = (int)$data['size'];
+ $data['mtime'] = (int)$data['mtime'];
+ $data['encrypted'] = (bool)$data['encrypted'];
+ $data['mimetype'] = $this->getMimetype($data['mimetype']);
+ $data['mimepart'] = $this->getMimetype($data['mimepart']);
+ return $data;
+ }
+ return false;
+ }
+
+ /**
+ * get the metadata of all files stored in $folder
+ *
+ * @param string $folder
+ * @return array
+ */
+ public function getFolderContents($folder) {
+ if ($folder == '') {
+ $files = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_FOLDER_CONTENTS);
+ foreach ($files as &$file) {
+ $file['mimetype'] = $this->getMimetype($file['mimetype']);
+ $file['mimepart'] = $this->getMimetype($file['mimepart']);
+ }
+ return $files;
+ } else {
+ if ($cache = $this->getSourceCache($folder)) {
+ return $cache->getFolderContents($this->files[$folder]);
+ }
+ }
+ return false;
+ }
+
+ /**
+ * store meta data for a file or folder
+ *
+ * @param string $file
+ * @param array $data
+ *
+ * @return int file id
+ */
+ public function put($file, array $data) {
+ if ($cache = $this->getSourceCache($file)) {
+ return $cache->put($this->files[$file], $data);
+ }
+ return false;
+ }
+
+ /**
+ * get the file id for a file
+ *
+ * @param string $file
+ * @return int
+ */
+ public function getId($file) {
+ if ($cache = $this->getSourceCache($file)) {
+ return $cache->getId($this->files[$file]);
+ }
+ return -1;
+ }
+
+ /**
+ * check if a file is available in the cache
+ *
+ * @param string $file
+ * @return bool
+ */
+ public function inCache($file) {
+ if ($file == '') {
+ return true;
+ }
+ return parent::inCache($file);
+ }
+
+ /**
+ * remove a file or folder from the cache
+ *
+ * @param string $file
+ */
+ public function remove($file) {
+ if ($cache = $this->getSourceCache($file)) {
+ $cache->remove($this->files[$file]);
+ }
+ }
+
+ /**
+ * Move a file or folder in the cache
+ *
+ * @param string $source
+ * @param string $target
+ */
+ public function move($source, $target) {
+ if ($cache = $this->getSourceCache($source)) {
+ $targetPath = \OC_Share_Backend_File::getSourcePath(dirname($target));
+ if ($targetPath) {
+ $targetPath .= '/' . basename($target);
+ $cache->move($this->files[$source], $targetPath);
+ }
+
+ }
+ }
+
+ /**
+ * remove all entries for files that are stored on the storage from the cache
+ */
+ public function clear() {
+ // Not a valid action for Shared Cache
+ }
+
+ /**
+ * @param string $file
+ *
+ * @return int, Cache::NOT_FOUND, Cache::PARTIAL, Cache::SHALLOW or Cache::COMPLETE
+ */
+ public function getStatus($file) {
+ if ($file == '') {
+ return self::COMPLETE;
+ }
+ if ($cache = $this->getSourceCache($file)) {
+ return $cache->getStatus($this->files[$file]);
+ }
+ return self::NOT_FOUND;
+ }
+
+ /**
+ * search for files matching $pattern
+ *
+ * @param string $pattern
+ * @return array of file data
+ */
+ public function search($pattern) {
+ // TODO
+ }
+
+ /**
+ * search for files by mimetype
+ *
+ * @param string $part1
+ * @param string $part2
+ * @return array
+ */
+ public function searchByMime($mimetype) {
+ if (strpos($mimetype, '/')) {
+ $where = '`mimetype` = ?';
+ } else {
+ $where = '`mimepart` = ?';
+ }
+ $mimetype = $this->getMimetypeId($mimetype);
+ $ids = $this->getAll();
+ $placeholders = join(',', array_fill(0, count($ids), '?'));
+ $query = \OC_DB::prepare('
+ SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted`
+ FROM `*PREFIX*filecache` WHERE ' . $where . ' AND `fileid` IN (' . $placeholders . ')'
+ );
+ $result = $query->execute(array_merge(array($mimetype), $ids));
+ return $result->fetchAll();
+ }
+
+ /**
+ * get the size of a folder and set it in the cache
+ *
+ * @param string $path
+ * @return int
+ */
+ public function calculateFolderSize($path) {
+ if ($cache = $this->getSourceCache($path)) {
+ return $cache->calculateFolderSize($this->files[$path]);
+ }
+ return 0;
+ }
+
+ /**
+ * get all file ids on the files on the storage
+ *
+ * @return int[]
+ */
+ public function getAll() {
+ return \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_File::FORMAT_GET_ALL);
+ }
+
+}
diff --git a/apps/files_sharing/lib/permissions.php b/apps/files_sharing/lib/permissions.php
new file mode 100644
index 0000000000..2b068ff935
--- /dev/null
+++ b/apps/files_sharing/lib/permissions.php
@@ -0,0 +1,85 @@
+.
+*/
+namespace OC\Files\Cache;
+
+class Shared_Permissions extends Permissions {
+
+ /**
+ * get the permissions for a single file
+ *
+ * @param int $fileId
+ * @param string $user
+ * @return int (-1 if file no permissions set)
+ */
+ public function get($fileId, $user) {
+ if ($fileId == -1) {
+ return \OCP\PERMISSION_READ;
+ }
+ $source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE, null, true);
+ if ($source) {
+ return $source['permissions'];
+ } else {
+ return -1;
+ }
+ }
+
+ /**
+ * set the permissions of a file
+ *
+ * @param int $fileId
+ * @param string $user
+ * @param int $permissions
+ */
+ public function set($fileId, $user, $permissions) {
+ // Not a valid action for Shared Permissions
+ }
+
+ /**
+ * get the permissions of multiply files
+ *
+ * @param int[] $fileIds
+ * @param string $user
+ * @return int[]
+ */
+ public function getMultiple($fileIds, $user) {
+ if (count($fileIds) === 0) {
+ return array();
+ }
+ foreach ($fileIds as $fileId) {
+ $filePermissions[$fileId] = self::get($fileId, $user);
+ }
+ return $filePermissions;
+ }
+
+ /**
+ * remove the permissions for a file
+ *
+ * @param int $fileId
+ * @param string $user
+ */
+ public function remove($fileId, $user) {
+ // Not a valid action for Shared Permissions
+ }
+
+ public function removeMultiple($fileIds, $user) {
+ // Not a valid action for Shared Permissions
+ }
+}
diff --git a/apps/files_sharing/lib/share/file.php b/apps/files_sharing/lib/share/file.php
index ac58523683..6d3c55a008 100644
--- a/apps/files_sharing/lib/share/file.php
+++ b/apps/files_sharing/lib/share/file.php
@@ -22,16 +22,18 @@
class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
const FORMAT_SHARED_STORAGE = 0;
- const FORMAT_FILE_APP = 1;
+ const FORMAT_GET_FOLDER_CONTENTS = 1;
const FORMAT_FILE_APP_ROOT = 2;
const FORMAT_OPENDIR = 3;
+ const FORMAT_GET_ALL = 4;
private $path;
public function isValidSource($itemSource, $uidOwner) {
- $path = OC_FileCache::getPath($itemSource, $uidOwner);
- if ($path) {
- $this->path = $path;
+ $query = \OC_DB::prepare('SELECT `name` FROM `*PREFIX*filecache` WHERE `fileid` = ?');
+ $result = $query->execute(array($itemSource));
+ if ($row = $result->fetchRow()) {
+ $this->path = $row['name'];
return true;
}
return false;
@@ -70,37 +72,21 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
public function formatItems($items, $format, $parameters = null) {
if ($format == self::FORMAT_SHARED_STORAGE) {
// Only 1 item should come through for this format call
- return array('path' => $items[key($items)]['path'], 'permissions' => $items[key($items)]['permissions']);
- } else if ($format == self::FORMAT_FILE_APP) {
- if (isset($parameters['mimetype_filter']) && $parameters['mimetype_filter']) {
- $mimetype_filter = $parameters['mimetype_filter'];
- }
+ return array('path' => $items[key($items)]['path'], 'permissions' => $items[key($items)]['permissions'], 'uid_owner' => $items[key($items)]['uid_owner']);
+ } else if ($format == self::FORMAT_GET_FOLDER_CONTENTS) {
$files = array();
foreach ($items as $item) {
- if (isset($mimetype_filter)
- && strpos($item['mimetype'], $mimetype_filter) !== 0
- && $item['mimetype'] != 'httpd/unix-directory') {
- continue;
- }
$file = array();
- $file['id'] = $item['file_source'];
+ $file['fileid'] = $item['file_source'];
+ $file['storage'] = $item['storage'];
$file['path'] = $item['file_target'];
+ $file['parent'] = $item['file_parent'];
$file['name'] = basename($item['file_target']);
- $file['ctime'] = $item['ctime'];
- $file['mtime'] = $item['mtime'];
$file['mimetype'] = $item['mimetype'];
+ $file['mimepart'] = $item['mimepart'];
$file['size'] = $item['size'];
+ $file['mtime'] = $item['mtime'];
$file['encrypted'] = $item['encrypted'];
- $file['versioned'] = $item['versioned'];
- $file['directory'] = $parameters['folder'];
- $file['type'] = ($item['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
- $file['permissions'] = $item['permissions'];
- if ($file['type'] == 'file') {
- // Remove Create permission if type is file
- $file['permissions'] &= ~OCP\PERMISSION_CREATE;
- }
- // NOTE: Temporary fix to allow unsharing of files in root of Shared directory
- $file['permissions'] |= OCP\PERMISSION_DELETE;
$files[] = $file;
}
return $files;
@@ -111,17 +97,48 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent {
if ($item['mtime'] > $mtime) {
$mtime = $item['mtime'];
}
- $size += $item['size'];
+ $size += (int)$item['size'];
}
- return array(0 => array('id' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size, 'writable' => false, 'type' => 'dir', 'directory' => '', 'permissions' => OCP\PERMISSION_READ));
+ return array('fileid' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size);
} else if ($format == self::FORMAT_OPENDIR) {
$files = array();
foreach ($items as $item) {
$files[] = basename($item['file_target']);
}
return $files;
+ } else if ($format == self::FORMAT_GET_ALL) {
+ $ids = array();
+ foreach ($items as $item) {
+ $ids[] = $item['file_source'];
+ }
+ return $ids;
}
return array();
}
+ public static function getSource($target) {
+ if ($target == '') {
+ return false;
+ }
+ $target = '/'.$target;
+ $target = rtrim($target, '/');
+ $pos = strpos($target, '/', 1);
+ // Get shared folder name
+ if ($pos !== false) {
+ $folder = substr($target, 0, $pos);
+ $source = \OCP\Share::getItemSharedWith('folder', $folder, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
+ if ($source) {
+ $source['path'] = $source['path'].substr($target, strlen($folder));
+ return $source;
+ }
+ } else {
+ $source = \OCP\Share::getItemSharedWith('file', $target, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
+ if ($source) {
+ return $source;
+ }
+ }
+ \OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, \OCP\Util::ERROR);
+ return false;
+ }
+
}
diff --git a/apps/files_sharing/lib/share/folder.php b/apps/files_sharing/lib/share/folder.php
index d414fcf10f..11c8c6b1e8 100644
--- a/apps/files_sharing/lib/share/folder.php
+++ b/apps/files_sharing/lib/share/folder.php
@@ -21,47 +21,26 @@
class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share_Backend_Collection {
- public function formatItems($items, $format, $parameters = null) {
- if ($format == self::FORMAT_SHARED_STORAGE) {
- // Only 1 item should come through for this format call
- return array('path' => $items[key($items)]['path'], 'permissions' => $items[key($items)]['permissions']);
- } else if ($format == self::FORMAT_FILE_APP && isset($parameters['folder'])) {
- // Only 1 item should come through for this format call
- $folder = $items[key($items)];
- if (isset($parameters['mimetype_filter'])) {
- $mimetype_filter = $parameters['mimetype_filter'];
- } else {
- $mimetype_filter = '';
- }
- $path = $folder['path'].substr($parameters['folder'], 7 + strlen($folder['file_target']));
- $files = OC_FileCache::getFolderContent($path, '', $mimetype_filter);
- foreach ($files as &$file) {
- $file['directory'] = $parameters['folder'];
- $file['type'] = ($file['mimetype'] == 'httpd/unix-directory') ? 'dir' : 'file';
- $file['permissions'] = $folder['permissions'];
- if ($file['type'] == 'file') {
- // Remove Create permission if type is file
- $file['permissions'] &= ~OCP\PERMISSION_CREATE;
- }
- }
- return $files;
- }
- return array();
- }
-
public function getChildren($itemSource) {
$children = array();
$parents = array($itemSource);
+ $query = \OC_DB::prepare('SELECT `id` FROM `*PREFIX*mimetypes` WHERE `mimetype` = ?');
+ $result = $query->execute(array('httpd/unix-directory'));
+ if ($row = $result->fetchRow()) {
+ $mimetype = $row['id'];
+ } else {
+ $mimetype = -1;
+ }
while (!empty($parents)) {
$parents = "'".implode("','", $parents)."'";
- $query = OC_DB::prepare('SELECT `id`, `name`, `mimetype` FROM `*PREFIX*fscache` WHERE `parent` IN ('.$parents.')');
+ $query = OC_DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache` WHERE `parent` IN ('.$parents.')');
$result = $query->execute();
$parents = array();
while ($file = $result->fetchRow()) {
- $children[] = array('source' => $file['id'], 'file_path' => $file['name']);
+ $children[] = array('source' => $file['fileid'], 'file_path' => $file['name']);
// If a child folder is found look inside it
- if ($file['mimetype'] == 'httpd/unix-directory') {
- $parents[] = $file['id'];
+ if ($file['mimetype'] == $mimetype) {
+ $parents[] = $file['fileid'];
}
}
}
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 50db9166fe..ea28ca69b9 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -20,10 +20,12 @@
*
*/
+namespace OC\Files\Storage;
+
/**
* Convert target path to source path and pass the function call to the correct storage provider
*/
-class OC_Filestorage_Shared extends OC_Filestorage_Common {
+class Shared extends \OC\Files\Storage\Common {
private $sharedFolder;
private $files = array();
@@ -32,54 +34,36 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
$this->sharedFolder = $arguments['sharedFolder'];
}
+ public function getId(){
+ return 'shared::' . $this->sharedFolder;
+ }
+
/**
- * @brief Get the source file path and the permissions granted for a shared file
+ * @brief Get the source file path, permissions, and owner for a shared file
* @param string Shared target file path
- * @return Returns array with the keys path and permissions or false if not found
+ * @return Returns array with the keys path, permissions, and owner or false if not found
*/
private function getFile($target) {
- $target = '/'.$target;
- $target = rtrim($target, '/');
- if (isset($this->files[$target])) {
- return $this->files[$target];
- } else {
- $pos = strpos($target, '/', 1);
- // Get shared folder name
- if ($pos !== false) {
- $folder = substr($target, 0, $pos);
- if (isset($this->files[$folder])) {
- $file = $this->files[$folder];
- } else {
- $file = OCP\Share::getItemSharedWith('folder', $folder, OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
- }
- if ($file) {
- $this->files[$target]['path'] = $file['path'].substr($target, strlen($folder));
- $this->files[$target]['permissions'] = $file['permissions'];
- return $this->files[$target];
- }
- } else {
- $file = OCP\Share::getItemSharedWith('file', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
- if ($file) {
- $this->files[$target] = $file;
- return $this->files[$target];
- }
+ if (!isset($this->files[$target])) {
+ $source = \OC_Share_Backend_File::getSource($target);
+ if ($source) {
+ $source['path'] = '/'.$source['uid_owner'].'/'.$source['path'];
}
- OCP\Util::writeLog('files_sharing', 'File source not found for: '.$target, OCP\Util::ERROR);
- return false;
+ $this->files[$target] = $source;
}
+ return $this->files[$target];
}
/**
* @brief Get the source file path for a shared file
* @param string Shared target file path
- * @return Returns source file path or false if not found
+ * @return string source file path or false if not found
*/
private function getSourcePath($target) {
- $file = $this->getFile($target);
- if (isset($file['path'])) {
- $uid = substr($file['path'], 1, strpos($file['path'], '/', 1) - 1);
- OC_Filesystem::mount('OC_Filestorage_Local', array('datadir' => OC_User::getHome($uid)), $uid);
- return $file['path'];
+ $source = $this->getFile($target);
+ if ($source) {
+ \OC\Files\Filesystem::initMountPoints($source['uid_owner']);
+ return $source['path'];
}
return false;
}
@@ -87,61 +71,42 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
/**
* @brief Get the permissions granted for a shared file
* @param string Shared target file path
- * @return Returns CRUDS permissions granted or false if not found
+ * @return int CRUDS permissions granted or false if not found
*/
- private function getPermissions($target) {
- $file = $this->getFile($target);
- if (isset($file['permissions'])) {
- return $file['permissions'];
+ public function getPermissions($target) {
+ $source = $this->getFile($target);
+ if ($source) {
+ return $source['permissions'];
}
return false;
}
- /**
- * @brief Get the internal path to pass to the storage filesystem call
- * @param string Source file path
- * @return Source file path with mount point stripped out
- */
- private function getInternalPath($path) {
- $mountPoint = OC_Filesystem::getMountPoint($path);
- $internalPath = substr($path, strlen($mountPoint));
- return $internalPath;
- }
-
- public function getOwner($target) {
- $shared_item = OCP\Share::getItemSharedWith('folder', $target, OC_Share_Backend_File::FORMAT_SHARED_STORAGE);
- if ($shared_item) {
- return $shared_item[0]["uid_owner"];
- }
- return null;
- }
-
public function mkdir($path) {
if ($path == '' || $path == '/' || !$this->isCreatable(dirname($path))) {
return false;
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->mkdir($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->mkdir($internalPath);
}
return false;
}
public function rmdir($path) {
if (($source = $this->getSourcePath($path)) && $this->isDeletable($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->rmdir($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->rmdir($internalPath);
}
return false;
}
public function opendir($path) {
if ($path == '' || $path == '/') {
- $files = OCP\Share::getItemsSharedWith('file', OC_Share_Backend_Folder::FORMAT_OPENDIR);
- OC_FakeDirStream::$dirs['shared'] = $files;
+ $files = \OCP\Share::getItemsSharedWith('file', \OC_Share_Backend_Folder::FORMAT_OPENDIR);
+ \OC\Files\Stream\Dir::register('shared', $files);
return opendir('fakedir://shared');
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->opendir($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->opendir($internalPath);
}
return false;
}
@@ -150,16 +115,16 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '' || $path == '/') {
return true;
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->is_dir($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->is_dir($internalPath);
}
return false;
}
public function is_file($path) {
if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->is_file($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->is_file($internalPath);
}
return false;
}
@@ -168,11 +133,10 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '' || $path == '/') {
$stat['size'] = $this->filesize($path);
$stat['mtime'] = $this->filemtime($path);
- $stat['ctime'] = $this->filectime($path);
return $stat;
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->stat($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->stat($internalPath);
}
return false;
}
@@ -181,8 +145,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '' || $path == '/') {
return 'dir';
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->filetype($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->filetype($internalPath);
}
return false;
}
@@ -191,8 +155,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '' || $path == '/' || $this->is_dir($path)) {
return 0;
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->filesize($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->filesize($internalPath);
}
return false;
}
@@ -201,7 +165,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '') {
return false;
}
- return ($this->getPermissions($path) & OCP\PERMISSION_CREATE);
+ return ($this->getPermissions($path) & \OCP\PERMISSION_CREATE);
}
public function isReadable($path) {
@@ -212,54 +176,33 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($path == '') {
return false;
}
- return ($this->getPermissions($path) & OCP\PERMISSION_UPDATE);
+ return ($this->getPermissions($path) & \OCP\PERMISSION_UPDATE);
}
public function isDeletable($path) {
if ($path == '') {
return true;
}
- return ($this->getPermissions($path) & OCP\PERMISSION_DELETE);
+ return ($this->getPermissions($path) & \OCP\PERMISSION_DELETE);
}
public function isSharable($path) {
if ($path == '') {
return false;
}
- return ($this->getPermissions($path) & OCP\PERMISSION_SHARE);
+ return ($this->getPermissions($path) & \OCP\PERMISSION_SHARE);
}
public function file_exists($path) {
if ($path == '' || $path == '/') {
return true;
} else if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->file_exists($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->file_exists($internalPath);
}
return false;
}
- public function filectime($path) {
- if ($path == '' || $path == '/') {
- $ctime = 0;
- if ($dh = $this->opendir($path)) {
- while (($filename = readdir($dh)) !== false) {
- $tempctime = $this->filectime($filename);
- if ($tempctime < $ctime) {
- $ctime = $tempctime;
- }
- }
- }
- return $ctime;
- } else {
- $source = $this->getSourcePath($path);
- if ($source) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->filectime($this->getInternalPath($source));
- }
- }
- }
-
public function filemtime($path) {
if ($path == '' || $path == '/') {
$mtime = 0;
@@ -275,8 +218,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
} else {
$source = $this->getSourcePath($path);
if ($source) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->filemtime($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->filemtime($internalPath);
}
}
}
@@ -288,9 +231,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
'target' => $this->sharedFolder.$path,
'source' => $source,
);
- OCP\Util::emitHook('OC_Filestorage_Shared', 'file_get_contents', $info);
- $storage = OC_Filesystem::getStorage($source);
- return $storage->file_get_contents($this->getInternalPath($source));
+ \OCP\Util::emitHook('\OC\Files\Storage\Shared', 'file_get_contents', $info);
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->file_get_contents($internalPath);
}
}
@@ -304,9 +247,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
'target' => $this->sharedFolder.$path,
'source' => $source,
);
- OCP\Util::emitHook('OC_Filestorage_Shared', 'file_put_contents', $info);
- $storage = OC_Filesystem::getStorage($source);
- $result = $storage->file_put_contents($this->getInternalPath($source), $data);
+ \OCP\Util::emitHook('\OC\Files\Storage\Shared', 'file_put_contents', $info);
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ $result = $storage->file_put_contents($internalPath, $data);
return $result;
}
return false;
@@ -316,8 +259,8 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
// Delete the file if DELETE permission is granted
if ($source = $this->getSourcePath($path)) {
if ($this->isDeletable($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->unlink($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->unlink($internalPath);
} else if (dirname($path) == '/' || dirname($path) == '.') {
// Unshare the file from the user if in the root of the Shared folder
if ($this->is_dir($path)) {
@@ -325,7 +268,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
} else {
$itemType = 'file';
}
- return OCP\Share::unshareFromSelf($itemType, $path);
+ return \OCP\Share::unshareFromSelf($itemType, $path);
}
}
return false;
@@ -340,8 +283,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if (dirname($path1) == dirname($path2)) {
// Rename the file if UPDATE permission is granted
if ($this->isUpdatable($path1)) {
- $storage = OC_Filesystem::getStorage($oldSource);
- return $storage->rename($this->getInternalPath($oldSource), $this->getInternalPath($newSource));
+ list($storage, $oldInternalPath) = \OC\Files\Filesystem::resolvePath($oldSource);
+ list( , $newInternalPath) = \OC\Files\Filesystem::resolvePath($newSource);
+ return $storage->rename($oldInternalPath, $newInternalPath);
}
} else {
// Move the file if DELETE and CREATE permissions are granted
@@ -355,8 +299,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
return $this->unlink($path1);
}
} else {
- $storage = OC_Filesystem::getStorage($oldSource);
- return $storage->rename($this->getInternalPath($oldSource), $this->getInternalPath($newSource));
+ list($storage, $oldInternalPath) = \OC\Files\Filesystem::resolvePath($oldSource);
+ list( , $newInternalPath) = \OC\Files\Filesystem::resolvePath($newSource);
+ return $storage->rename($oldInternalPath, $newInternalPath);
}
}
}
@@ -369,7 +314,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
if ($this->isCreatable(dirname($path2))) {
$source = $this->fopen($path1, 'r');
$target = $this->fopen($path2, 'w');
- return OC_Helper::streamCopy($source, $target);
+ return \OC_Helper::streamCopy($source, $target);
}
return false;
}
@@ -400,9 +345,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
'source' => $source,
'mode' => $mode,
);
- OCP\Util::emitHook('OC_Filestorage_Shared', 'fopen', $info);
- $storage = OC_Filesystem::getStorage($source);
- return $storage->fopen($this->getInternalPath($source), $mode);
+ \OCP\Util::emitHook('\OC\Files\Storage\Shared', 'fopen', $info);
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->fopen($internalPath, $mode);
}
return false;
}
@@ -412,47 +357,88 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common {
return 'httpd/unix-directory';
}
if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->getMimeType($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->getMimeType($internalPath);
}
return false;
}
public function free_space($path) {
+ if ($path == '') {
+ return -1;
+ }
$source = $this->getSourcePath($path);
if ($source) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->free_space($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->free_space($internalPath);
}
}
public function getLocalFile($path) {
if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->getLocalFile($this->getInternalPath($source));
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->getLocalFile($internalPath);
}
return false;
}
public function touch($path, $mtime = null) {
if ($source = $this->getSourcePath($path)) {
- $storage = OC_Filesystem::getStorage($source);
- return $storage->touch($this->getInternalPath($source), $mtime);
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->touch($internalPath, $mtime);
}
return false;
}
public static function setup($options) {
- $user_dir = $options['user_dir'];
- OC_Filesystem::mount('OC_Filestorage_Shared', array('sharedFolder' => '/Shared'), $user_dir.'/Shared/');
+ if (\OCP\Share::getItemsSharedWith('file')) {
+ $user_dir = $options['user_dir'];
+ \OC\Files\Filesystem::mount('\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), $user_dir.'/Shared/');
+ }
}
- /**
- * check if a file or folder has been updated since $time
- * @param int $time
- * @return bool
- */
public function hasUpdated($path, $time) {
- //TODO
+ if ($path == '') {
+ return false;
+ }
+ return $this->filemtime($path) > $time;
+ }
+
+ public function getCache($path = '') {
+ return new \OC\Files\Cache\Shared_Cache($this);
+ }
+
+ public function getScanner($path = '') {
+ return new \OC\Files\Cache\Scanner($this);
+ }
+
+ public function getPermissionsCache($path = '') {
+ return new \OC\Files\Cache\Shared_Permissions($this);
+ }
+
+ public function getWatcher($path = '') {
+ return new \OC\Files\Cache\Shared_Watcher($this);
+ }
+
+ public function getOwner($path) {
+ if ($path == '') {
+ return false;
+ }
+ $source = $this->getFile($path);
+ if ($source) {
+ return $source['uid_owner'];
+ }
return false;
}
+
+ public function getETag($path) {
+ if ($path == '') {
+ return parent::getETag($path);
+ }
+ if ($source = $this->getSourcePath($path)) {
+ list($storage, $internalPath) = \OC\Files\Filesystem::resolvePath($source);
+ return $storage->getETag($internalPath);
+ }
+ return null;
+ }
+
}
diff --git a/apps/files_sharing/lib/watcher.php b/apps/files_sharing/lib/watcher.php
new file mode 100644
index 0000000000..e67d1ee908
--- /dev/null
+++ b/apps/files_sharing/lib/watcher.php
@@ -0,0 +1,51 @@
+.
+*/
+
+namespace OC\Files\Cache;
+
+/**
+ * check the storage backends for updates and change the cache accordingly
+ */
+class Shared_Watcher extends Watcher {
+
+ /**
+ * check $path for updates
+ *
+ * @param string $path
+ */
+ public function checkUpdate($path) {
+ if ($path != '') {
+ parent::checkUpdate($path);
+ }
+ }
+
+ /**
+ * remove deleted files in $path from the cache
+ *
+ * @param string $path
+ */
+ public function cleanFolder($path) {
+ if ($path != '') {
+ parent::cleanFolder($path);
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php
index acd5353faf..9cf45e56fb 100644
--- a/apps/files_sharing/public.php
+++ b/apps/files_sharing/public.php
@@ -9,9 +9,10 @@ if (isset($_GET['token'])) {
unset($_GET['file']);
$qry = \OC_DB::prepare('SELECT `source` FROM `*PREFIX*sharing` WHERE `target` = ?', 1);
$filepath = $qry->execute(array($_GET['token']))->fetchOne();
- if(isset($filepath)) {
- $info = OC_FileCache_Cached::get($filepath, '');
- if(strtolower($info['mimetype']) == 'httpd/unix-directory') {
+ if (isset($filepath)) {
+ $rootView = new \OC\Files\View('');
+ $info = $rootView->getFileInfo($filepath, '');
+ if (strtolower($info['mimetype']) == 'httpd/unix-directory') {
$_GET['dir'] = $filepath;
} else {
$_GET['file'] = $filepath;
@@ -25,7 +26,7 @@ if (isset($_GET['token'])) {
function getID($path) {
// use the share table from the db to find the item source if the file was reshared because shared files
//are not stored in the file cache.
- if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
+ if (substr(\OC\Files\Filesystem::getMountPoint($path), -7, 6) == "Shared") {
$path_parts = explode('/', $path, 5);
$user = $path_parts[1];
$intPath = '/'.$path_parts[4];
@@ -37,16 +38,19 @@ function getID($path) {
$row = $result->fetchRow();
$fileSource = $row['item_source'];
} else {
- $fileSource = OC_Filecache::getId($path, '');
+ $rootView = new \OC\Files\View('');
+ $meta = $rootView->getFileInfo($path);
+ $fileSource = $meta['fileid'];
}
return $fileSource;
}
+
// Enf of backward compatibility
/**
* lookup file path and owner by fetching it from the fscache
- * needed becaus OC_FileCache::getPath($id, $user) already requires the user
+ * needed because OC_FileCache::getPath($id, $user) already requires the user
* @param int $id
* @return array
*/
@@ -86,41 +90,43 @@ if (isset($_GET['t'])) {
OC_Util::setupFS($fileOwner);
}
}
-} else if (isset($_GET['file']) || isset($_GET['dir'])) {
- OCP\Util::writeLog('share', 'Missing token, trying fallback file/dir links', \OCP\Util::DEBUG);
- if (isset($_GET['dir'])) {
- $type = 'folder';
- $path = $_GET['dir'];
- if(strlen($path)>1 and substr($path, -1, 1)==='/') {
- $path=substr($path, 0, -1);
+} else {
+ if (isset($_GET['file']) || isset($_GET['dir'])) {
+ OCP\Util::writeLog('share', 'Missing token, trying fallback file/dir links', \OCP\Util::DEBUG);
+ if (isset($_GET['dir'])) {
+ $type = 'folder';
+ $path = $_GET['dir'];
+ if (strlen($path) > 1 and substr($path, -1, 1) === '/') {
+ $path = substr($path, 0, -1);
+ }
+ $baseDir = $path;
+ $dir = $baseDir;
+ } else {
+ $type = 'file';
+ $path = $_GET['file'];
+ if (strlen($path) > 1 and substr($path, -1, 1) === '/') {
+ $path = substr($path, 0, -1);
+ }
}
- $baseDir = $path;
- $dir = $baseDir;
- } else {
- $type = 'file';
- $path = $_GET['file'];
- if(strlen($path)>1 and substr($path, -1, 1)==='/') {
- $path=substr($path, 0, -1);
- }
- }
- $shareOwner = substr($path, 1, strpos($path, '/', 1) - 1);
+ $shareOwner = substr($path, 1, strpos($path, '/', 1) - 1);
- if (OCP\User::userExists($shareOwner)) {
- OC_Util::setupFS($shareOwner);
- $fileSource = getId($path);
- if ($fileSource != -1 ) {
- $linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $shareOwner);
- $pathAndUser['path'] = $path;
- $path_parts = explode('/', $path, 5);
- $pathAndUser['user'] = $path_parts[1];
- $fileOwner = $path_parts[1];
+ if (OCP\User::userExists($shareOwner)) {
+ OC_Util::setupFS($shareOwner);
+ $fileSource = getId($path);
+ if ($fileSource != -1) {
+ $linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $shareOwner);
+ $pathAndUser['path'] = $path;
+ $path_parts = explode('/', $path, 5);
+ $pathAndUser['user'] = $path_parts[1];
+ $fileOwner = $path_parts[1];
+ }
}
}
}
if ($linkItem) {
if (!isset($linkItem['item_type'])) {
- OCP\Util::writeLog('share', 'No item type set for share id: '.$linkItem['id'], \OCP\Util::ERROR);
+ OCP\Util::writeLog('share', 'No item type set for share id: ' . $linkItem['id'], \OCP\Util::ERROR);
header('HTTP/1.0 404 Not Found');
$tmpl = new OCP\Template('', '404', 'guest');
$tmpl->printPage();
@@ -128,11 +134,13 @@ if ($linkItem) {
}
if (isset($linkItem['share_with'])) {
// Authenticate share_with
- $url = OCP\Util::linkToPublic('files').'&t='.$token;
+ $url = OCP\Util::linkToPublic('files') . '&t=' . $token;
if (isset($_GET['file'])) {
- $url .= '&file='.urlencode($_GET['file']);
- } else if (isset($_GET['dir'])) {
- $url .= '&dir='.urlencode($_GET['dir']);
+ $url .= '&file=' . urlencode($_GET['file']);
+ } else {
+ if (isset($_GET['dir'])) {
+ $url .= '&dir=' . urlencode($_GET['dir']);
+ }
}
if (isset($_POST['password'])) {
$password = $_POST['password'];
@@ -173,13 +181,13 @@ if ($linkItem) {
}
}
}
- $basePath = substr($pathAndUser['path'], strlen('/'.$fileOwner.'/files'));
+ $basePath = substr($pathAndUser['path'], strlen('/' . $fileOwner . '/files'));
$path = $basePath;
if (isset($_GET['path'])) {
$path .= $_GET['path'];
}
- if (!$path || !OC_Filesystem::isValidPath($path) || !OC_Filesystem::file_exists($path)) {
- OCP\Util::writeLog('share', 'Invalid path '.$path.' for share id '.$linkItem['id'], \OCP\Util::ERROR);
+ if (!$path || !\OC\Files\Filesystem::isValidPath($path) || !\OC\Files\Filesystem::file_exists($path)) {
+ OCP\Util::writeLog('share', 'Invalid path ' . $path . ' for share id ' . $linkItem['id'], \OCP\Util::ERROR);
header('HTTP/1.0 404 Not Found');
$tmpl = new OCP\Template('', '404', 'guest');
$tmpl->printPage();
@@ -189,13 +197,15 @@ if ($linkItem) {
$file = basename($path);
// Download the file
if (isset($_GET['download'])) {
- if (isset($_GET['path']) && $_GET['path'] !== '' ) {
- if ( isset($_GET['files']) ) { // download selected files
+ if (isset($_GET['path']) && $_GET['path'] !== '') {
+ if (isset($_GET['files'])) { // download selected files
OC_Files::get($path, $_GET['files'], $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
- } else if (isset($_GET['path']) && $_GET['path'] != '' ) { // download a file from a shared directory
- OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
- } else { // download the whole shared directory
- OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+ } else {
+ if (isset($_GET['path']) && $_GET['path'] != '') { // download a file from a shared directory
+ OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+ } else { // download the whole shared directory
+ OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
+ }
}
} else { // download a single shared file
OC_Files::get($dir, $file, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false);
@@ -207,9 +217,10 @@ if ($linkItem) {
OCP\Util::addScript('files', 'fileactions');
$tmpl = new OCP\Template('files_sharing', 'public', 'base');
$tmpl->assign('uidOwner', $shareOwner);
+ $tmpl->assign('displayName', \OCP\User::getDisplayName($shareOwner));
$tmpl->assign('dir', $dir);
$tmpl->assign('filename', $file);
- $tmpl->assign('mimetype', OC_Filesystem::getMimeType($path));
+ $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path));
if (isset($_GET['path'])) {
$getPath = $_GET['path'];
} else {
@@ -220,7 +231,7 @@ if ($linkItem) {
.(isset($_GET['dir'])?'&dir='.$_GET['dir']:'')
.(isset($_GET['file'])?'&file='.$_GET['file']:'');
// Show file list
- if (OC_Filesystem::is_dir($path)) {
+ if (\OC\Files\Filesystem::is_dir($path)) {
OCP\Util::addStyle('files', 'files');
OCP\Util::addScript('files', 'files');
OCP\Util::addScript('files', 'filelist');
@@ -231,9 +242,9 @@ if ($linkItem) {
if ($i['type'] == 'file') {
$fileinfo = pathinfo($i['name']);
$i['basename'] = $fileinfo['filename'];
- $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : '';
+ $i['extension'] = isset($fileinfo['extension']) ? ('.' . $fileinfo['extension']) : '';
}
- $i['directory'] = '/'.substr($i['directory'], $rootLength);
+ $i['directory'] = '/' . substr($i['directory'], $rootLength);
if ($i['directory'] == '/') {
$i['directory'] = '';
}
@@ -250,9 +261,137 @@ if ($linkItem) {
//add subdir breadcrumbs
foreach (explode('/', urldecode($getPath)) as $i) {
if ($i != '') {
- $pathtohere .= '/'.$i;
+ $pathtohere .= '/' . $i;
$breadcrumb[] = array('dir' => $pathtohere, 'name' => $i);
+ $path = $linkItem['path'];
+ if (isset($_GET['path'])) {
+ $path .= $_GET['path'];
+ $dir .= $_GET['path'];
+ if (!\OC\Files\Filesystem::file_exists($path)) {
+ header('HTTP/1.0 404 Not Found');
+ $tmpl = new OCP\Template('', '404', 'guest');
+ $tmpl->printPage();
+ exit();
+ }
+ }
+
+ $list = new OCP\Template('files', 'part.list', '');
+ $list->assign('files', $files, false);
+ $list->assign('publicListView', true);
+ $list->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false);
+ $list->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=', false);
+ $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
+ $breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
+ $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false);
+ $folder = new OCP\Template('files', 'index', '');
+ $folder->assign('fileList', $list->fetchPage(), false);
+ $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
+ $folder->assign('isCreatable', false);
+ $folder->assign('permissions', 0);
+ $folder->assign('files', $files);
+ $folder->assign('uploadMaxFilesize', 0);
+ $folder->assign('uploadMaxHumanFilesize', 0);
+ $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+ $tmpl->assign('folder', $folder->fetchPage(), false);
+ $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+ $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=' . urlencode($getPath));
+ } else {
+ // Show file preview if viewer is available
+ if ($type == 'file') {
+ $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download');
+ } else {
+ OCP\Util::addStyle('files_sharing', 'public');
+ OCP\Util::addScript('files_sharing', 'public');
+ OCP\Util::addScript('files', 'fileactions');
+ $tmpl = new OCP\Template('files_sharing', 'public', 'base');
+ $tmpl->assign('owner', $uidOwner);
+ // Show file list
+ if (\OC\Files\Filesystem::is_dir($path)) {
+ OCP\Util::addStyle('files', 'files');
+ OCP\Util::addScript('files', 'files');
+ OCP\Util::addScript('files', 'filelist');
+ $files = array();
+ $rootLength = strlen($baseDir) + 1;
+ foreach (OC_Files::getDirectoryContent($path) as $i) {
+ $i['date'] = OCP\Util::formatDate($i['mtime']);
+ if ($i['type'] == 'file') {
+ $fileinfo = pathinfo($i['name']);
+ $i['basename'] = $fileinfo['filename'];
+ $i['extension'] = isset($fileinfo['extension']) ? ('.' . $fileinfo['extension']) : '';
+ }
+ $i['directory'] = '/' . substr('/' . $uidOwner . '/files' . $i['directory'], $rootLength);
+ if ($i['directory'] == '/') {
+ $i['directory'] = '';
+ }
+ $i['permissions'] = OCP\PERMISSION_READ;
+ $files[] = $i;
+ }
+ // Make breadcrumb
+ $breadcrumb = array();
+ $pathtohere = '';
+ $count = 1;
+ foreach (explode('/', $dir) as $i) {
+ if ($i != '') {
+ if ($i != $baseDir) {
+ $pathtohere .= '/' . $i;
+ }
+ if (strlen($pathtohere) < strlen($_GET['dir'])) {
+ continue;
+ }
+ $breadcrumb[] = array('dir' => str_replace($_GET['dir'], "", $pathtohere, $count), 'name' => $i);
+ }
+ }
+ $list = new OCP\Template('files', 'part.list', '');
+ $list->assign('files', $files, false);
+ $list->assign('publicListView', true);
+ $list->assign('baseURL', OCP\Util::linkToPublic('files') . '&dir=' . urlencode($_GET['dir']) . '&path=', false);
+ $list->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . urlencode($_GET['dir']) . '&path=', false);
+ $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
+ $breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
+ $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . '&dir=' . urlencode($_GET['dir']) . '&path=', false);
+ $folder = new OCP\Template('files', 'index', '');
+ $folder->assign('fileList', $list->fetchPage(), false);
+ $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false);
+ $folder->assign('dir', basename($dir));
+ $folder->assign('isCreatable', false);
+ $folder->assign('permissions', 0);
+ $folder->assign('files', $files);
+ $folder->assign('uploadMaxFilesize', 0);
+ $folder->assign('uploadMaxHumanFilesize', 0);
+ $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+ $tmpl->assign('folder', $folder->fetchPage(), false);
+ $tmpl->assign('uidOwner', $uidOwner);
+ $tmpl->assign('dir', basename($dir));
+ $tmpl->assign('filename', basename($path));
+ $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path));
+ $tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
+ if (isset($_GET['path'])) {
+ $getPath = $_GET['path'];
+ } else {
+ $getPath = '';
+ }
+ $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . urlencode($_GET['dir']) . '&path=' . urlencode($getPath), false);
+ } else {
+ // Show file preview if viewer is available
+ $tmpl->assign('uidOwner', $uidOwner);
+ $tmpl->assign('dir', dirname($path));
+ $tmpl->assign('filename', basename($path));
+ $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path));
+ if ($type == 'file') {
+ $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&file=' . urlencode($_GET['file']) . '&download', false);
+ } else {
+ if (isset($_GET['path'])) {
+ $getPath = $_GET['path'];
+ } else {
+ $getPath = '';
+ }
+ $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files') . '&download&dir=' . urlencode($_GET['dir']) . '&path=' . urlencode($getPath), false);
+ }
+ }
+ $tmpl->printPage();
+ }
}
+ $tmpl->printPage();
}
$list = new OCP\Template('files', 'part.list', '');
@@ -278,21 +417,11 @@ if ($linkItem) {
$tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
.$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
} else {
- // Show file preview if viewer is available
- if ($type == 'file') {
- $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
- .$urlLinkIdentifiers.'&download');
- } else {
- $tmpl->assign('downloadURL', OCP\Util::linkToPublic('files')
- .$urlLinkIdentifiers.'&download&path='.urlencode($getPath));
- }
+ OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG);
}
- $tmpl->printPage();
}
- exit();
-} else {
- OCP\Util::writeLog('share', 'could not resolve linkItem', \OCP\Util::DEBUG);
}
header('HTTP/1.0 404 Not Found');
$tmpl = new OCP\Template('', '404', 'guest');
$tmpl->printPage();
+
diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php
index 35cca7c42d..71fca09ed6 100644
--- a/apps/files_sharing/templates/public.php
+++ b/apps/files_sharing/templates/public.php
@@ -6,9 +6,9 @@
- t('%s shared the folder %s with you', array($_['uidOwner'], $_['filename'])) ?>
+ t('%s shared the folder %s with you', array($_['displayName'], $_['filename'])) ?>
- t('%s shared the file %s with you', array($_['uidOwner'], $_['filename'])) ?>
+ t('%s shared the file %s with you', array($_['displayName'], $_['filename'])) ?>" />t('Download')?>
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml
index e4e5a365d5..0155f8e830 100644
--- a/apps/files_versions/appinfo/info.xml
+++ b/apps/files_versions/appinfo/info.xml
@@ -4,7 +4,7 @@
VersionsAGPLFrank Karlitschek
- 4.9
+ 4.91trueVersioning of files
diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php
index 5fb9dc3c3c..5cefc53289 100644
--- a/apps/files_versions/lib/hooks.php
+++ b/apps/files_versions/lib/hooks.php
@@ -21,9 +21,9 @@ class Hooks {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
- $versions = new Storage( new \OC_FilesystemView('') );
+ $versions = new Storage( new \OC\Files\View('') );
- $path = $params[\OC_Filesystem::signal_param_path];
+ $path = $params[\OC\Files\Filesystem::signal_param_path];
if($path<>'') $versions->store( $path );
@@ -39,15 +39,15 @@ class Hooks {
* cleanup the versions directory if the actual file gets deleted
*/
public static function remove_hook($params) {
- if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-
- $versions = new Storage( new \OC_FilesystemView('') );
-
- $path = $params[\OC_Filesystem::signal_param_path];
-
- if($path<>'') $versions->delete( $path );
-
- }
+ if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+
+ $versions = new Storage( new \OC_FilesystemView('') );
+
+ $path = $params[\OC\Files\Filesystem::signal_param_path];
+
+ if($path<>'') $versions->delete( $path );
+
+ }
}
/**
@@ -58,15 +58,15 @@ class Hooks {
* of the stored versions along the actual file
*/
public static function rename_hook($params) {
- if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
-
- $versions = new Storage( new \OC_FilesystemView('') );
-
+ if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+
+ $versions = new Storage( new \OC_FilesystemView('') );
+
$oldpath = $params['oldpath'];
- $newpath = $params['newpath'];
-
- if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
-
+ $newpath = $params['newpath'];
+
+ if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
+
}
}
diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index 48be5e223a..003d548d2b 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -23,15 +23,15 @@ class Storage {
private static $max_versions_per_interval = array(
1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec
'step' => 2),
- 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
+ 2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
'step' => 10),
3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute
'step' => 60),
4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour
'step' => 3600),
- 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
+ 5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
'step' => 86400),
- 6 => array('intervalEndsAfter' => -1, //until the end one version per week
+ 6 => array('intervalEndsAfter' => -1, //until the end one version per week
'step' => 604800),
);
@@ -58,8 +58,8 @@ class Storage {
public function store($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
- $files_view = new \OC_FilesystemView('/'.$uid .'/files');
- $users_view = new \OC_FilesystemView('/'.$uid);
+ $files_view = new \OC\Files\View('/'.\OCP\User::getUser() .'/files');
+ $users_view = new \OC\Files\View('/'.\OCP\User::getUser());
//check if source file already exist as version to avoid recursions.
// todo does this check work?
@@ -86,8 +86,8 @@ class Storage {
// store a new version of a file
$result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
- $versionsSize = self::calculateSize($uid);
+ if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::calculateSize($uid);
}
$versionsSize += $users_view->filesize('files'.$filename);
@@ -105,42 +105,42 @@ class Storage {
* Delete versions of a file
*/
public static function delete($filename) {
- list($uid, $filename) = self::getUidAndFilename($filename);
+ list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions');
-
- $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
- if( ($versions = self::getVersions($filename)) ) {
- if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
- $versionsSize = self::calculateSize($uid);
- }
- foreach ($versions as $v) {
- unlink($abs_path . $v['version']);
- $versionsSize -= $v['size'];
- }
- \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
+
+ $abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
+ if( ($versions = self::getVersions($filename)) ) {
+ if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
+ $versionsSize = self::calculateSize($uid);
+ }
+ foreach ($versions as $v) {
+ unlink($abs_path . $v['version']);
+ $versionsSize -= $v['size'];
+ }
+ \OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
}
}
- /**
- * rename versions of a file
- */
- public static function rename($oldpath, $newpath) {
+ /**
+ * rename versions of a file
+ */
+ public static function rename($oldpath, $newpath) {
list($uid, $oldpath) = self::getUidAndFilename($oldpath);
- list($uidn, $newpath) = self::getUidAndFilename($newpath);
+ list($uidn, $newpath) = self::getUidAndFilename($newpath);
$versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions');
$files_view = new \OC_FilesystemView('/'.$uid .'/files');
- $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath;
-
+ $abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath;
+
if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) {
$versions_view->rename($oldpath, $newpath);
- } else if ( ($versions = Storage::getVersions($oldpath)) ) {
- $info=pathinfo($abs_newpath);
- if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
- $versions = Storage::getVersions($oldpath);
+ } else if ( ($versions = Storage::getVersions($oldpath)) ) {
+ $info=pathinfo($abs_newpath);
+ if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
+ $versions = Storage::getVersions($oldpath);
foreach ($versions as $v) {
- $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
- }
- }
+ $versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
+ }
+ }
}
/**
@@ -150,7 +150,7 @@ class Storage {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
- $users_view = new \OC_FilesystemView('/'.$uid);
+ $users_view = new \OC\Files\View('/'.$uid);
$versionCreated = false;
//first create a new version
@@ -184,7 +184,7 @@ class Storage {
public static function getVersions( $filename, $count = 0 ) {
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
list($uid, $filename) = self::getUidAndFilename($filename);
- $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
+ $versions_fileview = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_versions');
$versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
$versions = array();
@@ -202,7 +202,7 @@ class Storage {
$key = $version.'#'.$filename;
$versions[$key]['cur'] = 0;
$versions[$key]['version'] = $version;
- $versions[$key]['path'] = $filename;
+ $versions[$key]['path'] = $filename;
$versions[$key]['size'] = $versions_fileview->filesize($filename.'.v'.$version);
// if file with modified date exists, flag it in array as currently enabled version
@@ -236,29 +236,29 @@ class Storage {
}
- /**
- * @brief get the size of all stored versions from a given user
- * @param $uid id from the user
- * @return size of vesions
- */
- private static function calculateSize($uid) {
- if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
- $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
- $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
-
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
-
+ /**
+ * @brief get the size of all stored versions from a given user
+ * @param $uid id from the user
+ * @return size of vesions
+ */
+ private static function calculateSize($uid) {
+ if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+ $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
+ $versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
+
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+
$size = 0;
-
- foreach ($iterator as $path) {
- if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
+
+ foreach ($iterator as $path) {
+ if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
$relpath = substr($path, strlen($versionsRoot)-1);
- $size += $versions_fileview->filesize($relpath);
- }
+ $size += $versions_fileview->filesize($relpath);
+ }
}
- return $size;
- }
+ return $size;
+ }
}
/**
@@ -267,11 +267,11 @@ class Storage {
* @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename
*/
private static function getAllVersions($uid) {
- if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
+ if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
- $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
+ $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
$versions = array();
@@ -280,7 +280,7 @@ class Storage {
$relpath = substr($path, strlen($versionsRoot)-1);
$versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]);
}
- }
+ }
ksort($versions);
@@ -288,20 +288,20 @@ class Storage {
$result = array();
- foreach( $versions as $key => $value ) {
+ foreach( $versions as $key => $value ) {
$i++;
$size = $versions_fileview->filesize($value['path']);
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
-
+
$result['all'][$key]['version'] = $value['timestamp'];
- $result['all'][$key]['path'] = $filename;
+ $result['all'][$key]['path'] = $filename;
$result['all'][$key]['size'] = $size;
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
$result['by_file'][$filename][$key]['version'] = $value['timestamp'];
- $result['by_file'][$filename][$key]['path'] = $filename;
+ $result['by_file'][$filename][$key]['path'] = $filename;
$result['by_file'][$filename][$key]['size'] = $size;
-
+
}
return $result;
@@ -322,7 +322,7 @@ class Storage {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
}
if ( $quota == null ) {
- $quota = \OC_Filesystem::free_space('/');
+ $quota = \OC\Files\Filesystem::free_space('/');
}
// make sure that we have the current size of the version history
@@ -332,7 +332,7 @@ class Storage {
}
}
- // calculate available space for version history
+ // calculate available space for version history
$rootInfo = \OC_FileCache::get('', '/'. $uid . '/files');
$free = $quota-$rootInfo['size']; // remaining free space for user
if ( $free > 0 ) {
@@ -394,7 +394,7 @@ class Storage {
$nextVersion = $prevTimestamp - $step;
if ( Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1 ) {
$nextInterval = -1;
- } else {
+ } else {
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
}
$newInterval = true; // we changed the interval -> check same version with new interval
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index a760577527..53269edfb3 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -7,7 +7,7 @@
This app is not compatible to the WebDAV user backend.
AGPLDominik Schmidt and Arthur Schiwon
- 4.9
+ 4.91true
diff --git a/apps/user_ldap/l10n/de.php b/apps/user_ldap/l10n/de.php
index 89bda8af97..efc8a80f8c 100644
--- a/apps/user_ldap/l10n/de.php
+++ b/apps/user_ldap/l10n/de.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Warnung: Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitte Deinen Systemadministator eine der beiden Anwendungen zu deaktivieren.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warnung: Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
"Host" => "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Du kannst das Protokoll auslassen, außer wenn Du SSL benötigst. Beginne dann mit ldaps://",
"Base DN" => "Basis-DN",
+"One Base DN per line" => "Ein Base DN pro Zeile",
"You can specify Base DN for users and groups in the Advanced tab" => "Du kannst Basis-DN für Benutzer und Gruppen in dem \"Erweitert\"-Reiter konfigurieren",
"User DN" => "Benutzer-DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "Der DN des Benutzers für LDAP-Bind, z.B.: uid=agent,dc=example,dc=com. Für anonymen Zugriff lasse DN und Passwort leer.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"",
"Port" => "Port",
"Base User Tree" => "Basis-Benutzerbaum",
+"One User Base DN per line" => "Ein Benutzer Base DN pro Zeile",
"Base Group Tree" => "Basis-Gruppenbaum",
+"One Group Base DN per line" => "Ein Gruppen Base DN pro Zeile",
"Group-Member association" => "Assoziation zwischen Gruppe und Benutzer",
"Use TLS" => "Nutze TLS",
"Do not use it for SSL connections, it will fail." => "Verwende dies nicht für SSL-Verbindungen, es wird fehlschlagen.",
diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php
index 1e81601838..843609f8b8 100644
--- a/apps/user_ldap/l10n/de_DE.php
+++ b/apps/user_ldap/l10n/de_DE.php
@@ -1,6 +1,6 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Warnung: Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitten Sie Ihren Systemadministator eine der beiden Anwendungen zu deaktivieren.",
-"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warnung: Da das PHP-Modul für LDAP nicht installiert ist, wird das Backend nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warnung: Da das PHP-Modul für LDAP ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
"Host" => "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://",
"Base DN" => "Basis-DN",
diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php
index 331bf8699f..5d42ea9443 100644
--- a/apps/user_ldap/l10n/es_AR.php
+++ b/apps/user_ldap/l10n/es_AR.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Advertencia: Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Atención: El módulo PHP LDAP no está instalado, este elemento no va a funcionar. Por favor, pedile al administrador que lo instale.",
"Host" => "Servidor",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podés omitir el protocolo, excepto si SSL es requerido. En ese caso, empezá con ldaps://",
"Base DN" => "DN base",
+"One Base DN per line" => "Una DN base por línea",
"You can specify Base DN for users and groups in the Advanced tab" => "Podés especificar el DN base para usuarios y grupos en la pestaña \"Avanzado\"",
"User DN" => "DN usuario",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "El DN del usuario cliente con el que se hará la asociación, p.ej. uid=agente,dc=ejemplo,dc=com. Para acceso anónimo, dejá DN y contraseña vacíos.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "Sin ninguna plantilla, p. ej.: \"objectClass=posixGroup\".",
"Port" => "Puerto",
"Base User Tree" => "Árbol base de usuario",
+"One User Base DN per line" => "Una DN base de usuario por línea",
"Base Group Tree" => "Árbol base de grupo",
+"One Group Base DN per line" => "Una DN base de grupo por línea",
"Group-Member association" => "Asociación Grupo-Miembro",
"Use TLS" => "Usar TLS",
"Do not use it for SSL connections, it will fail." => "No usarlo para SSL, dará error.",
diff --git a/apps/user_ldap/l10n/ru_RU.php b/apps/user_ldap/l10n/ru_RU.php
index 64ba1176f6..03d83b80a4 100644
--- a/apps/user_ldap/l10n/ru_RU.php
+++ b/apps/user_ldap/l10n/ru_RU.php
@@ -1,8 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Предупреждение: Приложения user_ldap и user_webdavauth несовместимы. Вы можете столкнуться с неожиданным поведением системы. Пожалуйста, обратитесь к системному администратору для отключения одного из них.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Предупреждение: Модуль PHP LDAP не установлен, бэкэнд не будет работать. Пожалуйста, обратитесь к Вашему системному администратору, чтобы установить его.",
"Host" => "Хост",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Вы можете пропустить протокол, если Вам не требуется SSL. Затем начните с ldaps://",
"Base DN" => "База DN",
+"One Base DN per line" => "Одно базовое DN на линию",
"You can specify Base DN for users and groups in the Advanced tab" => "Вы можете задать Base DN для пользователей и групп во вкладке «Дополнительно»",
"User DN" => "DN пользователя",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN клиентского пользователя, с которого должна осуществляться привязка, например, uid=agent,dc=example,dc=com. Для анонимного доступа оставьте поля DN и Пароль пустыми.",
@@ -19,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "без каких-либо заполнителей, например, \"objectClass=posixGroup\".",
"Port" => "Порт",
"Base User Tree" => "Базовое дерево пользователей",
+"One User Base DN per line" => "Одно пользовательское базовое DN на линию",
"Base Group Tree" => "Базовое дерево групп",
+"One Group Base DN per line" => "Одно групповое базовое DN на линию",
"Group-Member association" => "Связь член-группа",
"Use TLS" => "Использовать TLS",
"Do not use it for SSL connections, it will fail." => "Не используйте это SSL-соединений, это не будет выполнено.",
diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php
index 2b340c8573..9268c9f147 100644
--- a/apps/user_ldap/l10n/sk_SK.php
+++ b/apps/user_ldap/l10n/sk_SK.php
@@ -1,7 +1,10 @@
Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Upozornenie: Aplikácie user_ldap a user_webdavauth nie sú kompatibilné. Môže nastávať neočakávané správanie. Požiadajte správcu systému aby jednu z nich zakázal.",
+"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Upozornenie: nie je nainštalovaný LDAP modul pre PHP, backend vrstva nebude fungovať. Požádejte správcu systému aby ho nainštaloval.",
"Host" => "Hostiteľ",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Môžete vynechať protokol, s výnimkou požadovania SSL. Vtedy začnite s ldaps://",
"Base DN" => "Základné DN",
+"One Base DN per line" => "Jedno základné DN na riadok",
"You can specify Base DN for users and groups in the Advanced tab" => "V rozšírenom nastavení môžete zadať základné DN pre používateľov a skupiny",
"User DN" => "Používateľské DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN klientského používateľa, ku ktorému tvoríte väzbu, napr. uid=agent,dc=example,dc=com. Pre anonymný prístup ponechajte údaje DN a Heslo prázdne.",
@@ -18,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez zástupných znakov, napr. \"objectClass=posixGroup\"",
"Port" => "Port",
"Base User Tree" => "Základný používateľský strom",
+"One User Base DN per line" => "Jedna používateľská základná DN na riadok",
"Base Group Tree" => "Základný skupinový strom",
+"One Group Base DN per line" => "Jedna skupinová základná DN na riadok",
"Group-Member association" => "Asociácia člena skupiny",
"Use TLS" => "Použi TLS",
"Do not use it for SSL connections, it will fail." => "Nepoužívajte pre pripojenie SSL, pripojenie zlyhá.",
diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php
index 6591d1d5fe..b3180e1135 100644
--- a/apps/user_ldap/user_ldap.php
+++ b/apps/user_ldap/user_ldap.php
@@ -156,6 +156,7 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
}
$this->connection->writeToCache('userExists'.$uid, true);
+ $this->updateQuota($dn);
return true;
}
@@ -208,6 +209,50 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface {
return false;
}
+ /**
+ * @brief get display name of the user
+ * @param $uid user ID of the user
+ * @return display name
+ */
+ public function getDisplayName($uid) {
+ $cacheKey = 'getDisplayName'.$uid;
+ if(!is_null($displayName = $this->connection->getFromCache($cacheKey))) {
+ return $displayName;
+ }
+
+ $displayName = $this->readAttribute(
+ $this->username2dn($uid),
+ $this->connection->ldapUserDisplayName);
+
+ if($displayName && (count($displayName) > 0)) {
+ $this->connection->writeToCache($cacheKey, $displayName);
+ return $displayName[0];
+ }
+
+ return null;
+ }
+
+ /**
+ * @brief Get a list of all display names
+ * @returns array with all displayNames (value) and the correspondig uids (key)
+ *
+ * Get a list of all display names and user ids.
+ */
+ public function getDisplayNames($search = '', $limit = null, $offset = null) {
+ $cacheKey = 'getDisplayNames-'.$search.'-'.$limit.'-'.$offset;
+ if(!is_null($displayNames = $this->connection->getFromCache($cacheKey))) {
+ return $displayNames;
+ }
+
+ $displayNames = array();
+ $users = $this->getUsers($search, $limit, $offset);
+ foreach ($users as $user) {
+ $displayNames[$user] = $this->getDisplayName($user);
+ }
+ $this->connection->writeToCache($cacheKey, $displayNames);
+ return $displayNames;
+ }
+
/**
* @brief Check if backend implements actions
* @param $actions bitwise-or'ed actions
diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml
index e51f2e9ec4..f62f03577e 100755
--- a/apps/user_webdavauth/appinfo/info.xml
+++ b/apps/user_webdavauth/appinfo/info.xml
@@ -7,7 +7,7 @@
This app is not compatible to the LDAP user and group backend.
AGPLFrank Karlitschek
- 4.9
+ 4.91true
diff --git a/apps/user_webdavauth/l10n/da.php b/apps/user_webdavauth/l10n/da.php
index 245a510134..b268d3e15d 100644
--- a/apps/user_webdavauth/l10n/da.php
+++ b/apps/user_webdavauth/l10n/da.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "WebDAV-godkendelse",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud vil sende brugerens oplysninger til denne URL. Plugin'et registrerer responsen og fortolker HTTP-statuskoder 401 og 403 som ugyldige oplysninger, men alle andre besvarelser som gyldige oplysninger."
);
diff --git a/apps/user_webdavauth/l10n/es_AR.php b/apps/user_webdavauth/l10n/es_AR.php
index 245a510134..103c3738e2 100644
--- a/apps/user_webdavauth/l10n/es_AR.php
+++ b/apps/user_webdavauth/l10n/es_AR.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "Autenticación de WevDAV",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "onwCloud enviará las credenciales de usuario a esta URL. Este complemento verifica la respuesta e interpretará los códigos de respuesta HTTP 401 y 403 como credenciales inválidas y todas las otras respuestas como credenciales válidas."
);
diff --git a/apps/user_webdavauth/l10n/hu_HU.php b/apps/user_webdavauth/l10n/hu_HU.php
index 245a510134..6435280114 100644
--- a/apps/user_webdavauth/l10n/hu_HU.php
+++ b/apps/user_webdavauth/l10n/hu_HU.php
@@ -1,3 +1,5 @@
"URL: http://"
+"WebDAV Authentication" => "WebDAV hitelesítés",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "Az ownCloud elküldi a felhasználói fiók adatai a következő URL-re. Ez a bővítőmodul leellenőrzi a választ és ha a HTTP hibakód nem 401 vagy 403 azaz érvénytelen hitelesítő, akkor minden más válasz érvényes lesz."
);
diff --git a/apps/user_webdavauth/l10n/pt_BR.php b/apps/user_webdavauth/l10n/pt_BR.php
index 991c746a22..6ddd00ccc3 100644
--- a/apps/user_webdavauth/l10n/pt_BR.php
+++ b/apps/user_webdavauth/l10n/pt_BR.php
@@ -1,3 +1,5 @@
"URL do WebDAV: http://"
+"WebDAV Authentication" => "Autenticação WebDAV",
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "O ownCloud enviará as credenciais do usuário para esta URL. Este plugin verifica a resposta e interpreta o os códigos de status do HTTP 401 e 403 como credenciais inválidas, e todas as outras respostas como credenciais válidas."
);
diff --git a/apps/user_webdavauth/l10n/ru_RU.php b/apps/user_webdavauth/l10n/ru_RU.php
index 245a510134..46f74cb972 100644
--- a/apps/user_webdavauth/l10n/ru_RU.php
+++ b/apps/user_webdavauth/l10n/ru_RU.php
@@ -1,3 +1,4 @@
"WebDAV аутентификация",
"URL: http://" => "URL: http://"
);
diff --git a/apps/user_webdavauth/l10n/sk_SK.php b/apps/user_webdavauth/l10n/sk_SK.php
index 6e34b818ed..c4e6dfddc7 100644
--- a/apps/user_webdavauth/l10n/sk_SK.php
+++ b/apps/user_webdavauth/l10n/sk_SK.php
@@ -1,4 +1,5 @@
"WebDAV overenie",
-"URL: http://" => "URL: http://"
+"URL: http://" => "URL: http://",
+"ownCloud will send the user credentials to this URL. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "ownCloud odošle používateľské údaje na zadanú URL. Plugin skontroluje odpoveď a považuje návratovú hodnotu HTTP 401 a 403 za neplatné údaje a všetky ostatné hodnoty ako platné prihlasovacie údaje."
);
diff --git a/core/ajax/share.php b/core/ajax/share.php
index 077baa8ba5..6704a00c5a 100644
--- a/core/ajax/share.php
+++ b/core/ajax/share.php
@@ -72,6 +72,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
case 'email':
// read post variables
$user = OCP\USER::getUser();
+ $displayName = OCP\User::getDisplayName();
$type = $_POST['itemType'];
$link = $_POST['link'];
$file = $_POST['file'];
@@ -81,13 +82,13 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
$l = OC_L10N::get('core');
// setup the email
- $subject = (string)$l->t('User %s shared a file with you', $user);
+ $subject = (string)$l->t('User %s shared a file with you', $displayName);
if ($type === 'dir')
- $subject = (string)$l->t('User %s shared a folder with you', $user);
+ $subject = (string)$l->t('User %s shared a folder with you', $displayName);
- $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($user, $file, $link));
+ $text = (string)$l->t('User %s shared the file "%s" with you. It is available for download here: %s', array($displayName, $file, $link));
if ($type === 'dir')
- $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($user, $file, $link));
+ $text = (string)$l->t('User %s shared the folder "%s" with you. It is available for download here: %s', array($displayName, $file, $link));
$default_from = OCP\Util::getDefaultEmailAddress('sharing-noreply');
@@ -158,14 +159,14 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
while ($count < 4 && count($users) == $limit) {
$limit = 4 - $count;
if ($sharePolicy == 'groups_only') {
- $users = OC_Group::usersInGroups($groups, $_GET['search'], $limit, $offset);
+ $users = OC_Group::DisplayNamesInGroups($groups, $_GET['search'], $limit, $offset);
} else {
- $users = OC_User::getUsers($_GET['search'], $limit, $offset);
+ $users = OC_User::getDisplayNames($_GET['search'], $limit, $offset);
}
$offset += $limit;
- foreach ($users as $user) {
- if ((!isset($_GET['itemShares']) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($user, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $user != OC_User::getUser()) {
- $shareWith[] = array('label' => $user, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $user));
+ foreach ($users as $uid => $displayName) {
+ if ((!isset($_GET['itemShares']) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_USER]) || !in_array($uid, $_GET['itemShares'][OCP\Share::SHARE_TYPE_USER])) && $uid != OC_User::getUser()) {
+ $shareWith[] = array('label' => $displayName, 'value' => array('shareType' => OCP\Share::SHARE_TYPE_USER, 'shareWith' => $uid));
$count++;
}
}
diff --git a/core/css/styles.css b/core/css/styles.css
index 022acab4d8..7fb800f79e 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -195,8 +195,8 @@ fieldset.warning legend { color:#b94a48 !important; }
#notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position: relative; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; }
#notification span { cursor:pointer; font-weight:bold; margin-left:1em; }
-tr .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; }
-tr:hover .action, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; }
+tr .action:not(.permanent), .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; }
+tr:hover .action, tr .action.permanent, .selectedActions a { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter:alpha(opacity=50); opacity:.5; }
tr .action { width:16px; height:16px; }
.header-action { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; }
tr:hover .action:hover, .selectedActions a:hover, .header-action:hover { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; }
diff --git a/core/js/share.js b/core/js/share.js
index bb3ec010ff..0c45765bd8 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -23,7 +23,10 @@ OC.Share={
} else {
var file = $('tr').filterAttr('data-file', OC.basename(item));
if (file.length > 0) {
- $(file).find('.fileactions .action').filterAttr('data-action', 'Share').find('img').attr('src', image);
+ var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share');
+ action.find('img').attr('src', image);
+ action.addClass('permanent');
+ action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared')));
}
var dir = $('#dir').val();
if (dir.length > 1) {
@@ -32,9 +35,12 @@ OC.Share={
// Search for possible parent folders that are shared
while (path != last) {
if (path == item) {
- var img = $('.fileactions .action').filterAttr('data-action', 'Share').find('img');
+ var action = $('.fileactions .action').filterAttr('data-action', 'Share');
+ var img = action.find('img');
if (img.attr('src') != OC.imagePath('core', 'actions/public')) {
img.attr('src', image);
+ action.addClass('permanent');
+ action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared')));
}
}
last = path;
@@ -48,7 +54,8 @@ OC.Share={
},
updateIcon:function(itemType, itemSource) {
if (itemType == 'file' || itemType == 'folder') {
- var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file');
+ var file = $('tr').filterAttr('data-id', String(itemSource));
+ var filename = file.data('file');
if ($('#dir').val() == '/') {
itemSource = $('#dir').val() + filename;
} else {
@@ -75,6 +82,16 @@ OC.Share={
});
if (itemType != 'file' && itemType != 'folder') {
$('a.share[data-item="'+itemSource+'"]').css('background', 'url('+image+') no-repeat center');
+ } else {
+ var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share');
+ action.find('img').attr('src', image);
+ if (shares) {
+ action.addClass('permanent');
+ action.html(action.html().replace(t('core', 'Share'), t('core', 'Shared')));
+ } else {
+ action.removeClass('permanent');
+ action.html(action.html().replace(t('core', 'Shared'), t('core', 'Share')));
+ }
}
if (shares) {
OC.Share.statuses[itemSource] = link;
@@ -148,9 +165,9 @@ OC.Share={
var html = '
';
if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
- html += ''+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.uid_owner})+'';
+ html += ''+t('core', 'Shared with you and the group {group} by {owner}', {group: data.reshare.share_with, owner: data.reshare.displayname_owner})+'';
} else {
- html += ''+t('core', 'Shared with you by {owner}', {owner: data.reshare.uid_owner})+'';
+ html += ''+t('core', 'Shared with you by {owner}', {owner: data.reshare.displayname_owner})+'';
}
html += ' ';
}
@@ -186,9 +203,9 @@ OC.Share={
OC.Share.showLink(share.token, share.share_with, itemSource);
} else {
if (share.collection) {
- OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, share.collection);
+ OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.collection);
} else {
- OC.Share.addShareWith(share.share_type, share.share_with, share.permissions, possiblePermissions, false);
+ OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, false);
}
}
if (share.expiration != null) {
@@ -228,7 +245,7 @@ OC.Share={
// Default permissions are Read and Share
var permissions = OC.PERMISSION_READ | OC.PERMISSION_SHARE;
OC.Share.share(itemType, itemSource, shareType, shareWith, permissions, function() {
- OC.Share.addShareWith(shareType, shareWith, permissions, possiblePermissions);
+ OC.Share.addShareWith(shareType, shareWith, selected.item.label, permissions, possiblePermissions);
$('#shareWith').val('');
OC.Share.updateIcon(itemType, itemSource);
});
@@ -257,7 +274,7 @@ OC.Share={
}
});
},
- addShareWith:function(shareType, shareWith, permissions, possiblePermissions, collection) {
+ addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, collection) {
if (!OC.Share.itemShares[shareType]) {
OC.Share.itemShares[shareType] = [];
}
@@ -272,7 +289,7 @@ OC.Share={
if (collectionList.length > 0) {
$(collectionList).append(', '+shareWith);
} else {
- var html = '
'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWith})+'
';
+ var html = '
'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWithDisplayName})+'
';
$('#shareWithList').prepend(html);
}
} else {
@@ -295,9 +312,9 @@ OC.Share={
var html = '
';
html += '';
if(shareWith.length > 14){
- html += shareWith.substr(0,11) + '...';
+ html += shareWithDisplayName.substr(0,11) + '...';
}else{
- html += shareWith;
+ html += shareWithDisplayName;
}
if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) {
if (editChecked == '') {
diff --git a/core/js/update.js b/core/js/update.js
new file mode 100644
index 0000000000..8ab02bbf93
--- /dev/null
+++ b/core/js/update.js
@@ -0,0 +1,23 @@
+$(document).ready(function () {
+ var updateEventSource = new OC.EventSource(OC.webroot+'/core/ajax/update.php');
+ updateEventSource.listen('success', function(message) {
+ $('').append(message).append(' ').appendTo($('.update'));
+ });
+ updateEventSource.listen('error', function(message) {
+ $('').addClass('error').append(message).append(' ').appendTo($('.update'));
+ });
+ updateEventSource.listen('failure', function(message) {
+ $('').addClass('error').append(message).append(' ').appendTo($('.update'));
+ $('')
+ .addClass('error bold')
+ .append(' ')
+ .append(t('core', 'The update was unsuccessful. Please report this issue to the ownCloud community.'))
+ .appendTo($('.update'));
+ });
+ updateEventSource.listen('done', function(message) {
+ $('').addClass('bold').append(' ').append(t('core', 'The update was successful. Redirecting you to ownCloud now.')).appendTo($('.update'));
+ setTimeout(function () {
+ window.location.href = OC.webroot;
+ }, 3000);
+ });
+});
\ No newline at end of file
diff --git a/core/l10n/ar.php b/core/l10n/ar.php
index 38450f8d54..218eeed072 100644
--- a/core/l10n/ar.php
+++ b/core/l10n/ar.php
@@ -2,6 +2,25 @@
"No category to add?" => "ألا توجد فئة للإضافة؟",
"This category already exists: " => "هذه الفئة موجودة مسبقاً",
"No categories selected for deletion." => "لم يتم اختيار فئة للحذف",
+"Sunday" => "الاحد",
+"Monday" => "الأثنين",
+"Tuesday" => "الثلاثاء",
+"Wednesday" => "الاربعاء",
+"Thursday" => "الخميس",
+"Friday" => "الجمعه",
+"Saturday" => "السبت",
+"January" => "كانون الثاني",
+"February" => "شباط",
+"March" => "آذار",
+"April" => "نيسان",
+"May" => "أيار",
+"June" => "حزيران",
+"July" => "تموز",
+"August" => "آب",
+"September" => "أيلول",
+"October" => "تشرين الاول",
+"November" => "تشرين الثاني",
+"December" => "كانون الاول",
"Settings" => "تعديلات",
"seconds ago" => "منذ ثواني",
"1 minute ago" => "منذ دقيقة",
@@ -13,6 +32,7 @@
"Yes" => "نعم",
"Ok" => "موافق",
"Error" => "خطأ",
+"Share" => "شارك",
"Error while sharing" => "حصل خطأ عند عملية المشاركة",
"Error while unsharing" => "حصل خطأ عند عملية إزالة المشاركة",
"Error while changing permissions" => "حصل خطأ عند عملية إعادة تعيين التصريح بالتوصل",
@@ -71,25 +91,6 @@
"Database tablespace" => "مساحة جدول قاعدة البيانات",
"Database host" => "خادم قاعدة البيانات",
"Finish setup" => "انهاء التعديلات",
-"Sunday" => "الاحد",
-"Monday" => "الأثنين",
-"Tuesday" => "الثلاثاء",
-"Wednesday" => "الاربعاء",
-"Thursday" => "الخميس",
-"Friday" => "الجمعه",
-"Saturday" => "السبت",
-"January" => "كانون الثاني",
-"February" => "شباط",
-"March" => "آذار",
-"April" => "نيسان",
-"May" => "أيار",
-"June" => "حزيران",
-"July" => "تموز",
-"August" => "آب",
-"September" => "أيلول",
-"October" => "تشرين الاول",
-"November" => "تشرين الثاني",
-"December" => "كانون الاول",
"web services under your control" => "خدمات الوب تحت تصرفك",
"Log out" => "الخروج",
"Automatic logon rejected!" => "تم رفض تسجيل الدخول التلقائي!",
diff --git a/core/l10n/bg_BG.php b/core/l10n/bg_BG.php
index 9a2716277a..587991499a 100644
--- a/core/l10n/bg_BG.php
+++ b/core/l10n/bg_BG.php
@@ -9,6 +9,7 @@
"last year" => "последната година",
"years ago" => "последните години",
"Error" => "Грешка",
+"Share" => "Споделяне",
"Password" => "Парола",
"Personal" => "Лични",
"Users" => "Потребители",
diff --git a/core/l10n/bn_BD.php b/core/l10n/bn_BD.php
index 333e4bf0be..d698f47015 100644
--- a/core/l10n/bn_BD.php
+++ b/core/l10n/bn_BD.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "প্রিয়তে %s যোগ করতে সমস্যা দেখা দিয়েছে।",
"No categories selected for deletion." => "মুছে ফেলার জন্য কোন ক্যাটেগরি নির্বাচন করা হয় নি ।",
"Error removing %s from favorites." => "প্রিয় থেকে %s সরিয়ে ফেলতে সমস্যা দেখা দিয়েছে।",
+"Sunday" => "রবিবার",
+"Monday" => "সোমবার",
+"Tuesday" => "মঙ্গলবার",
+"Wednesday" => "বুধবার",
+"Thursday" => "বৃহষ্পতিবার",
+"Friday" => "শুক্রবার",
+"Saturday" => "শনিবার",
+"January" => "জানুয়ারি",
+"February" => "ফেব্রুয়ারি",
+"March" => "মার্চ",
+"April" => "এপ্রিল",
+"May" => "মে",
+"June" => "জুন",
+"July" => "জুলাই",
+"August" => "অগাষ্ট",
+"September" => "সেপ্টেম্বর",
+"October" => "অক্টোবর",
+"November" => "নভেম্বর",
+"December" => "ডিসেম্বর",
"Settings" => "নিয়ামকসমূহ",
"seconds ago" => "সেকেন্ড পূর্বে",
"1 minute ago" => "1 মিনিট পূর্বে",
@@ -34,6 +53,7 @@
"Error" => "সমস্যা",
"The app name is not specified." => "অ্যাপের নামটি সুনির্দিষ্ট নয়।",
"The required file {file} is not installed!" => "আবশ্যিক {file} টি সংস্থাপিত নেই !",
+"Share" => "ভাগাভাগি কর",
"Error while sharing" => "ভাগাভাগি করতে সমস্যা দেখা দিয়েছে ",
"Error while unsharing" => "ভাগাভাগি বাতিল করতে সমস্যা দেখা দিয়েছে",
"Error while changing permissions" => "অনুমতিসমূহ পরিবর্তন করতে সমস্যা দেখা দিয়েছে",
@@ -95,25 +115,6 @@
"Database tablespace" => "ডাটাবেজ টেবলস্পেস",
"Database host" => "ডাটাবেজ হোস্ট",
"Finish setup" => "সেটআপ সুসম্পন্ন কর",
-"Sunday" => "রবিবার",
-"Monday" => "সোমবার",
-"Tuesday" => "মঙ্গলবার",
-"Wednesday" => "বুধবার",
-"Thursday" => "বৃহষ্পতিবার",
-"Friday" => "শুক্রবার",
-"Saturday" => "শনিবার",
-"January" => "জানুয়ারি",
-"February" => "ফেব্রুয়ারি",
-"March" => "মার্চ",
-"April" => "এপ্রিল",
-"May" => "মে",
-"June" => "জুন",
-"July" => "জুলাই",
-"August" => "অগাষ্ট",
-"September" => "সেপ্টেম্বর",
-"October" => "অক্টোবর",
-"November" => "নভেম্বর",
-"December" => "ডিসেম্বর",
"web services under your control" => "ওয়েব সার্ভিসের নিয়ন্ত্রণ আপনার হাতের মুঠোয়",
"Log out" => "প্রস্থান",
"Lost your password?" => "কূটশব্দ হারিয়েছেন?",
diff --git a/core/l10n/ca.php b/core/l10n/ca.php
index e66bad25e4..780366aaf0 100644
--- a/core/l10n/ca.php
+++ b/core/l10n/ca.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Error en afegir %s als preferits.",
"No categories selected for deletion." => "No hi ha categories per eliminar.",
"Error removing %s from favorites." => "Error en eliminar %s dels preferits.",
+"Sunday" => "Diumenge",
+"Monday" => "Dilluns",
+"Tuesday" => "Dimarts",
+"Wednesday" => "Dimecres",
+"Thursday" => "Dijous",
+"Friday" => "Divendres",
+"Saturday" => "Dissabte",
+"January" => "Gener",
+"February" => "Febrer",
+"March" => "Març",
+"April" => "Abril",
+"May" => "Maig",
+"June" => "Juny",
+"July" => "Juliol",
+"August" => "Agost",
+"September" => "Setembre",
+"October" => "Octubre",
+"November" => "Novembre",
+"December" => "Desembre",
"Settings" => "Arranjament",
"seconds ago" => "segons enrere",
"1 minute ago" => "fa 1 minut",
@@ -34,6 +53,8 @@
"Error" => "Error",
"The app name is not specified." => "No s'ha especificat el nom de l'aplicació.",
"The required file {file} is not installed!" => "El fitxer requerit {file} no està instal·lat!",
+"Share" => "Comparteix",
+"Shared" => "Compartit",
"Error while sharing" => "Error en compartir",
"Error while unsharing" => "Error en deixar de compartir",
"Error while changing permissions" => "Error en canviar els permisos",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Error en establir la data d'expiració",
"Sending ..." => "Enviant...",
"Email sent" => "El correu electrónic s'ha enviat",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "L'actualització ha estat incorrecte. Comuniqueu aquest error a la comunitat ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "L'actualització ha estat correcte. Ara sou redireccionat a ownCloud.",
"ownCloud password reset" => "estableix de nou la contrasenya Owncloud",
"Use the following link to reset your password: {link}" => "Useu l'enllaç següent per restablir la contrasenya: {link}",
"You will receive a link to reset your password via Email." => "Rebreu un enllaç al correu electrònic per reiniciar la contrasenya.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Espai de taula de la base de dades",
"Database host" => "Ordinador central de la base de dades",
"Finish setup" => "Acaba la configuració",
-"Sunday" => "Diumenge",
-"Monday" => "Dilluns",
-"Tuesday" => "Dimarts",
-"Wednesday" => "Dimecres",
-"Thursday" => "Dijous",
-"Friday" => "Divendres",
-"Saturday" => "Dissabte",
-"January" => "Gener",
-"February" => "Febrer",
-"March" => "Març",
-"April" => "Abril",
-"May" => "Maig",
-"June" => "Juny",
-"July" => "Juliol",
-"August" => "Agost",
-"September" => "Setembre",
-"October" => "Octubre",
-"November" => "Novembre",
-"December" => "Desembre",
"web services under your control" => "controleu els vostres serveis web",
"Log out" => "Surt",
"Automatic logon rejected!" => "L'ha rebutjat l'acceditació automàtica!",
diff --git a/core/l10n/cs_CZ.php b/core/l10n/cs_CZ.php
index 7a766bd717..a8fa035711 100644
--- a/core/l10n/cs_CZ.php
+++ b/core/l10n/cs_CZ.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Chyba při přidávání %s k oblíbeným.",
"No categories selected for deletion." => "Žádné kategorie nebyly vybrány ke smazání.",
"Error removing %s from favorites." => "Chyba při odebírání %s z oblíbených.",
+"Sunday" => "Neděle",
+"Monday" => "Pondělí",
+"Tuesday" => "Úterý",
+"Wednesday" => "Středa",
+"Thursday" => "Čtvrtek",
+"Friday" => "Pátek",
+"Saturday" => "Sobota",
+"January" => "Leden",
+"February" => "Únor",
+"March" => "Březen",
+"April" => "Duben",
+"May" => "Květen",
+"June" => "Červen",
+"July" => "Červenec",
+"August" => "Srpen",
+"September" => "Září",
+"October" => "Říjen",
+"November" => "Listopad",
+"December" => "Prosinec",
"Settings" => "Nastavení",
"seconds ago" => "před pár vteřinami",
"1 minute ago" => "před minutou",
@@ -34,6 +53,8 @@
"Error" => "Chyba",
"The app name is not specified." => "Není určen název aplikace.",
"The required file {file} is not installed!" => "Požadovaný soubor {file} není nainstalován.",
+"Share" => "Sdílet",
+"Shared" => "Sdílené",
"Error while sharing" => "Chyba při sdílení",
"Error while unsharing" => "Chyba při rušení sdílení",
"Error while changing permissions" => "Chyba při změně oprávnění",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Chyba při nastavení data vypršení platnosti",
"Sending ..." => "Odesílám...",
"Email sent" => "E-mail odeslán",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Aktualizace neproběhla úspěšně. Nahlaste prosím problém do evidence chyb ownCloud",
+"The update was successful. Redirecting you to ownCloud now." => "Aktualizace byla úspěšná. Přesměrovávám na ownCloud.",
"ownCloud password reset" => "Obnovení hesla pro ownCloud",
"Use the following link to reset your password: {link}" => "Heslo obnovíte použitím následujícího odkazu: {link}",
"You will receive a link to reset your password via Email." => "Bude Vám e-mailem zaslán odkaz pro obnovu hesla.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Tabulkový prostor databáze",
"Database host" => "Hostitel databáze",
"Finish setup" => "Dokončit nastavení",
-"Sunday" => "Neděle",
-"Monday" => "Pondělí",
-"Tuesday" => "Úterý",
-"Wednesday" => "Středa",
-"Thursday" => "Čtvrtek",
-"Friday" => "Pátek",
-"Saturday" => "Sobota",
-"January" => "Leden",
-"February" => "Únor",
-"March" => "Březen",
-"April" => "Duben",
-"May" => "Květen",
-"June" => "Červen",
-"July" => "Červenec",
-"August" => "Srpen",
-"September" => "Září",
-"October" => "Říjen",
-"November" => "Listopad",
-"December" => "Prosinec",
"web services under your control" => "webové služby pod Vaší kontrolou",
"Log out" => "Odhlásit se",
"Automatic logon rejected!" => "Automatické přihlášení odmítnuto.",
diff --git a/core/l10n/da.php b/core/l10n/da.php
index 12c4c693c8..ca23b62228 100644
--- a/core/l10n/da.php
+++ b/core/l10n/da.php
@@ -53,6 +53,7 @@
"Error" => "Fejl",
"The app name is not specified." => "Den app navn er ikke angivet.",
"The required file {file} is not installed!" => "Den krævede fil {file} er ikke installeret!",
+"Share" => "Del",
"Error while sharing" => "Fejl under deling",
"Error while unsharing" => "Fejl under annullering af deling",
"Error while changing permissions" => "Fejl under justering af rettigheder",
@@ -82,6 +83,8 @@
"Error setting expiration date" => "Fejl under sætning af udløbsdato",
"Sending ..." => "Sender ...",
"Email sent" => "E-mail afsendt",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Opdateringen blev ikke udført korrekt. Rapporter venligst problemet til ownClouds community.",
+"The update was successful. Redirecting you to ownCloud now." => "Opdateringen blev udført korrekt. Du bliver nu viderestillet til ownCloud.",
"ownCloud password reset" => "Nulstil ownCloud kodeord",
"Use the following link to reset your password: {link}" => "Anvend følgende link til at nulstille din adgangskode: {link}",
"You will receive a link to reset your password via Email." => "Du vil modtage et link til at nulstille dit kodeord via email.",
diff --git a/core/l10n/de.php b/core/l10n/de.php
index b7ad57cf4c..358e8e3e75 100644
--- a/core/l10n/de.php
+++ b/core/l10n/de.php
@@ -53,6 +53,7 @@
"Error" => "Fehler",
"The app name is not specified." => "Der App-Name ist nicht angegeben.",
"The required file {file} is not installed!" => "Die benötigte Datei {file} ist nicht installiert.",
+"Share" => "Freigeben",
"Error while sharing" => "Fehler beim Freigeben",
"Error while unsharing" => "Fehler beim Aufheben der Freigabe",
"Error while changing permissions" => "Fehler beim Ändern der Rechte",
@@ -82,6 +83,8 @@
"Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums",
"Sending ..." => "Sende ...",
"Email sent" => "E-Mail wurde verschickt",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die ownCloud Gemeinschaft.",
+"The update was successful. Redirecting you to ownCloud now." => "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.",
"ownCloud password reset" => "ownCloud-Passwort zurücksetzen",
"Use the following link to reset your password: {link}" => "Nutze den nachfolgenden Link, um Dein Passwort zurückzusetzen: {link}",
"You will receive a link to reset your password via Email." => "Du erhältst einen Link per E-Mail, um Dein Passwort zurückzusetzen.",
diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php
index d62b000c0a..ca5b843a83 100644
--- a/core/l10n/de_DE.php
+++ b/core/l10n/de_DE.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Fehler beim Hinzufügen von %s zu den Favoriten.",
"No categories selected for deletion." => "Es wurden keine Kategorien zum Löschen ausgewählt.",
"Error removing %s from favorites." => "Fehler beim Entfernen von %s von den Favoriten.",
+"Sunday" => "Sonntag",
+"Monday" => "Montag",
+"Tuesday" => "Dienstag",
+"Wednesday" => "Mittwoch",
+"Thursday" => "Donnerstag",
+"Friday" => "Freitag",
+"Saturday" => "Samstag",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "März",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Dezember",
"Settings" => "Einstellungen",
"seconds ago" => "Gerade eben",
"1 minute ago" => "Vor 1 Minute",
@@ -34,6 +53,8 @@
"Error" => "Fehler",
"The app name is not specified." => "Der App-Name ist nicht angegeben.",
"The required file {file} is not installed!" => "Die benötigte Datei {file} ist nicht installiert.",
+"Share" => "Freigeben",
+"Shared" => "Freigegeben",
"Error while sharing" => "Fehler bei der Freigabe",
"Error while unsharing" => "Fehler bei der Aufhebung der Freigabe",
"Error while changing permissions" => "Fehler bei der Änderung der Rechte",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums",
"Sending ..." => "Sende ...",
"Email sent" => "Email gesendet",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die ownCloud Gemeinschaft.",
+"The update was successful. Redirecting you to ownCloud now." => "Das Update war erfolgreich. Sie werden nun zu ownCloud weitergeleitet.",
"ownCloud password reset" => "ownCloud-Passwort zurücksetzen",
"Use the following link to reset your password: {link}" => "Nutzen Sie den nachfolgenden Link, um Ihr Passwort zurückzusetzen: {link}",
"You will receive a link to reset your password via Email." => "Sie erhalten einen Link per E-Mail, um Ihr Passwort zurückzusetzen.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Datenbank-Tablespace",
"Database host" => "Datenbank-Host",
"Finish setup" => "Installation abschließen",
-"Sunday" => "Sonntag",
-"Monday" => "Montag",
-"Tuesday" => "Dienstag",
-"Wednesday" => "Mittwoch",
-"Thursday" => "Donnerstag",
-"Friday" => "Freitag",
-"Saturday" => "Samstag",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "März",
-"April" => "April",
-"May" => "Mai",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Dezember",
"web services under your control" => "Web-Services unter Ihrer Kontrolle",
"Log out" => "Abmelden",
"Automatic logon rejected!" => "Automatische Anmeldung verweigert.",
diff --git a/core/l10n/el.php b/core/l10n/el.php
index c029b01fd9..74ec378b9d 100644
--- a/core/l10n/el.php
+++ b/core/l10n/el.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Σφάλμα προσθήκης %s στα αγαπημένα.",
"No categories selected for deletion." => "Δεν επιλέχτηκαν κατηγορίες για διαγραφή.",
"Error removing %s from favorites." => "Σφάλμα αφαίρεσης %s από τα αγαπημένα.",
+"Sunday" => "Κυριακή",
+"Monday" => "Δευτέρα",
+"Tuesday" => "Τρίτη",
+"Wednesday" => "Τετάρτη",
+"Thursday" => "Πέμπτη",
+"Friday" => "Παρασκευή",
+"Saturday" => "Σάββατο",
+"January" => "Ιανουάριος",
+"February" => "Φεβρουάριος",
+"March" => "Μάρτιος",
+"April" => "Απρίλιος",
+"May" => "Μάϊος",
+"June" => "Ιούνιος",
+"July" => "Ιούλιος",
+"August" => "Αύγουστος",
+"September" => "Σεπτέμβριος",
+"October" => "Οκτώβριος",
+"November" => "Νοέμβριος",
+"December" => "Δεκέμβριος",
"Settings" => "Ρυθμίσεις",
"seconds ago" => "δευτερόλεπτα πριν",
"1 minute ago" => "1 λεπτό πριν",
@@ -34,6 +53,7 @@
"Error" => "Σφάλμα",
"The app name is not specified." => "Δεν καθορίστηκε το όνομα της εφαρμογής.",
"The required file {file} is not installed!" => "Το απαιτούμενο αρχείο {file} δεν εγκαταστάθηκε!",
+"Share" => "Διαμοιρασμός",
"Error while sharing" => "Σφάλμα κατά τον διαμοιρασμό",
"Error while unsharing" => "Σφάλμα κατά το σταμάτημα του διαμοιρασμού",
"Error while changing permissions" => "Σφάλμα κατά την αλλαγή των δικαιωμάτων",
@@ -98,25 +118,6 @@
"Database tablespace" => "Κενά Πινάκων Βάσης Δεδομένων",
"Database host" => "Διακομιστής βάσης δεδομένων",
"Finish setup" => "Ολοκλήρωση εγκατάστασης",
-"Sunday" => "Κυριακή",
-"Monday" => "Δευτέρα",
-"Tuesday" => "Τρίτη",
-"Wednesday" => "Τετάρτη",
-"Thursday" => "Πέμπτη",
-"Friday" => "Παρασκευή",
-"Saturday" => "Σάββατο",
-"January" => "Ιανουάριος",
-"February" => "Φεβρουάριος",
-"March" => "Μάρτιος",
-"April" => "Απρίλιος",
-"May" => "Μάϊος",
-"June" => "Ιούνιος",
-"July" => "Ιούλιος",
-"August" => "Αύγουστος",
-"September" => "Σεπτέμβριος",
-"October" => "Οκτώβριος",
-"November" => "Νοέμβριος",
-"December" => "Δεκέμβριος",
"web services under your control" => "Υπηρεσίες web υπό τον έλεγχό σας",
"Log out" => "Αποσύνδεση",
"Automatic logon rejected!" => "Απορρίφθηκε η αυτόματη σύνδεση!",
diff --git a/core/l10n/eo.php b/core/l10n/eo.php
index 0319eeef2d..7c0e65f4e0 100644
--- a/core/l10n/eo.php
+++ b/core/l10n/eo.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Eraro dum aldono de %s al favoratoj.",
"No categories selected for deletion." => "Neniu kategorio elektiĝis por forigo.",
"Error removing %s from favorites." => "Eraro dum forigo de %s el favoratoj.",
+"Sunday" => "dimanĉo",
+"Monday" => "lundo",
+"Tuesday" => "mardo",
+"Wednesday" => "merkredo",
+"Thursday" => "ĵaŭdo",
+"Friday" => "vendredo",
+"Saturday" => "sabato",
+"January" => "Januaro",
+"February" => "Februaro",
+"March" => "Marto",
+"April" => "Aprilo",
+"May" => "Majo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Aŭgusto",
+"September" => "Septembro",
+"October" => "Oktobro",
+"November" => "Novembro",
+"December" => "Decembro",
"Settings" => "Agordo",
"seconds ago" => "sekundoj antaŭe",
"1 minute ago" => "antaŭ 1 minuto",
@@ -34,6 +53,7 @@
"Error" => "Eraro",
"The app name is not specified." => "Ne indikiĝis nomo de la aplikaĵo.",
"The required file {file} is not installed!" => "La necesa dosiero {file} ne instaliĝis!",
+"Share" => "Kunhavigi",
"Error while sharing" => "Eraro dum kunhavigo",
"Error while unsharing" => "Eraro dum malkunhavigo",
"Error while changing permissions" => "Eraro dum ŝanĝo de permesoj",
@@ -95,25 +115,6 @@
"Database tablespace" => "Datumbaza tabelospaco",
"Database host" => "Datumbaza gastigo",
"Finish setup" => "Fini la instalon",
-"Sunday" => "dimanĉo",
-"Monday" => "lundo",
-"Tuesday" => "mardo",
-"Wednesday" => "merkredo",
-"Thursday" => "ĵaŭdo",
-"Friday" => "vendredo",
-"Saturday" => "sabato",
-"January" => "Januaro",
-"February" => "Februaro",
-"March" => "Marto",
-"April" => "Aprilo",
-"May" => "Majo",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Aŭgusto",
-"September" => "Septembro",
-"October" => "Oktobro",
-"November" => "Novembro",
-"December" => "Decembro",
"web services under your control" => "TTT-servoj sub via kontrolo",
"Log out" => "Elsaluti",
"If you did not change your password recently, your account may be compromised!" => "Se vi ne ŝanĝis vian pasvorton lastatempe, via konto eble kompromitas!",
diff --git a/core/l10n/es.php b/core/l10n/es.php
index 4f8f1936c7..e046e3bf7a 100644
--- a/core/l10n/es.php
+++ b/core/l10n/es.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Error añadiendo %s a los favoritos.",
"No categories selected for deletion." => "No hay categorías seleccionadas para borrar.",
"Error removing %s from favorites." => "Error eliminando %s de los favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Lunes",
+"Tuesday" => "Martes",
+"Wednesday" => "Miércoles",
+"Thursday" => "Jueves",
+"Friday" => "Viernes",
+"Saturday" => "Sábado",
+"January" => "Enero",
+"February" => "Febrero",
+"March" => "Marzo",
+"April" => "Abril",
+"May" => "Mayo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Agosto",
+"September" => "Septiembre",
+"October" => "Octubre",
+"November" => "Noviembre",
+"December" => "Diciembre",
"Settings" => "Ajustes",
"seconds ago" => "hace segundos",
"1 minute ago" => "hace 1 minuto",
@@ -34,6 +53,8 @@
"Error" => "Fallo",
"The app name is not specified." => "El nombre de la app no se ha especificado.",
"The required file {file} is not installed!" => "El fichero {file} requerido, no está instalado.",
+"Share" => "Compartir",
+"Shared" => "Compartido",
"Error while sharing" => "Error compartiendo",
"Error while unsharing" => "Error descompartiendo",
"Error while changing permissions" => "Error cambiando permisos",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Error estableciendo fecha de caducidad",
"Sending ..." => "Enviando...",
"Email sent" => "Correo electrónico enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "La actualización ha fracasado. Por favor, informe este problema a la Comunidad de ownCloud a>.",
+"The update was successful. Redirecting you to ownCloud now." => "La actualización se ha realizado correctamente. Redireccionando a ownCloud ahora.",
"ownCloud password reset" => "Reiniciar contraseña de ownCloud",
"Use the following link to reset your password: {link}" => "Utiliza el siguiente enlace para restablecer tu contraseña: {link}",
"You will receive a link to reset your password via Email." => "Recibirás un enlace por correo electrónico para restablecer tu contraseña",
@@ -98,25 +121,6 @@
"Database tablespace" => "Espacio de tablas de la base de datos",
"Database host" => "Host de la base de datos",
"Finish setup" => "Completar la instalación",
-"Sunday" => "Domingo",
-"Monday" => "Lunes",
-"Tuesday" => "Martes",
-"Wednesday" => "Miércoles",
-"Thursday" => "Jueves",
-"Friday" => "Viernes",
-"Saturday" => "Sábado",
-"January" => "Enero",
-"February" => "Febrero",
-"March" => "Marzo",
-"April" => "Abril",
-"May" => "Mayo",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Agosto",
-"September" => "Septiembre",
-"October" => "Octubre",
-"November" => "Noviembre",
-"December" => "Diciembre",
"web services under your control" => "servicios web bajo tu control",
"Log out" => "Salir",
"Automatic logon rejected!" => "¡Inicio de sesión automático rechazado!",
diff --git a/core/l10n/es_AR.php b/core/l10n/es_AR.php
index 374a679260..1ce26416f6 100644
--- a/core/l10n/es_AR.php
+++ b/core/l10n/es_AR.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Error al agregar %s a favoritos. ",
"No categories selected for deletion." => "No hay categorías seleccionadas para borrar.",
"Error removing %s from favorites." => "Error al remover %s de favoritos. ",
+"Sunday" => "Domingo",
+"Monday" => "Lunes",
+"Tuesday" => "Martes",
+"Wednesday" => "Miércoles",
+"Thursday" => "Jueves",
+"Friday" => "Viernes",
+"Saturday" => "Sábado",
+"January" => "Enero",
+"February" => "Febrero",
+"March" => "Marzo",
+"April" => "Abril",
+"May" => "Mayo",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Agosto",
+"September" => "Septiembre",
+"October" => "Octubre",
+"November" => "Noviembre",
+"December" => "Diciembre",
"Settings" => "Ajustes",
"seconds ago" => "segundos atrás",
"1 minute ago" => "hace 1 minuto",
@@ -34,6 +53,8 @@
"Error" => "Error",
"The app name is not specified." => "El nombre de la aplicación no esta especificado.",
"The required file {file} is not installed!" => "¡El archivo requerido {file} no está instalado!",
+"Share" => "Compartir",
+"Shared" => "Compartido",
"Error while sharing" => "Error al compartir",
"Error while unsharing" => "Error en el procedimiento de ",
"Error while changing permissions" => "Error al cambiar permisos",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Error al asignar fecha de vencimiento",
"Sending ..." => "Enviando...",
"Email sent" => "Email enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "La actualización no pudo ser completada. Por favor, reportá el inconveniente a la comunidad ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "La actualización fue exitosa. Estás siendo redirigido a ownCloud.",
"ownCloud password reset" => "Restablecer contraseña de ownCloud",
"Use the following link to reset your password: {link}" => "Usá este enlace para restablecer tu contraseña: {link}",
"You will receive a link to reset your password via Email." => "Vas a recibir un enlace por e-mail para restablecer tu contraseña",
@@ -98,25 +121,6 @@
"Database tablespace" => "Espacio de tablas de la base de datos",
"Database host" => "Host de la base de datos",
"Finish setup" => "Completar la instalación",
-"Sunday" => "Domingo",
-"Monday" => "Lunes",
-"Tuesday" => "Martes",
-"Wednesday" => "Miércoles",
-"Thursday" => "Jueves",
-"Friday" => "Viernes",
-"Saturday" => "Sábado",
-"January" => "Enero",
-"February" => "Febrero",
-"March" => "Marzo",
-"April" => "Abril",
-"May" => "Mayo",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Agosto",
-"September" => "Septiembre",
-"October" => "Octubre",
-"November" => "Noviembre",
-"December" => "Diciembre",
"web services under your control" => "servicios web sobre los que tenés control",
"Log out" => "Cerrar la sesión",
"Automatic logon rejected!" => "¡El inicio de sesión automático fue rechazado!",
diff --git a/core/l10n/et_EE.php b/core/l10n/et_EE.php
index b79dd4761e..f4328de990 100644
--- a/core/l10n/et_EE.php
+++ b/core/l10n/et_EE.php
@@ -2,6 +2,25 @@
"No category to add?" => "Pole kategooriat, mida lisada?",
"This category already exists: " => "See kategooria on juba olemas: ",
"No categories selected for deletion." => "Kustutamiseks pole kategooriat valitud.",
+"Sunday" => "Pühapäev",
+"Monday" => "Esmaspäev",
+"Tuesday" => "Teisipäev",
+"Wednesday" => "Kolmapäev",
+"Thursday" => "Neljapäev",
+"Friday" => "Reede",
+"Saturday" => "Laupäev",
+"January" => "Jaanuar",
+"February" => "Veebruar",
+"March" => "Märts",
+"April" => "Aprill",
+"May" => "Mai",
+"June" => "Juuni",
+"July" => "Juuli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktoober",
+"November" => "November",
+"December" => "Detsember",
"Settings" => "Seaded",
"seconds ago" => "sekundit tagasi",
"1 minute ago" => "1 minut tagasi",
@@ -19,6 +38,7 @@
"Yes" => "Jah",
"Ok" => "Ok",
"Error" => "Viga",
+"Share" => "Jaga",
"Error while sharing" => "Viga jagamisel",
"Error while unsharing" => "Viga jagamise lõpetamisel",
"Error while changing permissions" => "Viga õiguste muutmisel",
@@ -74,25 +94,6 @@
"Database tablespace" => "Andmebaasi tabeliruum",
"Database host" => "Andmebaasi host",
"Finish setup" => "Lõpeta seadistamine",
-"Sunday" => "Pühapäev",
-"Monday" => "Esmaspäev",
-"Tuesday" => "Teisipäev",
-"Wednesday" => "Kolmapäev",
-"Thursday" => "Neljapäev",
-"Friday" => "Reede",
-"Saturday" => "Laupäev",
-"January" => "Jaanuar",
-"February" => "Veebruar",
-"March" => "Märts",
-"April" => "Aprill",
-"May" => "Mai",
-"June" => "Juuni",
-"July" => "Juuli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktoober",
-"November" => "November",
-"December" => "Detsember",
"web services under your control" => "veebiteenused sinu kontrolli all",
"Log out" => "Logi välja",
"Automatic logon rejected!" => "Automaatne sisselogimine lükati tagasi!",
diff --git a/core/l10n/eu.php b/core/l10n/eu.php
index 3f1a290953..ed919d64d9 100644
--- a/core/l10n/eu.php
+++ b/core/l10n/eu.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Errorea gertatu da %s gogokoetara gehitzean.",
"No categories selected for deletion." => "Ez da ezabatzeko kategoriarik hautatu.",
"Error removing %s from favorites." => "Errorea gertatu da %s gogokoetatik ezabatzean.",
+"Sunday" => "Igandea",
+"Monday" => "Astelehena",
+"Tuesday" => "Asteartea",
+"Wednesday" => "Asteazkena",
+"Thursday" => "Osteguna",
+"Friday" => "Ostirala",
+"Saturday" => "Larunbata",
+"January" => "Urtarrila",
+"February" => "Otsaila",
+"March" => "Martxoa",
+"April" => "Apirila",
+"May" => "Maiatza",
+"June" => "Ekaina",
+"July" => "Uztaila",
+"August" => "Abuztua",
+"September" => "Iraila",
+"October" => "Urria",
+"November" => "Azaroa",
+"December" => "Abendua",
"Settings" => "Ezarpenak",
"seconds ago" => "segundu",
"1 minute ago" => "orain dela minutu 1",
@@ -34,6 +53,8 @@
"Error" => "Errorea",
"The app name is not specified." => "App izena ez dago zehaztuta.",
"The required file {file} is not installed!" => "Beharrezkoa den {file} fitxategia ez dago instalatuta!",
+"Share" => "Elkarbanatu",
+"Shared" => "Elkarbanatuta",
"Error while sharing" => "Errore bat egon da elkarbanatzean",
"Error while unsharing" => "Errore bat egon da elkarbanaketa desegitean",
"Error while changing permissions" => "Errore bat egon da baimenak aldatzean",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Errore bat egon da muga data ezartzean",
"Sending ..." => "Bidaltzen ...",
"Email sent" => "Eposta bidalia",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Eguneraketa ez da ongi egin. Mesedez egin arazoaren txosten bat ownCloud komunitatearentzako.",
+"The update was successful. Redirecting you to ownCloud now." => "Eguneraketa ongi egin da. Orain zure ownClouderea berbideratua izango zara.",
"ownCloud password reset" => "ownCloud-en pasahitza berrezarri",
"Use the following link to reset your password: {link}" => "Eribili hurrengo lotura zure pasahitza berrezartzeko: {link}",
"You will receive a link to reset your password via Email." => "Zure pashitza berrezartzeko lotura bat jasoko duzu Epostaren bidez.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Datu basearen taula-lekua",
"Database host" => "Datubasearen hostalaria",
"Finish setup" => "Bukatu konfigurazioa",
-"Sunday" => "Igandea",
-"Monday" => "Astelehena",
-"Tuesday" => "Asteartea",
-"Wednesday" => "Asteazkena",
-"Thursday" => "Osteguna",
-"Friday" => "Ostirala",
-"Saturday" => "Larunbata",
-"January" => "Urtarrila",
-"February" => "Otsaila",
-"March" => "Martxoa",
-"April" => "Apirila",
-"May" => "Maiatza",
-"June" => "Ekaina",
-"July" => "Uztaila",
-"August" => "Abuztua",
-"September" => "Iraila",
-"October" => "Urria",
-"November" => "Azaroa",
-"December" => "Abendua",
"web services under your control" => "web zerbitzuak zure kontrolpean",
"Log out" => "Saioa bukatu",
"Automatic logon rejected!" => "Saio hasiera automatikoa ez onartuta!",
diff --git a/core/l10n/fa.php b/core/l10n/fa.php
index 7ed2831d82..6f1f65bd34 100644
--- a/core/l10n/fa.php
+++ b/core/l10n/fa.php
@@ -53,6 +53,7 @@
"Error" => "خطا",
"The app name is not specified." => "نام برنامه تعیین نشده است.",
"The required file {file} is not installed!" => "پرونده { پرونده} درخواست شده نصب نشده است !",
+"Share" => "اشتراکگزاری",
"Error while sharing" => "خطا درحال به اشتراک گذاشتن",
"Error while unsharing" => "خطا درحال لغو اشتراک",
"Error while changing permissions" => "خطا در حال تغییر مجوز",
diff --git a/core/l10n/fi_FI.php b/core/l10n/fi_FI.php
index 751293e1fd..1f2568f951 100644
--- a/core/l10n/fi_FI.php
+++ b/core/l10n/fi_FI.php
@@ -8,6 +8,25 @@
"Error adding %s to favorites." => "Virhe lisätessä kohdetta %s suosikkeihin.",
"No categories selected for deletion." => "Luokkia ei valittu poistettavaksi.",
"Error removing %s from favorites." => "Virhe poistaessa kohdetta %s suosikeista.",
+"Sunday" => "Sunnuntai",
+"Monday" => "Maanantai",
+"Tuesday" => "Tiistai",
+"Wednesday" => "Keskiviikko",
+"Thursday" => "Torstai",
+"Friday" => "Perjantai",
+"Saturday" => "Lauantai",
+"January" => "Tammikuu",
+"February" => "Helmikuu",
+"March" => "Maaliskuu",
+"April" => "Huhtikuu",
+"May" => "Toukokuu",
+"June" => "Kesäkuu",
+"July" => "Heinäkuu",
+"August" => "Elokuu",
+"September" => "Syyskuu",
+"October" => "Lokakuu",
+"November" => "Marraskuu",
+"December" => "Joulukuu",
"Settings" => "Asetukset",
"seconds ago" => "sekuntia sitten",
"1 minute ago" => "1 minuutti sitten",
@@ -30,6 +49,7 @@
"Error" => "Virhe",
"The app name is not specified." => "Sovelluksen nimeä ei ole määritelty.",
"The required file {file} is not installed!" => "Vaadittua tiedostoa {file} ei ole asennettu!",
+"Share" => "Jaa",
"Error while sharing" => "Virhe jaettaessa",
"Error while unsharing" => "Virhe jakoa peruttaessa",
"Error while changing permissions" => "Virhe oikeuksia muuttaessa",
@@ -58,6 +78,8 @@
"Error setting expiration date" => "Virhe päättymispäivää asettaessa",
"Sending ..." => "Lähetetään...",
"Email sent" => "Sähköposti lähetetty",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Päivitys epäonnistui. Ilmoita ongelmasta ownCloud-yhteisölle.",
+"The update was successful. Redirecting you to ownCloud now." => "Päivitys onnistui. Selain ohjautuu nyt ownCloudiisi.",
"ownCloud password reset" => "ownCloud-salasanan nollaus",
"Use the following link to reset your password: {link}" => "Voit palauttaa salasanasi seuraavassa osoitteessa: {link}",
"You will receive a link to reset your password via Email." => "Saat sähköpostitse linkin nollataksesi salasanan.",
@@ -91,25 +113,6 @@
"Database tablespace" => "Tietokannan taulukkotila",
"Database host" => "Tietokantapalvelin",
"Finish setup" => "Viimeistele asennus",
-"Sunday" => "Sunnuntai",
-"Monday" => "Maanantai",
-"Tuesday" => "Tiistai",
-"Wednesday" => "Keskiviikko",
-"Thursday" => "Torstai",
-"Friday" => "Perjantai",
-"Saturday" => "Lauantai",
-"January" => "Tammikuu",
-"February" => "Helmikuu",
-"March" => "Maaliskuu",
-"April" => "Huhtikuu",
-"May" => "Toukokuu",
-"June" => "Kesäkuu",
-"July" => "Heinäkuu",
-"August" => "Elokuu",
-"September" => "Syyskuu",
-"October" => "Lokakuu",
-"November" => "Marraskuu",
-"December" => "Joulukuu",
"web services under your control" => "verkkopalvelut hallinnassasi",
"Log out" => "Kirjaudu ulos",
"Automatic logon rejected!" => "Automaattinen sisäänkirjautuminen hylättiin!",
diff --git a/core/l10n/fr.php b/core/l10n/fr.php
index 39269e43b5..202203753d 100644
--- a/core/l10n/fr.php
+++ b/core/l10n/fr.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Erreur lors de l'ajout de %s aux favoris.",
"No categories selected for deletion." => "Aucune catégorie sélectionnée pour suppression",
"Error removing %s from favorites." => "Erreur lors de la suppression de %s des favoris.",
+"Sunday" => "Dimanche",
+"Monday" => "Lundi",
+"Tuesday" => "Mardi",
+"Wednesday" => "Mercredi",
+"Thursday" => "Jeudi",
+"Friday" => "Vendredi",
+"Saturday" => "Samedi",
+"January" => "janvier",
+"February" => "février",
+"March" => "mars",
+"April" => "avril",
+"May" => "mai",
+"June" => "juin",
+"July" => "juillet",
+"August" => "août",
+"September" => "septembre",
+"October" => "octobre",
+"November" => "novembre",
+"December" => "décembre",
"Settings" => "Paramètres",
"seconds ago" => "il y a quelques secondes",
"1 minute ago" => "il y a une minute",
@@ -34,6 +53,7 @@
"Error" => "Erreur",
"The app name is not specified." => "Le nom de l'application n'est pas spécifié.",
"The required file {file} is not installed!" => "Le fichier requis {file} n'est pas installé !",
+"Share" => "Partager",
"Error while sharing" => "Erreur lors de la mise en partage",
"Error while unsharing" => "Erreur lors de l'annulation du partage",
"Error while changing permissions" => "Erreur lors du changement des permissions",
@@ -63,6 +83,8 @@
"Error setting expiration date" => "Erreur lors de la spécification de la date d'expiration",
"Sending ..." => "En cours d'envoi ...",
"Email sent" => "Email envoyé",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "La mise à jour a échoué. Veuillez signaler ce problème à la communauté ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "La mise à jour a réussi. Vous êtes redirigé maintenant vers ownCloud.",
"ownCloud password reset" => "Réinitialisation de votre mot de passe Owncloud",
"Use the following link to reset your password: {link}" => "Utilisez le lien suivant pour réinitialiser votre mot de passe : {link}",
"You will receive a link to reset your password via Email." => "Vous allez recevoir un e-mail contenant un lien pour réinitialiser votre mot de passe.",
@@ -98,25 +120,6 @@
"Database tablespace" => "Tablespaces de la base de données",
"Database host" => "Serveur de la base de données",
"Finish setup" => "Terminer l'installation",
-"Sunday" => "Dimanche",
-"Monday" => "Lundi",
-"Tuesday" => "Mardi",
-"Wednesday" => "Mercredi",
-"Thursday" => "Jeudi",
-"Friday" => "Vendredi",
-"Saturday" => "Samedi",
-"January" => "janvier",
-"February" => "février",
-"March" => "mars",
-"April" => "avril",
-"May" => "mai",
-"June" => "juin",
-"July" => "juillet",
-"August" => "août",
-"September" => "septembre",
-"October" => "octobre",
-"November" => "novembre",
-"December" => "décembre",
"web services under your control" => "services web sous votre contrôle",
"Log out" => "Se déconnecter",
"Automatic logon rejected!" => "Connexion automatique rejetée !",
diff --git a/core/l10n/gl.php b/core/l10n/gl.php
index 2642debb28..e96d6962c9 100644
--- a/core/l10n/gl.php
+++ b/core/l10n/gl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Produciuse un erro ao engadir %s aos favoritos.",
"No categories selected for deletion." => "Non hai categorías seleccionadas para eliminar.",
"Error removing %s from favorites." => "Produciuse un erro ao eliminar %s dos favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Luns",
+"Tuesday" => "Martes",
+"Wednesday" => "Mércores",
+"Thursday" => "Xoves",
+"Friday" => "Venres",
+"Saturday" => "Sábado",
+"January" => "xaneiro",
+"February" => "febreiro",
+"March" => "marzo",
+"April" => "abril",
+"May" => "maio",
+"June" => "xuño",
+"July" => "xullo",
+"August" => "agosto",
+"September" => "setembro",
+"October" => "outubro",
+"November" => "novembro",
+"December" => "decembro",
"Settings" => "Configuracións",
"seconds ago" => "segundos atrás",
"1 minute ago" => "hai 1 minuto",
@@ -34,6 +53,7 @@
"Error" => "Erro",
"The app name is not specified." => "Non se especificou o nome do aplicativo.",
"The required file {file} is not installed!" => "Non está instalado o ficheiro {file} que se precisa",
+"Share" => "Compartir",
"Error while sharing" => "Produciuse un erro ao compartir",
"Error while unsharing" => "Produciuse un erro ao deixar de compartir",
"Error while changing permissions" => "Produciuse un erro ao cambiar os permisos",
@@ -98,25 +118,6 @@
"Database tablespace" => "Táboa de espazos da base de datos",
"Database host" => "Servidor da base de datos",
"Finish setup" => "Rematar a configuración",
-"Sunday" => "Domingo",
-"Monday" => "Luns",
-"Tuesday" => "Martes",
-"Wednesday" => "Mércores",
-"Thursday" => "Xoves",
-"Friday" => "Venres",
-"Saturday" => "Sábado",
-"January" => "xaneiro",
-"February" => "febreiro",
-"March" => "marzo",
-"April" => "abril",
-"May" => "maio",
-"June" => "xuño",
-"July" => "xullo",
-"August" => "agosto",
-"September" => "setembro",
-"October" => "outubro",
-"November" => "novembro",
-"December" => "decembro",
"web services under your control" => "servizos web baixo o seu control",
"Log out" => "Desconectar",
"Automatic logon rejected!" => "Rexeitouse a entrada automática",
diff --git a/core/l10n/he.php b/core/l10n/he.php
index 59eb3ae14d..b7292c6ede 100644
--- a/core/l10n/he.php
+++ b/core/l10n/he.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.",
"No categories selected for deletion." => "לא נבחרו קטגוריות למחיקה",
"Error removing %s from favorites." => "שגיאה בהסרת %s מהמועדפים.",
+"Sunday" => "יום ראשון",
+"Monday" => "יום שני",
+"Tuesday" => "יום שלישי",
+"Wednesday" => "יום רביעי",
+"Thursday" => "יום חמישי",
+"Friday" => "יום שישי",
+"Saturday" => "שבת",
+"January" => "ינואר",
+"February" => "פברואר",
+"March" => "מרץ",
+"April" => "אפריל",
+"May" => "מאי",
+"June" => "יוני",
+"July" => "יולי",
+"August" => "אוגוסט",
+"September" => "ספטמבר",
+"October" => "אוקטובר",
+"November" => "נובמבר",
+"December" => "דצמבר",
"Settings" => "הגדרות",
"seconds ago" => "שניות",
"1 minute ago" => "לפני דקה אחת",
@@ -34,6 +53,7 @@
"Error" => "שגיאה",
"The app name is not specified." => "שם היישום לא צוין.",
"The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!",
+"Share" => "שתף",
"Error while sharing" => "שגיאה במהלך השיתוף",
"Error while unsharing" => "שגיאה במהלך ביטול השיתוף",
"Error while changing permissions" => "שגיאה במהלך שינוי ההגדרות",
@@ -98,25 +118,6 @@
"Database tablespace" => "מרחב הכתובות של מסד הנתונים",
"Database host" => "שרת בסיס נתונים",
"Finish setup" => "סיום התקנה",
-"Sunday" => "יום ראשון",
-"Monday" => "יום שני",
-"Tuesday" => "יום שלישי",
-"Wednesday" => "יום רביעי",
-"Thursday" => "יום חמישי",
-"Friday" => "יום שישי",
-"Saturday" => "שבת",
-"January" => "ינואר",
-"February" => "פברואר",
-"March" => "מרץ",
-"April" => "אפריל",
-"May" => "מאי",
-"June" => "יוני",
-"July" => "יולי",
-"August" => "אוגוסט",
-"September" => "ספטמבר",
-"October" => "אוקטובר",
-"November" => "נובמבר",
-"December" => "דצמבר",
"web services under your control" => "שירותי רשת בשליטתך",
"Log out" => "התנתקות",
"Automatic logon rejected!" => "בקשת הכניסה האוטומטית נדחתה!",
diff --git a/core/l10n/hr.php b/core/l10n/hr.php
index 43dbbe51ae..78b767305a 100644
--- a/core/l10n/hr.php
+++ b/core/l10n/hr.php
@@ -2,6 +2,25 @@
"No category to add?" => "Nemate kategorija koje možete dodati?",
"This category already exists: " => "Ova kategorija već postoji: ",
"No categories selected for deletion." => "Nema odabranih kategorija za brisanje.",
+"Sunday" => "nedelja",
+"Monday" => "ponedeljak",
+"Tuesday" => "utorak",
+"Wednesday" => "srijeda",
+"Thursday" => "četvrtak",
+"Friday" => "petak",
+"Saturday" => "subota",
+"January" => "Siječanj",
+"February" => "Veljača",
+"March" => "Ožujak",
+"April" => "Travanj",
+"May" => "Svibanj",
+"June" => "Lipanj",
+"July" => "Srpanj",
+"August" => "Kolovoz",
+"September" => "Rujan",
+"October" => "Listopad",
+"November" => "Studeni",
+"December" => "Prosinac",
"Settings" => "Postavke",
"seconds ago" => "sekundi prije",
"today" => "danas",
@@ -16,6 +35,7 @@
"Yes" => "Da",
"Ok" => "U redu",
"Error" => "Pogreška",
+"Share" => "Podijeli",
"Error while sharing" => "Greška prilikom djeljenja",
"Error while unsharing" => "Greška prilikom isključivanja djeljenja",
"Error while changing permissions" => "Greška prilikom promjena prava",
@@ -67,25 +87,6 @@
"Database tablespace" => "Database tablespace",
"Database host" => "Poslužitelj baze podataka",
"Finish setup" => "Završi postavljanje",
-"Sunday" => "nedelja",
-"Monday" => "ponedeljak",
-"Tuesday" => "utorak",
-"Wednesday" => "srijeda",
-"Thursday" => "četvrtak",
-"Friday" => "petak",
-"Saturday" => "subota",
-"January" => "Siječanj",
-"February" => "Veljača",
-"March" => "Ožujak",
-"April" => "Travanj",
-"May" => "Svibanj",
-"June" => "Lipanj",
-"July" => "Srpanj",
-"August" => "Kolovoz",
-"September" => "Rujan",
-"October" => "Listopad",
-"November" => "Studeni",
-"December" => "Prosinac",
"web services under your control" => "web usluge pod vašom kontrolom",
"Log out" => "Odjava",
"Lost your password?" => "Izgubili ste lozinku?",
diff --git a/core/l10n/hu_HU.php b/core/l10n/hu_HU.php
index e03c6af27f..30ddc7b867 100644
--- a/core/l10n/hu_HU.php
+++ b/core/l10n/hu_HU.php
@@ -53,6 +53,7 @@
"Error" => "Hiba",
"The app name is not specified." => "Az alkalmazás neve nincs megadva.",
"The required file {file} is not installed!" => "A szükséges fájl: {file} nincs telepítve!",
+"Share" => "Megosztás",
"Error while sharing" => "Nem sikerült létrehozni a megosztást",
"Error while unsharing" => "Nem sikerült visszavonni a megosztást",
"Error while changing permissions" => "Nem sikerült módosítani a jogosultságokat",
diff --git a/core/l10n/ia.php b/core/l10n/ia.php
index d614f8381a..7f2eac1736 100644
--- a/core/l10n/ia.php
+++ b/core/l10n/ia.php
@@ -1,7 +1,27 @@
"Iste categoria jam existe:",
+"Sunday" => "Dominica",
+"Monday" => "Lunedi",
+"Tuesday" => "Martedi",
+"Wednesday" => "Mercuridi",
+"Thursday" => "Jovedi",
+"Friday" => "Venerdi",
+"Saturday" => "Sabbato",
+"January" => "januario",
+"February" => "Februario",
+"March" => "Martio",
+"April" => "April",
+"May" => "Mai",
+"June" => "Junio",
+"July" => "Julio",
+"August" => "Augusto",
+"September" => "Septembre",
+"October" => "Octobre",
+"November" => "Novembre",
+"December" => "Decembre",
"Settings" => "Configurationes",
"Cancel" => "Cancellar",
+"Share" => "Compartir",
"Password" => "Contrasigno",
"ownCloud password reset" => "Reinitialisation del contrasigno de ownCLoud",
"Username" => "Nomine de usator",
@@ -28,25 +48,6 @@
"Database password" => "Contrasigno de base de datos",
"Database name" => "Nomine de base de datos",
"Database host" => "Hospite de base de datos",
-"Sunday" => "Dominica",
-"Monday" => "Lunedi",
-"Tuesday" => "Martedi",
-"Wednesday" => "Mercuridi",
-"Thursday" => "Jovedi",
-"Friday" => "Venerdi",
-"Saturday" => "Sabbato",
-"January" => "januario",
-"February" => "Februario",
-"March" => "Martio",
-"April" => "April",
-"May" => "Mai",
-"June" => "Junio",
-"July" => "Julio",
-"August" => "Augusto",
-"September" => "Septembre",
-"October" => "Octobre",
-"November" => "Novembre",
-"December" => "Decembre",
"web services under your control" => "servicios web sub tu controlo",
"Log out" => "Clauder le session",
"Lost your password?" => "Tu perdeva le contrasigno?",
diff --git a/core/l10n/id.php b/core/l10n/id.php
index ee5fad9521..896d444e83 100644
--- a/core/l10n/id.php
+++ b/core/l10n/id.php
@@ -2,6 +2,25 @@
"No category to add?" => "Tidak ada kategori yang akan ditambahkan?",
"This category already exists: " => "Kategori ini sudah ada:",
"No categories selected for deletion." => "Tidak ada kategori terpilih untuk penghapusan.",
+"Sunday" => "minggu",
+"Monday" => "senin",
+"Tuesday" => "selasa",
+"Wednesday" => "rabu",
+"Thursday" => "kamis",
+"Friday" => "jumat",
+"Saturday" => "sabtu",
+"January" => "Januari",
+"February" => "Februari",
+"March" => "Maret",
+"April" => "April",
+"May" => "Mei",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "Agustus",
+"September" => "September",
+"October" => "Oktober",
+"November" => "Nopember",
+"December" => "Desember",
"Settings" => "Setelan",
"seconds ago" => "beberapa detik yang lalu",
"1 minute ago" => "1 menit lalu",
@@ -17,6 +36,7 @@
"Yes" => "Ya",
"Ok" => "Oke",
"Error" => "gagal",
+"Share" => "berbagi",
"Error while sharing" => "gagal ketika membagikan",
"Error while unsharing" => "gagal ketika membatalkan pembagian",
"Error while changing permissions" => "gagal ketika merubah perijinan",
@@ -73,25 +93,6 @@
"Database tablespace" => "tablespace basis data",
"Database host" => "Host database",
"Finish setup" => "Selesaikan instalasi",
-"Sunday" => "minggu",
-"Monday" => "senin",
-"Tuesday" => "selasa",
-"Wednesday" => "rabu",
-"Thursday" => "kamis",
-"Friday" => "jumat",
-"Saturday" => "sabtu",
-"January" => "Januari",
-"February" => "Februari",
-"March" => "Maret",
-"April" => "April",
-"May" => "Mei",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "Agustus",
-"September" => "September",
-"October" => "Oktober",
-"November" => "Nopember",
-"December" => "Desember",
"web services under your control" => "web service dibawah kontrol anda",
"Log out" => "Keluar",
"Automatic logon rejected!" => "login otomatis ditolak!",
diff --git a/core/l10n/is.php b/core/l10n/is.php
index e810eb359f..98766efc2c 100644
--- a/core/l10n/is.php
+++ b/core/l10n/is.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Villa við að bæta %s við eftirlæti.",
"No categories selected for deletion." => "Enginn flokkur valinn til eyðingar.",
"Error removing %s from favorites." => "Villa við að fjarlægja %s úr eftirlæti.",
+"Sunday" => "Sunnudagur",
+"Monday" => "Mánudagur",
+"Tuesday" => "Þriðjudagur",
+"Wednesday" => "Miðvikudagur",
+"Thursday" => "Fimmtudagur",
+"Friday" => "Föstudagur",
+"Saturday" => "Laugardagur",
+"January" => "Janúar",
+"February" => "Febrúar",
+"March" => "Mars",
+"April" => "Apríl",
+"May" => "Maí",
+"June" => "Júní",
+"July" => "Júlí",
+"August" => "Ágúst",
+"September" => "September",
+"October" => "Október",
+"November" => "Nóvember",
+"December" => "Desember",
"Settings" => "Stillingar",
"seconds ago" => "sek síðan",
"1 minute ago" => "1 min síðan",
@@ -34,6 +53,7 @@
"Error" => "Villa",
"The app name is not specified." => "Nafn forrits ekki tilgreint",
"The required file {file} is not installed!" => "Umbeðina skráin {file} ekki tiltæk!",
+"Share" => "Deila",
"Error while sharing" => "Villa við deilingu",
"Error while unsharing" => "Villa við að hætta deilingu",
"Error while changing permissions" => "Villa við að breyta aðgangsheimildum",
@@ -98,25 +118,6 @@
"Database tablespace" => "Töflusvæði gagnagrunns",
"Database host" => "Netþjónn gagnagrunns",
"Finish setup" => "Virkja uppsetningu",
-"Sunday" => "Sunnudagur",
-"Monday" => "Mánudagur",
-"Tuesday" => "Þriðjudagur",
-"Wednesday" => "Miðvikudagur",
-"Thursday" => "Fimmtudagur",
-"Friday" => "Föstudagur",
-"Saturday" => "Laugardagur",
-"January" => "Janúar",
-"February" => "Febrúar",
-"March" => "Mars",
-"April" => "Apríl",
-"May" => "Maí",
-"June" => "Júní",
-"July" => "Júlí",
-"August" => "Ágúst",
-"September" => "September",
-"October" => "Október",
-"November" => "Nóvember",
-"December" => "Desember",
"web services under your control" => "vefþjónusta undir þinni stjórn",
"Log out" => "Útskrá",
"Automatic logon rejected!" => "Sjálfvirkri innskráningu hafnað!",
diff --git a/core/l10n/it.php b/core/l10n/it.php
index 89b6a7952a..82451e955e 100644
--- a/core/l10n/it.php
+++ b/core/l10n/it.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Errore durante l'aggiunta di %s ai preferiti.",
"No categories selected for deletion." => "Nessuna categoria selezionata per l'eliminazione.",
"Error removing %s from favorites." => "Errore durante la rimozione di %s dai preferiti.",
+"Sunday" => "Domenica",
+"Monday" => "Lunedì",
+"Tuesday" => "Martedì",
+"Wednesday" => "Mercoledì",
+"Thursday" => "Giovedì",
+"Friday" => "Venerdì",
+"Saturday" => "Sabato",
+"January" => "Gennaio",
+"February" => "Febbraio",
+"March" => "Marzo",
+"April" => "Aprile",
+"May" => "Maggio",
+"June" => "Giugno",
+"July" => "Luglio",
+"August" => "Agosto",
+"September" => "Settembre",
+"October" => "Ottobre",
+"November" => "Novembre",
+"December" => "Dicembre",
"Settings" => "Impostazioni",
"seconds ago" => "secondi fa",
"1 minute ago" => "Un minuto fa",
@@ -34,6 +53,8 @@
"Error" => "Errore",
"The app name is not specified." => "Il nome dell'applicazione non è specificato.",
"The required file {file} is not installed!" => "Il file richiesto {file} non è installato!",
+"Share" => "Condividi",
+"Shared" => "Condivisi",
"Error while sharing" => "Errore durante la condivisione",
"Error while unsharing" => "Errore durante la rimozione della condivisione",
"Error while changing permissions" => "Errore durante la modifica dei permessi",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Errore durante l'impostazione della data di scadenza",
"Sending ..." => "Invio in corso...",
"Email sent" => "Messaggio inviato",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "L'aggiornamento non è riuscito. Segnala il problema alla comunità di ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "L'aggiornamento è stato effettuato correttamente. Stai per essere reindirizzato a ownCloud.",
"ownCloud password reset" => "Ripristino password di ownCloud",
"Use the following link to reset your password: {link}" => "Usa il collegamento seguente per ripristinare la password: {link}",
"You will receive a link to reset your password via Email." => "Riceverai un collegamento per ripristinare la tua password via email",
@@ -98,25 +121,6 @@
"Database tablespace" => "Spazio delle tabelle del database",
"Database host" => "Host del database",
"Finish setup" => "Termina la configurazione",
-"Sunday" => "Domenica",
-"Monday" => "Lunedì",
-"Tuesday" => "Martedì",
-"Wednesday" => "Mercoledì",
-"Thursday" => "Giovedì",
-"Friday" => "Venerdì",
-"Saturday" => "Sabato",
-"January" => "Gennaio",
-"February" => "Febbraio",
-"March" => "Marzo",
-"April" => "Aprile",
-"May" => "Maggio",
-"June" => "Giugno",
-"July" => "Luglio",
-"August" => "Agosto",
-"September" => "Settembre",
-"October" => "Ottobre",
-"November" => "Novembre",
-"December" => "Dicembre",
"web services under your control" => "servizi web nelle tue mani",
"Log out" => "Esci",
"Automatic logon rejected!" => "Accesso automatico rifiutato.",
diff --git a/core/l10n/ja_JP.php b/core/l10n/ja_JP.php
index 7d4baf9458..155c201d9b 100644
--- a/core/l10n/ja_JP.php
+++ b/core/l10n/ja_JP.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "お気に入りに %s を追加エラー",
"No categories selected for deletion." => "削除するカテゴリが選択されていません。",
"Error removing %s from favorites." => "お気に入りから %s の削除エラー",
+"Sunday" => "日",
+"Monday" => "月",
+"Tuesday" => "火",
+"Wednesday" => "水",
+"Thursday" => "木",
+"Friday" => "金",
+"Saturday" => "土",
+"January" => "1月",
+"February" => "2月",
+"March" => "3月",
+"April" => "4月",
+"May" => "5月",
+"June" => "6月",
+"July" => "7月",
+"August" => "8月",
+"September" => "9月",
+"October" => "10月",
+"November" => "11月",
+"December" => "12月",
"Settings" => "設定",
"seconds ago" => "秒前",
"1 minute ago" => "1 分前",
@@ -34,6 +53,8 @@
"Error" => "エラー",
"The app name is not specified." => "アプリ名がしていされていません。",
"The required file {file} is not installed!" => "必要なファイル {file} がインストールされていません!",
+"Share" => "共有",
+"Shared" => "共有中",
"Error while sharing" => "共有でエラー発生",
"Error while unsharing" => "共有解除でエラー発生",
"Error while changing permissions" => "権限変更でエラー発生",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "有効期限の設定でエラー発生",
"Sending ..." => "送信中...",
"Email sent" => "メールを送信しました",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "更新に成功しました。この問題を ownCloud community にレポートしてください。",
+"The update was successful. Redirecting you to ownCloud now." => "更新に成功しました。今すぐownCloudにリダイレクトします。",
"ownCloud password reset" => "ownCloudのパスワードをリセットします",
"Use the following link to reset your password: {link}" => "パスワードをリセットするには次のリンクをクリックして下さい: {link}",
"You will receive a link to reset your password via Email." => "メールでパスワードをリセットするリンクが届きます。",
@@ -98,25 +121,6 @@
"Database tablespace" => "データベースの表領域",
"Database host" => "データベースのホスト名",
"Finish setup" => "セットアップを完了します",
-"Sunday" => "日",
-"Monday" => "月",
-"Tuesday" => "火",
-"Wednesday" => "水",
-"Thursday" => "木",
-"Friday" => "金",
-"Saturday" => "土",
-"January" => "1月",
-"February" => "2月",
-"March" => "3月",
-"April" => "4月",
-"May" => "5月",
-"June" => "6月",
-"July" => "7月",
-"August" => "8月",
-"September" => "9月",
-"October" => "10月",
-"November" => "11月",
-"December" => "12月",
"web services under your control" => "管理下にあるウェブサービス",
"Log out" => "ログアウト",
"Automatic logon rejected!" => "自動ログインは拒否されました!",
diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php
index aafdacab4c..ab4045601f 100644
--- a/core/l10n/ka_GE.php
+++ b/core/l10n/ka_GE.php
@@ -2,6 +2,25 @@
"No category to add?" => "არ არის კატეგორია დასამატებლად?",
"This category already exists: " => "კატეგორია უკვე არსებობს",
"No categories selected for deletion." => "სარედაქტირებელი კატეგორია არ არის არჩეული ",
+"Sunday" => "კვირა",
+"Monday" => "ორშაბათი",
+"Tuesday" => "სამშაბათი",
+"Wednesday" => "ოთხშაბათი",
+"Thursday" => "ხუთშაბათი",
+"Friday" => "პარასკევი",
+"Saturday" => "შაბათი",
+"January" => "იანვარი",
+"February" => "თებერვალი",
+"March" => "მარტი",
+"April" => "აპრილი",
+"May" => "მაისი",
+"June" => "ივნისი",
+"July" => "ივლისი",
+"August" => "აგვისტო",
+"September" => "სექტემბერი",
+"October" => "ოქტომბერი",
+"November" => "ნოემბერი",
+"December" => "დეკემბერი",
"Settings" => "პარამეტრები",
"seconds ago" => "წამის წინ",
"1 minute ago" => "1 წუთის წინ",
@@ -19,6 +38,7 @@
"Yes" => "კი",
"Ok" => "დიახ",
"Error" => "შეცდომა",
+"Share" => "გაზიარება",
"Error while sharing" => "შეცდომა გაზიარების დროს",
"Error while unsharing" => "შეცდომა გაზიარების გაუქმების დროს",
"Error while changing permissions" => "შეცდომა დაშვების ცვლილების დროს",
@@ -73,25 +93,6 @@
"Database tablespace" => "ბაზის ცხრილის ზომა",
"Database host" => "ბაზის ჰოსტი",
"Finish setup" => "კონფიგურაციის დასრულება",
-"Sunday" => "კვირა",
-"Monday" => "ორშაბათი",
-"Tuesday" => "სამშაბათი",
-"Wednesday" => "ოთხშაბათი",
-"Thursday" => "ხუთშაბათი",
-"Friday" => "პარასკევი",
-"Saturday" => "შაბათი",
-"January" => "იანვარი",
-"February" => "თებერვალი",
-"March" => "მარტი",
-"April" => "აპრილი",
-"May" => "მაისი",
-"June" => "ივნისი",
-"July" => "ივლისი",
-"August" => "აგვისტო",
-"September" => "სექტემბერი",
-"October" => "ოქტომბერი",
-"November" => "ნოემბერი",
-"December" => "დეკემბერი",
"web services under your control" => "თქვენი კონტროლის ქვეშ მყოფი ვებ სერვისები",
"Log out" => "გამოსვლა",
"Automatic logon rejected!" => "ავტომატური შესვლა უარყოფილია!",
diff --git a/core/l10n/ko.php b/core/l10n/ko.php
index 3db5a50117..cc999d0ac1 100644
--- a/core/l10n/ko.php
+++ b/core/l10n/ko.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "책갈피에 %s을(를) 추가할 수 없었습니다.",
"No categories selected for deletion." => "삭제할 분류를 선택하지 않았습니다.",
"Error removing %s from favorites." => "책갈피에서 %s을(를) 삭제할 수 없었습니다.",
+"Sunday" => "일요일",
+"Monday" => "월요일",
+"Tuesday" => "화요일",
+"Wednesday" => "수요일",
+"Thursday" => "목요일",
+"Friday" => "금요일",
+"Saturday" => "토요일",
+"January" => "1월",
+"February" => "2월",
+"March" => "3월",
+"April" => "4월",
+"May" => "5월",
+"June" => "6월",
+"July" => "7월",
+"August" => "8월",
+"September" => "9월",
+"October" => "10월",
+"November" => "11월",
+"December" => "12월",
"Settings" => "설정",
"seconds ago" => "초 전",
"1 minute ago" => "1분 전",
@@ -34,6 +53,7 @@
"Error" => "오류",
"The app name is not specified." => "앱 이름이 지정되지 않았습니다.",
"The required file {file} is not installed!" => "필요한 파일 {file}이(가) 설치되지 않았습니다!",
+"Share" => "공유",
"Error while sharing" => "공유하는 중 오류 발생",
"Error while unsharing" => "공유 해제하는 중 오류 발생",
"Error while changing permissions" => "권한 변경하는 중 오류 발생",
@@ -98,25 +118,6 @@
"Database tablespace" => "데이터베이스 테이블 공간",
"Database host" => "데이터베이스 호스트",
"Finish setup" => "설치 완료",
-"Sunday" => "일요일",
-"Monday" => "월요일",
-"Tuesday" => "화요일",
-"Wednesday" => "수요일",
-"Thursday" => "목요일",
-"Friday" => "금요일",
-"Saturday" => "토요일",
-"January" => "1월",
-"February" => "2월",
-"March" => "3월",
-"April" => "4월",
-"May" => "5월",
-"June" => "6월",
-"July" => "7월",
-"August" => "8월",
-"September" => "9월",
-"October" => "10월",
-"November" => "11월",
-"December" => "12월",
"web services under your control" => "내가 관리하는 웹 서비스",
"Log out" => "로그아웃",
"Automatic logon rejected!" => "자동 로그인이 거부되었습니다!",
diff --git a/core/l10n/lb.php b/core/l10n/lb.php
index 85d83d1f95..4069a77836 100644
--- a/core/l10n/lb.php
+++ b/core/l10n/lb.php
@@ -35,6 +35,7 @@
"Yes" => "Jo",
"Ok" => "OK",
"Error" => "Fehler",
+"Share" => "Deelen",
"Password" => "Passwuert",
"Unshare" => "Net méi deelen",
"create" => "erstellen",
diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php
index ec15c64619..c2dc47c826 100644
--- a/core/l10n/lt_LT.php
+++ b/core/l10n/lt_LT.php
@@ -2,6 +2,25 @@
"No category to add?" => "Nepridėsite jokios kategorijos?",
"This category already exists: " => "Tokia kategorija jau yra:",
"No categories selected for deletion." => "Trynimui nepasirinkta jokia kategorija.",
+"Sunday" => "Sekmadienis",
+"Monday" => "Pirmadienis",
+"Tuesday" => "Antradienis",
+"Wednesday" => "Trečiadienis",
+"Thursday" => "Ketvirtadienis",
+"Friday" => "Penktadienis",
+"Saturday" => "Šeštadienis",
+"January" => "Sausis",
+"February" => "Vasaris",
+"March" => "Kovas",
+"April" => "Balandis",
+"May" => "Gegužė",
+"June" => "Birželis",
+"July" => "Liepa",
+"August" => "Rugpjūtis",
+"September" => "Rugsėjis",
+"October" => "Spalis",
+"November" => "Lapkritis",
+"December" => "Gruodis",
"Settings" => "Nustatymai",
"seconds ago" => "prieš sekundę",
"1 minute ago" => "Prieš 1 minutę",
@@ -19,6 +38,7 @@
"Yes" => "Taip",
"Ok" => "Gerai",
"Error" => "Klaida",
+"Share" => "Dalintis",
"Error while sharing" => "Klaida, dalijimosi metu",
"Error while unsharing" => "Klaida, kai atšaukiamas dalijimasis",
"Error while changing permissions" => "Klaida, keičiant privilegijas",
@@ -77,25 +97,6 @@
"Database tablespace" => "Duomenų bazės loginis saugojimas",
"Database host" => "Duomenų bazės serveris",
"Finish setup" => "Baigti diegimą",
-"Sunday" => "Sekmadienis",
-"Monday" => "Pirmadienis",
-"Tuesday" => "Antradienis",
-"Wednesday" => "Trečiadienis",
-"Thursday" => "Ketvirtadienis",
-"Friday" => "Penktadienis",
-"Saturday" => "Šeštadienis",
-"January" => "Sausis",
-"February" => "Vasaris",
-"March" => "Kovas",
-"April" => "Balandis",
-"May" => "Gegužė",
-"June" => "Birželis",
-"July" => "Liepa",
-"August" => "Rugpjūtis",
-"September" => "Rugsėjis",
-"October" => "Spalis",
-"November" => "Lapkritis",
-"December" => "Gruodis",
"web services under your control" => "jūsų valdomos web paslaugos",
"Log out" => "Atsijungti",
"Automatic logon rejected!" => "Automatinis prisijungimas atmestas!",
diff --git a/core/l10n/lv.php b/core/l10n/lv.php
index 66866249e7..dd63ab6c90 100644
--- a/core/l10n/lv.php
+++ b/core/l10n/lv.php
@@ -21,6 +21,7 @@
"Settings" => "Iestatījumi",
"Cancel" => "Atcelt",
"Error" => "Kļūme",
+"Share" => "Līdzdalīt",
"Password" => "Parole",
"Unshare" => "Pārtraukt līdzdalīšanu",
"Use the following link to reset your password: {link}" => "Izmantojiet šo linku lai mainītu paroli",
diff --git a/core/l10n/mk.php b/core/l10n/mk.php
index d8fa16d44f..0b202fa666 100644
--- a/core/l10n/mk.php
+++ b/core/l10n/mk.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Грешка при додавање %s во омилени.",
"No categories selected for deletion." => "Не е одбрана категорија за бришење.",
"Error removing %s from favorites." => "Грешка при бришење на %s од омилени.",
+"Sunday" => "Недела",
+"Monday" => "Понеделник",
+"Tuesday" => "Вторник",
+"Wednesday" => "Среда",
+"Thursday" => "Четврток",
+"Friday" => "Петок",
+"Saturday" => "Сабота",
+"January" => "Јануари",
+"February" => "Февруари",
+"March" => "Март",
+"April" => "Април",
+"May" => "Мај",
+"June" => "Јуни",
+"July" => "Јули",
+"August" => "Август",
+"September" => "Септември",
+"October" => "Октомври",
+"November" => "Ноември",
+"December" => "Декември",
"Settings" => "Поставки",
"seconds ago" => "пред секунди",
"1 minute ago" => "пред 1 минута",
@@ -34,6 +53,7 @@
"Error" => "Грешка",
"The app name is not specified." => "Името на апликацијата не е специфицирано.",
"The required file {file} is not installed!" => "Задолжителната датотека {file} не е инсталирана!",
+"Share" => "Сподели",
"Error while sharing" => "Грешка при споделување",
"Error while unsharing" => "Грешка при прекин на споделување",
"Error while changing permissions" => "Грешка при промена на привилегии",
@@ -98,25 +118,6 @@
"Database tablespace" => "Табела во базата на податоци",
"Database host" => "Сервер со база",
"Finish setup" => "Заврши го подесувањето",
-"Sunday" => "Недела",
-"Monday" => "Понеделник",
-"Tuesday" => "Вторник",
-"Wednesday" => "Среда",
-"Thursday" => "Четврток",
-"Friday" => "Петок",
-"Saturday" => "Сабота",
-"January" => "Јануари",
-"February" => "Февруари",
-"March" => "Март",
-"April" => "Април",
-"May" => "Мај",
-"June" => "Јуни",
-"July" => "Јули",
-"August" => "Август",
-"September" => "Септември",
-"October" => "Октомври",
-"November" => "Ноември",
-"December" => "Декември",
"web services under your control" => "веб сервиси под Ваша контрола",
"Log out" => "Одјава",
"Automatic logon rejected!" => "Одбиена автоматска најава!",
diff --git a/core/l10n/ms_MY.php b/core/l10n/ms_MY.php
index b08ccecf61..477e82ea9f 100644
--- a/core/l10n/ms_MY.php
+++ b/core/l10n/ms_MY.php
@@ -2,12 +2,32 @@
"No category to add?" => "Tiada kategori untuk di tambah?",
"This category already exists: " => "Kategori ini telah wujud",
"No categories selected for deletion." => "tiada kategori dipilih untuk penghapusan",
+"Sunday" => "Ahad",
+"Monday" => "Isnin",
+"Tuesday" => "Selasa",
+"Wednesday" => "Rabu",
+"Thursday" => "Khamis",
+"Friday" => "Jumaat",
+"Saturday" => "Sabtu",
+"January" => "Januari",
+"February" => "Februari",
+"March" => "Mac",
+"April" => "April",
+"May" => "Mei",
+"June" => "Jun",
+"July" => "Julai",
+"August" => "Ogos",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Disember",
"Settings" => "Tetapan",
"Cancel" => "Batal",
"No" => "Tidak",
"Yes" => "Ya",
"Ok" => "Ok",
"Error" => "Ralat",
+"Share" => "Kongsi",
"Password" => "Kata laluan",
"ownCloud password reset" => "Set semula kata lalaun ownCloud",
"Use the following link to reset your password: {link}" => "Guna pautan berikut untuk menetapkan semula kata laluan anda: {link}",
@@ -38,25 +58,6 @@
"Database name" => "Nama pangkalan data",
"Database host" => "Hos pangkalan data",
"Finish setup" => "Setup selesai",
-"Sunday" => "Ahad",
-"Monday" => "Isnin",
-"Tuesday" => "Selasa",
-"Wednesday" => "Rabu",
-"Thursday" => "Khamis",
-"Friday" => "Jumaat",
-"Saturday" => "Sabtu",
-"January" => "Januari",
-"February" => "Februari",
-"March" => "Mac",
-"April" => "April",
-"May" => "Mei",
-"June" => "Jun",
-"July" => "Julai",
-"August" => "Ogos",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Disember",
"web services under your control" => "Perkhidmatan web di bawah kawalan anda",
"Log out" => "Log keluar",
"Lost your password?" => "Hilang kata laluan?",
diff --git a/core/l10n/nb_NO.php b/core/l10n/nb_NO.php
index d985e454b7..65d6ea00cc 100644
--- a/core/l10n/nb_NO.php
+++ b/core/l10n/nb_NO.php
@@ -2,6 +2,25 @@
"No category to add?" => "Ingen kategorier å legge til?",
"This category already exists: " => "Denne kategorien finnes allerede:",
"No categories selected for deletion." => "Ingen kategorier merket for sletting.",
+"Sunday" => "Søndag",
+"Monday" => "Mandag",
+"Tuesday" => "Tirsdag",
+"Wednesday" => "Onsdag",
+"Thursday" => "Torsdag",
+"Friday" => "Fredag",
+"Saturday" => "Lørdag",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "Mars",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Desember",
"Settings" => "Innstillinger",
"seconds ago" => "sekunder siden",
"1 minute ago" => "1 minutt siden",
@@ -22,6 +41,7 @@
"Yes" => "Ja",
"Ok" => "Ok",
"Error" => "Feil",
+"Share" => "Del",
"Error while sharing" => "Feil under deling",
"Share with" => "Del med",
"Share with link" => "Del med link",
@@ -73,25 +93,6 @@
"Database tablespace" => "Database tabellområde",
"Database host" => "Databasevert",
"Finish setup" => "Fullfør oppsetting",
-"Sunday" => "Søndag",
-"Monday" => "Mandag",
-"Tuesday" => "Tirsdag",
-"Wednesday" => "Onsdag",
-"Thursday" => "Torsdag",
-"Friday" => "Fredag",
-"Saturday" => "Lørdag",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "Mars",
-"April" => "April",
-"May" => "Mai",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Desember",
"web services under your control" => "nettjenester under din kontroll",
"Log out" => "Logg ut",
"Automatic logon rejected!" => "Automatisk pålogging avvist!",
diff --git a/core/l10n/nl.php b/core/l10n/nl.php
index 739d8181d6..91ab7827fd 100644
--- a/core/l10n/nl.php
+++ b/core/l10n/nl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Toevoegen van %s aan favorieten is mislukt.",
"No categories selected for deletion." => "Geen categorie geselecteerd voor verwijdering.",
"Error removing %s from favorites." => "Verwijderen %s van favorieten is mislukt.",
+"Sunday" => "Zondag",
+"Monday" => "Maandag",
+"Tuesday" => "Dinsdag",
+"Wednesday" => "Woensdag",
+"Thursday" => "Donderdag",
+"Friday" => "Vrijdag",
+"Saturday" => "Zaterdag",
+"January" => "januari",
+"February" => "februari",
+"March" => "maart",
+"April" => "april",
+"May" => "mei",
+"June" => "juni",
+"July" => "juli",
+"August" => "augustus",
+"September" => "september",
+"October" => "oktober",
+"November" => "november",
+"December" => "december",
"Settings" => "Instellingen",
"seconds ago" => "seconden geleden",
"1 minute ago" => "1 minuut geleden",
@@ -34,6 +53,7 @@
"Error" => "Fout",
"The app name is not specified." => "De app naam is niet gespecificeerd.",
"The required file {file} is not installed!" => "Het vereiste bestand {file} is niet geïnstalleerd!",
+"Share" => "Delen",
"Error while sharing" => "Fout tijdens het delen",
"Error while unsharing" => "Fout tijdens het stoppen met delen",
"Error while changing permissions" => "Fout tijdens het veranderen van permissies",
@@ -98,25 +118,6 @@
"Database tablespace" => "Database tablespace",
"Database host" => "Database server",
"Finish setup" => "Installatie afronden",
-"Sunday" => "Zondag",
-"Monday" => "Maandag",
-"Tuesday" => "Dinsdag",
-"Wednesday" => "Woensdag",
-"Thursday" => "Donderdag",
-"Friday" => "Vrijdag",
-"Saturday" => "Zaterdag",
-"January" => "januari",
-"February" => "februari",
-"March" => "maart",
-"April" => "april",
-"May" => "mei",
-"June" => "juni",
-"July" => "juli",
-"August" => "augustus",
-"September" => "september",
-"October" => "oktober",
-"November" => "november",
-"December" => "december",
"web services under your control" => "Webdiensten in eigen beheer",
"Log out" => "Afmelden",
"Automatic logon rejected!" => "Automatische aanmelding geweigerd!",
diff --git a/core/l10n/nn_NO.php b/core/l10n/nn_NO.php
index 8aaf0b705c..61b2baffbf 100644
--- a/core/l10n/nn_NO.php
+++ b/core/l10n/nn_NO.php
@@ -1,4 +1,23 @@
"Søndag",
+"Monday" => "Måndag",
+"Tuesday" => "Tysdag",
+"Wednesday" => "Onsdag",
+"Thursday" => "Torsdag",
+"Friday" => "Fredag",
+"Saturday" => "Laurdag",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "Mars",
+"April" => "April",
+"May" => "Mai",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "August",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "Desember",
"Settings" => "Innstillingar",
"Cancel" => "Kanseller",
"Error" => "Feil",
@@ -28,25 +47,6 @@
"Database name" => "Databasenamn",
"Database host" => "Databasetenar",
"Finish setup" => "Fullfør oppsettet",
-"Sunday" => "Søndag",
-"Monday" => "Måndag",
-"Tuesday" => "Tysdag",
-"Wednesday" => "Onsdag",
-"Thursday" => "Torsdag",
-"Friday" => "Fredag",
-"Saturday" => "Laurdag",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "Mars",
-"April" => "April",
-"May" => "Mai",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "August",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "Desember",
"web services under your control" => "Vev tjenester under din kontroll",
"Log out" => "Logg ut",
"Lost your password?" => "Gløymt passordet?",
diff --git a/core/l10n/oc.php b/core/l10n/oc.php
index be6d5aec28..5b399dd826 100644
--- a/core/l10n/oc.php
+++ b/core/l10n/oc.php
@@ -2,6 +2,25 @@
"No category to add?" => "Pas de categoria d'ajustar ?",
"This category already exists: " => "La categoria exista ja :",
"No categories selected for deletion." => "Pas de categorias seleccionadas per escafar.",
+"Sunday" => "Dimenge",
+"Monday" => "Diluns",
+"Tuesday" => "Dimarç",
+"Wednesday" => "Dimecres",
+"Thursday" => "Dijòus",
+"Friday" => "Divendres",
+"Saturday" => "Dissabte",
+"January" => "Genièr",
+"February" => "Febrièr",
+"March" => "Març",
+"April" => "Abril",
+"May" => "Mai",
+"June" => "Junh",
+"July" => "Julhet",
+"August" => "Agost",
+"September" => "Septembre",
+"October" => "Octobre",
+"November" => "Novembre",
+"December" => "Decembre",
"Settings" => "Configuracion",
"seconds ago" => "segonda a",
"1 minute ago" => "1 minuta a",
@@ -17,6 +36,7 @@
"Yes" => "Òc",
"Ok" => "D'accòrdi",
"Error" => "Error",
+"Share" => "Parteja",
"Error while sharing" => "Error al partejar",
"Error while unsharing" => "Error al non partejar",
"Error while changing permissions" => "Error al cambiar permissions",
@@ -69,25 +89,6 @@
"Database tablespace" => "Espandi de taula de basa de donadas",
"Database host" => "Òste de basa de donadas",
"Finish setup" => "Configuracion acabada",
-"Sunday" => "Dimenge",
-"Monday" => "Diluns",
-"Tuesday" => "Dimarç",
-"Wednesday" => "Dimecres",
-"Thursday" => "Dijòus",
-"Friday" => "Divendres",
-"Saturday" => "Dissabte",
-"January" => "Genièr",
-"February" => "Febrièr",
-"March" => "Març",
-"April" => "Abril",
-"May" => "Mai",
-"June" => "Junh",
-"July" => "Julhet",
-"August" => "Agost",
-"September" => "Septembre",
-"October" => "Octobre",
-"November" => "Novembre",
-"December" => "Decembre",
"web services under your control" => "Services web jos ton contraròtle",
"Log out" => "Sortida",
"Lost your password?" => "L'as perdut lo senhal ?",
diff --git a/core/l10n/pl.php b/core/l10n/pl.php
index 3324040209..1376fa1359 100644
--- a/core/l10n/pl.php
+++ b/core/l10n/pl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Błąd dodania %s do ulubionych.",
"No categories selected for deletion." => "Nie ma kategorii zaznaczonych do usunięcia.",
"Error removing %s from favorites." => "Błąd usunięcia %s z ulubionych.",
+"Sunday" => "Niedziela",
+"Monday" => "Poniedziałek",
+"Tuesday" => "Wtorek",
+"Wednesday" => "Środa",
+"Thursday" => "Czwartek",
+"Friday" => "Piątek",
+"Saturday" => "Sobota",
+"January" => "Styczeń",
+"February" => "Luty",
+"March" => "Marzec",
+"April" => "Kwiecień",
+"May" => "Maj",
+"June" => "Czerwiec",
+"July" => "Lipiec",
+"August" => "Sierpień",
+"September" => "Wrzesień",
+"October" => "Październik",
+"November" => "Listopad",
+"December" => "Grudzień",
"Settings" => "Ustawienia",
"seconds ago" => "sekund temu",
"1 minute ago" => "1 minute temu",
@@ -34,6 +53,8 @@
"Error" => "Błąd",
"The app name is not specified." => "Nazwa aplikacji nie jest określona.",
"The required file {file} is not installed!" => "Żądany plik {file} nie jest zainstalowany!",
+"Share" => "Udostępnij",
+"Shared" => "Udostępniono",
"Error while sharing" => "Błąd podczas współdzielenia",
"Error while unsharing" => "Błąd podczas zatrzymywania współdzielenia",
"Error while changing permissions" => "Błąd przy zmianie uprawnień",
@@ -98,25 +119,6 @@
"Database tablespace" => "Obszar tabel bazy danych",
"Database host" => "Komputer bazy danych",
"Finish setup" => "Zakończ konfigurowanie",
-"Sunday" => "Niedziela",
-"Monday" => "Poniedziałek",
-"Tuesday" => "Wtorek",
-"Wednesday" => "Środa",
-"Thursday" => "Czwartek",
-"Friday" => "Piątek",
-"Saturday" => "Sobota",
-"January" => "Styczeń",
-"February" => "Luty",
-"March" => "Marzec",
-"April" => "Kwiecień",
-"May" => "Maj",
-"June" => "Czerwiec",
-"July" => "Lipiec",
-"August" => "Sierpień",
-"September" => "Wrzesień",
-"October" => "Październik",
-"November" => "Listopad",
-"December" => "Grudzień",
"web services under your control" => "usługi internetowe pod kontrolą",
"Log out" => "Wylogowuje użytkownika",
"Automatic logon rejected!" => "Automatyczne logowanie odrzucone!",
diff --git a/core/l10n/pt_BR.php b/core/l10n/pt_BR.php
index 3b11965026..929f298c4c 100644
--- a/core/l10n/pt_BR.php
+++ b/core/l10n/pt_BR.php
@@ -1,4 +1,8 @@
"O usuário %s compartilhou um arquivo com você",
+"User %s shared a folder with you" => "O usuário %s compartilhou uma pasta com você",
+"User %s shared the file \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você o arquivo \"%s\", que está disponível para download em: %s",
+"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O usuário %s compartilhou com você a pasta \"%s\", que está disponível para download em: %s",
"Category type not provided." => "Tipo de categoria não fornecido.",
"No category to add?" => "Nenhuma categoria adicionada?",
"This category already exists: " => "Essa categoria já existe",
@@ -7,6 +11,25 @@
"Error adding %s to favorites." => "Erro ao adicionar %s aos favoritos.",
"No categories selected for deletion." => "Nenhuma categoria selecionada para deletar.",
"Error removing %s from favorites." => "Erro ao remover %s dos favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Segunda-feira",
+"Tuesday" => "Terça-feira",
+"Wednesday" => "Quarta-feira",
+"Thursday" => "Quinta-feira",
+"Friday" => "Sexta-feira",
+"Saturday" => "Sábado",
+"January" => "Janeiro",
+"February" => "Fevereiro",
+"March" => "Março",
+"April" => "Abril",
+"May" => "Maio",
+"June" => "Junho",
+"July" => "Julho",
+"August" => "Agosto",
+"September" => "Setembro",
+"October" => "Outubro",
+"November" => "Novembro",
+"December" => "Dezembro",
"Settings" => "Configurações",
"seconds ago" => "segundos atrás",
"1 minute ago" => "1 minuto atrás",
@@ -30,6 +53,8 @@
"Error" => "Erro",
"The app name is not specified." => "O nome do app não foi especificado.",
"The required file {file} is not installed!" => "O arquivo {file} necessário não está instalado!",
+"Share" => "Compartilhar",
+"Shared" => "Compartilhados",
"Error while sharing" => "Erro ao compartilhar",
"Error while unsharing" => "Erro ao descompartilhar",
"Error while changing permissions" => "Erro ao mudar permissões",
@@ -39,6 +64,8 @@
"Share with link" => "Compartilhar com link",
"Password protect" => "Proteger com senha",
"Password" => "Senha",
+"Email link to person" => "Enviar link por e-mail",
+"Send" => "Enviar",
"Set expiration date" => "Definir data de expiração",
"Expiration date" => "Data de expiração",
"Share via email:" => "Compartilhar via e-mail:",
@@ -55,6 +82,10 @@
"Password protected" => "Protegido com senha",
"Error unsetting expiration date" => "Erro ao remover data de expiração",
"Error setting expiration date" => "Erro ao definir data de expiração",
+"Sending ..." => "Enviando ...",
+"Email sent" => "E-mail enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "A atualização falhou. Por favor, relate este problema para a comunidade ownCloud.",
+"The update was successful. Redirecting you to ownCloud now." => "A atualização teve êxito. Você será redirecionado ao ownCloud agora.",
"ownCloud password reset" => "Redefinir senha ownCloud",
"Use the following link to reset your password: {link}" => "Use o seguinte link para redefinir sua senha: {link}",
"You will receive a link to reset your password via Email." => "Você receberá um link para redefinir sua senha via e-mail.",
@@ -90,25 +121,6 @@
"Database tablespace" => "Espaço de tabela do banco de dados",
"Database host" => "Banco de dados do host",
"Finish setup" => "Concluir configuração",
-"Sunday" => "Domingo",
-"Monday" => "Segunda-feira",
-"Tuesday" => "Terça-feira",
-"Wednesday" => "Quarta-feira",
-"Thursday" => "Quinta-feira",
-"Friday" => "Sexta-feira",
-"Saturday" => "Sábado",
-"January" => "Janeiro",
-"February" => "Fevereiro",
-"March" => "Março",
-"April" => "Abril",
-"May" => "Maio",
-"June" => "Junho",
-"July" => "Julho",
-"August" => "Agosto",
-"September" => "Setembro",
-"October" => "Outubro",
-"November" => "Novembro",
-"December" => "Dezembro",
"web services under your control" => "web services sob seu controle",
"Log out" => "Sair",
"Automatic logon rejected!" => "Entrada Automática no Sistema Rejeitada!",
@@ -118,5 +130,6 @@
"remember" => "lembrete",
"Log in" => "Log in",
"prev" => "anterior",
-"next" => "próximo"
+"next" => "próximo",
+"Updating ownCloud to version %s, this may take a while." => "Atualizando ownCloud para a versão %s, isto pode levar algum tempo."
);
diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php
index 6e3a558986..2189a7e811 100644
--- a/core/l10n/pt_PT.php
+++ b/core/l10n/pt_PT.php
@@ -9,11 +9,30 @@
"Object type not provided." => "Tipo de objecto não fornecido",
"%s ID not provided." => "ID %s não fornecido",
"Error adding %s to favorites." => "Erro a adicionar %s aos favoritos",
-"No categories selected for deletion." => "Nenhuma categoria seleccionar para eliminar",
+"No categories selected for deletion." => "Nenhuma categoria seleccionada para apagar",
"Error removing %s from favorites." => "Erro a remover %s dos favoritos.",
+"Sunday" => "Domingo",
+"Monday" => "Segunda",
+"Tuesday" => "Terça",
+"Wednesday" => "Quarta",
+"Thursday" => "Quinta",
+"Friday" => "Sexta",
+"Saturday" => "Sábado",
+"January" => "Janeiro",
+"February" => "Fevereiro",
+"March" => "Março",
+"April" => "Abril",
+"May" => "Maio",
+"June" => "Junho",
+"July" => "Julho",
+"August" => "Agosto",
+"September" => "Setembro",
+"October" => "Outubro",
+"November" => "Novembro",
+"December" => "Dezembro",
"Settings" => "Definições",
"seconds ago" => "Minutos atrás",
-"1 minute ago" => "Falta 1 minuto",
+"1 minute ago" => "Há 1 minuto",
"{minutes} minutes ago" => "{minutes} minutos atrás",
"1 hour ago" => "Há 1 hora",
"{hours} hours ago" => "Há {hours} horas atrás",
@@ -34,6 +53,8 @@
"Error" => "Erro",
"The app name is not specified." => "O nome da aplicação não foi especificado",
"The required file {file} is not installed!" => "O ficheiro necessário {file} não está instalado!",
+"Share" => "Partilhar",
+"Shared" => "Partilhado",
"Error while sharing" => "Erro ao partilhar",
"Error while unsharing" => "Erro ao deixar de partilhar",
"Error while changing permissions" => "Erro ao mudar permissões",
@@ -62,7 +83,9 @@
"Error unsetting expiration date" => "Erro ao retirar a data de expiração",
"Error setting expiration date" => "Erro ao aplicar a data de expiração",
"Sending ..." => "A Enviar...",
-"Email sent" => "E-mail enviado com sucesso!",
+"Email sent" => "E-mail enviado",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "A actualização falhou. Por favor reporte este incidente seguindo este link ownCloud community.",
+"The update was successful. Redirecting you to ownCloud now." => "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.",
"ownCloud password reset" => "Reposição da password ownCloud",
"Use the following link to reset your password: {link}" => "Use o seguinte endereço para repor a sua password: {link}",
"You will receive a link to reset your password via Email." => "Vai receber um endereço para repor a sua password",
@@ -71,7 +94,7 @@
"Username" => "Utilizador",
"Request reset" => "Pedir reposição",
"Your password was reset" => "A sua password foi reposta",
-"To login page" => "Para a página de conexão",
+"To login page" => "Para a página de entrada",
"New password" => "Nova password",
"Reset password" => "Repor password",
"Personal" => "Pessoal",
@@ -96,36 +119,17 @@
"Database password" => "Password da base de dados",
"Database name" => "Nome da base de dados",
"Database tablespace" => "Tablespace da base de dados",
-"Database host" => "Host da base de dados",
+"Database host" => "Anfitrião da base de dados",
"Finish setup" => "Acabar instalação",
-"Sunday" => "Domingo",
-"Monday" => "Segunda",
-"Tuesday" => "Terça",
-"Wednesday" => "Quarta",
-"Thursday" => "Quinta",
-"Friday" => "Sexta",
-"Saturday" => "Sábado",
-"January" => "Janeiro",
-"February" => "Fevereiro",
-"March" => "Março",
-"April" => "Abril",
-"May" => "Maio",
-"June" => "Junho",
-"July" => "Julho",
-"August" => "Agosto",
-"September" => "Setembro",
-"October" => "Outubro",
-"November" => "Novembro",
-"December" => "Dezembro",
"web services under your control" => "serviços web sob o seu controlo",
"Log out" => "Sair",
"Automatic logon rejected!" => "Login automático rejeitado!",
"If you did not change your password recently, your account may be compromised!" => "Se não mudou a sua palavra-passe recentemente, a sua conta pode ter sido comprometida!",
"Please change your password to secure your account again." => "Por favor mude a sua palavra-passe para assegurar a sua conta de novo.",
-"Lost your password?" => "Esqueceu a sua password?",
+"Lost your password?" => "Esqueceu-se da sua password?",
"remember" => "lembrar",
"Log in" => "Entrar",
"prev" => "anterior",
"next" => "seguinte",
-"Updating ownCloud to version %s, this may take a while." => "A Actualizar o ownCloud para a versão %s, esta operação pode demorar."
+"Updating ownCloud to version %s, this may take a while." => "A actualizar o ownCloud para a versão %s, esta operação pode demorar."
);
diff --git a/core/l10n/ro.php b/core/l10n/ro.php
index 3e389bfab0..83587fa4a7 100644
--- a/core/l10n/ro.php
+++ b/core/l10n/ro.php
@@ -53,6 +53,7 @@
"Error" => "Eroare",
"The app name is not specified." => "Numele aplicației nu a fost specificat",
"The required file {file} is not installed!" => "Fișierul obligatoriu {file} nu este instalat!",
+"Share" => "Partajează",
"Error while sharing" => "Eroare la partajare",
"Error while unsharing" => "Eroare la anularea partajării",
"Error while changing permissions" => "Eroare la modificarea permisiunilor",
diff --git a/core/l10n/ru.php b/core/l10n/ru.php
index 7434d6af7f..7b11ea43a4 100644
--- a/core/l10n/ru.php
+++ b/core/l10n/ru.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Ошибка добавления %s в избранное",
"No categories selected for deletion." => "Нет категорий для удаления.",
"Error removing %s from favorites." => "Ошибка удаления %s из избранного",
+"Sunday" => "Воскресенье",
+"Monday" => "Понедельник",
+"Tuesday" => "Вторник",
+"Wednesday" => "Среда",
+"Thursday" => "Четверг",
+"Friday" => "Пятница",
+"Saturday" => "Суббота",
+"January" => "Январь",
+"February" => "Февраль",
+"March" => "Март",
+"April" => "Апрель",
+"May" => "Май",
+"June" => "Июнь",
+"July" => "Июль",
+"August" => "Август",
+"September" => "Сентябрь",
+"October" => "Октябрь",
+"November" => "Ноябрь",
+"December" => "Декабрь",
"Settings" => "Настройки",
"seconds ago" => "несколько секунд назад",
"1 minute ago" => "1 минуту назад",
@@ -34,6 +53,7 @@
"Error" => "Ошибка",
"The app name is not specified." => "Имя приложения не указано",
"The required file {file} is not installed!" => "Необходимый файл {file} не установлен!",
+"Share" => "Открыть доступ",
"Error while sharing" => "Ошибка при открытии доступа",
"Error while unsharing" => "Ошибка при закрытии доступа",
"Error while changing permissions" => "Ошибка при смене разрешений",
@@ -98,25 +118,6 @@
"Database tablespace" => "Табличое пространство базы данных",
"Database host" => "Хост базы данных",
"Finish setup" => "Завершить установку",
-"Sunday" => "Воскресенье",
-"Monday" => "Понедельник",
-"Tuesday" => "Вторник",
-"Wednesday" => "Среда",
-"Thursday" => "Четверг",
-"Friday" => "Пятница",
-"Saturday" => "Суббота",
-"January" => "Январь",
-"February" => "Февраль",
-"March" => "Март",
-"April" => "Апрель",
-"May" => "Май",
-"June" => "Июнь",
-"July" => "Июль",
-"August" => "Август",
-"September" => "Сентябрь",
-"October" => "Октябрь",
-"November" => "Ноябрь",
-"December" => "Декабрь",
"web services under your control" => "Сетевые службы под твоим контролем",
"Log out" => "Выйти",
"Automatic logon rejected!" => "Автоматический вход в систему отключен!",
diff --git a/core/l10n/ru_RU.php b/core/l10n/ru_RU.php
index 84bd8f9315..53a3b9b0d5 100644
--- a/core/l10n/ru_RU.php
+++ b/core/l10n/ru_RU.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Ошибка добавления %s в избранное.",
"No categories selected for deletion." => "Нет категорий, выбранных для удаления.",
"Error removing %s from favorites." => "Ошибка удаления %s из избранного.",
+"Sunday" => "Воскресенье",
+"Monday" => "Понедельник",
+"Tuesday" => "Вторник",
+"Wednesday" => "Среда",
+"Thursday" => "Четверг",
+"Friday" => "Пятница",
+"Saturday" => "Суббота",
+"January" => "Январь",
+"February" => "Февраль",
+"March" => "Март",
+"April" => "Апрель",
+"May" => "Май",
+"June" => "Июнь",
+"July" => "Июль",
+"August" => "Август",
+"September" => "Сентябрь",
+"October" => "Октябрь",
+"November" => "Ноябрь",
+"December" => "Декабрь",
"Settings" => "Настройки",
"seconds ago" => "секунд назад",
"1 minute ago" => " 1 минуту назад",
@@ -34,6 +53,8 @@
"Error" => "Ошибка",
"The app name is not specified." => "Имя приложения не указано.",
"The required file {file} is not installed!" => "Требуемый файл {файл} не установлен!",
+"Share" => "Сделать общим",
+"Shared" => "Опубликовано",
"Error while sharing" => "Ошибка создания общего доступа",
"Error while unsharing" => "Ошибка отключения общего доступа",
"Error while changing permissions" => "Ошибка при изменении прав доступа",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Ошибка при установке даты истечения срока действия",
"Sending ..." => "Отправка ...",
"Email sent" => "Письмо отправлено",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Обновление прошло неудачно. Пожалуйста, сообщите об этом результате в ownCloud community.",
+"The update was successful. Redirecting you to ownCloud now." => "Обновление прошло успешно. Немедленное перенаправление Вас на ownCloud.",
"ownCloud password reset" => "Переназначение пароля",
"Use the following link to reset your password: {link}" => "Воспользуйтесь следующей ссылкой для переназначения пароля: {link}",
"You will receive a link to reset your password via Email." => "Вы получите ссылку для восстановления пароля по электронной почте.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Табличная область базы данных",
"Database host" => "Сервер базы данных",
"Finish setup" => "Завершение настройки",
-"Sunday" => "Воскресенье",
-"Monday" => "Понедельник",
-"Tuesday" => "Вторник",
-"Wednesday" => "Среда",
-"Thursday" => "Четверг",
-"Friday" => "Пятница",
-"Saturday" => "Суббота",
-"January" => "Январь",
-"February" => "Февраль",
-"March" => "Март",
-"April" => "Апрель",
-"May" => "Май",
-"June" => "Июнь",
-"July" => "Июль",
-"August" => "Август",
-"September" => "Сентябрь",
-"October" => "Октябрь",
-"November" => "Ноябрь",
-"December" => "Декабрь",
"web services under your control" => "веб-сервисы под Вашим контролем",
"Log out" => "Выйти",
"Automatic logon rejected!" => "Автоматический вход в систему отклонен!",
@@ -126,5 +130,6 @@
"remember" => "запомнить",
"Log in" => "Войти",
"prev" => "предыдущий",
-"next" => "следующий"
+"next" => "следующий",
+"Updating ownCloud to version %s, this may take a while." => "Обновление ownCloud до версии %s, это может занять некоторое время."
);
diff --git a/core/l10n/si_LK.php b/core/l10n/si_LK.php
index a6aeb484ed..eab1ba1001 100644
--- a/core/l10n/si_LK.php
+++ b/core/l10n/si_LK.php
@@ -1,5 +1,24 @@
"මකා දැමීම සඳහා ප්රවර්ගයන් තෝරා නොමැත.",
+"Sunday" => "ඉරිදා",
+"Monday" => "සඳුදා",
+"Tuesday" => "අඟහරුවාදා",
+"Wednesday" => "බදාදා",
+"Thursday" => "බ්රහස්පතින්දා",
+"Friday" => "සිකුරාදා",
+"Saturday" => "සෙනසුරාදා",
+"January" => "ජනවාරි",
+"February" => "පෙබරවාරි",
+"March" => "මාර්තු",
+"April" => "අප්රේල්",
+"May" => "මැයි",
+"June" => "ජූනි",
+"July" => "ජූලි",
+"August" => "අගෝස්තු",
+"September" => "සැප්තැම්බර්",
+"October" => "ඔක්තෝබර්",
+"November" => "නොවැම්බර්",
+"December" => "දෙසැම්බර්",
"Settings" => "සැකසුම්",
"seconds ago" => "තත්පරයන්ට පෙර",
"1 minute ago" => "1 මිනිත්තුවකට පෙර",
@@ -15,6 +34,7 @@
"Yes" => "ඔව්",
"Ok" => "හරි",
"Error" => "දෝෂයක්",
+"Share" => "බෙදා හදා ගන්න",
"Share with" => "බෙදාගන්න",
"Share with link" => "යොමුවක් මඟින් බෙදාගන්න",
"Password protect" => "මුර පදයකින් ආරක්ශාකරන්න",
@@ -61,25 +81,6 @@
"Database name" => "දත්තගබඩාවේ නම",
"Database host" => "දත්තගබඩා සේවාදායකයා",
"Finish setup" => "ස්ථාපනය කිරීම අවසන් කරන්න",
-"Sunday" => "ඉරිදා",
-"Monday" => "සඳුදා",
-"Tuesday" => "අඟහරුවාදා",
-"Wednesday" => "බදාදා",
-"Thursday" => "බ්රහස්පතින්දා",
-"Friday" => "සිකුරාදා",
-"Saturday" => "සෙනසුරාදා",
-"January" => "ජනවාරි",
-"February" => "පෙබරවාරි",
-"March" => "මාර්තු",
-"April" => "අප්රේල්",
-"May" => "මැයි",
-"June" => "ජූනි",
-"July" => "ජූලි",
-"August" => "අගෝස්තු",
-"September" => "සැප්තැම්බර්",
-"October" => "ඔක්තෝබර්",
-"November" => "නොවැම්බර්",
-"December" => "දෙසැම්බර්",
"web services under your control" => "ඔබට පාලනය කළ හැකි වෙබ් සේවාවන්",
"Log out" => "නික්මීම",
"Lost your password?" => "මුරපදය අමතකද?",
diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php
index 286642ace7..ad5ae0ea37 100644
--- a/core/l10n/sk_SK.php
+++ b/core/l10n/sk_SK.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Chyba pri pridávaní %s do obľúbených položiek.",
"No categories selected for deletion." => "Neboli vybrané žiadne kategórie pre odstránenie.",
"Error removing %s from favorites." => "Chyba pri odstraňovaní %s z obľúbených položiek.",
+"Sunday" => "Nedeľa",
+"Monday" => "Pondelok",
+"Tuesday" => "Utorok",
+"Wednesday" => "Streda",
+"Thursday" => "Štvrtok",
+"Friday" => "Piatok",
+"Saturday" => "Sobota",
+"January" => "Január",
+"February" => "Február",
+"March" => "Marec",
+"April" => "Apríl",
+"May" => "Máj",
+"June" => "Jún",
+"July" => "Júl",
+"August" => "August",
+"September" => "September",
+"October" => "Október",
+"November" => "November",
+"December" => "December",
"Settings" => "Nastavenia",
"seconds ago" => "pred sekundami",
"1 minute ago" => "pred minútou",
@@ -34,6 +53,8 @@
"Error" => "Chyba",
"The app name is not specified." => "Nešpecifikované meno aplikácie.",
"The required file {file} is not installed!" => "Požadovaný súbor {file} nie je inštalovaný!",
+"Share" => "Zdieľaj",
+"Shared" => "Zdieľané",
"Error while sharing" => "Chyba počas zdieľania",
"Error while unsharing" => "Chyba počas ukončenia zdieľania",
"Error while changing permissions" => "Chyba počas zmeny oprávnení",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Chyba pri nastavení dátumu vypršania platnosti",
"Sending ..." => "Odosielam ...",
"Email sent" => "Email odoslaný",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Aktualizácia nebola úspešná. Problém nahláste na ownCloud community.",
+"The update was successful. Redirecting you to ownCloud now." => "Aktualizácia bola úspešná. Presmerovávam na ownCloud.",
"ownCloud password reset" => "Obnovenie hesla pre ownCloud",
"Use the following link to reset your password: {link}" => "Použite nasledujúci odkaz pre obnovenie vášho hesla: {link}",
"You will receive a link to reset your password via Email." => "Odkaz pre obnovenie hesla obdržíte e-mailom.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Tabuľkový priestor databázy",
"Database host" => "Server databázy",
"Finish setup" => "Dokončiť inštaláciu",
-"Sunday" => "Nedeľa",
-"Monday" => "Pondelok",
-"Tuesday" => "Utorok",
-"Wednesday" => "Streda",
-"Thursday" => "Štvrtok",
-"Friday" => "Piatok",
-"Saturday" => "Sobota",
-"January" => "Január",
-"February" => "Február",
-"March" => "Marec",
-"April" => "Apríl",
-"May" => "Máj",
-"June" => "Jún",
-"July" => "Júl",
-"August" => "August",
-"September" => "September",
-"October" => "Október",
-"November" => "November",
-"December" => "December",
"web services under your control" => "webové služby pod vašou kontrolou",
"Log out" => "Odhlásiť",
"Automatic logon rejected!" => "Automatické prihlásenie bolo zamietnuté!",
diff --git a/core/l10n/sl.php b/core/l10n/sl.php
index b2c924d412..54cf817a7a 100644
--- a/core/l10n/sl.php
+++ b/core/l10n/sl.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Napaka pri dodajanju %s med priljubljene.",
"No categories selected for deletion." => "Za izbris ni izbrana nobena kategorija.",
"Error removing %s from favorites." => "Napaka pri odstranjevanju %s iz priljubljenih.",
+"Sunday" => "nedelja",
+"Monday" => "ponedeljek",
+"Tuesday" => "torek",
+"Wednesday" => "sreda",
+"Thursday" => "četrtek",
+"Friday" => "petek",
+"Saturday" => "sobota",
+"January" => "januar",
+"February" => "februar",
+"March" => "marec",
+"April" => "april",
+"May" => "maj",
+"June" => "junij",
+"July" => "julij",
+"August" => "avgust",
+"September" => "september",
+"October" => "oktober",
+"November" => "november",
+"December" => "december",
"Settings" => "Nastavitve",
"seconds ago" => "pred nekaj sekundami",
"1 minute ago" => "pred minuto",
@@ -34,6 +53,7 @@
"Error" => "Napaka",
"The app name is not specified." => "Ime aplikacije ni podano.",
"The required file {file} is not installed!" => "Zahtevana datoteka {file} ni nameščena!",
+"Share" => "Souporaba",
"Error while sharing" => "Napaka med souporabo",
"Error while unsharing" => "Napaka med odstranjevanjem souporabe",
"Error while changing permissions" => "Napaka med spreminjanjem dovoljenj",
@@ -98,25 +118,6 @@
"Database tablespace" => "Razpredelnica podatkovne zbirke",
"Database host" => "Gostitelj podatkovne zbirke",
"Finish setup" => "Dokončaj namestitev",
-"Sunday" => "nedelja",
-"Monday" => "ponedeljek",
-"Tuesday" => "torek",
-"Wednesday" => "sreda",
-"Thursday" => "četrtek",
-"Friday" => "petek",
-"Saturday" => "sobota",
-"January" => "januar",
-"February" => "februar",
-"March" => "marec",
-"April" => "april",
-"May" => "maj",
-"June" => "junij",
-"July" => "julij",
-"August" => "avgust",
-"September" => "september",
-"October" => "oktober",
-"November" => "november",
-"December" => "december",
"web services under your control" => "spletne storitve pod vašim nadzorom",
"Log out" => "Odjava",
"Automatic logon rejected!" => "Samodejno prijavljanje je zavrnjeno!",
diff --git a/core/l10n/sr.php b/core/l10n/sr.php
index e55ad9250a..ecd316b7cf 100644
--- a/core/l10n/sr.php
+++ b/core/l10n/sr.php
@@ -9,6 +9,25 @@
"Error adding %s to favorites." => "Грешка приликом додавања %s у омиљене.",
"No categories selected for deletion." => "Ни једна категорија није означена за брисање.",
"Error removing %s from favorites." => "Грешка приликом уклањања %s из омиљених",
+"Sunday" => "Недеља",
+"Monday" => "Понедељак",
+"Tuesday" => "Уторак",
+"Wednesday" => "Среда",
+"Thursday" => "Четвртак",
+"Friday" => "Петак",
+"Saturday" => "Субота",
+"January" => "Јануар",
+"February" => "Фебруар",
+"March" => "Март",
+"April" => "Април",
+"May" => "Мај",
+"June" => "Јун",
+"July" => "Јул",
+"August" => "Август",
+"September" => "Септембар",
+"October" => "Октобар",
+"November" => "Новембар",
+"December" => "Децембар",
"Settings" => "Подешавања",
"seconds ago" => "пре неколико секунди",
"1 minute ago" => "пре 1 минут",
@@ -32,6 +51,7 @@
"Error" => "Грешка",
"The app name is not specified." => "Име програма није унето.",
"The required file {file} is not installed!" => "Потребна датотека {file} није инсталирана.",
+"Share" => "Дељење",
"Error while sharing" => "Грешка у дељењу",
"Error while unsharing" => "Грешка код искључења дељења",
"Error while changing permissions" => "Грешка код промене дозвола",
@@ -95,25 +115,6 @@
"Database tablespace" => "Радни простор базе података",
"Database host" => "Домаћин базе",
"Finish setup" => "Заврши подешавање",
-"Sunday" => "Недеља",
-"Monday" => "Понедељак",
-"Tuesday" => "Уторак",
-"Wednesday" => "Среда",
-"Thursday" => "Четвртак",
-"Friday" => "Петак",
-"Saturday" => "Субота",
-"January" => "Јануар",
-"February" => "Фебруар",
-"March" => "Март",
-"April" => "Април",
-"May" => "Мај",
-"June" => "Јун",
-"July" => "Јул",
-"August" => "Август",
-"September" => "Септембар",
-"October" => "Октобар",
-"November" => "Новембар",
-"December" => "Децембар",
"web services under your control" => "веб сервиси под контролом",
"Log out" => "Одјава",
"Automatic logon rejected!" => "Аутоматска пријава је одбијена!",
diff --git a/core/l10n/sr@latin.php b/core/l10n/sr@latin.php
index efcb7c10f0..ec3eab34e2 100644
--- a/core/l10n/sr@latin.php
+++ b/core/l10n/sr@latin.php
@@ -1,4 +1,23 @@
"Nedelja",
+"Monday" => "Ponedeljak",
+"Tuesday" => "Utorak",
+"Wednesday" => "Sreda",
+"Thursday" => "Četvrtak",
+"Friday" => "Petak",
+"Saturday" => "Subota",
+"January" => "Januar",
+"February" => "Februar",
+"March" => "Mart",
+"April" => "April",
+"May" => "Maj",
+"June" => "Jun",
+"July" => "Jul",
+"August" => "Avgust",
+"September" => "Septembar",
+"October" => "Oktobar",
+"November" => "Novembar",
+"December" => "Decembar",
"Settings" => "Podešavanja",
"Cancel" => "Otkaži",
"Password" => "Lozinka",
@@ -24,25 +43,6 @@
"Database name" => "Ime baze",
"Database host" => "Domaćin baze",
"Finish setup" => "Završi podešavanje",
-"Sunday" => "Nedelja",
-"Monday" => "Ponedeljak",
-"Tuesday" => "Utorak",
-"Wednesday" => "Sreda",
-"Thursday" => "Četvrtak",
-"Friday" => "Petak",
-"Saturday" => "Subota",
-"January" => "Januar",
-"February" => "Februar",
-"March" => "Mart",
-"April" => "April",
-"May" => "Maj",
-"June" => "Jun",
-"July" => "Jul",
-"August" => "Avgust",
-"September" => "Septembar",
-"October" => "Oktobar",
-"November" => "Novembar",
-"December" => "Decembar",
"Log out" => "Odjava",
"Lost your password?" => "Izgubili ste lozinku?",
"remember" => "upamti",
diff --git a/core/l10n/sv.php b/core/l10n/sv.php
index 70a9871be2..a0dde65269 100644
--- a/core/l10n/sv.php
+++ b/core/l10n/sv.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Fel vid tillägg av %s till favoriter.",
"No categories selected for deletion." => "Inga kategorier valda för radering.",
"Error removing %s from favorites." => "Fel vid borttagning av %s från favoriter.",
+"Sunday" => "Söndag",
+"Monday" => "Måndag",
+"Tuesday" => "Tisdag",
+"Wednesday" => "Onsdag",
+"Thursday" => "Torsdag",
+"Friday" => "Fredag",
+"Saturday" => "Lördag",
+"January" => "Januari",
+"February" => "Februari",
+"March" => "Mars",
+"April" => "April",
+"May" => "Maj",
+"June" => "Juni",
+"July" => "Juli",
+"August" => "Augusti",
+"September" => "September",
+"October" => "Oktober",
+"November" => "November",
+"December" => "December",
"Settings" => "Inställningar",
"seconds ago" => "sekunder sedan",
"1 minute ago" => "1 minut sedan",
@@ -34,6 +53,8 @@
"Error" => "Fel",
"The app name is not specified." => " Namnet på appen är inte specificerad.",
"The required file {file} is not installed!" => "Den nödvändiga filen {file} är inte installerad!",
+"Share" => "Dela",
+"Shared" => "Delad",
"Error while sharing" => "Fel vid delning",
"Error while unsharing" => "Fel när delning skulle avslutas",
"Error while changing permissions" => "Fel vid ändring av rättigheter",
@@ -63,6 +84,8 @@
"Error setting expiration date" => "Fel vid sättning av utgångsdatum",
"Sending ..." => "Skickar ...",
"Email sent" => "E-post skickat",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Uppdateringen misslyckades. Rapportera detta problem till ownCloud-gemenskapen.",
+"The update was successful. Redirecting you to ownCloud now." => "Uppdateringen lyckades. Du omdirigeras nu till OwnCloud",
"ownCloud password reset" => "ownCloud lösenordsåterställning",
"Use the following link to reset your password: {link}" => "Använd följande länk för att återställa lösenordet: {link}",
"You will receive a link to reset your password via Email." => "Du får en länk att återställa ditt lösenord via e-post.",
@@ -98,25 +121,6 @@
"Database tablespace" => "Databas tabellutrymme",
"Database host" => "Databasserver",
"Finish setup" => "Avsluta installation",
-"Sunday" => "Söndag",
-"Monday" => "Måndag",
-"Tuesday" => "Tisdag",
-"Wednesday" => "Onsdag",
-"Thursday" => "Torsdag",
-"Friday" => "Fredag",
-"Saturday" => "Lördag",
-"January" => "Januari",
-"February" => "Februari",
-"March" => "Mars",
-"April" => "April",
-"May" => "Maj",
-"June" => "Juni",
-"July" => "Juli",
-"August" => "Augusti",
-"September" => "September",
-"October" => "Oktober",
-"November" => "November",
-"December" => "December",
"web services under your control" => "webbtjänster under din kontroll",
"Log out" => "Logga ut",
"Automatic logon rejected!" => "Automatisk inloggning inte tillåten!",
diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php
index 65cfbbf965..2b8829c717 100644
--- a/core/l10n/ta_LK.php
+++ b/core/l10n/ta_LK.php
@@ -7,6 +7,25 @@
"Error adding %s to favorites." => "விருப்பங்களுக்கு %s ஐ சேர்ப்பதில் வழு",
"No categories selected for deletion." => "நீக்குவதற்கு எந்தப் பிரிவும் தெரிவுசெய்யப்படவில்லை.",
"Error removing %s from favorites." => "விருப்பத்திலிருந்து %s ஐ அகற்றுவதில் வழு.உஇஇ",
+"Sunday" => "ஞாயிற்றுக்கிழமை",
+"Monday" => "திங்கட்கிழமை",
+"Tuesday" => "செவ்வாய்க்கிழமை",
+"Wednesday" => "புதன்கிழமை",
+"Thursday" => "வியாழக்கிழமை",
+"Friday" => "வெள்ளிக்கிழமை",
+"Saturday" => "சனிக்கிழமை",
+"January" => "தை",
+"February" => "மாசி",
+"March" => "பங்குனி",
+"April" => "சித்திரை",
+"May" => "வைகாசி",
+"June" => "ஆனி",
+"July" => "ஆடி",
+"August" => "ஆவணி",
+"September" => "புரட்டாசி",
+"October" => "ஐப்பசி",
+"November" => "கார்த்திகை",
+"December" => "மார்கழி",
"Settings" => "அமைப்புகள்",
"seconds ago" => "செக்கன்களுக்கு முன்",
"1 minute ago" => "1 நிமிடத்திற்கு முன் ",
@@ -30,6 +49,7 @@
"Error" => "வழு",
"The app name is not specified." => "செயலி பெயர் குறிப்பிடப்படவில்லை.",
"The required file {file} is not installed!" => "தேவைப்பட்ட கோப்பு {கோப்பு} நிறுவப்படவில்லை!",
+"Share" => "பகிர்வு",
"Error while sharing" => "பகிரும் போதான வழு",
"Error while unsharing" => "பகிராமல் உள்ளப்போதான வழு",
"Error while changing permissions" => "அனுமதிகள் மாறும்போதான வழு",
@@ -90,25 +110,6 @@
"Database tablespace" => "தரவுத்தள அட்டவணை",
"Database host" => "தரவுத்தள ஓம்புனர்",
"Finish setup" => "அமைப்பை முடிக்க",
-"Sunday" => "ஞாயிற்றுக்கிழமை",
-"Monday" => "திங்கட்கிழமை",
-"Tuesday" => "செவ்வாய்க்கிழமை",
-"Wednesday" => "புதன்கிழமை",
-"Thursday" => "வியாழக்கிழமை",
-"Friday" => "வெள்ளிக்கிழமை",
-"Saturday" => "சனிக்கிழமை",
-"January" => "தை",
-"February" => "மாசி",
-"March" => "பங்குனி",
-"April" => "சித்திரை",
-"May" => "வைகாசி",
-"June" => "ஆனி",
-"July" => "ஆடி",
-"August" => "ஆவணி",
-"September" => "புரட்டாசி",
-"October" => "ஐப்பசி",
-"November" => "கார்த்திகை",
-"December" => "மார்கழி",
"web services under your control" => "உங்கள் கட்டுப்பாட்டின் கீழ் இணைய சேவைகள்",
"Log out" => "விடுபதிகை செய்க",
"Automatic logon rejected!" => "தன்னிச்சையான புகுபதிகை நிராகரிப்பட்டது!",
diff --git a/core/l10n/th_TH.php b/core/l10n/th_TH.php
index bcbd70d03e..7e00ac6e2d 100644
--- a/core/l10n/th_TH.php
+++ b/core/l10n/th_TH.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "เกิดข้อผิดพลาดในการเพิ่ม %s เข้าไปยังรายการโปรด",
"No categories selected for deletion." => "ยังไม่ได้เลือกหมวดหมู่ที่ต้องการลบ",
"Error removing %s from favorites." => "เกิดข้อผิดพลาดในการลบ %s ออกจากรายการโปรด",
+"Sunday" => "วันอาทิตย์",
+"Monday" => "วันจันทร์",
+"Tuesday" => "วันอังคาร",
+"Wednesday" => "วันพุธ",
+"Thursday" => "วันพฤหัสบดี",
+"Friday" => "วันศุกร์",
+"Saturday" => "วันเสาร์",
+"January" => "มกราคม",
+"February" => "กุมภาพันธ์",
+"March" => "มีนาคม",
+"April" => "เมษายน",
+"May" => "พฤษภาคม",
+"June" => "มิถุนายน",
+"July" => "กรกฏาคม",
+"August" => "สิงหาคม",
+"September" => "กันยายน",
+"October" => "ตุลาคม",
+"November" => "พฤศจิกายน",
+"December" => "ธันวาคม",
"Settings" => "ตั้งค่า",
"seconds ago" => "วินาที ก่อนหน้านี้",
"1 minute ago" => "1 นาทีก่อนหน้านี้",
@@ -34,6 +53,7 @@
"Error" => "พบข้อผิดพลาด",
"The app name is not specified." => "ชื่อของแอปยังไม่ได้รับการระบุชื่อ",
"The required file {file} is not installed!" => "ไฟล์ {file} ซึ่งเป็นไฟล์ที่จำเป็นต้องได้รับการติดตั้งไว้ก่อน ยังไม่ได้ถูกติดตั้ง",
+"Share" => "แชร์",
"Error while sharing" => "เกิดข้อผิดพลาดในระหว่างการแชร์ข้อมูล",
"Error while unsharing" => "เกิดข้อผิดพลาดในการยกเลิกการแชร์ข้อมูล",
"Error while changing permissions" => "เกิดข้อผิดพลาดในการเปลี่ยนสิทธิ์การเข้าใช้งาน",
@@ -63,6 +83,8 @@
"Error setting expiration date" => "เกิดข้อผิดพลาดในการตั้งค่าวันที่หมดอายุ",
"Sending ..." => "กำลังส่ง...",
"Email sent" => "ส่งอีเมล์แล้ว",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "การอัพเดทไม่เป็นผลสำเร็จ กรุณาแจ้งปัญหาที่เกิดขึ้นไปยัง คอมมูนิตี้ผู้ใช้งาน ownCloud",
+"The update was successful. Redirecting you to ownCloud now." => "การอัพเดทเสร็จเรียบร้อยแล้ว กำลังเปลี่ยนเส้นทางไปที่ ownCloud อยู่ในขณะนี้",
"ownCloud password reset" => "รีเซ็ตรหัสผ่าน ownCloud",
"Use the following link to reset your password: {link}" => "ใช้ลิงค์ต่อไปนี้เพื่อเปลี่ยนรหัสผ่านของคุณใหม่: {link}",
"You will receive a link to reset your password via Email." => "คุณจะได้รับลิงค์เพื่อกำหนดรหัสผ่านใหม่ทางอีเมล์",
@@ -98,25 +120,6 @@
"Database tablespace" => "พื้นที่ตารางในฐานข้อมูล",
"Database host" => "Database host",
"Finish setup" => "ติดตั้งเรียบร้อยแล้ว",
-"Sunday" => "วันอาทิตย์",
-"Monday" => "วันจันทร์",
-"Tuesday" => "วันอังคาร",
-"Wednesday" => "วันพุธ",
-"Thursday" => "วันพฤหัสบดี",
-"Friday" => "วันศุกร์",
-"Saturday" => "วันเสาร์",
-"January" => "มกราคม",
-"February" => "กุมภาพันธ์",
-"March" => "มีนาคม",
-"April" => "เมษายน",
-"May" => "พฤษภาคม",
-"June" => "มิถุนายน",
-"July" => "กรกฏาคม",
-"August" => "สิงหาคม",
-"September" => "กันยายน",
-"October" => "ตุลาคม",
-"November" => "พฤศจิกายน",
-"December" => "ธันวาคม",
"web services under your control" => "web services under your control",
"Log out" => "ออกจากระบบ",
"Automatic logon rejected!" => "การเข้าสู่ระบบอัตโนมัติถูกปฏิเสธแล้ว",
diff --git a/core/l10n/tr.php b/core/l10n/tr.php
index 58e28a9b3b..624887674d 100644
--- a/core/l10n/tr.php
+++ b/core/l10n/tr.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "%s favorilere eklenirken hata oluştu",
"No categories selected for deletion." => "Silmek için bir kategori seçilmedi",
"Error removing %s from favorites." => "%s favorilere çıkarılırken hata oluştu",
+"Sunday" => "Pazar",
+"Monday" => "Pazartesi",
+"Tuesday" => "Salı",
+"Wednesday" => "Çarşamba",
+"Thursday" => "Perşembe",
+"Friday" => "Cuma",
+"Saturday" => "Cumartesi",
+"January" => "Ocak",
+"February" => "Şubat",
+"March" => "Mart",
+"April" => "Nisan",
+"May" => "Mayıs",
+"June" => "Haziran",
+"July" => "Temmuz",
+"August" => "Ağustos",
+"September" => "Eylül",
+"October" => "Ekim",
+"November" => "Kasım",
+"December" => "Aralık",
"Settings" => "Ayarlar",
"seconds ago" => "saniye önce",
"1 minute ago" => "1 dakika önce",
@@ -34,6 +53,7 @@
"Error" => "Hata",
"The app name is not specified." => "uygulama adı belirtilmedi.",
"The required file {file} is not installed!" => "İhtiyaç duyulan {file} dosyası kurulu değil.",
+"Share" => "Paylaş",
"Error while sharing" => "Paylaşım sırasında hata ",
"Error while unsharing" => "Paylaşım iptal ediliyorken hata",
"Error while changing permissions" => "İzinleri değiştirirken hata oluştu",
@@ -98,25 +118,6 @@
"Database tablespace" => "Veritabanı tablo alanı",
"Database host" => "Veritabanı sunucusu",
"Finish setup" => "Kurulumu tamamla",
-"Sunday" => "Pazar",
-"Monday" => "Pazartesi",
-"Tuesday" => "Salı",
-"Wednesday" => "Çarşamba",
-"Thursday" => "Perşembe",
-"Friday" => "Cuma",
-"Saturday" => "Cumartesi",
-"January" => "Ocak",
-"February" => "Şubat",
-"March" => "Mart",
-"April" => "Nisan",
-"May" => "Mayıs",
-"June" => "Haziran",
-"July" => "Temmuz",
-"August" => "Ağustos",
-"September" => "Eylül",
-"October" => "Ekim",
-"November" => "Kasım",
-"December" => "Aralık",
"web services under your control" => "kontrolünüzdeki web servisleri",
"Log out" => "Çıkış yap",
"Automatic logon rejected!" => "Otomatik oturum açma reddedildi!",
diff --git a/core/l10n/uk.php b/core/l10n/uk.php
index 88e18d3eb2..fa8150e7c9 100644
--- a/core/l10n/uk.php
+++ b/core/l10n/uk.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "Помилка при додаванні %s до обраного.",
"No categories selected for deletion." => "Жодної категорії не обрано для видалення.",
"Error removing %s from favorites." => "Помилка при видалені %s із обраного.",
+"Sunday" => "Неділя",
+"Monday" => "Понеділок",
+"Tuesday" => "Вівторок",
+"Wednesday" => "Середа",
+"Thursday" => "Четвер",
+"Friday" => "П'ятниця",
+"Saturday" => "Субота",
+"January" => "Січень",
+"February" => "Лютий",
+"March" => "Березень",
+"April" => "Квітень",
+"May" => "Травень",
+"June" => "Червень",
+"July" => "Липень",
+"August" => "Серпень",
+"September" => "Вересень",
+"October" => "Жовтень",
+"November" => "Листопад",
+"December" => "Грудень",
"Settings" => "Налаштування",
"seconds ago" => "секунди тому",
"1 minute ago" => "1 хвилину тому",
@@ -34,6 +53,7 @@
"Error" => "Помилка",
"The app name is not specified." => "Не визначено ім'я програми.",
"The required file {file} is not installed!" => "Необхідний файл {file} не встановлено!",
+"Share" => "Поділитися",
"Error while sharing" => "Помилка під час публікації",
"Error while unsharing" => "Помилка під час відміни публікації",
"Error while changing permissions" => "Помилка при зміні повноважень",
@@ -98,25 +118,6 @@
"Database tablespace" => "Таблиця бази даних",
"Database host" => "Хост бази даних",
"Finish setup" => "Завершити налаштування",
-"Sunday" => "Неділя",
-"Monday" => "Понеділок",
-"Tuesday" => "Вівторок",
-"Wednesday" => "Середа",
-"Thursday" => "Четвер",
-"Friday" => "П'ятниця",
-"Saturday" => "Субота",
-"January" => "Січень",
-"February" => "Лютий",
-"March" => "Березень",
-"April" => "Квітень",
-"May" => "Травень",
-"June" => "Червень",
-"July" => "Липень",
-"August" => "Серпень",
-"September" => "Вересень",
-"October" => "Жовтень",
-"November" => "Листопад",
-"December" => "Грудень",
"web services under your control" => "веб-сервіс під вашим контролем",
"Log out" => "Вихід",
"Automatic logon rejected!" => "Автоматичний вхід в систему відхилений!",
diff --git a/core/l10n/vi.php b/core/l10n/vi.php
index c827dc038e..078cfa8dd8 100644
--- a/core/l10n/vi.php
+++ b/core/l10n/vi.php
@@ -1,4 +1,8 @@
"%s chia sẻ tập tin này cho bạn",
+"User %s shared a folder with you" => "%s chia sẻ thư mục này cho bạn",
+"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Người dùng %s chia sẻ tập tin \"%s\" cho bạn .Bạn có thể tải tại đây : %s",
+"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Người dùng %s chia sẻ thư mục \"%s\" cho bạn .Bạn có thể tải tại đây : %s",
"Category type not provided." => "Kiểu hạng mục không được cung cấp.",
"No category to add?" => "Không có danh mục được thêm?",
"This category already exists: " => "Danh mục này đã được tạo :",
@@ -7,6 +11,25 @@
"Error adding %s to favorites." => "Lỗi thêm %s vào mục yêu thích.",
"No categories selected for deletion." => "Không có thể loại nào được chọn để xóa.",
"Error removing %s from favorites." => "Lỗi xóa %s từ mục yêu thích.",
+"Sunday" => "Chủ nhật",
+"Monday" => "Thứ 2",
+"Tuesday" => "Thứ 3",
+"Wednesday" => "Thứ 4",
+"Thursday" => "Thứ 5",
+"Friday" => "Thứ ",
+"Saturday" => "Thứ 7",
+"January" => "Tháng 1",
+"February" => "Tháng 2",
+"March" => "Tháng 3",
+"April" => "Tháng 4",
+"May" => "Tháng 5",
+"June" => "Tháng 6",
+"July" => "Tháng 7",
+"August" => "Tháng 8",
+"September" => "Tháng 9",
+"October" => "Tháng 10",
+"November" => "Tháng 11",
+"December" => "Tháng 12",
"Settings" => "Cài đặt",
"seconds ago" => "vài giây trước",
"1 minute ago" => "1 phút trước",
@@ -30,6 +53,7 @@
"Error" => "Lỗi",
"The app name is not specified." => "Tên ứng dụng không được chỉ định.",
"The required file {file} is not installed!" => "Tập tin cần thiết {file} không được cài đặt!",
+"Share" => "Chia sẻ",
"Error while sharing" => "Lỗi trong quá trình chia sẻ",
"Error while unsharing" => "Lỗi trong quá trình gỡ chia sẻ",
"Error while changing permissions" => "Lỗi trong quá trình phân quyền",
@@ -39,6 +63,7 @@
"Share with link" => "Chia sẻ với liên kết",
"Password protect" => "Mật khẩu bảo vệ",
"Password" => "Mật khẩu",
+"Send" => "Gởi",
"Set expiration date" => "Đặt ngày kết thúc",
"Expiration date" => "Ngày kết thúc",
"Share via email:" => "Chia sẻ thông qua email",
@@ -55,6 +80,9 @@
"Password protected" => "Mật khẩu bảo vệ",
"Error unsetting expiration date" => "Lỗi không thiết lập ngày kết thúc",
"Error setting expiration date" => "Lỗi cấu hình ngày kết thúc",
+"Sending ..." => "Đang gởi ...",
+"The update was unsuccessful. Please report this issue to the ownCloud community." => "Cập nhật không thành công . Vui lòng thông báo đến Cộng đồng ownCloud .",
+"The update was successful. Redirecting you to ownCloud now." => "Cập nhật thành công .Hệ thống sẽ đưa bạn tới ownCloud.",
"ownCloud password reset" => "Khôi phục mật khẩu Owncloud ",
"Use the following link to reset your password: {link}" => "Dùng đường dẫn sau để khôi phục lại mật khẩu : {link}",
"You will receive a link to reset your password via Email." => "Vui lòng kiểm tra Email để khôi phục lại mật khẩu.",
@@ -90,25 +118,6 @@
"Database tablespace" => "Cơ sở dữ liệu tablespace",
"Database host" => "Database host",
"Finish setup" => "Cài đặt hoàn tất",
-"Sunday" => "Chủ nhật",
-"Monday" => "Thứ 2",
-"Tuesday" => "Thứ 3",
-"Wednesday" => "Thứ 4",
-"Thursday" => "Thứ 5",
-"Friday" => "Thứ ",
-"Saturday" => "Thứ 7",
-"January" => "Tháng 1",
-"February" => "Tháng 2",
-"March" => "Tháng 3",
-"April" => "Tháng 4",
-"May" => "Tháng 5",
-"June" => "Tháng 6",
-"July" => "Tháng 7",
-"August" => "Tháng 8",
-"September" => "Tháng 9",
-"October" => "Tháng 10",
-"November" => "Tháng 11",
-"December" => "Tháng 12",
"web services under your control" => "các dịch vụ web dưới sự kiểm soát của bạn",
"Log out" => "Đăng xuất",
"Automatic logon rejected!" => "Tự động đăng nhập đã bị từ chối !",
diff --git a/core/l10n/zh_CN.GB2312.php b/core/l10n/zh_CN.GB2312.php
index 74dd9ad8a3..9617d7260d 100644
--- a/core/l10n/zh_CN.GB2312.php
+++ b/core/l10n/zh_CN.GB2312.php
@@ -2,6 +2,25 @@
"No category to add?" => "没有分类添加了?",
"This category already exists: " => "这个分类已经存在了:",
"No categories selected for deletion." => "没有选者要删除的分类.",
+"Sunday" => "星期天",
+"Monday" => "星期一",
+"Tuesday" => "星期二",
+"Wednesday" => "星期三",
+"Thursday" => "星期四",
+"Friday" => "星期五",
+"Saturday" => "星期六",
+"January" => "一月",
+"February" => "二月",
+"March" => "三月",
+"April" => "四月",
+"May" => "五月",
+"June" => "六月",
+"July" => "七月",
+"August" => "八月",
+"September" => "九月",
+"October" => "十月",
+"November" => "十一月",
+"December" => "十二月",
"Settings" => "设置",
"seconds ago" => "秒前",
"1 minute ago" => "1 分钟前",
@@ -19,6 +38,7 @@
"Yes" => "是",
"Ok" => "好的",
"Error" => "错误",
+"Share" => "分享",
"Error while sharing" => "分享出错",
"Error while unsharing" => "取消分享出错",
"Error while changing permissions" => "变更权限出错",
@@ -79,25 +99,6 @@
"Database tablespace" => "数据库表格空间",
"Database host" => "数据库主机",
"Finish setup" => "完成安装",
-"Sunday" => "星期天",
-"Monday" => "星期一",
-"Tuesday" => "星期二",
-"Wednesday" => "星期三",
-"Thursday" => "星期四",
-"Friday" => "星期五",
-"Saturday" => "星期六",
-"January" => "一月",
-"February" => "二月",
-"March" => "三月",
-"April" => "四月",
-"May" => "五月",
-"June" => "六月",
-"July" => "七月",
-"August" => "八月",
-"September" => "九月",
-"October" => "十月",
-"November" => "十一月",
-"December" => "十二月",
"web services under your control" => "你控制下的网络服务",
"Log out" => "注销",
"Automatic logon rejected!" => "自动登录被拒绝!",
diff --git a/core/l10n/zh_CN.php b/core/l10n/zh_CN.php
index 626ede4cc7..f18fd6b357 100644
--- a/core/l10n/zh_CN.php
+++ b/core/l10n/zh_CN.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "向收藏夹中新增%s时出错。",
"No categories selected for deletion." => "没有选择要删除的类别",
"Error removing %s from favorites." => "从收藏夹中移除%s时出错。",
+"Sunday" => "星期日",
+"Monday" => "星期一",
+"Tuesday" => "星期二",
+"Wednesday" => "星期三",
+"Thursday" => "星期四",
+"Friday" => "星期五",
+"Saturday" => "星期六",
+"January" => "一月",
+"February" => "二月",
+"March" => "三月",
+"April" => "四月",
+"May" => "五月",
+"June" => "六月",
+"July" => "七月",
+"August" => "八月",
+"September" => "九月",
+"October" => "十月",
+"November" => "十一月",
+"December" => "十二月",
"Settings" => "设置",
"seconds ago" => "秒前",
"1 minute ago" => "一分钟前",
@@ -34,6 +53,8 @@
"Error" => "错误",
"The app name is not specified." => "未指定App名称。",
"The required file {file} is not installed!" => "所需文件{file}未安装!",
+"Share" => "共享",
+"Shared" => "已共享",
"Error while sharing" => "共享时出错",
"Error while unsharing" => "取消共享时出错",
"Error while changing permissions" => "修改权限时出错",
@@ -98,25 +119,6 @@
"Database tablespace" => "数据库表空间",
"Database host" => "数据库主机",
"Finish setup" => "安装完成",
-"Sunday" => "星期日",
-"Monday" => "星期一",
-"Tuesday" => "星期二",
-"Wednesday" => "星期三",
-"Thursday" => "星期四",
-"Friday" => "星期五",
-"Saturday" => "星期六",
-"January" => "一月",
-"February" => "二月",
-"March" => "三月",
-"April" => "四月",
-"May" => "五月",
-"June" => "六月",
-"July" => "七月",
-"August" => "八月",
-"September" => "九月",
-"October" => "十月",
-"November" => "十一月",
-"December" => "十二月",
"web services under your control" => "由您掌控的网络服务",
"Log out" => "注销",
"Automatic logon rejected!" => "自动登录被拒绝!",
diff --git a/core/l10n/zh_TW.php b/core/l10n/zh_TW.php
index 7537c76445..74cb3b34d0 100644
--- a/core/l10n/zh_TW.php
+++ b/core/l10n/zh_TW.php
@@ -11,6 +11,25 @@
"Error adding %s to favorites." => "加入 %s 到最愛時發生錯誤。",
"No categories selected for deletion." => "沒有選擇要刪除的分類。",
"Error removing %s from favorites." => "從最愛移除 %s 時發生錯誤。",
+"Sunday" => "週日",
+"Monday" => "週一",
+"Tuesday" => "週二",
+"Wednesday" => "週三",
+"Thursday" => "週四",
+"Friday" => "週五",
+"Saturday" => "週六",
+"January" => "一月",
+"February" => "二月",
+"March" => "三月",
+"April" => "四月",
+"May" => "五月",
+"June" => "六月",
+"July" => "七月",
+"August" => "八月",
+"September" => "九月",
+"October" => "十月",
+"November" => "十一月",
+"December" => "十二月",
"Settings" => "設定",
"seconds ago" => "幾秒前",
"1 minute ago" => "1 分鐘前",
@@ -34,6 +53,7 @@
"Error" => "錯誤",
"The app name is not specified." => "沒有指定 app 名稱。",
"The required file {file} is not installed!" => "沒有安裝所需的檔案 {file} !",
+"Share" => "分享",
"Error while sharing" => "分享時發生錯誤",
"Error while unsharing" => "取消分享時發生錯誤",
"Error while changing permissions" => "修改權限時發生錯誤",
@@ -98,25 +118,6 @@
"Database tablespace" => "資料庫 tablespace",
"Database host" => "資料庫主機",
"Finish setup" => "完成設定",
-"Sunday" => "週日",
-"Monday" => "週一",
-"Tuesday" => "週二",
-"Wednesday" => "週三",
-"Thursday" => "週四",
-"Friday" => "週五",
-"Saturday" => "週六",
-"January" => "一月",
-"February" => "二月",
-"March" => "三月",
-"April" => "四月",
-"May" => "五月",
-"June" => "六月",
-"July" => "七月",
-"August" => "八月",
-"September" => "九月",
-"October" => "十月",
-"November" => "十一月",
-"December" => "十二月",
"web services under your control" => "網路服務在您控制之下",
"Log out" => "登出",
"Automatic logon rejected!" => "自動登入被拒!",
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 18291e0f84..2886c3c5a2 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -1,7 +1,7 @@
- ownCloud
+ ownCloud
diff --git a/core/templates/update.php b/core/templates/update.php
index c65230db0d..ae714dcfb9 100644
--- a/core/templates/update.php
+++ b/core/templates/update.php
@@ -3,28 +3,3 @@
t('Updating ownCloud to version %s, this may take a while.', array($_['version'])); ?>
-
\ No newline at end of file
diff --git a/db_structure.xml b/db_structure.xml
index db43ef2114..f4111bfabd 100644
--- a/db_structure.xml
+++ b/db_structure.xml
@@ -60,16 +60,96 @@