diff --git a/.htaccess b/.htaccess index 048a56d638..616118b2ce 100755 --- a/.htaccess +++ b/.htaccess @@ -1,4 +1,5 @@ +php_value cgi.fix_pathinfo 1 SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1 @@ -32,4 +33,5 @@ RewriteRule ^remote/(.*) remote.php [QSA,L] AddType image/svg+xml svg svgz AddEncoding gzip svgz +AddDefaultCharset utf-8 Options -Indexes diff --git a/README b/README index 9b113c4f67..5f5d190cb0 100644 --- a/README +++ b/README @@ -3,7 +3,7 @@ A personal cloud which runs on your own server. http://ownCloud.org -Installation instructions: http://owncloud.org/support +Installation instructions: http://doc.owncloud.org/server/5.0/developer_manual/app/gettingstarted.html Contribution Guidelines: http://owncloud.org/dev/contribute/ Source code: https://github.com/owncloud diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php index b9a4ddaf5e..7c8dcb372e 100644 --- a/apps/files/ajax/download.php +++ b/apps/files/ajax/download.php @@ -33,4 +33,10 @@ OCP\User::checkLoggedIn(); $files = $_GET["files"]; $dir = $_GET["dir"]; -OC_Files::get($dir, $files, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); +$files_list = json_decode($files); +// in case we get only a single file +if ($files_list === NULL ) { + $files_list = array($files); +} + +OC_Files::get($dir, $files_list, $_SERVER['REQUEST_METHOD'] == 'HEAD' ? true : false); diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 07977f5ddf..5b697777e4 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -26,8 +26,7 @@ foreach ($_FILES['files']['error'] as $error) { UPLOAD_ERR_OK => $l->t('There is no error, the file uploaded with success'), UPLOAD_ERR_INI_SIZE => $l->t('The uploaded file exceeds the upload_max_filesize directive in php.ini: ') . ini_get('upload_max_filesize'), - UPLOAD_ERR_FORM_SIZE => $l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified' - . ' in the HTML form'), + UPLOAD_ERR_FORM_SIZE => $l->t('The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form'), UPLOAD_ERR_PARTIAL => $l->t('The uploaded file was only partially uploaded'), UPLOAD_ERR_NO_FILE => $l->t('No file was uploaded'), UPLOAD_ERR_NO_TMP_DIR => $l->t('Missing a temporary folder'), @@ -48,7 +47,7 @@ $totalSize = 0; foreach ($files['size'] as $size) { $totalSize += $size; } -if ($totalSize > \OC\Files\Filesystem::free_space($dir)) { +if ($totalSize > $maxUploadFilesize) { OCP\JSON::error(array('data' => array('message' => $l->t('Not enough storage available'), 'uploadMaxFilesize' => $maxUploadFilesize, 'maxHumanFilesize' => $maxHumanFilesize))); diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml index 7c82c839da..3480037853 100644 --- a/apps/files/appinfo/info.xml +++ b/apps/files/appinfo/info.xml @@ -5,7 +5,7 @@ File Management AGPL Robin Appelman - 4.91 + 4.93 true diff --git a/apps/files/css/files.css b/apps/files/css/files.css index dfc2e4c0e2..4d2b16e6f1 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -55,7 +55,7 @@ font-size:1.5em; font-weight:bold; color:#888; text-shadow:#fff 0 1px 0; } -table { position:relative; top:37px; width:100%; } +#filestable { position: relative; top:37px; width:100%; } tbody tr { background-color:#fff; height:2.5em; } tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#f8f8f8; } tbody tr.selected { background-color:#eee; } @@ -73,7 +73,7 @@ table th#headerSize, table td.filesize { min-width:3em; padding:0 1em; text-alig table th#headerDate, table td.date { min-width:11em; padding:0 .1em 0 1em; text-align:left; } /* Multiselect bar */ -table.multiselect { top:63px; } +#filestable.multiselect { top:63px; } table.multiselect thead { position:fixed; top:82px; z-index:1; -moz-box-sizing: border-box; box-sizing: border-box; left: 0; padding-left: 64px; width:100%; } table.multiselect thead th { background:rgba(230,230,230,.8); color:#000; font-weight:bold; border-bottom:0; } table.multiselect #headerName { width: 100%; } @@ -123,6 +123,24 @@ a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; } .selectedActions a { display:inline; margin:-.5em 0; padding:.5em !important; } .selectedActions a img { position:relative; top:.3em; } +#fileList a.action { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; + display:none; +} +#fileList tr:hover a.action, #fileList a.action.permanent { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=.5)"; + filter: alpha(opacity=.5); + opacity: .5; + display:inline; +} +#fileList tr:hover a.action:hover { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=1)"; + filter: alpha(opacity=1); + opacity: 1; + display:inline; +} #scanning-message{ top:40%; left:40%; position:absolute; display:none; } diff --git a/apps/files/index.php b/apps/files/index.php index 434e98c6ea..20fbf7f93b 100644 --- a/apps/files/index.php +++ b/apps/files/index.php @@ -90,13 +90,13 @@ foreach (explode('/', $dir) as $i) { // make breadcrumb und filelist markup $list = new OCP\Template('files', 'part.list', ''); -$list->assign('files', $files, false); -$list->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false); -$list->assign('downloadURL', OCP\Util::linkToRoute('download', array('file' => '/')), false); +$list->assign('files', $files); +$list->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir='); +$list->assign('downloadURL', OCP\Util::linkToRoute('download', array('file' => '/'))); $list->assign('disableSharing', false); $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); -$breadcrumbNav->assign('breadcrumb', $breadcrumb, false); -$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false); +$breadcrumbNav->assign('breadcrumb', $breadcrumb); +$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir='); $permissions = OCP\PERMISSION_READ; if (\OC\Files\Filesystem::isCreatable($dir . '/')) { @@ -125,8 +125,8 @@ if ($needUpgrade) { OCP\Util::addscript('files', 'files'); OCP\Util::addscript('files', 'keyboardshortcuts'); $tmpl = new OCP\Template('files', 'index', 'user'); - $tmpl->assign('fileList', $list->fetchPage(), false); - $tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); + $tmpl->assign('fileList', $list->fetchPage()); + $tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage()); $tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($dir)); $tmpl->assign('isCreatable', \OC\Files\Filesystem::isCreatable($dir . '/')); $tmpl->assign('permissions', $permissions); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index cc107656da..1db54f45bb 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -35,7 +35,7 @@ var FileList={ if(extension){ name_span.append($('').addClass('extension').text(extension)); } - //dirs can show the number of uploaded files + //dirs can show the number of uploaded files if (type == 'dir') { link_elem.append($('').attr({ 'class': 'uploadtext', @@ -44,7 +44,7 @@ var FileList={ } td.append(link_elem); tr.append(td); - + //size column if(size!=t('files', 'Pending')){ simpleSize=simpleFileSize(size); @@ -59,7 +59,7 @@ var FileList={ "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')' }).text(simpleSize); tr.append(td); - + // date column var modifiedColor = Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5); td = $('').attr({ "class": "date" }); @@ -87,7 +87,7 @@ var FileList={ lastModified, $('#permissions').val() ); - + FileList.insertElement(name, 'file', tr.attr('data-file',name)); var row = $('tr').filterAttr('data-file',name); if(loading){ @@ -101,7 +101,7 @@ var FileList={ FileActions.display(row.find('td.filename')); }, addDir:function(name,size,lastModified,hidden){ - + var tr = this.createRow( 'dir', name, @@ -111,7 +111,7 @@ var FileList={ lastModified, $('#permissions').val() ); - + FileList.insertElement(name,'dir',tr); var row = $('tr').filterAttr('data-file',name); row.find('td.filename').draggable(dragOptions); @@ -246,14 +246,17 @@ var FileList={ }, checkName:function(oldName, newName, isNewFile) { if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) { - $('#notification').data('oldName', oldName); - $('#notification').data('newName', newName); - $('#notification').data('isNewFile', isNewFile); - if (isNewFile) { - OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+''+t('files', 'replace')+''+t('files', 'suggest name')+''+t('files', 'cancel')+''); - } else { - OC.Notification.showHtml(t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+''+t('files', 'replace')+''+t('files', 'cancel')+''); - } + var html; + if(isNewFile){ + html = t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+''+t('files', 'replace')+''+t('files', 'suggest name')+' '+t('files', 'cancel')+''; + }else{ + html = t('files', '{new_name} already exists', {new_name: escapeHTML(newName)})+''+t('files', 'replace')+''+t('files', 'cancel')+''; + } + html = $('' + html + ''); + html.attr('data-oldName', oldName); + html.attr('data-newName', newName); + html.attr('data-isNewFile', isNewFile); + OC.Notification.showHtml(html); return true; } else { return false; @@ -291,9 +294,7 @@ var FileList={ FileList.lastAction = function() { FileList.finishReplace(); }; - if (isNewFile) { - OC.Notification.showHtml(t('files', 'replaced {new_name}', {new_name: newName})+''+t('files', 'undo')+''); - } else { + if (!isNewFile) { OC.Notification.showHtml(t('files', 'replaced {new_name} with {old_name}', {new_name: newName}, {old_name: oldName})+''+t('files', 'undo')+''); } }, @@ -315,8 +316,8 @@ var FileList={ do_delete:function(files){ if(files.substr){ files=[files]; - } - for (var i in files) { + } + for (var i=0; i'; @@ -334,7 +335,7 @@ var FileList={ if (result.status == 'success') { $.each(files,function(index,file){ var files = $('tr').filterAttr('data-file',file); - files.hide(); + files.remove(); files.find('input[type="checkbox"]').removeAttr('checked'); files.removeClass('selected'); }); @@ -344,7 +345,7 @@ var FileList={ var deleteAction = $('tr').filterAttr('data-file',file).children("td.date").children(".move2trash"); deleteAction[0].outerHTML = oldHTML; }); - } + } }); } }; @@ -376,19 +377,19 @@ $(document).ready(function(){ FileList.lastAction = null; OC.Notification.hide(); }); - $('#notification').on('click', '.replace', function() { + $('#notification:first-child').on('click', '.replace', function() { OC.Notification.hide(function() { - FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile')); + FileList.replace($('#notification > span').attr('data-oldName'), $('#notification > span').attr('data-newName'), $('#notification > span').attr('data-isNewFile')); }); }); - $('#notification').on('click', '.suggest', function() { - $('tr').filterAttr('data-file', $('#notification').data('oldName')).show(); + $('#notification:first-child').on('click', '.suggest', function() { + $('tr').filterAttr('data-file', $('#notification > span').attr('data-oldName')).show(); OC.Notification.hide(); }); - $('#notification').on('click', '.cancel', function() { - if ($('#notification').data('isNewFile')) { + $('#notification:first-child').on('click', '.cancel', function() { + if ($('#notification > span').attr('data-isNewFile')) { FileList.deleteCanceled = false; - FileList.deleteFiles = [$('#notification').data('oldName')]; + FileList.deleteFiles = [$('#notification > span').attr('data-oldName')]; } }); FileList.useUndo=(window.onbeforeunload)?true:false; diff --git a/apps/files/js/files.js b/apps/files/js/files.js index 918182162d..a4ef41c280 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -114,7 +114,7 @@ $(document).ready(function() { $(this).parent().children('#file_upload_start').trigger('click'); return false; }); - + // Show trash bin $('#trash a').live('click', function() { window.location=OC.filePath('files_trashbin', '', 'index.php'); @@ -162,9 +162,10 @@ $(document).ready(function() { var tr=$('tr').filterAttr('data-file',filename); var renaming=tr.data('renaming'); if(!renaming && !FileList.isLoading(filename)){ - var mime=$(this).parent().parent().data('mime'); - var type=$(this).parent().parent().data('type'); - var permissions = $(this).parent().parent().data('permissions'); + FileActions.currentFile = $(this).parent(); + var mime=FileActions.getCurrentMimeType(); + var type=FileActions.getCurrentType(); + var permissions = FileActions.getCurrentPermissions(); var action=FileActions.getDefault(mime,type, permissions); if(action){ event.preventDefault(); @@ -219,14 +220,15 @@ $(document).ready(function() { }); $('.download').click('click',function(event) { - var files=getSelectedFiles('name').join(';'); + var files=getSelectedFiles('name'); + var fileslist = JSON.stringify(files); var dir=$('#dir').val()||'/'; OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.')); // use special download URL if provided, e.g. for public shared files if ( (downloadURL = document.getElementById("downloadURL")) ) { window.location=downloadURL.value+"&download&files="+files; } else { - window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: files }); + window.location=OC.filePath('files', 'ajax', 'download.php') + '?'+ $.param({ dir: dir, files: fileslist }); } return false; }); @@ -523,7 +525,7 @@ $(document).ready(function() { crumb.text(text); } - $(window).click(function(){ + $(document).click(function(){ $('#new>ul').hide(); $('#new').removeClass('active'); $('#new li').each(function(i,element){ @@ -594,7 +596,7 @@ $(document).ready(function() { var date=new Date(); FileList.addFile(name,0,date,false,hidden); var tr=$('tr').filterAttr('data-file',name); - tr.data('mime','text/plain').data('id',result.data.id); + tr.attr('data-mime','text/plain'); tr.attr('data-id', result.data.id); getMimeIcon('text/plain',function(path){ tr.find('td.filename').attr('style','background-image:url('+path+')'); @@ -816,26 +818,26 @@ var createDragShadow = function(event){ //select dragged file $(event.target).parents('tr').find('td input:first').prop('checked',true); } - + var selectedFiles = getSelectedFiles(); - + if (!isDragSelected && selectedFiles.length == 1) { //revert the selection $(event.target).parents('tr').find('td input:first').prop('checked',false); } - + //also update class when we dragged more than one file if (selectedFiles.length > 1) { $(event.target).parents('tr').addClass('selected'); } - + // build dragshadow var dragshadow = $('
'); var tbody = $(''); dragshadow.append(tbody); - + var dir=$('#dir').val(); - + $(selectedFiles).each(function(i,elem){ var newtr = $('' +''+elem.name+''+humanFileSize(elem.size)+'' @@ -849,7 +851,7 @@ var createDragShadow = function(event){ }); } }); - + return dragshadow; } @@ -862,6 +864,10 @@ var dragOptions={ $('#fileList tr td.filename').addClass('ui-draggable'); } } +// sane browsers support using the distance option +if ( ! $.browser.msie) { + dragOptions['distance'] = 20; +} var folderDropOptions={ drop: function( event, ui ) { @@ -869,9 +875,9 @@ var folderDropOptions={ 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'); diff --git a/apps/files/l10n/bg_BG.php b/apps/files/l10n/bg_BG.php index f16a83bdfa..a4d23e5afb 100644 --- a/apps/files/l10n/bg_BG.php +++ b/apps/files/l10n/bg_BG.php @@ -3,6 +3,7 @@ "Failed to write to disk" => "Възникна проблем при запис в диска", "Invalid directory." => "Невалидна директория.", "Files" => "Файлове", +"Delete permanently" => "Изтриване завинаги", "Delete" => "Изтриване", "Rename" => "Преименуване", "Pending" => "Чакащо", diff --git a/apps/files/l10n/bn_BD.php b/apps/files/l10n/bn_BD.php index 05cfb9f138..aec5d7f9d9 100644 --- a/apps/files/l10n/bn_BD.php +++ b/apps/files/l10n/bn_BD.php @@ -19,9 +19,8 @@ "replace" => "প্রতিস্থাপন", "suggest name" => "নাম সুপারিশ করুন", "cancel" => "বাতিল", -"replaced {new_name}" => "{new_name} প্রতিস্থাপন করা হয়েছে", -"undo" => "ক্রিয়া প্রত্যাহার", "replaced {new_name} with {old_name}" => "{new_name} কে {old_name} নামে প্রতিস্থাপন করা হয়েছে", +"undo" => "ক্রিয়া প্রত্যাহার", "'.' is an invalid file name." => "টি একটি অননুমোদিত নাম।", "File name cannot be empty." => "ফাইলের নামটি ফাঁকা রাখা যাবে না।", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "নামটি সঠিক নয়, '\\', '/', '<', '>', ':', '\"', '|', '?' এবং '*' অনুমোদিত নয়।", diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php index ecfc6abc8d..43aaea31e8 100644 --- a/apps/files/l10n/ca.php +++ b/apps/files/l10n/ca.php @@ -21,9 +21,8 @@ "replace" => "substitueix", "suggest name" => "sugereix un nom", "cancel" => "cancel·la", -"replaced {new_name}" => "s'ha substituït {new_name}", -"undo" => "desfés", "replaced {new_name} with {old_name}" => "s'ha substituït {old_name} per {new_name}", +"undo" => "desfés", "perform delete operation" => "executa d'operació d'esborrar", "'.' is an invalid file name." => "'.' és un nom no vàlid per un fitxer.", "File name cannot be empty." => "El nom del fitxer no pot ser buit.", @@ -60,7 +59,9 @@ "Text file" => "Fitxer de text", "Folder" => "Carpeta", "From link" => "Des d'enllaç", +"Deleted files" => "Fitxers esborrats", "Cancel upload" => "Cancel·la la pujada", +"You don’t have write permissions here." => "No teniu permisos d'escriptura aquí.", "Nothing in here. Upload something!" => "Res per aquí. Pugeu alguna cosa!", "Download" => "Baixa", "Unshare" => "Deixa de compartir", diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php index 7376056e4c..48b60bfb71 100644 --- a/apps/files/l10n/cs_CZ.php +++ b/apps/files/l10n/cs_CZ.php @@ -21,9 +21,8 @@ "replace" => "nahradit", "suggest name" => "navrhnout název", "cancel" => "zrušit", -"replaced {new_name}" => "nahrazeno {new_name}", -"undo" => "zpět", "replaced {new_name} with {old_name}" => "nahrazeno {new_name} s {old_name}", +"undo" => "zpět", "perform delete operation" => "provést smazání", "'.' 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.", @@ -60,7 +59,9 @@ "Text file" => "Textový soubor", "Folder" => "Složka", "From link" => "Z odkazu", +"Deleted files" => "Odstraněné soubory", "Cancel upload" => "Zrušit odesílání", +"You don’t have write permissions here." => "Nemáte zde práva zápisu.", "Nothing in here. Upload something!" => "Žádný obsah. Nahrajte něco.", "Download" => "Stáhnout", "Unshare" => "Zrušit sdílení", diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php index 8b4ad675e0..c147c939f8 100644 --- a/apps/files/l10n/da.php +++ b/apps/files/l10n/da.php @@ -21,9 +21,8 @@ "replace" => "erstat", "suggest name" => "foreslå navn", "cancel" => "fortryd", -"replaced {new_name}" => "erstattede {new_name}", -"undo" => "fortryd", "replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}", +"undo" => "fortryd", "perform delete operation" => "udfør slet operation", "'.' is an invalid file name." => "'.' er et ugyldigt filnavn.", "File name cannot be empty." => "Filnavnet kan ikke stå tomt.", @@ -60,7 +59,9 @@ "Text file" => "Tekstfil", "Folder" => "Mappe", "From link" => "Fra link", +"Deleted files" => "Slettede filer", "Cancel upload" => "Fortryd upload", +"You don’t have write permissions here." => "Du har ikke skriverettigheder her.", "Nothing in here. Upload something!" => "Her er tomt. Upload noget!", "Download" => "Download", "Unshare" => "Fjern deling", diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php index d96e512ece..53427503f4 100644 --- a/apps/files/l10n/de.php +++ b/apps/files/l10n/de.php @@ -1,7 +1,7 @@ "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", +"Could not move %s - File with this name already exists" => "%s konnte nicht verschoben werden - eine Datei mit diesem Namen existiert bereits.", +"Could not move %s" => "%s konnte nicht verschoben werden", +"Unable to rename file" => "Die Datei konnte nicht umbenannt werden", "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", @@ -21,9 +21,8 @@ "replace" => "ersetzen", "suggest name" => "Name vorschlagen", "cancel" => "abbrechen", -"replaced {new_name}" => "{new_name} wurde ersetzt", -"undo" => "rückgängig machen", "replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}", +"undo" => "rückgängig machen", "perform delete operation" => "Löschvorgang ausführen", "'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.", "File name cannot be empty." => "Der Dateiname darf nicht leer sein.", @@ -60,7 +59,9 @@ "Text file" => "Textdatei", "Folder" => "Ordner", "From link" => "Von einem Link", +"Deleted files" => "Gelöschte Dateien", "Cancel upload" => "Upload abbrechen", +"You don’t have write permissions here." => "Du besitzt hier keine Schreib-Berechtigung.", "Nothing in here. Upload something!" => "Alles leer. Lade etwas hoch!", "Download" => "Herunterladen", "Unshare" => "Nicht mehr freigeben", diff --git a/apps/files/l10n/de_DE.php b/apps/files/l10n/de_DE.php index 0dfc19ff01..538c1b6365 100644 --- a/apps/files/l10n/de_DE.php +++ b/apps/files/l10n/de_DE.php @@ -21,10 +21,9 @@ "replace" => "ersetzen", "suggest name" => "Name vorschlagen", "cancel" => "abbrechen", -"replaced {new_name}" => "{new_name} wurde ersetzt", -"undo" => "rückgängig machen", "replaced {new_name} with {old_name}" => "{old_name} wurde ersetzt durch {new_name}", -"perform delete operation" => "Führe das Löschen aus", +"undo" => "rückgängig machen", +"perform delete operation" => "führe das Löschen aus", "'.' 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.", @@ -60,7 +59,9 @@ "Text file" => "Textdatei", "Folder" => "Ordner", "From link" => "Von einem Link", +"Deleted files" => "Gelöschte Dateien", "Cancel upload" => "Upload abbrechen", +"You don’t have write permissions here." => "Sie haben hier keine Schreib-Berechtigungen.", "Nothing in here. Upload something!" => "Alles leer. Bitte laden Sie etwas hoch!", "Download" => "Herunterladen", "Unshare" => "Nicht mehr freigeben", @@ -68,5 +69,5 @@ "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server.", "Files are being scanned, please wait." => "Dateien werden gescannt, bitte warten.", "Current scanning" => "Scanne", -"Upgrading filesystem cache..." => "Aktualisiere den Dateisystem-Cache" +"Upgrading filesystem cache..." => "Aktualisiere den Dateisystem-Cache..." ); diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php index 2a110afa96..63759f1201 100644 --- a/apps/files/l10n/el.php +++ b/apps/files/l10n/el.php @@ -21,9 +21,8 @@ "replace" => "αντικατέστησε", "suggest name" => "συνιστώμενο όνομα", "cancel" => "ακύρωση", -"replaced {new_name}" => "{new_name} αντικαταστάθηκε", -"undo" => "αναίρεση", "replaced {new_name} with {old_name}" => "αντικαταστάθηκε το {new_name} με {old_name}", +"undo" => "αναίρεση", "perform delete operation" => "εκτέλεση διαδικασία διαγραφής", "'.' is an invalid file name." => "'.' είναι μη έγκυρο όνομα αρχείου.", "File name cannot be empty." => "Το όνομα αρχείου δεν πρέπει να είναι κενό.", @@ -60,8 +59,9 @@ "Text file" => "Αρχείο κειμένου", "Folder" => "Φάκελος", "From link" => "Από σύνδεσμο", +"Deleted files" => "Διαγραμμένα αρχεία", "Cancel upload" => "Ακύρωση αποστολής", -"Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Ανέβασε κάτι!", +"Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Μεταφορτώστε κάτι!", "Download" => "Λήψη", "Unshare" => "Διακοπή κοινής χρήσης", "Upload too large" => "Πολύ μεγάλο αρχείο προς αποστολή", diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php index b943244f1a..225408f9a7 100644 --- a/apps/files/l10n/eo.php +++ b/apps/files/l10n/eo.php @@ -19,9 +19,8 @@ "replace" => "anstataŭigi", "suggest name" => "sugesti nomon", "cancel" => "nuligi", -"replaced {new_name}" => "anstataŭiĝis {new_name}", -"undo" => "malfari", "replaced {new_name} with {old_name}" => "anstataŭiĝis {new_name} per {old_name}", +"undo" => "malfari", "'.' is an invalid file name." => "'.' ne estas valida dosiernomo.", "File name cannot be empty." => "Dosiernomo devas ne malpleni.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nevalida nomo: “\\”, “/”, “<”, “>”, “:”, “\"”, “|”, “?” kaj “*” ne permesatas.", diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php index 12262b5481..f702a5b513 100644 --- a/apps/files/l10n/es.php +++ b/apps/files/l10n/es.php @@ -21,9 +21,8 @@ "replace" => "reemplazar", "suggest name" => "sugerir nombre", "cancel" => "cancelar", -"replaced {new_name}" => "reemplazado {new_name}", -"undo" => "deshacer", "replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}", +"undo" => "deshacer", "perform delete operation" => "Eliminar", "'.' is an invalid file name." => "'.' es un nombre de archivo inválido.", "File name cannot be empty." => "El nombre de archivo no puede estar vacío.", @@ -60,7 +59,9 @@ "Text file" => "Archivo de texto", "Folder" => "Carpeta", "From link" => "Desde el enlace", +"Deleted files" => "Archivos eliminados", "Cancel upload" => "Cancelar subida", +"You don’t have write permissions here." => "No tienes permisos para escribir aquí.", "Nothing in here. Upload something!" => "Aquí no hay nada. ¡Sube algo!", "Download" => "Descargar", "Unshare" => "Dejar de compartir", diff --git a/apps/files/l10n/es_AR.php b/apps/files/l10n/es_AR.php index 0dc423f96f..f16385a652 100644 --- a/apps/files/l10n/es_AR.php +++ b/apps/files/l10n/es_AR.php @@ -21,9 +21,8 @@ "replace" => "reemplazar", "suggest name" => "sugerir nombre", "cancel" => "cancelar", -"replaced {new_name}" => "reemplazado {new_name}", -"undo" => "deshacer", "replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}", +"undo" => "deshacer", "perform delete operation" => "Eliminar", "'.' 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.", @@ -60,6 +59,7 @@ "Text file" => "Archivo de texto", "Folder" => "Carpeta", "From link" => "Desde enlace", +"Deleted files" => "Archivos Borrados", "Cancel upload" => "Cancelar subida", "Nothing in here. Upload something!" => "No hay nada. ¡Subí contenido!", "Download" => "Descargar", diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php index 3ec7cbb1a6..f1c94e93aa 100644 --- a/apps/files/l10n/et_EE.php +++ b/apps/files/l10n/et_EE.php @@ -19,9 +19,8 @@ "replace" => "asenda", "suggest name" => "soovita nime", "cancel" => "loobu", -"replaced {new_name}" => "asendatud nimega {new_name}", -"undo" => "tagasi", "replaced {new_name} with {old_name}" => "asendas nime {old_name} nimega {new_name}", +"undo" => "tagasi", "'.' is an invalid file name." => "'.' on vigane failinimi.", "File name cannot be empty." => "Faili nimi ei saa olla tühi.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud.", diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php index 10f19cf4cb..63c62ce9a5 100644 --- a/apps/files/l10n/eu.php +++ b/apps/files/l10n/eu.php @@ -21,9 +21,8 @@ "replace" => "ordeztu", "suggest name" => "aholkatu izena", "cancel" => "ezeztatu", -"replaced {new_name}" => "ordezkatua {new_name}", -"undo" => "desegin", "replaced {new_name} with {old_name}" => " {new_name}-k {old_name} ordezkatu du", +"undo" => "desegin", "perform delete operation" => "Ezabatu", "'.' is an invalid file name." => "'.' ez da fitxategi izen baliogarria.", "File name cannot be empty." => "Fitxategi izena ezin da hutsa izan.", @@ -60,7 +59,9 @@ "Text file" => "Testu fitxategia", "Folder" => "Karpeta", "From link" => "Estekatik", +"Deleted files" => "Ezabatutako fitxategiak", "Cancel upload" => "Ezeztatu igoera", +"You don’t have write permissions here." => "Ez duzu hemen idazteko baimenik.", "Nothing in here. Upload something!" => "Ez dago ezer. Igo zerbait!", "Download" => "Deskargatu", "Unshare" => "Ez elkarbanatu", diff --git a/apps/files/l10n/fa.php b/apps/files/l10n/fa.php index d4cbb99e10..f4e0af9576 100644 --- a/apps/files/l10n/fa.php +++ b/apps/files/l10n/fa.php @@ -19,9 +19,8 @@ "replace" => "جایگزین", "suggest name" => "پیشنهاد نام", "cancel" => "لغو", -"replaced {new_name}" => "{نام _جدید} جایگزین شد ", -"undo" => "بازگشت", "replaced {new_name} with {old_name}" => "{نام_جدید} با { نام_قدیمی} جایگزین شد.", +"undo" => "بازگشت", "'.' is an invalid file name." => "'.' یک نام پرونده نامعتبر است.", "File name cannot be empty." => "نام پرونده نمی تواند خالی باشد.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "نام نامعتبر ، '\\', '/', '<', '>', ':', '\"', '|', '?' و '*' مجاز نمی باشند.", diff --git a/apps/files/l10n/fi_FI.php b/apps/files/l10n/fi_FI.php index 81ac32c09f..6eb891d29d 100644 --- a/apps/files/l10n/fi_FI.php +++ b/apps/files/l10n/fi_FI.php @@ -54,7 +54,9 @@ "Text file" => "Tekstitiedosto", "Folder" => "Kansio", "From link" => "Linkistä", +"Deleted files" => "Poistetut tiedostot", "Cancel upload" => "Peru lähetys", +"You don’t have write permissions here." => "Tunnuksellasi ei ole kirjoitusoikeuksia tänne.", "Nothing in here. Upload something!" => "Täällä ei ole mitään. Lähetä tänne jotakin!", "Download" => "Lataa", "Unshare" => "Peru jakaminen", diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php index e2af33da77..9849184441 100644 --- a/apps/files/l10n/fr.php +++ b/apps/files/l10n/fr.php @@ -21,9 +21,8 @@ "replace" => "remplacer", "suggest name" => "Suggérer un nom", "cancel" => "annuler", -"replaced {new_name}" => "{new_name} a été remplacé", -"undo" => "annuler", "replaced {new_name} with {old_name}" => "{new_name} a été remplacé par {old_name}", +"undo" => "annuler", "perform delete operation" => "effectuer l'opération de suppression", "'.' 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.", @@ -60,6 +59,7 @@ "Text file" => "Fichier texte", "Folder" => "Dossier", "From link" => "Depuis le lien", +"Deleted files" => "Fichiers supprimés", "Cancel upload" => "Annuler l'envoi", "Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", "Download" => "Télécharger", diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php index 91896b8e39..d48839d0b6 100644 --- a/apps/files/l10n/gl.php +++ b/apps/files/l10n/gl.php @@ -17,13 +17,12 @@ "Delete" => "Eliminar", "Rename" => "Renomear", "Pending" => "Pendentes", -"{new_name} already exists" => "xa existe un {new_name}", +"{new_name} already exists" => "Xa existe un {new_name}", "replace" => "substituír", "suggest name" => "suxerir nome", "cancel" => "cancelar", -"replaced {new_name}" => "substituír {new_name}", -"undo" => "desfacer", "replaced {new_name} with {old_name}" => "substituír {new_name} por {old_name}", +"undo" => "desfacer", "perform delete operation" => "realizar a operación de eliminación", "'.' is an invalid file name." => "«.» é un nome de ficheiro incorrecto", "File name cannot be empty." => "O nome de ficheiro non pode estar baleiro", @@ -60,8 +59,10 @@ "Text file" => "Ficheiro de texto", "Folder" => "Cartafol", "From link" => "Desde a ligazón", +"Deleted files" => "Ficheiros eliminados", "Cancel upload" => "Cancelar o envío", -"Nothing in here. Upload something!" => "Aquí non hai nada por aquí. Envíe algo.", +"You don’t have write permissions here." => "Non ten permisos para escribir aquí.", +"Nothing in here. Upload something!" => "Aquí non hai nada. Envíe algo.", "Download" => "Descargar", "Unshare" => "Deixar de compartir", "Upload too large" => "Envío demasiado grande", diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php index 442eafe1c0..9d6b411c41 100644 --- a/apps/files/l10n/he.php +++ b/apps/files/l10n/he.php @@ -8,6 +8,7 @@ "Missing a temporary folder" => "תיקייה זמנית חסרה", "Failed to write to disk" => "הכתיבה לכונן נכשלה", "Files" => "קבצים", +"Delete permanently" => "מחק לצמיתות", "Delete" => "מחיקה", "Rename" => "שינוי שם", "Pending" => "ממתין", @@ -15,9 +16,8 @@ "replace" => "החלפה", "suggest name" => "הצעת שם", "cancel" => "ביטול", -"replaced {new_name}" => "{new_name} הוחלף", -"undo" => "ביטול", "replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}", +"undo" => "ביטול", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "השם שגוי, אסור להשתמש בתווים '\\', '/', '<', '>', ':', '\"', '|', '?' ו־'*'.", "Unable to upload your file as it is a directory or has 0 bytes" => "לא יכול להעלות את הקובץ מכיוון שזו תקיה או שמשקל הקובץ 0 בתים", "Upload Error" => "שגיאת העלאה", diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php index 9eed324415..54d5033f90 100644 --- a/apps/files/l10n/hu_HU.php +++ b/apps/files/l10n/hu_HU.php @@ -21,9 +21,8 @@ "replace" => "írjuk fölül", "suggest name" => "legyen más neve", "cancel" => "mégse", -"replaced {new_name}" => "a(z) {new_name} állományt kicseréltük", -"undo" => "visszavonás", "replaced {new_name} with {old_name}" => "{new_name} fájlt kicseréltük ezzel: {old_name}", +"undo" => "visszavonás", "perform delete operation" => "a törlés végrehajtása", "'.' is an invalid file name." => "'.' fájlnév érvénytelen.", "File name cannot be empty." => "A fájlnév nem lehet semmi.", @@ -60,7 +59,9 @@ "Text file" => "Szövegfájl", "Folder" => "Mappa", "From link" => "Feltöltés linkről", +"Deleted files" => "Törölt fájlok", "Cancel upload" => "A feltöltés megszakítása", +"You don’t have write permissions here." => "Itt nincs írásjoga.", "Nothing in here. Upload something!" => "Itt nincs semmi. Töltsön fel valamit!", "Download" => "Letöltés", "Unshare" => "Megosztás visszavonása", diff --git a/apps/files/l10n/hy.php b/apps/files/l10n/hy.php new file mode 100644 index 0000000000..29c0cd8b8d --- /dev/null +++ b/apps/files/l10n/hy.php @@ -0,0 +1,6 @@ + "Ջնջել", +"Close" => "Փակել", +"Save" => "Պահպանել", +"Download" => "Բեռնել" +); diff --git a/apps/files/l10n/id.php b/apps/files/l10n/id.php index 4c4e2e0f71..aff1933e56 100644 --- a/apps/files/l10n/id.php +++ b/apps/files/l10n/id.php @@ -19,6 +19,10 @@ "Name" => "Nama", "Size" => "Ukuran", "Modified" => "Dimodifikasi", +"1 folder" => "1 map", +"{count} folders" => "{count} map", +"1 file" => "1 berkas", +"{count} files" => "{count} berkas", "Upload" => "Unggah", "File handling" => "Penanganan berkas", "Maximum upload size" => "Ukuran unggah maksimum", diff --git a/apps/files/l10n/is.php b/apps/files/l10n/is.php index c0898c555b..9d735c3c54 100644 --- a/apps/files/l10n/is.php +++ b/apps/files/l10n/is.php @@ -19,9 +19,8 @@ "replace" => "yfirskrifa", "suggest name" => "stinga upp á nafni", "cancel" => "hætta við", -"replaced {new_name}" => "endurskýrði {new_name}", -"undo" => "afturkalla", "replaced {new_name} with {old_name}" => "yfirskrifaði {new_name} með {old_name}", +"undo" => "afturkalla", "'.' is an invalid file name." => "'.' er ekki leyfilegt nafn.", "File name cannot be empty." => "Nafn skráar má ekki vera tómt", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ógilt nafn, táknin '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' eru ekki leyfð.", diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php index 583a0ca7f7..2aac4ef20f 100644 --- a/apps/files/l10n/it.php +++ b/apps/files/l10n/it.php @@ -21,9 +21,8 @@ "replace" => "sostituisci", "suggest name" => "suggerisci nome", "cancel" => "annulla", -"replaced {new_name}" => "sostituito {new_name}", -"undo" => "annulla", "replaced {new_name} with {old_name}" => "sostituito {new_name} con {old_name}", +"undo" => "annulla", "perform delete operation" => "esegui l'operazione di eliminazione", "'.' is an invalid file name." => "'.' non è un nome file valido.", "File name cannot be empty." => "Il nome del file non può essere vuoto.", @@ -60,7 +59,9 @@ "Text file" => "File di testo", "Folder" => "Cartella", "From link" => "Da collegamento", +"Deleted files" => "File eliminati", "Cancel upload" => "Annulla invio", +"You don’t have write permissions here." => "Qui non hai i permessi di scrittura.", "Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", "Download" => "Scarica", "Unshare" => "Rimuovi condivisione", diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php index 85ec6b6e95..88349d1ba4 100644 --- a/apps/files/l10n/ja_JP.php +++ b/apps/files/l10n/ja_JP.php @@ -21,9 +21,8 @@ "replace" => "置き換え", "suggest name" => "推奨名称", "cancel" => "キャンセル", -"replaced {new_name}" => "{new_name} を置換", -"undo" => "元に戻す", "replaced {new_name} with {old_name}" => "{old_name} を {new_name} に置換", +"undo" => "元に戻す", "perform delete operation" => "削除を実行", "'.' is an invalid file name." => "'.' は無効なファイル名です。", "File name cannot be empty." => "ファイル名を空にすることはできません。", @@ -60,7 +59,9 @@ "Text file" => "テキストファイル", "Folder" => "フォルダ", "From link" => "リンク", +"Deleted files" => "削除ファイル", "Cancel upload" => "アップロードをキャンセル", +"You don’t have write permissions here." => "あなたには書き込み権限がありません。", "Nothing in here. Upload something!" => "ここには何もありません。何かアップロードしてください。", "Download" => "ダウンロード", "Unshare" => "共有しない", diff --git a/apps/files/l10n/ka.php b/apps/files/l10n/ka.php new file mode 100644 index 0000000000..148e688547 --- /dev/null +++ b/apps/files/l10n/ka.php @@ -0,0 +1,4 @@ + "ფაილები", +"Download" => "გადმოწერა" +); diff --git a/apps/files/l10n/ka_GE.php b/apps/files/l10n/ka_GE.php index a7b58f02d2..421c720a33 100644 --- a/apps/files/l10n/ka_GE.php +++ b/apps/files/l10n/ka_GE.php @@ -13,9 +13,8 @@ "replace" => "შეცვლა", "suggest name" => "სახელის შემოთავაზება", "cancel" => "უარყოფა", -"replaced {new_name}" => "{new_name} შეცვლილია", -"undo" => "დაბრუნება", "replaced {new_name} with {old_name}" => "{new_name} შეცვლილია {old_name}–ით", +"undo" => "დაბრუნება", "Unable to upload your file as it is a directory or has 0 bytes" => "თქვენი ფაილის ატვირთვა ვერ მოხერხდა. ის არის საქაღალდე და შეიცავს 0 ბაიტს", "Upload Error" => "შეცდომა ატვირთვისას", "Close" => "დახურვა", diff --git a/apps/files/l10n/ko.php b/apps/files/l10n/ko.php index d483f8061a..ba45bdaa5d 100644 --- a/apps/files/l10n/ko.php +++ b/apps/files/l10n/ko.php @@ -19,9 +19,8 @@ "replace" => "바꾸기", "suggest name" => "이름 제안", "cancel" => "취소", -"replaced {new_name}" => "{new_name}을(를) 대체함", -"undo" => "실행 취소", "replaced {new_name} with {old_name}" => "{old_name}이(가) {new_name}(으)로 대체됨", +"undo" => "실행 취소", "'.' is an invalid file name." => "'.' 는 올바르지 않은 파일 이름 입니다.", "File name cannot be empty." => "파일 이름이 비어 있을 수 없습니다.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "폴더 이름이 올바르지 않습니다. 이름에 문자 '\\', '/', '<', '>', ':', '\"', '|', '? ', '*'는 사용할 수 없습니다.", diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index 70296b5db9..2f16fc2242 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -13,9 +13,8 @@ "replace" => "pakeisti", "suggest name" => "pasiūlyti pavadinimą", "cancel" => "atšaukti", -"replaced {new_name}" => "pakeiskite {new_name}", -"undo" => "anuliuoti", "replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}", +"undo" => "anuliuoti", "Unable to upload your file as it is a directory or has 0 bytes" => "Neįmanoma įkelti failo - jo dydis gali būti 0 bitų arba tai katalogas", "Upload Error" => "Įkėlimo klaida", "Close" => "Užverti", diff --git a/apps/files/l10n/lv.php b/apps/files/l10n/lv.php index 9d4d2c9fb6..a7a9284c65 100644 --- a/apps/files/l10n/lv.php +++ b/apps/files/l10n/lv.php @@ -21,9 +21,8 @@ "replace" => "aizvietot", "suggest name" => "ieteiktais nosaukums", "cancel" => "atcelt", -"replaced {new_name}" => "aizvietots {new_name}", -"undo" => "atsaukt", "replaced {new_name} with {old_name}" => "aizvietoja {new_name} ar {old_name}", +"undo" => "atsaukt", "perform delete operation" => "veikt dzēšanas darbību", "'.' is an invalid file name." => "'.' ir nederīgs datnes nosaukums.", "File name cannot be empty." => "Datnes nosaukums nevar būt tukšs.", @@ -60,7 +59,9 @@ "Text file" => "Teksta datne", "Folder" => "Mape", "From link" => "No saites", +"Deleted files" => "Dzēstās datnes", "Cancel upload" => "Atcelt augšupielādi", +"You don’t have write permissions here." => "Jums nav tiesību šeit rakstīt.", "Nothing in here. Upload something!" => "Te vēl nekas nav. Rīkojies, sāc augšupielādēt!", "Download" => "Lejupielādēt", "Unshare" => "Pārtraukt dalīšanos", diff --git a/apps/files/l10n/mk.php b/apps/files/l10n/mk.php index 5cb7e72058..cf9ad8abaf 100644 --- a/apps/files/l10n/mk.php +++ b/apps/files/l10n/mk.php @@ -15,9 +15,8 @@ "replace" => "замени", "suggest name" => "предложи име", "cancel" => "откажи", -"replaced {new_name}" => "земенета {new_name}", -"undo" => "врати", "replaced {new_name} with {old_name}" => "заменета {new_name} со {old_name}", +"undo" => "врати", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неправилно име. , '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' не се дозволени.", "Unable to upload your file as it is a directory or has 0 bytes" => "Не може да се преземе вашата датотека бидејќи фолдерот во кој се наоѓа фајлот има големина од 0 бајти", "Upload Error" => "Грешка при преземање", diff --git a/apps/files/l10n/my_MM.php b/apps/files/l10n/my_MM.php new file mode 100644 index 0000000000..b791a134cc --- /dev/null +++ b/apps/files/l10n/my_MM.php @@ -0,0 +1,4 @@ + "ဖိုင်များ", +"Download" => "ဒေါင်းလုတ်" +); diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php index 2609923cbf..d9972feb6a 100644 --- a/apps/files/l10n/nb_NO.php +++ b/apps/files/l10n/nb_NO.php @@ -7,6 +7,7 @@ "Missing a temporary folder" => "Mangler en midlertidig mappe", "Failed to write to disk" => "Klarte ikke å skrive til disk", "Files" => "Filer", +"Delete permanently" => "Slett permanent", "Delete" => "Slett", "Rename" => "Omdøp", "Pending" => "Ventende", @@ -14,9 +15,8 @@ "replace" => "erstatt", "suggest name" => "foreslå navn", "cancel" => "avbryt", -"replaced {new_name}" => "erstatt {new_name}", -"undo" => "angre", "replaced {new_name} with {old_name}" => "erstatt {new_name} med {old_name}", +"undo" => "angre", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ugyldig navn, '\\', '/', '<', '>', ':', '\"', '|', '?' og '*' er ikke tillatt.", "Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes", "Upload Error" => "Opplasting feilet", diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php index 381325d113..6af7edf250 100644 --- a/apps/files/l10n/nl.php +++ b/apps/files/l10n/nl.php @@ -21,9 +21,8 @@ "replace" => "vervang", "suggest name" => "Stel een naam voor", "cancel" => "annuleren", -"replaced {new_name}" => "verving {new_name}", -"undo" => "ongedaan maken", "replaced {new_name} with {old_name}" => "verving {new_name} met {old_name}", +"undo" => "ongedaan maken", "perform delete operation" => "uitvoeren verwijderactie", "'.' is an invalid file name." => "'.' is een ongeldige bestandsnaam.", "File name cannot be empty." => "Bestandsnaam kan niet leeg zijn.", @@ -60,7 +59,9 @@ "Text file" => "Tekstbestand", "Folder" => "Map", "From link" => "Vanaf link", +"Deleted files" => "Verwijderde bestanden", "Cancel upload" => "Upload afbreken", +"You don’t have write permissions here." => "U hebt hier geen schrijfpermissies.", "Nothing in here. Upload something!" => "Er bevindt zich hier niets. Upload een bestand!", "Download" => "Download", "Unshare" => "Stop delen", diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php index 83091bad18..89eb342129 100644 --- a/apps/files/l10n/pl.php +++ b/apps/files/l10n/pl.php @@ -2,64 +2,72 @@ "Could not move %s - File with this name already exists" => "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", +"No file was uploaded. Unknown error" => "Żaden 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: ", -"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Rozmiar przesłanego pliku przekracza maksymalną wartość dyrektywy upload_max_filesize, zawartą formularzu HTML", -"The uploaded file was only partially uploaded" => "Plik przesłano tylko częściowo", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Wysłany plik przekracza wielkość dyrektywy MAX_FILE_SIZE określonej w formularzu HTML", +"The uploaded file was only partially uploaded" => "Załadowany plik został wysłany tylko częściowo.", "No file was uploaded" => "Nie przesłano żadnego pliku", "Missing a temporary folder" => "Brak katalogu tymczasowego", "Failed to write to disk" => "Błąd zapisu na dysk", +"Not enough storage available" => "Za mało dostępnego miejsca", "Invalid directory." => "Zła ścieżka.", "Files" => "Pliki", -"Delete" => "Usuwa element", +"Delete permanently" => "Trwale usuń", +"Delete" => "Usuń", "Rename" => "Zmień nazwę", "Pending" => "Oczekujące", "{new_name} already exists" => "{new_name} już istnieje", -"replace" => "zastap", +"replace" => "zastąp", "suggest name" => "zasugeruj nazwę", "cancel" => "anuluj", -"replaced {new_name}" => "zastąpiony {new_name}", -"undo" => "wróć", -"replaced {new_name} with {old_name}" => "zastąpiony {new_name} z {old_name}", -"'.' is an invalid file name." => "'.' jest nieprawidłową nazwą pliku.", +"replaced {new_name} with {old_name}" => "zastąpiono {new_name} przez {old_name}", +"undo" => "cofnij", +"perform delete operation" => "wykonaj operację usunięcia", +"'.' is an invalid file name." => "„.” jest nieprawidłową nazwą pliku.", "File name cannot be empty." => "Nazwa pliku nie może być pusta.", -"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Niepoprawna nazwa, Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*'są niedozwolone.", -"Unable to upload your file as it is a directory or has 0 bytes" => "Nie można wczytać pliku jeśli jest katalogiem lub ma 0 bajtów", +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nieprawidłowa nazwa. Znaki '\\', '/', '<', '>', ':', '\"', '|', '?' oraz '*' są niedozwolone.", +"Your storage is full, files can not be updated or synced anymore!" => "Magazyn jest pełny. Pliki nie mogą zostać zaktualizowane lub zsynchronizowane!", +"Your storage is almost full ({usedSpacePercent}%)" => "Twój magazyn jest prawie pełny ({usedSpacePercent}%)", +"Your download is being prepared. This might take some time if the files are big." => "Pobieranie jest przygotowywane. Może to zająć trochę czasu jeśli pliki są duże.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Nie można wczytać pliku, ponieważ jest on katalogiem lub ma 0 bajtów", "Upload Error" => "Błąd wczytywania", "Close" => "Zamknij", -"1 file uploading" => "1 plik wczytany", -"{count} files uploading" => "{count} przesyłanie plików", +"1 file uploading" => "1 plik wczytywany", +"{count} files uploading" => "Ilość przesyłanych plików: {count}", "Upload cancelled." => "Wczytywanie anulowane.", -"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.", +"File upload is in progress. Leaving the page now will cancel the upload." => "Wysyłanie pliku jest w toku. Jeśli opuścisz tę stronę, wysyłanie zostanie przerwane.", "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", +"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nieprawidłowa nazwa folderu. Korzystanie z nazwy „Shared” jest zarezerwowane dla ownCloud", "Name" => "Nazwa", "Size" => "Rozmiar", -"Modified" => "Czas modyfikacji", +"Modified" => "Modyfikacja", "1 folder" => "1 folder", -"{count} folders" => "{count} foldery", +"{count} folders" => "Ilość folderów: {count}", "1 file" => "1 plik", -"{count} files" => "{count} pliki", +"{count} files" => "Ilość plików: {count}", "Upload" => "Prześlij", "File handling" => "Zarządzanie plikami", "Maximum upload size" => "Maksymalny rozmiar wysyłanego pliku", -"max. possible: " => "max. możliwych", +"max. possible: " => "maks. możliwy:", "Needed for multi-file and folder downloads." => "Wymagany do pobierania wielu plików i folderów", "Enable ZIP-download" => "Włącz pobieranie ZIP-paczki", -"0 is unlimited" => "0 jest nielimitowane", +"0 is unlimited" => "0 - bez limitów", "Maximum input size for ZIP files" => "Maksymalna wielkość pliku wejściowego ZIP ", "Save" => "Zapisz", "New" => "Nowy", "Text file" => "Plik tekstowy", "Folder" => "Katalog", -"From link" => "Z linku", -"Cancel upload" => "Przestań wysyłać", -"Nothing in here. Upload something!" => "Brak zawartości. Proszę wysłać pliki!", -"Download" => "Pobiera element", +"From link" => "Z odnośnika", +"Deleted files" => "Pliki usunięte", +"Cancel upload" => "Anuluj wysyłanie", +"You don’t have write permissions here." => "Nie masz uprawnień do zapisu w tym miejscu.", +"Nothing in here. Upload something!" => "Pusto. Wyślij coś!", +"Download" => "Pobierz", "Unshare" => "Nie udostępniaj", "Upload too large" => "Wysyłany plik ma za duży rozmiar", -"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki które próbujesz przesłać, przekraczają maksymalną, dopuszczalną wielkość.", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki, które próbujesz przesłać, przekraczają maksymalną dopuszczalną wielkość.", "Files are being scanned, please wait." => "Skanowanie plików, proszę czekać.", -"Current scanning" => "Aktualnie skanowane" +"Current scanning" => "Aktualnie skanowane", +"Upgrading filesystem cache..." => "Uaktualnianie plików pamięci podręcznej..." ); diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php index 3a9dafcabf..3bebb68227 100644 --- a/apps/files/l10n/pt_BR.php +++ b/apps/files/l10n/pt_BR.php @@ -1,8 +1,8 @@ "Não possível mover %s - Um arquivo com este nome já existe", -"Could not move %s" => "Não possível mover %s", +"Could not move %s - File with this name already exists" => "Impossível mover %s - Um arquivo com este nome já existe", +"Could not move %s" => "Impossível mover %s", "Unable to rename file" => "Impossível renomear arquivo", -"No file was uploaded. Unknown error" => "Nenhum arquivo foi transferido. Erro desconhecido", +"No file was uploaded. Unknown error" => "Nenhum arquivo foi enviado. Erro desconhecido", "There is no error, the file uploaded with success" => "Não houve nenhum erro, o arquivo foi transferido com sucesso", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O arquivo enviado excede a diretiva upload_max_filesize no php.ini: ", "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o MAX_FILE_SIZE que foi especificado no formulário HTML", @@ -21,17 +21,16 @@ "replace" => "substituir", "suggest name" => "sugerir nome", "cancel" => "cancelar", -"replaced {new_name}" => "substituído {new_name}", -"undo" => "desfazer", "replaced {new_name} with {old_name}" => "Substituído {old_name} por {new_name} ", +"undo" => "desfazer", "perform delete operation" => "realizar operação de exclusão", "'.' 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 storage is full, files can not be updated or synced anymore!" => "Seu armazenamento está cheio, arquivos não serão mais atualizados nem sincronizados!", +"Your storage is full, files can not be updated or synced anymore!" => "Seu armazenamento está cheio, arquivos não podem mais ser atualizados ou sincronizados!", "Your storage is almost full ({usedSpacePercent}%)" => "Seu armazenamento está quase cheio ({usedSpacePercent}%)", "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.", +"Unable to upload your file as it is a directory or has 0 bytes" => "Impossível enviar seus arquivo por ele ser um diretório ou ter 0 bytes.", "Upload Error" => "Erro de envio", "Close" => "Fechar", "1 file uploading" => "enviando 1 arquivo", @@ -51,7 +50,7 @@ "File handling" => "Tratamento de Arquivo", "Maximum upload size" => "Tamanho máximo para carregar", "max. possible: " => "max. possível:", -"Needed for multi-file and folder downloads." => "Necessário para multiplos arquivos e diretório de downloads.", +"Needed for multi-file and folder downloads." => "Necessário para download de múltiplos arquivos e diretórios.", "Enable ZIP-download" => "Habilitar ZIP-download", "0 is unlimited" => "0 para ilimitado", "Maximum input size for ZIP files" => "Tamanho máximo para arquivo ZIP", @@ -60,7 +59,9 @@ "Text file" => "Arquivo texto", "Folder" => "Pasta", "From link" => "Do link", +"Deleted files" => "Arquivos apagados", "Cancel upload" => "Cancelar upload", +"You don’t have write permissions here." => "Você não possui permissão de escrita aqui.", "Nothing in here. Upload something!" => "Nada aqui.Carrege alguma coisa!", "Download" => "Baixar", "Unshare" => "Descompartilhar", @@ -68,5 +69,5 @@ "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor.", "Files are being scanned, please wait." => "Arquivos sendo escaneados, por favor aguarde.", "Current scanning" => "Scanning atual", -"Upgrading filesystem cache..." => "Aprimorando cache do sistema de arquivos..." +"Upgrading filesystem cache..." => "Atualizando cache do sistema de arquivos..." ); diff --git a/apps/files/l10n/pt_PT.php b/apps/files/l10n/pt_PT.php index e036b3dacb..7162517e81 100644 --- a/apps/files/l10n/pt_PT.php +++ b/apps/files/l10n/pt_PT.php @@ -21,9 +21,8 @@ "replace" => "substituir", "suggest name" => "sugira um nome", "cancel" => "cancelar", -"replaced {new_name}" => "{new_name} substituido", -"undo" => "desfazer", "replaced {new_name} with {old_name}" => "substituido {new_name} por {old_name}", +"undo" => "desfazer", "perform delete operation" => "Executar a tarefa de apagar", "'.' is an invalid file name." => "'.' não é um nome de ficheiro válido!", "File name cannot be empty." => "O nome do ficheiro não pode estar vazio.", @@ -60,7 +59,9 @@ "Text file" => "Ficheiro de texto", "Folder" => "Pasta", "From link" => "Da ligação", +"Deleted files" => "Ficheiros eliminados", "Cancel upload" => "Cancelar envio", +"You don’t have write permissions here." => "Não tem permissões de escrita aqui.", "Nothing in here. Upload something!" => "Vazio. Envie alguma coisa!", "Download" => "Transferir", "Unshare" => "Deixar de partilhar", diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php index 79604f56ad..153caba229 100644 --- a/apps/files/l10n/ro.php +++ b/apps/files/l10n/ro.php @@ -19,9 +19,8 @@ "replace" => "înlocuire", "suggest name" => "sugerează nume", "cancel" => "anulare", -"replaced {new_name}" => "inlocuit {new_name}", -"undo" => "Anulează ultima acțiune", "replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}", +"undo" => "Anulează ultima acțiune", "'.' is an invalid file name." => "'.' este un nume invalid de fișier.", "File name cannot be empty." => "Numele fișierului nu poate rămâne gol.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise.", diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php index 803b34e99c..cf8ee7c6c7 100644 --- a/apps/files/l10n/ru.php +++ b/apps/files/l10n/ru.php @@ -21,9 +21,8 @@ "replace" => "заменить", "suggest name" => "предложить название", "cancel" => "отмена", -"replaced {new_name}" => "заменено {new_name}", -"undo" => "отмена", "replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}", +"undo" => "отмена", "perform delete operation" => "выполняется операция удаления", "'.' is an invalid file name." => "'.' - неправильное имя файла.", "File name cannot be empty." => "Имя файла не может быть пустым.", @@ -60,7 +59,9 @@ "Text file" => "Текстовый файл", "Folder" => "Папка", "From link" => "Из ссылки", +"Deleted files" => "Удалённые файлы", "Cancel upload" => "Отмена загрузки", +"You don’t have write permissions here." => "У вас нет разрешений на запись здесь.", "Nothing in here. Upload something!" => "Здесь ничего нет. Загрузите что-нибудь!", "Download" => "Скачать", "Unshare" => "Отменить публикацию", diff --git a/apps/files/l10n/ru_RU.php b/apps/files/l10n/ru_RU.php index dbeab6b351..054ed8094d 100644 --- a/apps/files/l10n/ru_RU.php +++ b/apps/files/l10n/ru_RU.php @@ -21,9 +21,8 @@ "replace" => "отмена", "suggest name" => "подобрать название", "cancel" => "отменить", -"replaced {new_name}" => "заменено {новое_имя}", -"undo" => "отменить действие", "replaced {new_name} with {old_name}" => "заменено {новое_имя} с {старое_имя}", +"undo" => "отменить действие", "perform delete operation" => "выполняется процесс удаления", "'.' is an invalid file name." => "'.' является неверным именем файла.", "File name cannot be empty." => "Имя файла не может быть пустым.", diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php index 8ece8140d8..a6cb290911 100644 --- a/apps/files/l10n/sk_SK.php +++ b/apps/files/l10n/sk_SK.php @@ -21,9 +21,8 @@ "replace" => "nahradiť", "suggest name" => "pomôcť s menom", "cancel" => "zrušiť", -"replaced {new_name}" => "prepísaný {new_name}", -"undo" => "vrátiť", "replaced {new_name} with {old_name}" => "prepísaný {new_name} súborom {old_name}", +"undo" => "vrátiť", "perform delete operation" => "vykonať zmazanie", "'.' is an invalid file name." => "'.' je neplatné meno súboru.", "File name cannot be empty." => "Meno súboru nemôže byť prázdne", @@ -60,7 +59,9 @@ "Text file" => "Textový súbor", "Folder" => "Priečinok", "From link" => "Z odkazu", +"Deleted files" => "Zmazané súbory", "Cancel upload" => "Zrušiť odosielanie", +"You don’t have write permissions here." => "Nemáte oprávnenie na zápis.", "Nothing in here. Upload something!" => "Žiadny súbor. Nahrajte niečo!", "Download" => "Stiahnuť", "Unshare" => "Nezdielať", diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php index 6a379459f0..6458a588ae 100644 --- a/apps/files/l10n/sl.php +++ b/apps/files/l10n/sl.php @@ -15,9 +15,8 @@ "replace" => "zamenjaj", "suggest name" => "predlagaj ime", "cancel" => "prekliči", -"replaced {new_name}" => "zamenjano je ime {new_name}", -"undo" => "razveljavi", "replaced {new_name} with {old_name}" => "zamenjano ime {new_name} z imenom {old_name}", +"undo" => "razveljavi", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neveljavno ime, znaki '\\', '/', '<', '>', ':', '\"', '|', '?' in '*' niso dovoljeni.", "Unable to upload your file as it is a directory or has 0 bytes" => "Pošiljanje ni mogoče, saj gre za mapo, ali pa je datoteka velikosti 0 bajtov.", "Upload Error" => "Napaka med nalaganjem", diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php index e50d6612c4..fe71ee9c90 100644 --- a/apps/files/l10n/sr.php +++ b/apps/files/l10n/sr.php @@ -14,9 +14,8 @@ "replace" => "замени", "suggest name" => "предложи назив", "cancel" => "откажи", -"replaced {new_name}" => "замењено {new_name}", -"undo" => "опозови", "replaced {new_name} with {old_name}" => "замењено {new_name} са {old_name}", +"undo" => "опозови", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неисправан назив. Следећи знакови нису дозвољени: \\, /, <, >, :, \", |, ? и *.", "Unable to upload your file as it is a directory or has 0 bytes" => "Не могу да отпремим датотеку као фасциклу или она има 0 бајтова", "Upload Error" => "Грешка при отпремању", diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php index ca4dfcf553..ca9610a33c 100644 --- a/apps/files/l10n/sv.php +++ b/apps/files/l10n/sv.php @@ -21,9 +21,8 @@ "replace" => "ersätt", "suggest name" => "föreslå namn", "cancel" => "avbryt", -"replaced {new_name}" => "ersatt {new_name}", -"undo" => "ångra", "replaced {new_name} with {old_name}" => "ersatt {new_name} med {old_name}", +"undo" => "ångra", "perform delete operation" => "utför raderingen", "'.' is an invalid file name." => "'.' är ett ogiltigt filnamn.", "File name cannot be empty." => "Filnamn kan inte vara tomt.", @@ -60,7 +59,9 @@ "Text file" => "Textfil", "Folder" => "Mapp", "From link" => "Från länk", +"Deleted files" => "Raderade filer", "Cancel upload" => "Avbryt uppladdning", +"You don’t have write permissions here." => "Du saknar skrivbehörighet här.", "Nothing in here. Upload something!" => "Ingenting här. Ladda upp något!", "Download" => "Ladda ner", "Unshare" => "Sluta dela", diff --git a/apps/files/l10n/ta_LK.php b/apps/files/l10n/ta_LK.php index 069a2ac582..304453f129 100644 --- a/apps/files/l10n/ta_LK.php +++ b/apps/files/l10n/ta_LK.php @@ -14,9 +14,8 @@ "replace" => "மாற்றிடுக", "suggest name" => "பெயரை பரிந்துரைக்க", "cancel" => "இரத்து செய்க", -"replaced {new_name}" => "மாற்றப்பட்டது {new_name}", -"undo" => "முன் செயல் நீக்கம் ", "replaced {new_name} with {old_name}" => "{new_name} ஆனது {old_name} இனால் மாற்றப்பட்டது", +"undo" => "முன் செயல் நீக்கம் ", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "செல்லுபடியற்ற பெயர்,'\\', '/', '<', '>', ':', '\"', '|', '?' மற்றும் '*' ஆகியன அனுமதிக்கப்படமாட்டாது.", "Unable to upload your file as it is a directory or has 0 bytes" => "அடைவு அல்லது 0 bytes ஐ கொண்டுள்ளதால் உங்களுடைய கோப்பை பதிவேற்ற முடியவில்லை", "Upload Error" => "பதிவேற்றல் வழு", diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php index fce74874f1..2353501b47 100644 --- a/apps/files/l10n/th_TH.php +++ b/apps/files/l10n/th_TH.php @@ -20,9 +20,8 @@ "replace" => "แทนที่", "suggest name" => "แนะนำชื่อ", "cancel" => "ยกเลิก", -"replaced {new_name}" => "แทนที่ {new_name} แล้ว", -"undo" => "เลิกทำ", "replaced {new_name} with {old_name}" => "แทนที่ {new_name} ด้วย {old_name} แล้ว", +"undo" => "เลิกทำ", "perform delete operation" => "ดำเนินการตามคำสั่งลบ", "'.' is an invalid file name." => "'.' เป็นชื่อไฟล์ที่ไม่ถูกต้อง", "File name cannot be empty." => "ชื่อไฟล์ไม่สามารถเว้นว่างได้", diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php index f6943f1f4d..bcbef8daf3 100644 --- a/apps/files/l10n/tr.php +++ b/apps/files/l10n/tr.php @@ -10,8 +10,10 @@ "No file was uploaded" => "Hiç dosya yüklenmedi", "Missing a temporary folder" => "Geçici bir klasör eksik", "Failed to write to disk" => "Diske yazılamadı", +"Not enough storage available" => "Yeterli disk alanı yok", "Invalid directory." => "Geçersiz dizin.", "Files" => "Dosyalar", +"Delete permanently" => "Kalıcı olarak sil", "Delete" => "Sil", "Rename" => "İsim değiştir.", "Pending" => "Bekliyor", @@ -19,12 +21,14 @@ "replace" => "değiştir", "suggest name" => "Öneri ad", "cancel" => "iptal", -"replaced {new_name}" => "değiştirilen {new_name}", -"undo" => "geri al", "replaced {new_name} with {old_name}" => "{new_name} ismi {old_name} ile değiştirildi", +"undo" => "geri al", +"perform delete operation" => "Silme işlemini gerçekleştir", "'.' is an invalid file name." => "'.' geçersiz dosya adı.", "File name cannot be empty." => "Dosya adı boş olamaz.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Geçersiz isim, '\\', '/', '<', '>', ':', '\"', '|', '?' ve '*' karakterlerine izin verilmemektedir.", +"Your storage is full, files can not be updated or synced anymore!" => "Depolama alanınız dolu, artık dosyalar güncellenmeyecek yada senkronizasyon edilmeyecek.", +"Your storage is almost full ({usedSpacePercent}%)" => "Depolama alanınız neredeyse dolu ({usedSpacePercent}%)", "Your download is being prepared. This might take some time if the files are big." => "İndirmeniz hazırlanıyor. Dosya büyük ise biraz zaman alabilir.", "Unable to upload your file as it is a directory or has 0 bytes" => "Dosyanızın boyutu 0 byte olduğundan veya bir dizin olduğundan yüklenemedi", "Upload Error" => "Yükleme hatası", @@ -55,6 +59,7 @@ "Text file" => "Metin dosyası", "Folder" => "Klasör", "From link" => "Bağlantıdan", +"Deleted files" => "Dosyalar silindi", "Cancel upload" => "Yüklemeyi iptal et", "Nothing in here. Upload something!" => "Burada hiçbir şey yok. Birşeyler yükleyin!", "Download" => "İndir", @@ -62,5 +67,6 @@ "Upload too large" => "Yüklemeniz çok büyük", "The files you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor.", "Files are being scanned, please wait." => "Dosyalar taranıyor, lütfen bekleyin.", -"Current scanning" => "Güncel tarama" +"Current scanning" => "Güncel tarama", +"Upgrading filesystem cache..." => "Sistem dosyası önbelleği güncelleniyor" ); diff --git a/apps/files/l10n/uk.php b/apps/files/l10n/uk.php index 7e499e6c2c..f5e161996c 100644 --- a/apps/files/l10n/uk.php +++ b/apps/files/l10n/uk.php @@ -1,4 +1,7 @@ "Не вдалося перемістити %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: ", @@ -7,6 +10,7 @@ "No file was uploaded" => "Не відвантажено жодного файлу", "Missing a temporary folder" => "Відсутній тимчасовий каталог", "Failed to write to disk" => "Невдалося записати на диск", +"Not enough storage available" => "Місця більше немає", "Invalid directory." => "Невірний каталог.", "Files" => "Файли", "Delete permanently" => "Видалити назавжди", @@ -17,9 +21,8 @@ "replace" => "заміна", "suggest name" => "запропонуйте назву", "cancel" => "відміна", -"replaced {new_name}" => "замінено {new_name}", -"undo" => "відмінити", "replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}", +"undo" => "відмінити", "perform delete operation" => "виконати операцію видалення", "'.' is an invalid file name." => "'.' це невірне ім'я файлу.", "File name cannot be empty." => " Ім'я файлу не може бути порожнім.", @@ -56,7 +59,9 @@ "Text file" => "Текстовий файл", "Folder" => "Папка", "From link" => "З посилання", +"Deleted files" => "Видалено файлів", "Cancel upload" => "Перервати завантаження", +"You don’t have write permissions here." => "У вас тут немає прав на запис.", "Nothing in here. Upload something!" => "Тут нічого немає. Відвантажте що-небудь!", "Download" => "Завантажити", "Unshare" => "Заборонити доступ", diff --git a/apps/files/l10n/vi.php b/apps/files/l10n/vi.php index b069246f01..affca6c12f 100644 --- a/apps/files/l10n/vi.php +++ b/apps/files/l10n/vi.php @@ -21,9 +21,8 @@ "replace" => "thay thế", "suggest name" => "tên gợi ý", "cancel" => "hủy", -"replaced {new_name}" => "đã thay thế {new_name}", -"undo" => "lùi lại", "replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}", +"undo" => "lùi lại", "perform delete operation" => "thực hiện việc xóa", "'.' is an invalid file name." => "'.' là một tên file không hợp lệ", "File name cannot be empty." => "Tên file không được rỗng", @@ -60,6 +59,7 @@ "Text file" => "Tập tin văn bản", "Folder" => "Thư mục", "From link" => "Từ liên kết", +"Deleted files" => "File đã bị xóa", "Cancel upload" => "Hủy upload", "Nothing in here. Upload something!" => "Không có gì ở đây .Hãy tải lên một cái gì đó !", "Download" => "Tải xuống", diff --git a/apps/files/l10n/zh_CN.GB2312.php b/apps/files/l10n/zh_CN.GB2312.php index 727b803800..fa75627f14 100644 --- a/apps/files/l10n/zh_CN.GB2312.php +++ b/apps/files/l10n/zh_CN.GB2312.php @@ -14,9 +14,8 @@ "replace" => "替换", "suggest name" => "推荐名称", "cancel" => "取消", -"replaced {new_name}" => "已替换 {new_name}", -"undo" => "撤销", "replaced {new_name} with {old_name}" => "已用 {old_name} 替换 {new_name}", +"undo" => "撤销", "Unable to upload your file as it is a directory or has 0 bytes" => "不能上传你指定的文件,可能因为它是个文件夹或者大小为0", "Upload Error" => "上传错误", "Close" => "关闭", diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php index 569aaf1b0a..88fdc537c3 100644 --- a/apps/files/l10n/zh_CN.php +++ b/apps/files/l10n/zh_CN.php @@ -19,9 +19,8 @@ "replace" => "替换", "suggest name" => "建议名称", "cancel" => "取消", -"replaced {new_name}" => "替换 {new_name}", -"undo" => "撤销", "replaced {new_name} with {old_name}" => "已将 {old_name}替换成 {new_name}", +"undo" => "撤销", "'.' is an invalid file name." => "'.' 是一个无效的文件名。", "File name cannot be empty." => "文件名不能为空。", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "无效名称,'\\', '/', '<', '>', ':', '\"', '|', '?' 和 '*' 不被允许使用。", diff --git a/apps/files/l10n/zh_TW.php b/apps/files/l10n/zh_TW.php index 7be0f1d658..793fedac41 100644 --- a/apps/files/l10n/zh_TW.php +++ b/apps/files/l10n/zh_TW.php @@ -21,9 +21,8 @@ "replace" => "取代", "suggest name" => "建議檔名", "cancel" => "取消", -"replaced {new_name}" => "已取代 {new_name}", -"undo" => "復原", "replaced {new_name} with {old_name}" => "使用 {new_name} 取代 {old_name}", +"undo" => "復原", "perform delete operation" => "進行刪除動作", "'.' is an invalid file name." => "'.' 是不合法的檔名。", "File name cannot be empty." => "檔名不能為空。", diff --git a/apps/files/templates/admin.php b/apps/files/templates/admin.php index ad69b5519d..e1ca6afc4a 100644 --- a/apps/files/templates/admin.php +++ b/apps/files/templates/admin.php @@ -2,27 +2,27 @@
- t('File handling');?> + t('File handling')); ?> - - '/> + + '/> - (t('max. possible: '); echo $_['maxPossibleUploadSize'] ?>) + (t('max. possible: ')); p($_['maxPossibleUploadSize']) ?>)
checked="checked" /> -
+
- ' - title="t( '0 is unlimited' ); ?>" + ' + title="t( '0 is unlimited' )); ?>" disabled="disabled" />
- t( 'Maximum input size for ZIP files' ); ?>
+ t( 'Maximum input size for ZIP files' )); ?>
- + + value="t( 'Save' )); ?>"/>
diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index c7bf0d21c1..a53df4e2d3 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -1,96 +1,97 @@
- +
- t('New');?> + t('New'));?>
    -
  • t('Text file');?>

  • -
  • t('Folder');?>

  • -
  • t('From link');?>

  • +
  • t('Text file'));?>

  • +
  • t('Folder'));?>

  • +
  • t('From link'));?>

+ title="t('Upload') . ' max. '.$_['uploadMaxHumanFilesize']) ?>">
+ value=""> - + - + value="(max )"> +
- +
t('You don’t have write permissions here.'))?>
+ - +
-
t('Nothing in here. Upload something!')?>
+
t('Nothing in here. Upload something!'))?>
- +
- + - +
- t( 'Name' ); ?> + t( 'Name' )); ?> Download" /> - t('Download')?> + src="" /> + t('Download'))?> t( 'Size' ); ?>t( 'Size' )); ?> - t( 'Modified' ); ?> + t( 'Modified' )); ?> - t('Unshare')?> - <?php echo $l->t('Unshare')?>" /> + t('Unshare'))?> + <?php p($l->t('Unshare'))?>" /> - t('Delete')?> - <?php echo $l->t('Delete')?>" /> + t('Delete'))?> + <?php p($l->t('Delete'))?>" /> @@ -98,24 +99,24 @@
-
+

- t('The files you are trying to upload exceed the maximum size for file uploads on this server.');?> + t('The files you are trying to upload exceed the maximum size for file uploads on this server.'));?>

- t('Files are being scanned, please wait.');?> + t('Files are being scanned, please wait.'));?>

- t('Current scanning');?> + t('Current scanning'));?>

- - + + diff --git a/apps/files/templates/part.breadcrumb.php b/apps/files/templates/part.breadcrumb.php index f01cb8d212..7ea1755d1d 100644 --- a/apps/files/templates/part.breadcrumb.php +++ b/apps/files/templates/part.breadcrumb.php @@ -1,7 +1,7 @@ @@ -9,8 +9,8 @@ $crumb = $_["breadcrumb"][$i]; $dir = str_replace('+', '%20', urlencode($crumb["dir"])); $dir = str_replace('%2F', '/', $dir); ?> -
svg" - data-dir=''> - +
svg" + data-dir=''> +
"> + - ' - data-permissions=''> + ' + data-permissions=''> - style="background-image:url()" + style="background-image:url()" - style="background-image:url()" + style="background-image:url()" > - + - + - + - + @@ -47,17 +46,17 @@ - + title="" + style="color:rgb()"> + " + style="color:rgb()"> - + .$relative_date_color) ?>)"> + diff --git a/apps/files/templates/upgrade.php b/apps/files/templates/upgrade.php index de6cc71302..e03f086e47 100644 --- a/apps/files/templates/upgrade.php +++ b/apps/files/templates/upgrade.php @@ -1,4 +1,4 @@
- t('Upgrading filesystem cache...');?> + t('Upgrading filesystem cache...'));?>
diff --git a/apps/files_encryption/appinfo/app.php b/apps/files_encryption/appinfo/app.php index c7cd8ca32d..f7b2140b58 100644 --- a/apps/files_encryption/appinfo/app.php +++ b/apps/files_encryption/appinfo/app.php @@ -1,12 +1,12 @@ "Verschlüsselung", "File encryption is enabled." => "Datei-Verschlüsselung ist aktiviert", -"The following file types will not be encrypted:" => "Die folgenden Datei-Typen werden nicht verschlüsselt:", -"Exclude the following file types from encryption:" => "Die folgenden Datei-Typen von der Verschlüsselung ausnehmen:", +"The following file types will not be encrypted:" => "Die folgenden Dateitypen werden nicht verschlüsselt:", +"Exclude the following file types from encryption:" => "Die folgenden Dateitypen von der Verschlüsselung ausnehmen:", "None" => "Keine" ); diff --git a/apps/files_encryption/l10n/id.php b/apps/files_encryption/l10n/id.php index 3f9a6c7d07..6044348e72 100644 --- a/apps/files_encryption/l10n/id.php +++ b/apps/files_encryption/l10n/id.php @@ -1,4 +1,7 @@ "enkripsi", -"None" => "tidak ada" +"Encryption" => "Enkripsi", +"File encryption is enabled." => "Enkripsi berkas aktif.", +"The following file types will not be encrypted:" => "Tipe berkas berikut tidak akan dienkripsi:", +"Exclude the following file types from encryption:" => "Kecualikan tipe berkas berikut dari enkripsi:", +"None" => "Tidak ada" ); diff --git a/apps/files_encryption/l10n/nb_NO.php b/apps/files_encryption/l10n/nb_NO.php index e52ecb868a..a5e16a0342 100644 --- a/apps/files_encryption/l10n/nb_NO.php +++ b/apps/files_encryption/l10n/nb_NO.php @@ -1,4 +1,7 @@ "Kryptering", +"File encryption is enabled." => "Fil-kryptering er aktivert.", +"The following file types will not be encrypted:" => "Følgende filtyper vil ikke bli kryptert:", +"Exclude the following file types from encryption:" => "Ekskluder følgende filtyper fra kryptering:", "None" => "Ingen" ); diff --git a/apps/files_encryption/l10n/tr.php b/apps/files_encryption/l10n/tr.php index 0868d0a690..6b42c757e6 100644 --- a/apps/files_encryption/l10n/tr.php +++ b/apps/files_encryption/l10n/tr.php @@ -1,4 +1,7 @@ "Şifreleme", +"File encryption is enabled." => "Dosya şifreleme aktif.", +"The following file types will not be encrypted:" => "Belirtilen dosya tipleri şifrelenmeyecek:", +"Exclude the following file types from encryption:" => "Seçilen dosya tiplerini şifreleme:", "None" => "Hiçbiri" ); diff --git a/apps/files_encryption/l10n/uk.php b/apps/files_encryption/l10n/uk.php index 8236c5afef..d495714119 100644 --- a/apps/files_encryption/l10n/uk.php +++ b/apps/files_encryption/l10n/uk.php @@ -1,4 +1,7 @@ "Шифрування", +"File encryption is enabled." => "Увімкнуто шифрування файлів.", +"The following file types will not be encrypted:" => "Такі типи файлів шифруватись не будуть:", +"Exclude the following file types from encryption:" => "Виключити наступні типи файлів з ​​шифрування:", "None" => "Жоден" ); diff --git a/apps/files_encryption/templates/settings-personal.php b/apps/files_encryption/templates/settings-personal.php index 47467c52c0..5f0accaed5 100644 --- a/apps/files_encryption/templates/settings-personal.php +++ b/apps/files_encryption/templates/settings-personal.php @@ -1,19 +1,19 @@
- t( 'Encryption' ); ?> + t( 'Encryption' )); ?>

- t( 'File encryption is enabled.' ); ?> + t( 'File encryption is enabled.' )); ?>

- t( 'The following file types will not be encrypted:' ); ?> + t( 'The following file types will not be encrypted:' )); ?>

  • - +
diff --git a/apps/files_encryption/templates/settings.php b/apps/files_encryption/templates/settings.php index f7ef8a8efe..b873d7f5aa 100644 --- a/apps/files_encryption/templates/settings.php +++ b/apps/files_encryption/templates/settings.php @@ -2,17 +2,17 @@

- t( 'Encryption' ); ?> + t( 'Encryption' )); ?> - t( "Exclude the following file types from encryption:" ); ?> + t( "Exclude the following file types from encryption:" )); ?>

diff --git a/apps/files_external/ajax/addMountPoint.php b/apps/files_external/ajax/addMountPoint.php index 4cd8871b31..fed2ddfcf3 100644 --- a/apps/files_external/ajax/addMountPoint.php +++ b/apps/files_external/ajax/addMountPoint.php @@ -10,9 +10,10 @@ if ($_POST['isPersonal'] == 'true') { OCP\JSON::checkAdminUser(); $isPersonal = false; } -OC_Mount_Config::addMountPoint($_POST['mountPoint'], +$status = OC_Mount_Config::addMountPoint($_POST['mountPoint'], $_POST['class'], $_POST['classOptions'], $_POST['mountType'], $_POST['applicable'], - $isPersonal); \ No newline at end of file + $isPersonal); +OCP\JSON::success(array('data' => array('message' => $status))); \ No newline at end of file diff --git a/apps/files_external/ajax/addRootCertificate.php b/apps/files_external/ajax/addRootCertificate.php index 7794238ab3..43fd6752c4 100644 --- a/apps/files_external/ajax/addRootCertificate.php +++ b/apps/files_external/ajax/addRootCertificate.php @@ -37,5 +37,5 @@ if ( $isValid ) { OCP\Util::WARN); } -header('Location: settings/personal.php'); +header('Location:' . OCP\Util::linkToRoute( "settings_personal" )); exit; diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index d976c01752..d786c6c7a2 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -6,16 +6,16 @@ * See the COPYING-README file. */ -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\Files\Storage\SFTP']='apps/files_external/lib/sftp.php'; -OC::$CLASSPATH['OC_Mount_Config']='apps/files_external/lib/config.php'; +OC::$CLASSPATH['OC\Files\Storage\StreamWrapper'] = 'files_external/lib/streamwrapper.php'; +OC::$CLASSPATH['OC\Files\Storage\FTP'] = 'files_external/lib/ftp.php'; +OC::$CLASSPATH['OC\Files\Storage\DAV'] = 'files_external/lib/webdav.php'; +OC::$CLASSPATH['OC\Files\Storage\Google'] = 'files_external/lib/google.php'; +OC::$CLASSPATH['OC\Files\Storage\SWIFT'] = 'files_external/lib/swift.php'; +OC::$CLASSPATH['OC\Files\Storage\SMB'] = 'files_external/lib/smb.php'; +OC::$CLASSPATH['OC\Files\Storage\AmazonS3'] = 'files_external/lib/amazons3.php'; +OC::$CLASSPATH['OC\Files\Storage\Dropbox'] = 'files_external/lib/dropbox.php'; +OC::$CLASSPATH['OC\Files\Storage\SFTP'] = 'files_external/lib/sftp.php'; +OC::$CLASSPATH['OC_Mount_Config'] = 'files_external/lib/config.php'; OCP\App::registerAdmin('files_external', 'settings'); if (OCP\Config::getAppValue('files_external', 'allow_user_mounting', 'yes') == 'yes') { diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml index 2c04216a9f..0542b7b10a 100644 --- a/apps/files_external/appinfo/info.xml +++ b/apps/files_external/appinfo/info.xml @@ -5,7 +5,7 @@ Mount external storage sources AGPL Robin Appelman, Michael Gapczynski - 4.91 + 4.93 true diff --git a/apps/files_external/css/settings.css b/apps/files_external/css/settings.css index ca4b1c3ba8..94b453793b 100644 --- a/apps/files_external/css/settings.css +++ b/apps/files_external/css/settings.css @@ -1,4 +1,7 @@ -.error { color: #FF3B3B; } +td.status>span { display:inline-block; height:16px; width:16px; } +span.success { background-image: url('../img/success.png'); background-repeat:no-repeat; } +span.error { background-image: url('../img/error.png'); background-repeat:no-repeat; } +span.waiting { background-image: url('../img/waiting.png'); background-repeat:no-repeat; } td.mountPoint, td.backend { width:10em; } td.remove>img { visibility:hidden; padding-top:0.8em; } tr:hover>td.remove>img { visibility:visible; cursor:pointer; } diff --git a/apps/files_external/img/error.png b/apps/files_external/img/error.png new file mode 100644 index 0000000000..e8cf45e7a4 Binary files /dev/null and b/apps/files_external/img/error.png differ diff --git a/apps/files_external/img/success.png b/apps/files_external/img/success.png new file mode 100644 index 0000000000..6f7022ee7f Binary files /dev/null and b/apps/files_external/img/success.png differ diff --git a/apps/files_external/img/waiting.png b/apps/files_external/img/waiting.png new file mode 100644 index 0000000000..02a8cbff0d Binary files /dev/null and b/apps/files_external/img/waiting.png differ diff --git a/apps/files_external/js/dropbox.js b/apps/files_external/js/dropbox.js index cd3c957e0a..957daeb4d1 100644 --- a/apps/files_external/js/dropbox.js +++ b/apps/files_external/js/dropbox.js @@ -15,6 +15,9 @@ $(document).ready(function() { if (pos != -1 && window.location.search.substr(pos, $(token).val().length) == $(token).val()) { var token_secret = $(this).find('.configuration [data-parameter="token_secret"]'); var tr = $(this); + var statusSpan = $(tr).find('.status span'); + statusSpan.removeClass(); + statusSpan.addClass('waiting'); $.post(OC.filePath('files_external', 'ajax', 'dropbox.php'), { step: 2, app_key: app_key, app_secret: app_secret, request_token: $(token).val(), request_token_secret: $(token_secret).val() }, function(result) { if (result && result.status == 'success') { $(token).val(result.access_token); @@ -24,23 +27,40 @@ $(document).ready(function() { $(tr).find('.configuration input').attr('disabled', 'disabled'); $(tr).find('.configuration').append(''+t('files_external', 'Access granted')+''); } else { - OC.dialogs.alert(result.data.message, - t('files_external', 'Error configuring Dropbox storage') - ); + OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring Dropbox storage')); } }); } - } else if ($(this).find('.mountPoint input').val() != '' && $(config).find('[data-parameter="app_key"]').val() != '' && $(config).find('[data-parameter="app_secret"]').val() != '' && $(this).find('.dropbox').length == 0) { - $(this).find('.configuration').append(''+t('files_external', 'Grant access')+''); + } else { + onDropboxInputsChange($(this)); } } }); - $('#externalStorage tbody').on('keyup', 'tr input', function() { - var tr = $(this).parent().parent(); - if ($(tr).hasClass('\\\\OC\\\\Files\\\\Storage\\\\Dropbox') && $(tr).find('[data-parameter="configured"]').val() != 'true') { + $('#externalStorage').on('paste', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Dropbox td', function() { + var tr = $(this).parent(); + setTimeout(function() { + onDropboxInputsChange(tr); + }, 20); + }); + + $('#externalStorage').on('keyup', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Dropbox td', function() { + onDropboxInputsChange($(this).parent()); + }); + + $('#externalStorage').on('change', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Dropbox .chzn-select', function() { + onDropboxInputsChange($(this).parent().parent()); + }); + + function onDropboxInputsChange(tr) { + if ($(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('.mountPoint input').val() != '' + && $(config).find('[data-parameter="app_key"]').val() != '' + && $(config).find('[data-parameter="app_secret"]').val() != '' + && ($(tr).find('.chzn-select').length == 0 + || $(tr).find('.chzn-select').val() != null)) + { if ($(tr).find('.dropbox').length == 0) { $(config).append(''+t('files_external', 'Grant access')+''); } else { @@ -50,41 +70,37 @@ $(document).ready(function() { $(tr).find('.dropbox').hide(); } } - }); + } - $('.dropbox').on('click', function(event) { + $('#externalStorage').on('click', '.dropbox', function(event) { event.preventDefault(); + var tr = $(this).parent().parent(); var app_key = $(this).parent().find('[data-parameter="app_key"]').val(); var app_secret = $(this).parent().find('[data-parameter="app_secret"]').val(); + var statusSpan = $(tr).find('.status span'); if (app_key != '' && app_secret != '') { var tr = $(this).parent().parent(); var configured = $(this).parent().find('[data-parameter="configured"]'); var token = $(this).parent().find('[data-parameter="token"]'); var token_secret = $(this).parent().find('[data-parameter="token_secret"]'); - $.post(OC.filePath('files_external', 'ajax', 'dropbox.php'), { step: 1, app_key: app_key, app_secret: app_secret, callback: window.location.href }, function(result) { + $.post(OC.filePath('files_external', 'ajax', 'dropbox.php'), { step: 1, app_key: app_key, app_secret: app_secret, callback: location.protocol + '//' + location.host + location.pathname }, function(result) { if (result && result.status == 'success') { $(configured).val('false'); $(token).val(result.data.request_token); $(token_secret).val(result.data.request_token_secret); - if (OC.MountConfig.saveStorage(tr)) { - window.location = result.data.url; - } else { - OC.dialogs.alert( - t('files_external', 'Fill out all required fields'), - t('files_external', 'Error configuring Dropbox storage') - ); - } + OC.MountConfig.saveStorage(tr); + statusSpan.removeClass(); + statusSpan.addClass('waiting'); + window.location = result.data.url; } else { - OC.dialogs.alert(result.data.message, - t('files_external', 'Error configuring Dropbox storage') - ); + OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring Dropbox storage')); } }); } else { OC.dialogs.alert( - t('files_external', 'Please provide a valid Dropbox app key and secret.'), - t('files_external', 'Error configuring Dropbox storage') - ); + t('files_external', 'Please provide a valid Dropbox app key and secret.'), + t('files_external', 'Error configuring Dropbox storage') + ); } }); diff --git a/apps/files_external/js/google.js b/apps/files_external/js/google.js index 9b7f9514f1..7be1b338e9 100644 --- a/apps/files_external/js/google.js +++ b/apps/files_external/js/google.js @@ -1,19 +1,30 @@ $(document).ready(function() { - $('#externalStorage tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google').each(function() { - var configured = $(this).find('[data-parameter="configured"]'); + $('#externalStorage tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google').each(function(index, tr) { + setupGoogleRow(tr); + }); + + $('#externalStorage').on('change', '#selectBackend', function() { + if ($(this).val() == '\\OC\\Files\\Storage\\Google') { + setupGoogleRow($('#externalStorage tbody>tr:last').prev('tr')); + } + }); + + function setupGoogleRow(tr) { + var configured = $(tr).find('[data-parameter="configured"]'); if ($(configured).val() == 'true') { - $(this).find('.configuration') - .append(''+t('files_external', 'Access granted')+''); + $(tr).find('.configuration').append(''+t('files_external', 'Access granted')+''); } else { - var token = $(this).find('[data-parameter="token"]'); - var token_secret = $(this).find('[data-parameter="token_secret"]'); + var token = $(tr).find('[data-parameter="token"]'); + var token_secret = $(tr).find('[data-parameter="token_secret"]'); var params = {}; window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m, key, value) { params[key] = value; }); if (params['oauth_token'] !== undefined && params['oauth_verifier'] !== undefined && decodeURIComponent(params['oauth_token']) == $(token).val()) { - var tr = $(this); + var statusSpan = $(tr).find('.status span'); + statusSpan.removeClass(); + statusSpan.addClass('waiting'); $.post(OC.filePath('files_external', 'ajax', 'google.php'), { step: 2, oauth_verifier: params['oauth_verifier'], request_token: $(token).val(), request_token_secret: $(token_secret).val() }, function(result) { if (result && result.status == 'success') { $(token).val(result.access_token); @@ -22,61 +33,64 @@ $(document).ready(function() { OC.MountConfig.saveStorage(tr); $(tr).find('.configuration').append(''+t('files_external', 'Access granted')+''); } else { - OC.dialogs.alert(result.data.message, - t('files_external', 'Error configuring Google Drive storage') - ); + OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring Google Drive storage')); + onGoogleInputsChange(tr); } }); - } else if ($(this).find('.google').length == 0) { - $(this).find('.configuration').append(''+t('files_external', 'Grant access')+''); - } - } - }); - - $('#externalStorage tbody').on('change', 'tr', function() { - 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')+''); - } - } - } - }); - - $('#externalStorage tbody').on('keyup', 'tr .mountPoint input', function() { - var tr = $(this).parent().parent(); - 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 { + onGoogleInputsChange(tr); + } + } + } + + $('#externalStorage').on('paste', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google td', function() { + var tr = $(this).parent(); + setTimeout(function() { + onGoogleInputsChange(tr); + }, 20); + }); + + $('#externalStorage').on('keyup', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google td', function() { + onGoogleInputsChange($(this).parent()); + }); + + $('#externalStorage').on('change', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google .chzn-select', function() { + onGoogleInputsChange($(this).parent().parent()); + }); + + function onGoogleInputsChange(tr) { + if ($(tr).find('[data-parameter="configured"]').val() != 'true') { + var config = $(tr).find('.configuration'); + if ($(tr).find('.mountPoint input').val() != '' && ($(tr).find('.chzn-select').length == 0 || $(tr).find('.chzn-select').val() != null)) { + if ($(tr).find('.google').length == 0) { + $(config).append(''+t('files_external', 'Grant access')+''); + } else { + $(tr).find('.google').show(); + } + } else if ($(tr).find('.google').length > 0) { $(tr).find('.google').hide(); } } - }); + } - $('.google').on('click', function(event) { + $('#externalStorage').on('click', '.google', function(event) { event.preventDefault(); var tr = $(this).parent().parent(); var configured = $(this).parent().find('[data-parameter="configured"]'); var token = $(this).parent().find('[data-parameter="token"]'); var token_secret = $(this).parent().find('[data-parameter="token_secret"]'); - $.post(OC.filePath('files_external', 'ajax', 'google.php'), { step: 1, callback: window.location.href }, function(result) { + var statusSpan = $(tr).find('.status span'); + $.post(OC.filePath('files_external', 'ajax', 'google.php'), { step: 1, callback: location.protocol + '//' + location.host + location.pathname }, function(result) { if (result && result.status == 'success') { $(configured).val('false'); $(token).val(result.data.request_token); $(token_secret).val(result.data.request_token_secret); - if (OC.MountConfig.saveStorage(tr)) { - window.location = result.data.url; - } else { - OC.dialogs.alert( - t('files_external', 'Fill out all required fields'), - t('files_external', 'Error configuring Google Drive storage') - ); - } + OC.MountConfig.saveStorage(tr); + statusSpan.removeClass(); + statusSpan.addClass('waiting'); + window.location = result.data.url; } else { - OC.dialogs.alert(result.data.message, - t('files_external', 'Error configuring Google Drive storage') - ); + OC.dialogs.alert(result.data.message, t('files_external', 'Error configuring Google Drive storage')); } }); }); diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js index 1269039527..ac408786ff 100644 --- a/apps/files_external/js/settings.js +++ b/apps/files_external/js/settings.js @@ -4,6 +4,7 @@ OC.MountConfig={ if (mountPoint == '') { return false; } + var statusSpan = $(tr).find('.status span'); var backendClass = $(tr).find('.backend').data('class'); var configuration = $(tr).find('.configuration input'); var addMountPoint = true; @@ -26,12 +27,20 @@ OC.MountConfig={ classOptions[$(input).data('parameter')] = $(input).val(); } }); + if ($('#externalStorage').data('admin') === true) { + var multiselect = $(tr).find('.chzn-select').val(); + if (multiselect == null) { + return false; + } + } if (addMountPoint) { + var status = false; if ($('#externalStorage').data('admin') === true) { var isPersonal = false; - var multiselect = $(tr).find('.chzn-select').val(); var oldGroups = $(tr).find('.applicable').data('applicable-groups'); var oldUsers = $(tr).find('.applicable').data('applicable-users'); + var groups = []; + var users = []; $.each(multiselect, function(index, value) { var pos = value.indexOf('(group)'); if (pos != -1) { @@ -40,30 +49,96 @@ OC.MountConfig={ if ($.inArray(applicable, oldGroups) != -1) { oldGroups.splice($.inArray(applicable, oldGroups), 1); } + groups.push(applicable); } else { var mountType = 'user'; var applicable = value; if ($.inArray(applicable, oldUsers) != -1) { oldUsers.splice($.inArray(applicable, oldUsers), 1); } + users.push(applicable); } - $.post(OC.filePath('files_external', 'ajax', 'addMountPoint.php'), { mountPoint: mountPoint, 'class': backendClass, classOptions: classOptions, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); + $.ajax({type: 'POST', + url: OC.filePath('files_external', 'ajax', 'addMountPoint.php'), + data: { + mountPoint: mountPoint, + 'class': backendClass, + classOptions: classOptions, + mountType: mountType, + applicable: applicable, + isPersonal: isPersonal + }, + async: false, + success: function(result) { + statusSpan.removeClass(); + if (result && result.status == 'success' && result.data.message) { + status = true; + statusSpan.addClass('success'); + } else { + statusSpan.addClass('error'); + } + } + }); }); + $(tr).find('.applicable').data('applicable-groups', groups); + $(tr).find('.applicable').data('applicable-users', users); var mountType = 'group'; $.each(oldGroups, function(index, applicable) { - $.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); + $.ajax({type: 'POST', + url: OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), + data: { + mountPoint: mountPoint, + class: backendClass, + classOptions: classOptions, + mountType: mountType, + applicable: applicable, + isPersonal: isPersonal + }, + async: false + }); }); var mountType = 'user'; $.each(oldUsers, function(index, applicable) { - $.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); + $.ajax({type: 'POST', + url: OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), + data: { + mountPoint: mountPoint, + class: backendClass, + classOptions: classOptions, + mountType: mountType, + applicable: applicable, + isPersonal: isPersonal + }, + async: false + }); }); } else { var isPersonal = true; var mountType = 'user'; var applicable = OC.currentUser; - $.post(OC.filePath('files_external', 'ajax', 'addMountPoint.php'), { mountPoint: mountPoint, 'class': backendClass, classOptions: classOptions, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); + $.ajax({type: 'POST', + url: OC.filePath('files_external', 'ajax', 'addMountPoint.php'), + data: { + mountPoint: mountPoint, + 'class': backendClass, + classOptions: classOptions, + mountType: mountType, + applicable: applicable, + isPersonal: isPersonal + }, + async: false, + success: function(result) { + statusSpan.removeClass(); + if (result && result.status == 'success' && result.data.message) { + status = true; + statusSpan.addClass('success'); + } else { + statusSpan.addClass('error'); + } + } + }); } - return true; + return status; } } }; @@ -71,7 +146,7 @@ OC.MountConfig={ $(document).ready(function() { $('.chzn-select').chosen(); - $('#selectBackend').on('change', function() { + $('#externalStorage').on('change', '#selectBackend', function() { var tr = $(this).parent().parent(); $('#externalStorage tbody').append($(tr).clone()); $('#externalStorage tbody tr').last().find('.mountPoint input').val(''); @@ -79,9 +154,10 @@ $(document).ready(function() { var backendClass = $(this).val(); $(this).parent().text(selected); if ($(tr).find('.mountPoint input').val() == '') { - $(tr).find('.mountPoint input').val(suggestMountPoint(selected.replace(/\s+/g, ''))); + $(tr).find('.mountPoint input').val(suggestMountPoint(selected)); } $(tr).addClass(backendClass); + $(tr).find('.status').append(''); $(tr).find('.backend').data('class', backendClass); var configurations = $(this).data('configurations'); var td = $(tr).find('td.configuration'); @@ -106,7 +182,11 @@ $(document).ready(function() { return false; } }); - $('.chz-select').chosen(); + // Reset chosen + var chosen = $(tr).find('.applicable select'); + chosen.parent().find('div').remove(); + chosen.removeAttr('id').removeClass('chzn-done').css({display:'inline-block'}); + chosen.chosen(); $(tr).find('td').last().attr('class', 'remove'); $(tr).find('td').last().removeAttr('style'); $(tr).removeAttr('id'); @@ -114,6 +194,11 @@ $(document).ready(function() { }); function suggestMountPoint(defaultMountPoint) { + var pos = defaultMountPoint.indexOf('/'); + if (pos !== -1) { + defaultMountPoint = defaultMountPoint.substring(0, pos); + } + defaultMountPoint = defaultMountPoint.replace(/\s+/g, ''); var i = 1; var append = ''; var match = true; @@ -135,11 +220,34 @@ $(document).ready(function() { return defaultMountPoint+append; } - $('#externalStorage').on('change', 'td', function() { - OC.MountConfig.saveStorage($(this).parent()); + $('#externalStorage').on('paste', 'td', function() { + var tr = $(this).parent(); + setTimeout(function() { + OC.MountConfig.saveStorage(tr); + }, 20); }); - $('td.remove>img').on('click', function() { + var timer; + + $('#externalStorage').on('keyup', 'td input', function() { + clearTimeout(timer); + var tr = $(this).parent().parent(); + if ($(this).val) { + timer = setTimeout(function() { + OC.MountConfig.saveStorage(tr); + }, 2000); + } + }); + + $('#externalStorage').on('change', 'td input:checkbox', function() { + OC.MountConfig.saveStorage($(this).parent().parent().parent()); + }); + + $('#externalStorage').on('change', '.applicable .chzn-select', function() { + OC.MountConfig.saveStorage($(this).parent().parent()); + }); + + $('#externalStorage').on('click', 'td.remove>img', function() { var tr = $(this).parent().parent(); var mountPoint = $(tr).find('.mountPoint input').val(); if ( ! mountPoint) { @@ -151,23 +259,25 @@ $(document).ready(function() { if ($('#externalStorage').data('admin') === true) { var isPersonal = false; var multiselect = $(tr).find('.chzn-select').val(); - $.each(multiselect, function(index, value) { - var pos = value.indexOf('(group)'); - if (pos != -1) { - var mountType = 'group'; - var applicable = value.substr(0, pos); - } else { - var mountType = 'user'; - var applicable = value; - } - $.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); - }); + if (multiselect != null) { + $.each(multiselect, function(index, value) { + var pos = value.indexOf('(group)'); + if (pos != -1) { + var mountType = 'group'; + var applicable = value.substr(0, pos); + } else { + var mountType = 'user'; + var applicable = value; + } + $.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); + }); + } } else { var mountType = 'user'; var applicable = OC.currentUser; var isPersonal = true; + $.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); } - $.post(OC.filePath('files_external', 'ajax', 'removeMountPoint.php'), { mountPoint: mountPoint, mountType: mountType, applicable: applicable, isPersonal: isPersonal }); $(tr).remove(); }); diff --git a/apps/files_external/l10n/bg_BG.php b/apps/files_external/l10n/bg_BG.php index 6342da3f3a..66ad4a879d 100644 --- a/apps/files_external/l10n/bg_BG.php +++ b/apps/files_external/l10n/bg_BG.php @@ -1,9 +1,7 @@ "Достъпът е даден", "Grant access" => "Даване на достъп", -"Fill out all required fields" => "Попълнете всички задължителни полета", "External Storage" => "Външно хранилище", -"Backend" => "Администрация", "Configuration" => "Конфигурация", "Options" => "Опции", "Applicable" => "Приложимо", diff --git a/apps/files_external/l10n/bn_BD.php b/apps/files_external/l10n/bn_BD.php index a4a2b23030..07ccd50074 100644 --- a/apps/files_external/l10n/bn_BD.php +++ b/apps/files_external/l10n/bn_BD.php @@ -2,16 +2,12 @@ "Access granted" => "অধিগমনের অনুমতি প্রদান করা হলো", "Error configuring Dropbox storage" => "Dropbox সংরক্ষণাগার নির্ধারণ করতে সমস্যা ", "Grant access" => "অধিগমনের অনুমতি প্রদান কর", -"Fill out all required fields" => "আবশ্যিক সমস্ত ক্ষেত্র পূরণ করুন", "Please provide a valid Dropbox app key and secret." => "দয়া করে সঠিক এবং বৈধ Dropbox app key and secret প্রদান করুন।", "Error configuring Google Drive storage" => "Google Drive সংরক্ষণাগার নির্ধারণ করতে সমস্যা ", "External Storage" => "বাহ্যিক সংরক্ষণাগার", -"Mount point" => "মাউন্ট পয়েন্ট", -"Backend" => "পশ্চাদপট", "Configuration" => "কনফিগারেসন", "Options" => "বিকল্পসমূহ", "Applicable" => "প্রযোজ্য", -"Add mount point" => "মাউন্ট পয়েন্ট যোগ কর", "None set" => "কোনটিই নির্ধারণ করা হয় নি", "All Users" => "সমস্ত ব্যবহারকারী", "Groups" => "গোষ্ঠীসমূহ", diff --git a/apps/files_external/l10n/ca.php b/apps/files_external/l10n/ca.php index e8a922ca0f..aa9304d330 100644 --- a/apps/files_external/l10n/ca.php +++ b/apps/files_external/l10n/ca.php @@ -2,18 +2,17 @@ "Access granted" => "S'ha concedit l'accés", "Error configuring Dropbox storage" => "Error en configurar l'emmagatzemament Dropbox", "Grant access" => "Concedeix accés", -"Fill out all required fields" => "Ompliu els camps requerits", "Please provide a valid Dropbox app key and secret." => "Proporcioneu una clau d'aplicació i secret vàlids per a Dropbox", "Error configuring Google Drive storage" => "Error en configurar l'emmagatzemament Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Avís: \"smbclient\" no està instal·lat. No es pot muntar la compartició CIFS/SMB. Demaneu a l'administrador del sistema que l'instal·li.", "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." => "Avís: El suport FTP per PHP no està activat o no està instal·lat. No es pot muntar la compartició FTP. Demaneu a l'administrador del sistema que l'instal·li.", "External Storage" => "Emmagatzemament extern", -"Mount point" => "Punt de muntatge", -"Backend" => "Dorsal", +"Folder name" => "Nom de la carpeta", +"External storage" => "Emmagatzemament extern", "Configuration" => "Configuració", "Options" => "Options", "Applicable" => "Aplicable", -"Add mount point" => "Afegeix punt de muntatge", +"Add storage" => "Afegeix emmagatzemament", "None set" => "Cap d'establert", "All Users" => "Tots els usuaris", "Groups" => "Grups", diff --git a/apps/files_external/l10n/cs_CZ.php b/apps/files_external/l10n/cs_CZ.php index 9c647fad93..20bbe8acba 100644 --- a/apps/files_external/l10n/cs_CZ.php +++ b/apps/files_external/l10n/cs_CZ.php @@ -2,18 +2,17 @@ "Access granted" => "Přístup povolen", "Error configuring Dropbox storage" => "Chyba při nastavení úložiště Dropbox", "Grant access" => "Povolit přístup", -"Fill out all required fields" => "Vyplňte všechna povinná pole", "Please provide a valid Dropbox app key and secret." => "Zadejte, prosím, platný klíč a bezpečnostní frázi aplikace Dropbox.", "Error configuring Google Drive storage" => "Chyba při nastavení úložiště Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Varování: není nainstalován program \"smbclient\". Není možné připojení oddílů CIFS/SMB. Prosím požádejte svého správce systému ať jej nainstaluje.", "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." => "Varování: není nainstalována, nebo povolena, podpora FTP v PHP. Není možné připojení oddílů FTP. Prosím požádejte svého správce systému ať ji nainstaluje.", "External Storage" => "Externí úložiště", -"Mount point" => "Přípojný bod", -"Backend" => "Podpůrná vrstva", +"Folder name" => "Název složky", +"External storage" => "Externí úložiště", "Configuration" => "Nastavení", "Options" => "Možnosti", "Applicable" => "Přístupný pro", -"Add mount point" => "Přidat bod připojení", +"Add storage" => "Přidat úložiště", "None set" => "Nenastaveno", "All Users" => "Všichni uživatelé", "Groups" => "Skupiny", diff --git a/apps/files_external/l10n/da.php b/apps/files_external/l10n/da.php index bae89a6cfd..0c9c6c3904 100644 --- a/apps/files_external/l10n/da.php +++ b/apps/files_external/l10n/da.php @@ -2,18 +2,15 @@ "Access granted" => "Adgang godkendt", "Error configuring Dropbox storage" => "Fejl ved konfiguration af Dropbox plads", "Grant access" => "Godkend adgang", -"Fill out all required fields" => "Udfyld alle nødvendige felter", "Please provide a valid Dropbox app key and secret." => "Angiv venligst en valid Dropbox app nøgle og hemmelighed", "Error configuring Google Drive storage" => "Fejl ved konfiguration af Google Drive plads", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => " Advarsel: \"smbclient\" ikke er installeret. Montering af CIFS / SMB delinger er ikke muligt. Spørg din systemadministrator om at installere det.", "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." => " Advarsel: FTP-understøttelse i PHP ikke er aktiveret eller installeret. Montering af FTP delinger er ikke muligt. Spørg din systemadministrator om at installere det.", "External Storage" => "Ekstern opbevaring", -"Mount point" => "Monteringspunkt", -"Backend" => "Backend", +"Folder name" => "Mappenavn", "Configuration" => "Opsætning", "Options" => "Valgmuligheder", "Applicable" => "Kan anvendes", -"Add mount point" => "Tilføj monteringspunkt", "None set" => "Ingen sat", "All Users" => "Alle brugere", "Groups" => "Grupper", diff --git a/apps/files_external/l10n/de.php b/apps/files_external/l10n/de.php index 277cc2e6ef..2418377221 100644 --- a/apps/files_external/l10n/de.php +++ b/apps/files_external/l10n/de.php @@ -2,18 +2,17 @@ "Access granted" => "Zugriff gestattet", "Error configuring Dropbox storage" => "Fehler beim Einrichten von Dropbox", "Grant access" => "Zugriff gestatten", -"Fill out all required fields" => "Bitte alle notwendigen Felder füllen", "Please provide a valid Dropbox app key and secret." => "Bitte trage einen gültigen Dropbox-App-Key mit Secret ein.", "Error configuring Google Drive storage" => "Fehler beim Einrichten von Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Warnung: \"smbclient\" ist nicht installiert. Das Einhängen von CIFS/SMB-Freigaben ist nicht möglich. Bitte Deinen System-Administrator, dies zu installieren.", "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." => "Warnung:: Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Bitte wende Dich an Deinen Systemadministrator.", "External Storage" => "Externer Speicher", -"Mount point" => "Mount-Point", -"Backend" => "Backend", +"Folder name" => "Ordnername", +"External storage" => "Externer Speicher", "Configuration" => "Konfiguration", "Options" => "Optionen", "Applicable" => "Zutreffend", -"Add mount point" => "Mount-Point hinzufügen", +"Add storage" => "Speicher hinzufügen", "None set" => "Nicht definiert", "All Users" => "Alle Benutzer", "Groups" => "Gruppen", diff --git a/apps/files_external/l10n/de_DE.php b/apps/files_external/l10n/de_DE.php index 5675eb057f..d55c0c6909 100644 --- a/apps/files_external/l10n/de_DE.php +++ b/apps/files_external/l10n/de_DE.php @@ -2,18 +2,17 @@ "Access granted" => "Zugriff gestattet", "Error configuring Dropbox storage" => "Fehler beim Einrichten von Dropbox", "Grant access" => "Zugriff gestatten", -"Fill out all required fields" => "Bitte alle notwendigen Felder füllen", "Please provide a valid Dropbox app key and secret." => "Bitte tragen Sie einen gültigen Dropbox-App-Key mit Secret ein.", "Error configuring Google Drive storage" => "Fehler beim Einrichten von Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Warnung: \"smbclient\" ist nicht installiert. Das Einhängen von CIFS/SMB-Freigaben ist nicht möglich. Bitten Sie Ihren Systemadministrator, dies zu installieren.", "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." => "Warnung:: Die FTP Unterstützung von PHP ist nicht aktiviert oder installiert. Bitte wenden Sie sich an Ihren Systemadministrator.", "External Storage" => "Externer Speicher", -"Mount point" => "Mount-Point", -"Backend" => "Backend", +"Folder name" => "Ordnername", +"External storage" => "Externer Speicher", "Configuration" => "Konfiguration", "Options" => "Optionen", "Applicable" => "Zutreffend", -"Add mount point" => "Mount-Point hinzufügen", +"Add storage" => "Speicher hinzufügen", "None set" => "Nicht definiert", "All Users" => "Alle Benutzer", "Groups" => "Gruppen", diff --git a/apps/files_external/l10n/el.php b/apps/files_external/l10n/el.php index 9bf499a911..38b5a098f6 100644 --- a/apps/files_external/l10n/el.php +++ b/apps/files_external/l10n/el.php @@ -2,18 +2,15 @@ "Access granted" => "Προσβαση παρασχέθηκε", "Error configuring Dropbox storage" => "Σφάλμα ρυθμίζωντας αποθήκευση Dropbox ", "Grant access" => "Παροχή πρόσβασης", -"Fill out all required fields" => "Συμπληρώστε όλα τα απαιτούμενα πεδία", "Please provide a valid Dropbox app key and secret." => "Παρακαλούμε δώστε έγκυρο κλειδί Dropbox και μυστικό.", "Error configuring Google Drive storage" => "Σφάλμα ρυθμίζωντας αποθήκευση Google Drive ", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Προσοχή: Ο \"smbclient\" δεν εγκαταστάθηκε. Δεν είναι δυνατή η προσάρτηση CIFS/SMB. Παρακαλώ ενημερώστε τον διαχειριστή συστήματος να το εγκαταστήσει.", "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." => "Προσοχή: Η υποστήριξη FTP στην PHP δεν ενεργοποιήθηκε ή εγκαταστάθηκε. Δεν είναι δυνατή η προσάρτηση FTP. Παρακαλώ ενημερώστε τον διαχειριστή συστήματος να το εγκαταστήσει.", "External Storage" => "Εξωτερικό Αποθηκευτικό Μέσο", -"Mount point" => "Σημείο προσάρτησης", -"Backend" => "Σύστημα υποστήριξης", +"Folder name" => "Όνομα φακέλου", "Configuration" => "Ρυθμίσεις", "Options" => "Επιλογές", "Applicable" => "Εφαρμόσιμο", -"Add mount point" => "Προσθήκη σημείου προσάρτησης", "None set" => "Κανένα επιλεγμένο", "All Users" => "Όλοι οι Χρήστες", "Groups" => "Ομάδες", diff --git a/apps/files_external/l10n/eo.php b/apps/files_external/l10n/eo.php index 97453aafed..b0afb77498 100644 --- a/apps/files_external/l10n/eo.php +++ b/apps/files_external/l10n/eo.php @@ -2,16 +2,13 @@ "Access granted" => "Alirpermeso donita", "Error configuring Dropbox storage" => "Eraro dum agordado de la memorservo Dropbox", "Grant access" => "Doni alirpermeson", -"Fill out all required fields" => "Plenigu ĉiujn neprajn kampojn", "Please provide a valid Dropbox app key and secret." => "Bonvolu provizi ŝlosilon de la aplikaĵo Dropbox validan kaj sekretan.", "Error configuring Google Drive storage" => "Eraro dum agordado de la memorservo Google Drive", "External Storage" => "Malena memorilo", -"Mount point" => "Surmetingo", -"Backend" => "Motoro", +"Folder name" => "Dosierujnomo", "Configuration" => "Agordo", "Options" => "Malneproj", "Applicable" => "Aplikebla", -"Add mount point" => "Aldoni surmetingon", "None set" => "Nenio agordita", "All Users" => "Ĉiuj uzantoj", "Groups" => "Grupoj", diff --git a/apps/files_external/l10n/es.php b/apps/files_external/l10n/es.php index d4e5662764..da22f41032 100644 --- a/apps/files_external/l10n/es.php +++ b/apps/files_external/l10n/es.php @@ -2,18 +2,17 @@ "Access granted" => "Acceso garantizado", "Error configuring Dropbox storage" => "Error configurando el almacenamiento de Dropbox", "Grant access" => "Garantizar acceso", -"Fill out all required fields" => "Rellenar todos los campos requeridos", "Please provide a valid Dropbox app key and secret." => "Por favor , proporcione un secreto y una contraseña válida de la app Dropbox.", "Error configuring Google Drive storage" => "Error configurando el almacenamiento de Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Advertencia: El cliente smb (smbclient) no se encuentra instalado. El montado de archivos o ficheros CIFS/SMB no es posible. Por favor pida al administrador de su sistema que lo instale.", "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." => "Advertencia: El soporte de FTP en PHP no se encuentra instalado. El montado de archivos o ficheros FTP no es posible. Por favor pida al administrador de su sistema que lo instale.", "External Storage" => "Almacenamiento externo", -"Mount point" => "Punto de montaje", -"Backend" => "Motor", +"Folder name" => "Nombre de la carpeta", +"External storage" => "Almacenamiento externo", "Configuration" => "Configuración", "Options" => "Opciones", "Applicable" => "Aplicable", -"Add mount point" => "Añadir punto de montaje", +"Add storage" => "Añadir almacenamiento", "None set" => "No se ha configurado", "All Users" => "Todos los usuarios", "Groups" => "Grupos", diff --git a/apps/files_external/l10n/es_AR.php b/apps/files_external/l10n/es_AR.php index aa117e8027..6706aa43a3 100644 --- a/apps/files_external/l10n/es_AR.php +++ b/apps/files_external/l10n/es_AR.php @@ -2,18 +2,17 @@ "Access granted" => "Acceso permitido", "Error configuring Dropbox storage" => "Error al configurar el almacenamiento de Dropbox", "Grant access" => "Permitir acceso", -"Fill out all required fields" => "Rellenar todos los campos requeridos", "Please provide a valid Dropbox app key and secret." => "Por favor, proporcioná un secreto y una contraseña válida para la aplicación Dropbox.", "Error configuring Google Drive storage" => "Error al configurar el almacenamiento de Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Advertencia: El cliente smb (smbclient) no se encuentra instalado. El montado de archivos o ficheros CIFS/SMB no es posible. Por favor pida al administrador de su sistema que lo instale.", "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." => "Advertencia: El soporte de FTP en PHP no se encuentra instalado. El montado de archivos o ficheros FTP no es posible. Por favor pida al administrador de su sistema que lo instale.", "External Storage" => "Almacenamiento externo", -"Mount point" => "Punto de montaje", -"Backend" => "Motor", +"Folder name" => "Nombre de la carpeta", +"External storage" => "Almacenamiento externo", "Configuration" => "Configuración", "Options" => "Opciones", "Applicable" => "Aplicable", -"Add mount point" => "Añadir punto de montaje", +"Add storage" => "Añadir almacenamiento", "None set" => "No fue configurado", "All Users" => "Todos los usuarios", "Groups" => "Grupos", diff --git a/apps/files_external/l10n/et_EE.php b/apps/files_external/l10n/et_EE.php index 86922bc751..fd0cdefd34 100644 --- a/apps/files_external/l10n/et_EE.php +++ b/apps/files_external/l10n/et_EE.php @@ -2,16 +2,13 @@ "Access granted" => "Ligipääs on antud", "Error configuring Dropbox storage" => "Viga Dropboxi salvestusruumi seadistamisel", "Grant access" => "Anna ligipääs", -"Fill out all required fields" => "Täida kõik kohustuslikud lahtrid", "Please provide a valid Dropbox app key and secret." => "Palun sisesta korrektne Dropboxi rakenduse võti ja salasõna.", "Error configuring Google Drive storage" => "Viga Google Drive'i salvestusruumi seadistamisel", "External Storage" => "Väline salvestuskoht", -"Mount point" => "Ühenduspunkt", -"Backend" => "Admin", +"Folder name" => "Kausta nimi", "Configuration" => "Seadistamine", "Options" => "Valikud", "Applicable" => "Rakendatav", -"Add mount point" => "Lisa ühenduspunkt", "None set" => "Pole määratud", "All Users" => "Kõik kasutajad", "Groups" => "Grupid", diff --git a/apps/files_external/l10n/eu.php b/apps/files_external/l10n/eu.php index 597204c894..83be50deb0 100644 --- a/apps/files_external/l10n/eu.php +++ b/apps/files_external/l10n/eu.php @@ -2,18 +2,17 @@ "Access granted" => "Sarrera baimendua", "Error configuring Dropbox storage" => "Errore bat egon da Dropbox biltegiratzea konfiguratzean", "Grant access" => "Baimendu sarrera", -"Fill out all required fields" => "Bete eskatutako eremu guztiak", "Please provide a valid Dropbox app key and secret." => "Mesedez eman baliozkoa den Dropbox app giltza eta sekretua", "Error configuring Google Drive storage" => "Errore bat egon da Google Drive biltegiratzea konfiguratzean", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Abisua: \"smbclient\" ez dago instalatuta. CIFS/SMB partekatutako karpetak montatzea ez da posible. Mesedez eskatu zure sistema kudeatzaileari instalatzea.", "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." => "Abisua: PHPren FTP modulua ez dago instalatuta edo gaitua. FTP partekatutako karpetak montatzea ez da posible. Mesedez eskatu zure sistema kudeatzaileari instalatzea.", "External Storage" => "Kanpoko Biltegiratzea", -"Mount point" => "Montatze puntua", -"Backend" => "Motorra", +"Folder name" => "Karpetaren izena", +"External storage" => "Kanpoko biltegiratzea", "Configuration" => "Konfigurazioa", "Options" => "Aukerak", "Applicable" => "Aplikagarria", -"Add mount point" => "Gehitu muntatze puntua", +"Add storage" => "Gehitu biltegiratzea", "None set" => "Ezarri gabe", "All Users" => "Erabiltzaile guztiak", "Groups" => "Taldeak", diff --git a/apps/files_external/l10n/fa.php b/apps/files_external/l10n/fa.php index 5acf3eac5a..a7eac596b0 100644 --- a/apps/files_external/l10n/fa.php +++ b/apps/files_external/l10n/fa.php @@ -3,6 +3,7 @@ "Configuration" => "پیکربندی", "Options" => "تنظیمات", "Applicable" => "قابل اجرا", +"All Users" => "تمام کاربران", "Groups" => "گروه ها", "Users" => "کاربران", "Delete" => "حذف", diff --git a/apps/files_external/l10n/fi_FI.php b/apps/files_external/l10n/fi_FI.php index 120c190790..4cf97f2fc3 100644 --- a/apps/files_external/l10n/fi_FI.php +++ b/apps/files_external/l10n/fi_FI.php @@ -2,18 +2,15 @@ "Access granted" => "Pääsy sallittu", "Error configuring Dropbox storage" => "Virhe Dropbox levyn asetuksia tehtäessä", "Grant access" => "Salli pääsy", -"Fill out all required fields" => "Täytä kaikki vaaditut kentät", "Please provide a valid Dropbox app key and secret." => "Anna kelvollinen Dropbox-sovellusavain ja salainen vastaus.", "Error configuring Google Drive storage" => "Virhe Google Drive levyn asetuksia tehtäessä", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Varoitus: \"smbclient\" ei ole asennettuna. CIFS-/SMB-jakojen liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää asentamaan smbclient.", "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." => "Varoitus: PHP:n FTP-tuki ei ole käytössä tai sitä ei ole asennettu. FTP-jakojen liittäminen ei ole mahdollista. Pyydä järjestelmän ylläpitäjää ottamaan FTP-tuki käyttöön.", "External Storage" => "Erillinen tallennusväline", -"Mount point" => "Liitospiste", -"Backend" => "Taustaosa", +"Folder name" => "Kansion nimi", "Configuration" => "Asetukset", "Options" => "Valinnat", "Applicable" => "Sovellettavissa", -"Add mount point" => "Lisää liitospiste", "None set" => "Ei asetettu", "All Users" => "Kaikki käyttäjät", "Groups" => "Ryhmät", diff --git a/apps/files_external/l10n/fr.php b/apps/files_external/l10n/fr.php index 0825a961b1..db4140b483 100644 --- a/apps/files_external/l10n/fr.php +++ b/apps/files_external/l10n/fr.php @@ -2,18 +2,15 @@ "Access granted" => "Accès autorisé", "Error configuring Dropbox storage" => "Erreur lors de la configuration du support de stockage Dropbox", "Grant access" => "Autoriser l'accès", -"Fill out all required fields" => "Veuillez remplir tous les champs requis", "Please provide a valid Dropbox app key and secret." => "Veuillez fournir une clé d'application (app key) ainsi qu'un mot de passe valides.", "Error configuring Google Drive storage" => "Erreur lors de la configuration du support de stockage Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Attention : \"smbclient\" n'est pas installé. Le montage des partages CIFS/SMB n'est pas disponible. Contactez votre administrateur système pour l'installer.", "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." => "Attention : Le support FTP de PHP n'est pas activé ou installé. Le montage des partages FTP n'est pas disponible. Contactez votre administrateur système pour l'installer.", "External Storage" => "Stockage externe", -"Mount point" => "Point de montage", -"Backend" => "Infrastructure", +"Folder name" => "Nom du dossier", "Configuration" => "Configuration", "Options" => "Options", "Applicable" => "Disponible", -"Add mount point" => "Ajouter un point de montage", "None set" => "Aucun spécifié", "All Users" => "Tous les utilisateurs", "Groups" => "Groupes", diff --git a/apps/files_external/l10n/gl.php b/apps/files_external/l10n/gl.php index f8100e1462..715417e25a 100644 --- a/apps/files_external/l10n/gl.php +++ b/apps/files_external/l10n/gl.php @@ -2,18 +2,17 @@ "Access granted" => "Concedeuse acceso", "Error configuring Dropbox storage" => "Produciuse un erro ao configurar o almacenamento en Dropbox", "Grant access" => "Permitir o acceso", -"Fill out all required fields" => "Cubrir todos os campos obrigatorios", "Please provide a valid Dropbox app key and secret." => "Forneza unha chave correcta e segreda do Dropbox.", "Error configuring Google Drive storage" => "Produciuse un erro ao configurar o almacenamento en 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» non está instalado. Non é posibel a montaxe de comparticións CIFS/SMB. Consulte co administrador do sistema para instalalo.", "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: A compatibilidade de FTP en PHP non está activada ou instalada. Non é posibel a montaxe de comparticións FTP. Consulte co administrador do sistema para instalalo.", "External Storage" => "Almacenamento externo", -"Mount point" => "Punto de montaxe", -"Backend" => "Infraestrutura", +"Folder name" => "Nome do cartafol", +"External storage" => "Almacenamento externo", "Configuration" => "Configuración", "Options" => "Opcións", "Applicable" => "Aplicábel", -"Add mount point" => "Engadir un punto de montaxe", +"Add storage" => "Engadir almacenamento", "None set" => "Ningún definido", "All Users" => "Todos os usuarios", "Groups" => "Grupos", diff --git a/apps/files_external/l10n/he.php b/apps/files_external/l10n/he.php index 3dc04d4e79..9cba045d1e 100644 --- a/apps/files_external/l10n/he.php +++ b/apps/files_external/l10n/he.php @@ -2,16 +2,13 @@ "Access granted" => "הוענקה גישה", "Error configuring Dropbox storage" => "אירעה שגיאה בעת הגדרת אחסון ב־Dropbox", "Grant access" => "הענקת גישה", -"Fill out all required fields" => "נא למלא את כל השדות הנדרשים", "Please provide a valid Dropbox app key and secret." => "נא לספק קוד יישום וסוד תקניים של Dropbox.", "Error configuring Google Drive storage" => "אירעה שגיאה בעת הגדרת אחסון ב־Google Drive", "External Storage" => "אחסון חיצוני", -"Mount point" => "נקודת עגינה", -"Backend" => "מנגנון", +"Folder name" => "שם התיקייה", "Configuration" => "הגדרות", "Options" => "אפשרויות", "Applicable" => "ניתן ליישום", -"Add mount point" => "הוספת נקודת עגינה", "None set" => "לא הוגדרה", "All Users" => "כל המשתמשים", "Groups" => "קבוצות", diff --git a/apps/files_external/l10n/hu_HU.php b/apps/files_external/l10n/hu_HU.php index b8973c9641..9ecd2d1088 100644 --- a/apps/files_external/l10n/hu_HU.php +++ b/apps/files_external/l10n/hu_HU.php @@ -2,18 +2,17 @@ "Access granted" => "Érvényes hozzáférés", "Error configuring Dropbox storage" => "A Dropbox tárolót nem sikerült beállítani", "Grant access" => "Megadom a hozzáférést", -"Fill out all required fields" => "Töltse ki az összes szükséges mezőt", "Please provide a valid Dropbox app key and secret." => "Adjon meg egy érvényes Dropbox app key-t és secretet!", "Error configuring Google Drive storage" => "A Google Drive tárolót nem sikerült beállítani", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Figyelem: az \"smbclient\" nincs telepítve a kiszolgálón. Emiatt nem lehet CIFS/SMB megosztásokat fölcsatolni. Kérje meg a rendszergazdát, hogy telepítse a szükséges programot.", "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." => "Figyelem: a PHP FTP támogatása vagy nincs telepítve, vagy nincs engedélyezve a kiszolgálón. Emiatt nem lehetséges FTP-tárolókat fölcsatolni. Kérje meg a rendszergazdát, hogy telepítse a szükséges programot.", "External Storage" => "Külső tárolási szolgáltatások becsatolása", -"Mount point" => "Hova csatoljuk", -"Backend" => "Külső tárolórendszer", +"Folder name" => "Mappanév", +"External storage" => "Külső tárolók", "Configuration" => "Beállítások", "Options" => "Opciók", "Applicable" => "Érvényességi kör", -"Add mount point" => "Új csatolás létrehozása", +"Add storage" => "Tároló becsatolása", "None set" => "Nincs beállítva", "All Users" => "Az összes felhasználó", "Groups" => "Csoportok", diff --git a/apps/files_external/l10n/hy.php b/apps/files_external/l10n/hy.php new file mode 100644 index 0000000000..3b80487278 --- /dev/null +++ b/apps/files_external/l10n/hy.php @@ -0,0 +1,3 @@ + "Ջնջել" +); diff --git a/apps/files_external/l10n/id.php b/apps/files_external/l10n/id.php index 4b7850025f..647220706b 100644 --- a/apps/files_external/l10n/id.php +++ b/apps/files_external/l10n/id.php @@ -1,14 +1,22 @@ "akses diberikan", -"Grant access" => "berikan hak akses", -"Fill out all required fields" => "isi semua field yang dibutuhkan", -"External Storage" => "penyimpanan eksternal", -"Configuration" => "konfigurasi", -"Options" => "pilihan", -"Applicable" => "berlaku", -"None set" => "tidak satupun di set", -"All Users" => "semua pengguna", -"Groups" => "grup", -"Users" => "pengguna", -"Delete" => "hapus" +"Access granted" => "Akses diberikan", +"Error configuring Dropbox storage" => "Kesalahan dalam mengkonfigurasi penyimpanan Dropbox", +"Grant access" => "Berikan hak akses", +"Please provide a valid Dropbox app key and secret." => "Masukkan kunci dan sandi aplikasi Dropbox yang benar.", +"Error configuring Google Drive storage" => "Kesalahan dalam mengkonfigurasi penyimpanan Google Drive", +"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Peringatan: \"smbclient\" tidak terpasang. Mount direktori CIFS/SMB tidak dapat dilakukan. Silakan minta administrator sistem untuk memasangnya.", +"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." => "Peringatan: Dukungan FTP di PHP tidak aktif atau tidak terpasang. Mount direktori FTP tidak dapat dilakukan. Silakan minta administrator sistem untuk memasangnya.", +"External Storage" => "Penyimpanan Eksternal", +"Configuration" => "Konfigurasi", +"Options" => "Pilihan", +"Applicable" => "Berlaku", +"None set" => "Tidak satupun di set", +"All Users" => "Semua Pengguna", +"Groups" => "Grup", +"Users" => "Pengguna", +"Delete" => "Hapus", +"Enable User External Storage" => "Aktifkan Penyimpanan Eksternal Pengguna", +"Allow users to mount their own external storage" => "Ijinkan pengguna untuk me-mount penyimpanan eksternal mereka", +"SSL root certificates" => "Sertifikat root SSL", +"Import Root Certificate" => "Impor Sertifikat Root" ); diff --git a/apps/files_external/l10n/is.php b/apps/files_external/l10n/is.php index 5110bf5ad2..6af53096fa 100644 --- a/apps/files_external/l10n/is.php +++ b/apps/files_external/l10n/is.php @@ -2,18 +2,15 @@ "Access granted" => "Aðgengi veitt", "Error configuring Dropbox storage" => "Villa við að setja upp Dropbox gagnasvæði", "Grant access" => "Veita aðgengi", -"Fill out all required fields" => "Fylltu út alla skilyrta reiti", "Please provide a valid Dropbox app key and secret." => "Gefðu upp virkan Dropbox lykil og leynikóða", "Error configuring Google Drive storage" => "Villa kom upp við að setja upp Google Drive gagnasvæði", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Aðvörun: \"smbclient\" er ekki uppsettur. Uppsetning á CIFS/SMB gagnasvæðum er ekki möguleg. Hafðu samband við kerfisstjóra til að fá hann uppsettan.", "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." => "Aðvörun: FTP stuðningur í PHP er ekki virkur. Uppsetning á FTP gagnasvæðum er ekki möguleg. Hafðu samband við kerfisstjóra til að fá hann uppsettan.", "External Storage" => "Ytri gagnageymsla", -"Mount point" => "Mount svæði", -"Backend" => "Stjórnun", +"Folder name" => "Nafn möppu", "Configuration" => "Uppsetning", "Options" => "Stillingar", "Applicable" => "Gilt", -"Add mount point" => "Bæta við mount svæði", "None set" => "Ekkert sett", "All Users" => "Allir notendur", "Groups" => "Hópar", diff --git a/apps/files_external/l10n/it.php b/apps/files_external/l10n/it.php index 98c83146d4..d7e0c81a0b 100644 --- a/apps/files_external/l10n/it.php +++ b/apps/files_external/l10n/it.php @@ -2,18 +2,17 @@ "Access granted" => "Accesso consentito", "Error configuring Dropbox storage" => "Errore durante la configurazione dell'archivio Dropbox", "Grant access" => "Concedi l'accesso", -"Fill out all required fields" => "Compila tutti i campi richiesti", "Please provide a valid Dropbox app key and secret." => "Fornisci chiave di applicazione e segreto di Dropbox validi.", "Error configuring Google Drive storage" => "Errore durante la configurazione dell'archivio Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Avviso: \"smbclient\" non è installato. Impossibile montare condivisioni CIFS/SMB. Chiedi all'amministratore di sistema di installarlo.", "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." => "Avviso: il supporto FTP di PHP non è abilitato o non è installato. Impossibile montare condivisioni FTP. Chiedi all'amministratore di sistema di installarlo.", "External Storage" => "Archiviazione esterna", -"Mount point" => "Punto di mount", -"Backend" => "Motore", +"Folder name" => "Nome della cartella", +"External storage" => "Archiviazione esterna", "Configuration" => "Configurazione", "Options" => "Opzioni", "Applicable" => "Applicabile", -"Add mount point" => "Aggiungi punto di mount", +"Add storage" => "Aggiungi archiviazione", "None set" => "Nessuna impostazione", "All Users" => "Tutti gli utenti", "Groups" => "Gruppi", diff --git a/apps/files_external/l10n/ja_JP.php b/apps/files_external/l10n/ja_JP.php index cd09bb43db..12a0b30938 100644 --- a/apps/files_external/l10n/ja_JP.php +++ b/apps/files_external/l10n/ja_JP.php @@ -2,18 +2,17 @@ "Access granted" => "アクセスは許可されました", "Error configuring Dropbox storage" => "Dropboxストレージの設定エラー", "Grant access" => "アクセスを許可", -"Fill out all required fields" => "すべての必須フィールドを埋めて下さい", "Please provide a valid Dropbox app key and secret." => "有効なDropboxアプリのキーとパスワードを入力して下さい。", "Error configuring Google Drive storage" => "Googleドライブストレージの設定エラー", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "警告: \"smbclient\" はインストールされていません。CIFS/SMB 共有のマウントはできません。システム管理者にインストールをお願いして下さい。", "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." => "警告: PHPのFTPサポートは無効もしくはインストールされていません。FTP共有のマウントはできません。システム管理者にインストールをお願いして下さい。", "External Storage" => "外部ストレージ", -"Mount point" => "マウントポイント", -"Backend" => "バックエンド", +"Folder name" => "フォルダ名", +"External storage" => "外部ストレージ", "Configuration" => "設定", "Options" => "オプション", "Applicable" => "適用範囲", -"Add mount point" => "マウントポイントを追加", +"Add storage" => "ストレージを追加", "None set" => "未設定", "All Users" => "すべてのユーザ", "Groups" => "グループ", diff --git a/apps/files_external/l10n/ka.php b/apps/files_external/l10n/ka.php new file mode 100644 index 0000000000..14c0625e1f --- /dev/null +++ b/apps/files_external/l10n/ka.php @@ -0,0 +1,3 @@ + "მომხმარებლები" +); diff --git a/apps/files_external/l10n/ko.php b/apps/files_external/l10n/ko.php index 47b75f74b8..47de9aad5e 100644 --- a/apps/files_external/l10n/ko.php +++ b/apps/files_external/l10n/ko.php @@ -2,18 +2,15 @@ "Access granted" => "접근 허가됨", "Error configuring Dropbox storage" => "Dropbox 저장소 설정 오류", "Grant access" => "접근 권한 부여", -"Fill out all required fields" => "모든 필수 항목을 입력하십시오", "Please provide a valid Dropbox app key and secret." => "올바른 Dropbox 앱 키와 암호를 입력하십시오.", "Error configuring Google Drive storage" => "Google 드라이브 저장소 설정 오류", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "경고: \"smbclient\"가 설치되지 않았습니다. CIFS/SMB 공유 자원에 연결할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "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." => "경고: PHP FTP 지원이 비활성화되어 있거나 설치되지 않았습니다. FTP 공유를 마운트할 수 없습니다. 시스템 관리자에게 설치를 요청하십시오.", "External Storage" => "외부 저장소", -"Mount point" => "마운트 지점", -"Backend" => "백엔드", +"Folder name" => "폴더 이름", "Configuration" => "설정", "Options" => "옵션", "Applicable" => "적용 가능", -"Add mount point" => "마운트 지점 추가", "None set" => "설정되지 않음", "All Users" => "모든 사용자", "Groups" => "그룹", diff --git a/apps/files_external/l10n/ku_IQ.php b/apps/files_external/l10n/ku_IQ.php index c614168d77..59eabb36c9 100644 --- a/apps/files_external/l10n/ku_IQ.php +++ b/apps/files_external/l10n/ku_IQ.php @@ -1,3 +1,4 @@ "ناوی بوخچه", "Users" => "به‌كارهێنه‌ر" ); diff --git a/apps/files_external/l10n/lb.php b/apps/files_external/l10n/lb.php index 7cbfaea6a5..2a62cad3fe 100644 --- a/apps/files_external/l10n/lb.php +++ b/apps/files_external/l10n/lb.php @@ -1,4 +1,5 @@ "Dossiers Numm:", "Groups" => "Gruppen", "Delete" => "Läschen" ); diff --git a/apps/files_external/l10n/lt_LT.php b/apps/files_external/l10n/lt_LT.php index cdb168dd38..f7dca99ef6 100644 --- a/apps/files_external/l10n/lt_LT.php +++ b/apps/files_external/l10n/lt_LT.php @@ -2,16 +2,13 @@ "Access granted" => "Priėjimas suteiktas", "Error configuring Dropbox storage" => "Klaida nustatinėjant Dropbox talpyklą", "Grant access" => "Suteikti priėjimą", -"Fill out all required fields" => "Užpildykite visus reikalingus laukelius", "Please provide a valid Dropbox app key and secret." => "Prašome įvesti teisingus Dropbox \"app key\" ir \"secret\".", "Error configuring Google Drive storage" => "Klaida nustatinėjant Google Drive talpyklą", "External Storage" => "Išorinės saugyklos", -"Mount point" => "Saugyklos pavadinimas", -"Backend" => "Posistemės pavadinimas", +"Folder name" => "Katalogo pavadinimas", "Configuration" => "Konfigūracija", "Options" => "Nustatymai", "Applicable" => "Pritaikyti", -"Add mount point" => "Pridėti išorinę saugyklą", "None set" => "Nieko nepasirinkta", "All Users" => "Visi vartotojai", "Groups" => "Grupės", diff --git a/apps/files_external/l10n/lv.php b/apps/files_external/l10n/lv.php index ee53346fcd..b37dbcbdc1 100644 --- a/apps/files_external/l10n/lv.php +++ b/apps/files_external/l10n/lv.php @@ -2,18 +2,17 @@ "Access granted" => "Piešķirta pieeja", "Error configuring Dropbox storage" => "Kļūda, konfigurējot Dropbox krātuvi", "Grant access" => "Piešķirt pieeju", -"Fill out all required fields" => "Aizpildīt visus pieprasītos laukus", "Please provide a valid Dropbox app key and secret." => "Lūdzu, norādiet derīgu Dropbox lietotnes atslēgu un noslēpumu.", "Error configuring Google Drive storage" => "Kļūda, konfigurējot Google Drive krātuvi", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Brīdinājums: nav uzinstalēts “smbclient”. Nevar montēt CIFS/SMB koplietojumus. Lūdzu, vaicājiet savam sistēmas administratoram, lai to uzinstalē.", "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." => "Brīdinājums: uz PHP nav aktivēts vai instalēts FTP atbalsts. Nevar montēt FTP koplietojumus. Lūdzu, vaicājiet savam sistēmas administratoram, lai to uzinstalē.", "External Storage" => "Ārējā krātuve", -"Mount point" => "Montēšanas punkts", -"Backend" => "Aizmugure", +"Folder name" => "Mapes nosaukums", +"External storage" => "Ārējā krātuve", "Configuration" => "Konfigurācija", "Options" => "Opcijas", "Applicable" => "Piemērojams", -"Add mount point" => "Pievienot montēšanas punktu", +"Add storage" => "Pievienot krātuvi", "None set" => "Neviens nav iestatīts", "All Users" => "Visi lietotāji", "Groups" => "Grupas", diff --git a/apps/files_external/l10n/mk.php b/apps/files_external/l10n/mk.php index e3c1e4652b..1f1a1c2783 100644 --- a/apps/files_external/l10n/mk.php +++ b/apps/files_external/l10n/mk.php @@ -2,18 +2,15 @@ "Access granted" => "Пристапот е дозволен", "Error configuring Dropbox storage" => "Грешка при конфигурација на Dropbox", "Grant access" => "Дозволи пристап", -"Fill out all required fields" => "Пополни ги сите задолжителни полиња", "Please provide a valid Dropbox app key and secret." => "Ве молам доставите валиден Dropbox клуч и тајна лозинка.", "Error configuring Google Drive storage" => "Грешка при конфигурација на Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Внимание: \"smbclient\" не е инсталиран. Не е можно монтирање на CIFS/SMB дискови. Замолете го Вашиот систем администратор да го инсталира.", "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." => "Внимание: Не е овозможена или инсталирани FTP подршка во PHP. Не е можно монтирање на FTP дискови. Замолете го Вашиот систем администратор да го инсталира.", "External Storage" => "Надворешно складиште", -"Mount point" => "Точка на монтирање", -"Backend" => "Админ", +"Folder name" => "Име на папка", "Configuration" => "Конфигурација", "Options" => "Опции", "Applicable" => "Применливо", -"Add mount point" => "Додади точка на монтирање", "None set" => "Ништо поставено", "All Users" => "Сите корисници", "Groups" => "Групи", diff --git a/apps/files_external/l10n/my_MM.php b/apps/files_external/l10n/my_MM.php new file mode 100644 index 0000000000..5acfbb0321 --- /dev/null +++ b/apps/files_external/l10n/my_MM.php @@ -0,0 +1,3 @@ + "သုံးစွဲသူ" +); diff --git a/apps/files_external/l10n/nb_NO.php b/apps/files_external/l10n/nb_NO.php index 273b40cf8e..961ef2b104 100644 --- a/apps/files_external/l10n/nb_NO.php +++ b/apps/files_external/l10n/nb_NO.php @@ -1,8 +1,21 @@ "Tilgang innvilget", +"Error configuring Dropbox storage" => "Feil ved konfigurering av Dropbox-lagring", +"Grant access" => "Gi tilgang", +"External Storage" => "Ekstern lagring", +"Folder name" => "Mappenavn", +"External storage" => "Ekstern lagringsplass", "Configuration" => "Konfigurasjon", "Options" => "Innstillinger", +"Applicable" => "Anvendelig", +"Add storage" => "Legg til lagringsplass", +"None set" => "Ingen valgt", "All Users" => "Alle brukere", "Groups" => "Grupper", "Users" => "Brukere", -"Delete" => "Slett" +"Delete" => "Slett", +"Enable User External Storage" => "Aktiver ekstern lagring for bruker", +"Allow users to mount their own external storage" => "Tillat brukere å koble til egne eksterne lagringsmedium", +"SSL root certificates" => "SSL root-sertifikater", +"Import Root Certificate" => "Importer root-sertifikat" ); diff --git a/apps/files_external/l10n/nl.php b/apps/files_external/l10n/nl.php index 132c8cf3ac..ad3eda9747 100644 --- a/apps/files_external/l10n/nl.php +++ b/apps/files_external/l10n/nl.php @@ -2,18 +2,17 @@ "Access granted" => "Toegang toegestaan", "Error configuring Dropbox storage" => "Fout tijdens het configureren van Dropbox opslag", "Grant access" => "Sta toegang toe", -"Fill out all required fields" => "Vul alle verplichte in", "Please provide a valid Dropbox app key and secret." => "Geef een geldige Dropbox key en secret.", "Error configuring Google Drive storage" => "Fout tijdens het configureren van Google Drive opslag", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Waarschuwing: \"smbclient\" is niet geïnstalleerd. Mounten van CIFS/SMB shares is niet mogelijk. Vraag uw beheerder om smbclient te installeren.", "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." => "Waarschuwing: FTP ondersteuning in PHP is niet geactiveerd of geïnstalleerd. Mounten van FTP shares is niet mogelijk. Vraag uw beheerder FTP ondersteuning te installeren.", "External Storage" => "Externe opslag", -"Mount point" => "Aankoppelpunt", -"Backend" => "Backend", +"Folder name" => "Mapnaam", +"External storage" => "Externe opslag", "Configuration" => "Configuratie", "Options" => "Opties", "Applicable" => "Van toepassing", -"Add mount point" => "Aankoppelpunt toevoegen", +"Add storage" => "Toevoegen opslag", "None set" => "Niets ingesteld", "All Users" => "Alle gebruikers", "Groups" => "Groepen", diff --git a/apps/files_external/l10n/pl.php b/apps/files_external/l10n/pl.php index 0da31bb6b4..cd1b1fe84a 100644 --- a/apps/files_external/l10n/pl.php +++ b/apps/files_external/l10n/pl.php @@ -2,18 +2,17 @@ "Access granted" => "Dostęp do", "Error configuring Dropbox storage" => "Wystąpił błąd podczas konfigurowania zasobu Dropbox", "Grant access" => "Udziel dostępu", -"Fill out all required fields" => "Wypełnij wszystkie wymagane pola", "Please provide a valid Dropbox app key and secret." => "Proszę podać prawidłowy klucz aplikacji Dropbox i klucz sekretny.", "Error configuring Google Drive storage" => "Wystąpił błąd podczas konfigurowania zasobu Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Ostrzeżenie: \"smbclient\" nie jest zainstalowany. Zamontowanie katalogów CIFS/SMB nie jest możliwe. Skontaktuj sie z administratorem w celu zainstalowania.", "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." => "Ostrzeżenie: Wsparcie dla FTP w PHP nie jest zainstalowane lub włączone. Skontaktuj sie z administratorem w celu zainstalowania lub włączenia go.", "External Storage" => "Zewnętrzna zasoby dyskowe", -"Mount point" => "Punkt montowania", -"Backend" => "Zaplecze", +"Folder name" => "Nazwa folderu", +"External storage" => "Zewnętrzne zasoby dyskowe", "Configuration" => "Konfiguracja", "Options" => "Opcje", "Applicable" => "Zastosowanie", -"Add mount point" => "Dodaj punkt montowania", +"Add storage" => "Dodaj zasoby dyskowe", "None set" => "Nie ustawione", "All Users" => "Wszyscy uzytkownicy", "Groups" => "Grupy", diff --git a/apps/files_external/l10n/pt_BR.php b/apps/files_external/l10n/pt_BR.php index 8539395488..a358d56913 100644 --- a/apps/files_external/l10n/pt_BR.php +++ b/apps/files_external/l10n/pt_BR.php @@ -2,18 +2,17 @@ "Access granted" => "Acesso concedido", "Error configuring Dropbox storage" => "Erro ao configurar armazenamento do Dropbox", "Grant access" => "Permitir acesso", -"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.", +"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. Impossí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. Impossí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", +"Folder name" => "Nome da pasta", +"External storage" => "Armazenamento Externo", "Configuration" => "Configuração", "Options" => "Opções", "Applicable" => "Aplicável", -"Add mount point" => "Adicionar ponto de montagem", +"Add storage" => "Adicionar Armazenamento", "None set" => "Nenhum definido", "All Users" => "Todos os Usuários", "Groups" => "Grupos", diff --git a/apps/files_external/l10n/pt_PT.php b/apps/files_external/l10n/pt_PT.php index 06dbc0cf6b..aac3c1c2ca 100644 --- a/apps/files_external/l10n/pt_PT.php +++ b/apps/files_external/l10n/pt_PT.php @@ -2,23 +2,22 @@ "Access granted" => "Acesso autorizado", "Error configuring Dropbox storage" => "Erro ao configurar o armazenamento do Dropbox", "Grant access" => "Conceder acesso", -"Fill out all required fields" => "Preencha todos os campos obrigatórios", "Please provide a valid Dropbox app key and secret." => "Por favor forneça uma \"app key\" e \"secret\" do Dropbox válidas.", "Error configuring Google Drive storage" => "Erro ao configurar o 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: O cliente \"smbclient\" não está instalado. Não é possível montar as partilhas CIFS/SMB . Peça ao seu administrador para instalar.", +"Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Atenção: O cliente \"smbclient\" não está instalado. Não é possível montar as partilhas CIFS/SMB . Peça ao seu administrador para instalar.", "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 FTP no PHP não está activate ou instalado. Não é possível montar as partilhas FTP. Peça ao seu administrador para instalar.", "External Storage" => "Armazenamento Externo", -"Mount point" => "Ponto de montagem", -"Backend" => "Backend", +"Folder name" => "Nome da pasta", +"External storage" => "Armazenamento Externo", "Configuration" => "Configuração", "Options" => "Opções", "Applicable" => "Aplicável", -"Add mount point" => "Adicionar ponto de montagem", -"None set" => "Nenhum configurado", +"Add storage" => "Adicionar armazenamento", +"None set" => "Não definido", "All Users" => "Todos os utilizadores", "Groups" => "Grupos", "Users" => "Utilizadores", -"Delete" => "Apagar", +"Delete" => "Eliminar", "Enable User External Storage" => "Activar Armazenamento Externo para o Utilizador", "Allow users to mount their own external storage" => "Permitir que os utilizadores montem o seu próprio armazenamento externo", "SSL root certificates" => "Certificados SSL de raiz", diff --git a/apps/files_external/l10n/ro.php b/apps/files_external/l10n/ro.php index ca2c9f7e5c..5747205dc0 100644 --- a/apps/files_external/l10n/ro.php +++ b/apps/files_external/l10n/ro.php @@ -2,18 +2,15 @@ "Access granted" => "Acces permis", "Error configuring Dropbox storage" => "Eroare la configurarea mediului de stocare Dropbox", "Grant access" => "Permite accesul", -"Fill out all required fields" => "Completează toate câmpurile necesare", "Please provide a valid Dropbox app key and secret." => "Prezintă te rog o cheie de Dropbox validă și parola", "Error configuring Google Drive storage" => "Eroare la configurarea mediului de stocare Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Atenție: \"smbclient\" nu este instalat. Montarea mediilor CIFS/SMB partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleaze.", "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." => "Atenție: suportul pentru FTP în PHP nu este activat sau instalat. Montarea mediilor FPT partajate nu este posibilă. Solicită administratorului sistemului tău să îl instaleze.", "External Storage" => "Stocare externă", -"Mount point" => "Punctul de montare", -"Backend" => "Backend", +"Folder name" => "Denumire director", "Configuration" => "Configurație", "Options" => "Opțiuni", "Applicable" => "Aplicabil", -"Add mount point" => "Adaugă punct de montare", "None set" => "Niciunul", "All Users" => "Toți utilizatorii", "Groups" => "Grupuri", diff --git a/apps/files_external/l10n/ru.php b/apps/files_external/l10n/ru.php index b8b5f5b1cb..46b73a67f0 100644 --- a/apps/files_external/l10n/ru.php +++ b/apps/files_external/l10n/ru.php @@ -2,18 +2,17 @@ "Access granted" => "Доступ предоставлен", "Error configuring Dropbox storage" => "Ошибка при настройке хранилища Dropbox", "Grant access" => "Предоставление доступа", -"Fill out all required fields" => "Заполните все обязательные поля", "Please provide a valid Dropbox app key and secret." => "Пожалуйста, предоставьте действующий ключ Dropbox и пароль.", "Error configuring Google Drive storage" => "Ошибка при настройке хранилища Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Внимание: \"smbclient\" не установлен. Подключение по CIFS/SMB невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить его.", "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." => "Внимание: Поддержка FTP не включена в PHP. Подключение по FTP невозможно. Пожалуйста, обратитесь к системному администратору, чтобы включить.", "External Storage" => "Внешний носитель", -"Mount point" => "Точка монтирования", -"Backend" => "Подсистема", +"Folder name" => "Имя папки", +"External storage" => "Внешний носитель данных", "Configuration" => "Конфигурация", "Options" => "Опции", "Applicable" => "Применимый", -"Add mount point" => "Добавить точку монтирования", +"Add storage" => "Добавить носитель данных", "None set" => "Не установлено", "All Users" => "Все пользователи", "Groups" => "Группы", diff --git a/apps/files_external/l10n/ru_RU.php b/apps/files_external/l10n/ru_RU.php index e539b3cb2c..406e284b27 100644 --- a/apps/files_external/l10n/ru_RU.php +++ b/apps/files_external/l10n/ru_RU.php @@ -2,18 +2,15 @@ "Access granted" => "Доступ разрешен", "Error configuring Dropbox storage" => "Ошибка при конфигурировании хранилища Dropbox", "Grant access" => "Предоставить доступ", -"Fill out all required fields" => "Заполните все требуемые поля", "Please provide a valid Dropbox app key and secret." => "Пожалуйста представьте допустимый ключ приложения Dropbox и пароль.", "Error configuring Google Drive storage" => "Ошибка настройки хранилища Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Предупреждение: \"smbclient\" не установлен. Подключение общих папок CIFS/SMB невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить его.", "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." => "Предупреждение: Поддержка FTP в PHP не включена или не установлена. Подключение по FTP невозможно. Пожалуйста, обратитесь к системному администратору, чтобы установить ее.", "External Storage" => "Внешние системы хранения данных", -"Mount point" => "Точка монтирования", -"Backend" => "Бэкэнд", +"Folder name" => "Имя папки", "Configuration" => "Конфигурация", "Options" => "Опции", "Applicable" => "Применимый", -"Add mount point" => "Добавить точку монтирования", "None set" => "Не задан", "All Users" => "Все пользователи", "Groups" => "Группы", diff --git a/apps/files_external/l10n/si_LK.php b/apps/files_external/l10n/si_LK.php index b8e2c5714b..cc9cb9b9ce 100644 --- a/apps/files_external/l10n/si_LK.php +++ b/apps/files_external/l10n/si_LK.php @@ -2,16 +2,13 @@ "Access granted" => "පිවිසීමට හැක", "Error configuring Dropbox storage" => "Dropbox ගබඩාව වින්‍යාස කිරීමේ දෝශයක් ඇත", "Grant access" => "පිවිසුම ලබාදෙන්න", -"Fill out all required fields" => "අත්‍යාවශ්‍ය තොරතුරු සියල්ල සම්පුර්ණ කරන්න", "Please provide a valid Dropbox app key and secret." => "කරුණාකර වලංගු Dropbox යෙදුම් යතුරක් හා රහසක් ලබාදෙන්න.", "Error configuring Google Drive storage" => "Google Drive ගබඩාව වින්‍යාස කිරීමේ දෝශයක් ඇත", "External Storage" => "භාහිර ගබඩාව", -"Mount point" => "මවුන්ට් කළ ස්ථානය", -"Backend" => "පසු පද්ධතිය", +"Folder name" => "ෆොල්ඩරයේ නම", "Configuration" => "වින්‍යාසය", "Options" => "විකල්පයන්", "Applicable" => "අදාළ", -"Add mount point" => "මවුන්ට් කරන ස්ථානයක් එකතු කරන්න", "None set" => "කිසිවක් නැත", "All Users" => "සියළු පරිශීලකයන්", "Groups" => "කණ්ඩායම්", diff --git a/apps/files_external/l10n/sk_SK.php b/apps/files_external/l10n/sk_SK.php index d464d192ff..af6b7b4ae6 100644 --- a/apps/files_external/l10n/sk_SK.php +++ b/apps/files_external/l10n/sk_SK.php @@ -2,18 +2,17 @@ "Access granted" => "Prístup povolený", "Error configuring Dropbox storage" => "Chyba pri konfigurácii úložiska Dropbox", "Grant access" => "Povoliť prístup", -"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", +"Folder name" => "Meno priečinka", +"External storage" => "Externé úložisko", "Configuration" => "Nastavenia", "Options" => "Možnosti", "Applicable" => "Aplikovateľné", -"Add mount point" => "Pridať prípojný bod", +"Add storage" => "Pridať úložisko", "None set" => "Žiadne nastavené", "All Users" => "Všetci používatelia", "Groups" => "Skupiny", diff --git a/apps/files_external/l10n/sl.php b/apps/files_external/l10n/sl.php index f0db66ded9..5614c93585 100644 --- a/apps/files_external/l10n/sl.php +++ b/apps/files_external/l10n/sl.php @@ -2,18 +2,15 @@ "Access granted" => "Dostop je odobren", "Error configuring Dropbox storage" => "Napaka nastavljanja shrambe Dropbox", "Grant access" => "Odobri dostop", -"Fill out all required fields" => "Zapolni vsa zahtevana polja", "Please provide a valid Dropbox app key and secret." => "Vpišite veljaven ključ programa in kodo za Dropbox", "Error configuring Google Drive storage" => "Napaka nastavljanja shrambe Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Opozorilo: \"smbclient\" ni nameščen. Priklapljanje CIFS/SMB pogonov ni mogoče. Prosimo, prosite vašega skrbnika, če ga namesti.", "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." => "Opozorilo: FTP podpora v PHP ni omogočena ali nameščena. Priklapljanje FTP pogonov ni mogoče. Prosimo, prosite vašega skrbnika, če jo namesti ali omogoči.", "External Storage" => "Zunanja podatkovna shramba", -"Mount point" => "Priklopna točka", -"Backend" => "Zaledje", +"Folder name" => "Ime mape", "Configuration" => "Nastavitve", "Options" => "Možnosti", "Applicable" => "Se uporablja", -"Add mount point" => "Dodaj priklopno točko", "None set" => "Ni nastavljeno", "All Users" => "Vsi uporabniki", "Groups" => "Skupine", diff --git a/apps/files_external/l10n/sv.php b/apps/files_external/l10n/sv.php index 0d42a1f468..45d3589228 100644 --- a/apps/files_external/l10n/sv.php +++ b/apps/files_external/l10n/sv.php @@ -2,18 +2,17 @@ "Access granted" => "Åtkomst beviljad", "Error configuring Dropbox storage" => "Fel vid konfigurering av Dropbox", "Grant access" => "Bevilja åtkomst", -"Fill out all required fields" => "Fyll i alla obligatoriska fält", "Please provide a valid Dropbox app key and secret." => "Ange en giltig Dropbox nyckel och hemlighet.", "Error configuring Google Drive storage" => "Fel vid konfigurering av Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Varning: \"smb-klienten\" är inte installerad. Montering av CIFS/SMB delningar är inte möjligt. Kontakta din systemadministratör för att få den installerad.", "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." => "Varning: Stöd för FTP i PHP är inte aktiverat eller installerat. Montering av FTP-delningar är inte möjligt. Kontakta din systemadministratör för att få det installerat.", "External Storage" => "Extern lagring", -"Mount point" => "Monteringspunkt", -"Backend" => "Källa", +"Folder name" => "Mappnamn", +"External storage" => "Extern lagring", "Configuration" => "Konfiguration", "Options" => "Alternativ", "Applicable" => "Tillämplig", -"Add mount point" => "Lägg till monteringspunkt", +"Add storage" => "Lägg till lagring", "None set" => "Ingen angiven", "All Users" => "Alla användare", "Groups" => "Grupper", diff --git a/apps/files_external/l10n/ta_LK.php b/apps/files_external/l10n/ta_LK.php index 1e01b22efa..cee3b6edb8 100644 --- a/apps/files_external/l10n/ta_LK.php +++ b/apps/files_external/l10n/ta_LK.php @@ -2,16 +2,13 @@ "Access granted" => "அனுமதி வழங்கப்பட்டது", "Error configuring Dropbox storage" => "Dropbox சேமிப்பை தகவமைப்பதில் வழு", "Grant access" => "அனுமதியை வழங்கல்", -"Fill out all required fields" => "தேவையான எல்லா புலங்களையும் நிரப்புக", "Please provide a valid Dropbox app key and secret." => "தயவுசெய்து ஒரு செல்லுபடியான Dropbox செயலி சாவி மற்றும் இரகசியத்தை வழங்குக. ", "Error configuring Google Drive storage" => "Google இயக்க சேமிப்பகத்தை தகமைப்பதில் வழு", "External Storage" => "வெளி சேமிப்பு", -"Mount point" => "ஏற்றப்புள்ளி", -"Backend" => "பின்நிலை", +"Folder name" => "கோப்புறை பெயர்", "Configuration" => "தகவமைப்பு", "Options" => "தெரிவுகள்", "Applicable" => "பயன்படத்தக்க", -"Add mount point" => "ஏற்றப்புள்ளியை சேர்க்க", "None set" => "தொகுப்பில்லா", "All Users" => "பயனாளர்கள் எல்லாம்", "Groups" => "குழுக்கள்", diff --git a/apps/files_external/l10n/th_TH.php b/apps/files_external/l10n/th_TH.php index 870995c8e7..2f733eab9e 100644 --- a/apps/files_external/l10n/th_TH.php +++ b/apps/files_external/l10n/th_TH.php @@ -2,18 +2,15 @@ "Access granted" => "การเข้าถึงได้รับอนุญาตแล้ว", "Error configuring Dropbox storage" => "เกิดข้อผิดพลาดในการกำหนดค่าพื้นที่จัดเก็บข้อมูล Dropbox", "Grant access" => "อนุญาตให้เข้าถึงได้", -"Fill out all required fields" => "กรอกข้อมูลในช่องข้อมูลที่จำเป็นต้องกรอกทั้งหมด", "Please provide a valid Dropbox app key and secret." => "กรุณากรอกรหัส app key ของ Dropbox และรหัสลับ", "Error configuring Google Drive storage" => "เกิดข้อผิดพลาดในการกำหนดค่าการจัดเก็บข้อมูลในพื้นที่ของ Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "คำเตือน: \"smbclient\" ยังไม่ได้ถูกติดตั้ง. การชี้ CIFS/SMB เพื่อแชร์ข้อมูลไม่สามารถกระทำได้ กรุณาสอบถามข้อมูลเพิ่มเติมจากผู้ดูแลระบบเพื่อติดตั้ง.", "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." => "คำเตือน: การสนับสนุนการใช้งาน FTP ในภาษา PHP ยังไม่ได้ถูกเปิดใช้งานหรือถูกติดตั้ง. การชี้ FTP เพื่อแชร์ข้อมูลไม่สามารถดำเนินการได้ กรุณาสอบถามข้อมูลเพิ่มเติมจากผู้ดูแลระบบเพื่อติดตั้ง", "External Storage" => "พื้นทีจัดเก็บข้อมูลจากภายนอก", -"Mount point" => "จุดชี้ตำแหน่ง", -"Backend" => "ด้านหลังระบบ", +"Folder name" => "ชื่อโฟลเดอร์", "Configuration" => "การกำหนดค่า", "Options" => "ตัวเลือก", "Applicable" => "สามารถใช้งานได้", -"Add mount point" => "เพิ่มจุดชี้ตำแหน่ง", "None set" => "ยังไม่มีการกำหนด", "All Users" => "ผู้ใช้งานทั้งหมด", "Groups" => "กลุ่ม", diff --git a/apps/files_external/l10n/tr.php b/apps/files_external/l10n/tr.php index e9a045aab5..cddb2b35e0 100644 --- a/apps/files_external/l10n/tr.php +++ b/apps/files_external/l10n/tr.php @@ -1,16 +1,19 @@ "Giriş kabul edildi", +"Grant access" => "Erişim sağlandı", +"Please provide a valid Dropbox app key and secret." => "Lütfen Dropbox app key ve secret temin ediniz", "External Storage" => "Harici Depolama", -"Mount point" => "Bağlama Noktası", -"Backend" => "Yönetici", +"Folder name" => "Dizin ismi", "Configuration" => "Yapılandırma", "Options" => "Seçenekler", "Applicable" => "Uygulanabilir", -"Add mount point" => "Bağlama noktası ekle", "None set" => "Hiçbiri", "All Users" => "Tüm Kullanıcılar", "Groups" => "Gruplar", "Users" => "Kullanıcılar", "Delete" => "Sil", +"Enable User External Storage" => "Kullanıcılar için Harici Depolamayı Etkinleştir", +"Allow users to mount their own external storage" => "Kullanıcıların kendi harici depolamalarını bağlamalarına izin ver", "SSL root certificates" => "SSL kök sertifikaları", "Import Root Certificate" => "Kök Sertifikalarını İçe Aktar" ); diff --git a/apps/files_external/l10n/uk.php b/apps/files_external/l10n/uk.php index 56169171f6..34d19af0ee 100644 --- a/apps/files_external/l10n/uk.php +++ b/apps/files_external/l10n/uk.php @@ -2,18 +2,17 @@ "Access granted" => "Доступ дозволено", "Error configuring Dropbox storage" => "Помилка при налаштуванні сховища Dropbox", "Grant access" => "Дозволити доступ", -"Fill out all required fields" => "Заповніть всі обов'язкові поля", "Please provide a valid Dropbox app key and secret." => "Будь ласка, надайте дійсний ключ та пароль Dropbox.", "Error configuring Google Drive storage" => "Помилка при налаштуванні сховища Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Попередження: Клієнт \"smbclient\" не встановлено. Під'єднанатися до CIFS/SMB тек неможливо. Попрохайте системного адміністратора встановити його.", "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." => "Попередження: Підтримка FTP в PHP не увімкнута чи не встановлена. Під'єднанатися до FTP тек неможливо. Попрохайте системного адміністратора встановити її.", "External Storage" => "Зовнішні сховища", -"Mount point" => "Точка монтування", -"Backend" => "Backend", +"Folder name" => "Ім'я теки", +"External storage" => "Зовнішнє сховище", "Configuration" => "Налаштування", "Options" => "Опції", "Applicable" => "Придатний", -"Add mount point" => "Додати точку монтування", +"Add storage" => "Додати сховище", "None set" => "Не встановлено", "All Users" => "Усі користувачі", "Groups" => "Групи", diff --git a/apps/files_external/l10n/ur_PK.php b/apps/files_external/l10n/ur_PK.php new file mode 100644 index 0000000000..278357b4d6 --- /dev/null +++ b/apps/files_external/l10n/ur_PK.php @@ -0,0 +1,3 @@ + "یوزرز" +); diff --git a/apps/files_external/l10n/vi.php b/apps/files_external/l10n/vi.php index c522c669e1..84f31e8892 100644 --- a/apps/files_external/l10n/vi.php +++ b/apps/files_external/l10n/vi.php @@ -2,18 +2,15 @@ "Access granted" => "Đã cấp quyền truy cập", "Error configuring Dropbox storage" => "Lỗi cấu hình lưu trữ Dropbox ", "Grant access" => "Cấp quyền truy cập", -"Fill out all required fields" => "Điền vào tất cả các trường bắt buộc", "Please provide a valid Dropbox app key and secret." => "Xin vui lòng cung cấp một ứng dụng Dropbox hợp lệ và mã bí mật.", "Error configuring Google Drive storage" => "Lỗi cấu hình lưu trữ Google Drive", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "Cảnh báo: \"smbclient\" chưa được cài đặt. Mount CIFS/SMB shares là không thể thực hiện được. Hãy hỏi người quản trị hệ thống để cài đặt nó.", "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." => "Cảnh báo: FTP trong PHP chưa được cài đặt hoặc chưa được mở. Mount FTP shares là không thể. Xin hãy yêu cầu quản trị hệ thống của bạn cài đặt nó.", "External Storage" => "Lưu trữ ngoài", -"Mount point" => "Điểm gắn", -"Backend" => "phụ trợ", +"Folder name" => "Tên thư mục", "Configuration" => "Cấu hình", "Options" => "Tùy chọn", "Applicable" => "Áp dụng", -"Add mount point" => "Thêm điểm lắp", "None set" => "không", "All Users" => "Tất cả người dùng", "Groups" => "Nhóm", diff --git a/apps/files_external/l10n/zh_CN.GB2312.php b/apps/files_external/l10n/zh_CN.GB2312.php index 47983d3d7d..74b9e3cad8 100644 --- a/apps/files_external/l10n/zh_CN.GB2312.php +++ b/apps/files_external/l10n/zh_CN.GB2312.php @@ -2,16 +2,13 @@ "Access granted" => "已授予权限", "Error configuring Dropbox storage" => "配置 Dropbox 存储出错", "Grant access" => "授予权限", -"Fill out all required fields" => "填充全部必填字段", "Please provide a valid Dropbox app key and secret." => "请提供一个有效的 Dropbox app key 和 secret。", "Error configuring Google Drive storage" => "配置 Google Drive 存储失败", "External Storage" => "外部存储", -"Mount point" => "挂载点", -"Backend" => "后端", +"Folder name" => "文件夹名", "Configuration" => "配置", "Options" => "选项", "Applicable" => "可应用", -"Add mount point" => "添加挂载点", "None set" => "未设置", "All Users" => "所有用户", "Groups" => "群组", diff --git a/apps/files_external/l10n/zh_CN.php b/apps/files_external/l10n/zh_CN.php index 1bb8856463..1860b6f70d 100644 --- a/apps/files_external/l10n/zh_CN.php +++ b/apps/files_external/l10n/zh_CN.php @@ -2,18 +2,15 @@ "Access granted" => "权限已授予。", "Error configuring Dropbox storage" => "配置Dropbox存储时出错", "Grant access" => "授权", -"Fill out all required fields" => "完成所有必填项", "Please provide a valid Dropbox app key and secret." => "请提供有效的Dropbox应用key和secret", "Error configuring Google Drive storage" => "配置Google Drive存储时出错", "Warning: \"smbclient\" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it." => "警告:“smbclient” 尚未安装。CIFS/SMB 分享挂载无法实现。请咨询系统管理员进行安装。", "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." => "警告:PHP中尚未启用或安装FTP。FTP 分享挂载无法实现。请咨询系统管理员进行安装。", "External Storage" => "外部存储", -"Mount point" => "挂载点", -"Backend" => "后端", +"Folder name" => "目录名称", "Configuration" => "配置", "Options" => "选项", "Applicable" => "适用的", -"Add mount point" => "增加挂载点", "None set" => "未设置", "All Users" => "所有用户", "Groups" => "组", diff --git a/apps/files_external/l10n/zh_TW.php b/apps/files_external/l10n/zh_TW.php index ab8c4caf24..512a151a3c 100644 --- a/apps/files_external/l10n/zh_TW.php +++ b/apps/files_external/l10n/zh_TW.php @@ -1,6 +1,6 @@ "外部儲存裝置", -"Mount point" => "掛載點", +"Folder name" => "資料夾名稱", "None set" => "尚未設定", "All Users" => "所有使用者", "Groups" => "群組", diff --git a/apps/files_external/lib/amazons3.php b/apps/files_external/lib/amazons3.php index 494885a1dd..7bcefd4176 100644 --- a/apps/files_external/lib/amazons3.php +++ b/apps/files_external/lib/amazons3.php @@ -33,12 +33,16 @@ class AmazonS3 extends \OC\Files\Storage\Common { private static $tempFiles = array(); - // TODO options: storage class, encryption server side, encrypt before upload? + // TODO Update to new AWS SDK public function __construct($params) { - $this->id = 'amazon::' . $params['key'] . md5($params['secret']); - $this->s3 = new \AmazonS3(array('key' => $params['key'], 'secret' => $params['secret'])); - $this->bucket = $params['bucket']; + if (isset($params['key']) && isset($params['secret']) && isset($params['bucket'])) { + $this->id = 'amazon::' . $params['key'] . md5($params['secret']); + $this->s3 = new \AmazonS3(array('key' => $params['key'], 'secret' => $params['secret'])); + $this->bucket = $params['bucket']; + } else { + throw new \Exception(); + } } private function getObject($path) { @@ -229,11 +233,6 @@ class AmazonS3 extends \OC\Files\Storage\Common { return false; } - public function free_space($path) { - // Infinite? - return false; - } - public function touch($path, $mtime = null) { if (is_null($mtime)) { $mtime = time(); @@ -245,4 +244,12 @@ class AmazonS3 extends \OC\Files\Storage\Common { return $response->isOK(); } + public function test() { + $test = $this->s3->get_canonical_user_id(); + if (isset($test['id']) && $test['id'] != '') { + return true; + } + return false; + } + } diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php index 44e668a09c..430269e03d 100755 --- a/apps/files_external/lib/config.php +++ b/apps/files_external/lib/config.php @@ -38,7 +38,7 @@ class OC_Mount_Config { * @return array */ public static function getBackends() { - + $backends['\OC\Files\Storage\Local']=array( 'backend' => 'Local', 'configuration' => array( @@ -77,7 +77,7 @@ class OC_Mount_Config { 'token' => '#token', 'token_secret' => '#token secret'), 'custom' => 'google'); - + $backends['\OC\Files\Storage\SWIFT']=array( 'backend' => 'OpenStack Swift', 'configuration' => array( @@ -86,7 +86,7 @@ class OC_Mount_Config { 'token' => '*Token', 'root' => '&Root', 'secure' => '!Secure ftps://')); - + if(OC_Mount_Config::checksmbclient()) $backends['\OC\Files\Storage\SMB']=array( 'backend' => 'SMB / CIFS', 'configuration' => array( @@ -95,7 +95,7 @@ class OC_Mount_Config { 'password' => '*Password', 'share' => 'Share', 'root' => '&Root')); - + $backends['\OC\Files\Storage\DAV']=array( 'backend' => 'ownCloud / WebDAV', 'configuration' => array( @@ -104,13 +104,13 @@ class OC_Mount_Config { 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure https://')); - + $backends['\OC\Files\Storage\SFTP']=array( 'backend' => 'SFTP', 'configuration' => array( 'host' => 'URL', - 'user' => 'Username', - 'password' => '*Password', + 'user' => 'Username', + 'password' => '*Password', 'root' => '&Root')); return($backends); @@ -143,7 +143,9 @@ class OC_Mount_Config { 'class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], - 'applicable' => array('groups' => array($group), 'users' => array())); + 'applicable' => array('groups' => array($group), 'users' => array()), + 'status' => self::getBackendStatus($mount['class'], $mount['options']) + ); } } } @@ -162,10 +164,13 @@ class OC_Mount_Config { $system[$mountPoint]['applicable']['users'] = array_merge($system[$mountPoint]['applicable']['users'], array($user)); } else { - $system[$mountPoint] = array('class' => $mount['class'], + $system[$mountPoint] = array( + 'class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], - 'applicable' => array('groups' => array(), 'users' => array($user))); + 'applicable' => array('groups' => array(), 'users' => array($user)), + 'status' => self::getBackendStatus($mount['class'], $mount['options']) + ); } } } @@ -190,14 +195,32 @@ class OC_Mount_Config { $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'], - 'configuration' => $mount['options']); + $personal[substr($mountPoint, strlen($uid) + 8)] = array( + 'class' => $mount['class'], + 'backend' => $backends[$mount['class']]['backend'], + 'configuration' => $mount['options'], + 'status' => self::getBackendStatus($mount['class'], $mount['options']) + ); } } return $personal; } + private static function getBackendStatus($class, $options) { + foreach ($options as &$option) { + $option = str_replace('$user', OCP\User::getUser(), $option); + } + if (class_exists($class)) { + try { + $storage = new $class($options); + return $storage->test(); + } catch (Exception $exception) { + return false; + } + } + return false; + } + /** * Add a mount point to the filesystem * @param string Mount point @@ -238,7 +261,7 @@ class OC_Mount_Config { $mountPoints[$mountType] = $mount; } self::writeData($isPersonal, $mountPoints); - return true; + return self::getBackendStatus($class, $classOptions); } /** @@ -279,13 +302,21 @@ class OC_Mount_Config { * @return array */ private static function readData($isPersonal) { + $parser = new \OC\ArrayParser(); if ($isPersonal) { - $file = OC_User::getHome(OCP\User::getUser()).'/mount.php'; + $phpFile = OC_User::getHome(OCP\User::getUser()).'/mount.php'; + $jsonFile = OC_User::getHome(OCP\User::getUser()).'/mount.json'; } else { - $file = OC::$SERVERROOT.'/config/mount.php'; + $phpFile = OC::$SERVERROOT.'/config/mount.php'; + $jsonFile = OC::$SERVERROOT.'/config/mount.json'; } - if (is_file($file)) { - $mountPoints = include $file; + if (is_file($jsonFile)) { + $mountPoints = json_decode(file_get_contents($jsonFile), true); + if (is_array($mountPoints)) { + return $mountPoints; + } + } elseif (is_file($phpFile)) { + $mountPoints = $parser->parsePHP(file_get_contents($phpFile)); if (is_array($mountPoints)) { return $mountPoints; } @@ -300,35 +331,11 @@ class OC_Mount_Config { */ private static function writeData($isPersonal, $data) { if ($isPersonal) { - $file = OC_User::getHome(OCP\User::getUser()).'/mount.php'; + $file = OC_User::getHome(OCP\User::getUser()).'/mount.json'; } else { - $file = OC::$SERVERROOT.'/config/mount.php'; + $file = OC::$SERVERROOT.'/config/mount.json'; } - $content = " array (\n"; - foreach ($data[self::MOUNT_TYPE_GROUP] as $group => $mounts) { - $content .= "\t\t'".$group."' => array (\n"; - foreach ($mounts as $mountPoint => $mount) { - $content .= "\t\t\t'".addcslashes($mountPoint, "'")."' => ".str_replace("\n", '', var_export($mount, true)).", \n"; - - } - $content .= "\t\t),\n"; - } - $content .= "\t),\n"; - } - if (isset($data[self::MOUNT_TYPE_USER])) { - $content .= "\t'user' => array (\n"; - foreach ($data[self::MOUNT_TYPE_USER] as $user => $mounts) { - $content .= "\t\t'".$user."' => array (\n"; - foreach ($mounts as $mountPoint => $mount) { - $content .= "\t\t\t'".addcslashes($mountPoint, "'")."' => ".str_replace("\n", '', var_export($mount, true)).",\n"; - } - $content .= "\t\t),\n"; - } - $content .= "\t),\n"; - } - $content .= ");\n?>"; + $content = json_encode($data); @file_put_contents($file, $content); } @@ -394,7 +401,7 @@ class OC_Mount_Config { } /** - * check if php-ftp is installed + * check if php-ftp is installed */ public static function checkphpftp() { if(function_exists('ftp_login')) { @@ -410,8 +417,12 @@ class OC_Mount_Config { public static function checkDependencies() { $l= new OC_L10N('files_external'); $txt=''; - if(!OC_Mount_Config::checksmbclient()) $txt.=$l->t('Warning: "smbclient" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it.').'
'; - if(!OC_Mount_Config::checkphpftp()) $txt.=$l->t('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.').'
'; + if(!OC_Mount_Config::checksmbclient()) { + $txt.=$l->t('Warning: "smbclient" is not installed. Mounting of CIFS/SMB shares is not possible. Please ask your system administrator to install it.').'
'; + } + if(!OC_Mount_Config::checkphpftp()) { + $txt.=$l->t('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.').'
'; + } return($txt); } diff --git a/apps/files_external/lib/dropbox.php b/apps/files_external/lib/dropbox.php index 11644e4a2c..cb04e557f8 100755 --- a/apps/files_external/lib/dropbox.php +++ b/apps/files_external/lib/dropbox.php @@ -40,8 +40,8 @@ class Dropbox extends \OC\Files\Storage\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']:''; + $this->root = isset($params['root']) ? $params['root'] : ''; + $this->id = 'dropbox::'.$params['app_key'] . $params['token']. '/' . $this->root; $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'); diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php index 9b6c037bb5..8a7375ebe3 100644 --- a/apps/files_external/lib/ftp.php +++ b/apps/files_external/lib/ftp.php @@ -18,26 +18,31 @@ class FTP extends \OC\Files\Storage\StreamWrapper{ private static $tempFiles=array(); public function __construct($params) { - $this->host=$params['host']; - $this->user=$params['user']; - $this->password=$params['password']; - if (isset($params['secure'])) { - if (is_string($params['secure'])) { - $this->secure = ($params['secure'] === 'true'); + if (isset($params['host']) && isset($params['user']) && isset($params['password'])) { + $this->host=$params['host']; + $this->user=$params['user']; + $this->password=$params['password']; + if (isset($params['secure'])) { + if (is_string($params['secure'])) { + $this->secure = ($params['secure'] === 'true'); + } else { + $this->secure = (bool)$params['secure']; + } } else { - $this->secure = (bool)$params['secure']; + $this->secure = false; + } + $this->root=isset($params['root'])?$params['root']:'/'; + if ( ! $this->root || $this->root[0]!='/') { + $this->root='/'.$this->root; + } + //create the root folder if necessary + if ( ! $this->is_dir('')) { + $this->mkdir(''); } } else { - $this->secure = false; - } - $this->root=isset($params['root'])?$params['root']:'/'; - if ( ! $this->root || $this->root[0]!='/') { - $this->root='/'.$this->root; - } - //create the root folder if necesary - if ( ! $this->is_dir('')) { - $this->mkdir(''); + throw new \Exception(); } + } public function getId(){ @@ -83,7 +88,7 @@ class FTP extends \OC\Files\Storage\StreamWrapper{ } else { $ext=''; } - $tmpFile=OCP\Files::tmpFile($ext); + $tmpFile=\OCP\Files::tmpFile($ext); \OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack')); if ($this->file_exists($path)) { $this->getFile($path, $tmpFile); diff --git a/apps/files_external/lib/google.php b/apps/files_external/lib/google.php index 7396c7e3f2..ec7de3f357 100644 --- a/apps/files_external/lib/google.php +++ b/apps/files_external/lib/google.php @@ -268,7 +268,7 @@ class Google extends \OC\Files\Storage\Common { $name .= '.'.$extension; } } - $files[] = $name; + $files[] = basename($name); // Cache entry for future use $this->entries[$name] = $entry; } @@ -596,4 +596,11 @@ class Google extends \OC\Files\Storage\Common { } + public function test() { + if ($this->free_space('')) { + return true; + } + return false; + } + } diff --git a/apps/files_external/lib/sftp.php b/apps/files_external/lib/sftp.php index 551a5a64ef..ede6c251fd 100644 --- a/apps/files_external/lib/sftp.php +++ b/apps/files_external/lib/sftp.php @@ -7,8 +7,9 @@ */ namespace OC\Files\Storage; -set_include_path(get_include_path() . PATH_SEPARATOR . \OC_App::getAppPath('files_external') . '/3rdparty/phpseclib/phpseclib'); -require('Net/SFTP.php'); +set_include_path(get_include_path() . PATH_SEPARATOR . + \OC_App::getAppPath('files_external') . '/3rdparty/phpseclib/phpseclib'); +require 'Net/SFTP.php'; class SFTP extends \OC\Files\Storage\Common { private $host; @@ -31,7 +32,7 @@ class SFTP extends \OC\Files\Storage\Common { $this->root = isset($params['root']) ? $this->cleanPath($params['root']) : '/'; if ($this->root[0] != '/') $this->root = '/' . $this->root; if (substr($this->root, -1, 1) != '/') $this->root .= '/'; - + $host_keys = $this->read_host_keys(); $this->client = new \Net_SFTP($this->host); @@ -49,18 +50,18 @@ class SFTP extends \OC\Files\Storage\Common { $host_keys[$this->host] = $current_host_key; $this->write_host_keys($host_keys); } - + if(!$this->file_exists('')){ $this->mkdir(''); } } - + public function test() { if (!isset($params['host']) || !isset($params['user']) || !isset($params['password'])) { throw new \Exception("Required parameters not set"); - } + } } - + public function getId(){ return 'sftp::' . $this->user . '@' . $this->host . '/' . $this->root; } @@ -108,7 +109,7 @@ class SFTP extends \OC\Files\Storage\Common { $host_key_arr = explode("::", $line, 2); if (count($host_key_arr) == 2) { $hosts[] = $host_key_arr[0]; - $keys[] = $host_key_arr[1]; + $keys[] = $host_key_arr[1]; } } return array_combine($hosts, $keys); @@ -202,7 +203,7 @@ class SFTP extends \OC\Files\Storage\Common { $tmp = \OC_Helper::tmpFile($ext); $this->getFile($abs_path, $tmp); return fopen($tmp, $mode); - + case 'w': case 'wb': case 'a': @@ -241,10 +242,6 @@ class SFTP extends \OC\Files\Storage\Common { } } - public function free_space($path) { - return -1; - } - public function touch($path, $mtime=null) { try { if (!is_null($mtime)) return false; diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index 62f6591d25..961efb1a50 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -18,22 +18,26 @@ class SMB extends \OC\Files\Storage\StreamWrapper{ private $share; public function __construct($params) { - $this->host=$params['host']; - $this->user=$params['user']; - $this->password=$params['password']; - $this->share=$params['share']; - $this->root=isset($params['root'])?$params['root']:'/'; - if ( ! $this->root || $this->root[0]!='/') { - $this->root='/'.$this->root; - } - if (substr($this->root, -1, 1)!='/') { - $this->root.='/'; - } - if ( ! $this->share || $this->share[0]!='/') { - $this->share='/'.$this->share; - } - if(substr($this->share, -1, 1)=='/') { - $this->share = substr($this->share, 0, -1); + if (isset($params['host']) && isset($params['user']) && isset($params['password']) && isset($params['share'])) { + $this->host=$params['host']; + $this->user=$params['user']; + $this->password=$params['password']; + $this->share=$params['share']; + $this->root=isset($params['root'])?$params['root']:'/'; + if ( ! $this->root || $this->root[0]!='/') { + $this->root='/'.$this->root; + } + if (substr($this->root, -1, 1)!='/') { + $this->root.='/'; + } + if ( ! $this->share || $this->share[0]!='/') { + $this->share='/'.$this->share; + } + if (substr($this->share, -1, 1)=='/') { + $this->share = substr($this->share, 0, -1); + } + } else { + throw new \Exception(); } } diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/streamwrapper.php index a631e7ce06..4685877f26 100644 --- a/apps/files_external/lib/streamwrapper.php +++ b/apps/files_external/lib/streamwrapper.php @@ -76,10 +76,6 @@ abstract class StreamWrapper extends \OC\Files\Storage\Common{ return fopen($this->constructUrl($path), $mode); } - public function free_space($path) { - return 0; - } - public function touch($path, $mtime=null) { $this->init(); if(is_null($mtime)) { diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php index 0fd6fa143b..68c4b48f17 100644 --- a/apps/files_external/lib/swift.php +++ b/apps/files_external/lib/swift.php @@ -264,27 +264,31 @@ class SWIFT extends \OC\Files\Storage\Common{ private function getSubContainerFile($container) { try { return $container->get_object(self::SUBCONTAINER_FILE); - } catch(NoSuchObjectException $e) { + } catch(\NoSuchObjectException $e) { return $container->create_object(self::SUBCONTAINER_FILE); } } public function __construct($params) { - $this->token=$params['token']; - $this->host=$params['host']; - $this->user=$params['user']; - $this->root=isset($params['root'])?$params['root']:'/'; - if (isset($params['secure'])) { - if (is_string($params['secure'])) { - $this->secure = ($params['secure'] === 'true'); + if (isset($params['token']) && isset($params['host']) && isset($params['user'])) { + $this->token=$params['token']; + $this->host=$params['host']; + $this->user=$params['user']; + $this->root=isset($params['root'])?$params['root']:'/'; + if (isset($params['secure'])) { + if (is_string($params['secure'])) { + $this->secure = ($params['secure'] === 'true'); + } else { + $this->secure = (bool)$params['secure']; + } } else { - $this->secure = (bool)$params['secure']; + $this->secure = false; + } + if ( ! $this->root || $this->root[0]!='/') { + $this->root='/'.$this->root; } } else { - $this->secure = false; - } - if ( ! $this->root || $this->root[0]!='/') { - $this->root='/'.$this->root; + throw new \Exception(); } } @@ -478,10 +482,6 @@ class SWIFT extends \OC\Files\Storage\Common{ } } - public function free_space($path) { - return 1024*1024*1024*8; - } - public function touch($path, $mtime=null) { $this->init(); $obj=$this->getObject($path); diff --git a/apps/files_external/lib/webdav.php b/apps/files_external/lib/webdav.php index 039a07b1ef..3ba7c48cd5 100644 --- a/apps/files_external/lib/webdav.php +++ b/apps/files_external/lib/webdav.php @@ -23,28 +23,32 @@ class DAV extends \OC\Files\Storage\Common{ private static $tempFiles=array(); public function __construct($params) { - $host = $params['host']; - //remove leading http[s], will be generated in createBaseUri() - if (substr($host, 0, 8) == "https://") $host = substr($host, 8); - else if (substr($host, 0, 7) == "http://") $host = substr($host, 7); - $this->host=$host; - $this->user=$params['user']; - $this->password=$params['password']; - if (isset($params['secure'])) { - if (is_string($params['secure'])) { - $this->secure = ($params['secure'] === 'true'); + if (isset($params['host']) && isset($params['user']) && isset($params['password'])) { + $host = $params['host']; + //remove leading http[s], will be generated in createBaseUri() + if (substr($host, 0, 8) == "https://") $host = substr($host, 8); + else if (substr($host, 0, 7) == "http://") $host = substr($host, 7); + $this->host=$host; + $this->user=$params['user']; + $this->password=$params['password']; + if (isset($params['secure'])) { + if (is_string($params['secure'])) { + $this->secure = ($params['secure'] === 'true'); + } else { + $this->secure = (bool)$params['secure']; + } } else { - $this->secure = (bool)$params['secure']; + $this->secure = false; + } + $this->root=isset($params['root'])?$params['root']:'/'; + if ( ! $this->root || $this->root[0]!='/') { + $this->root='/'.$this->root; + } + if (substr($this->root, -1, 1)!='/') { + $this->root.='/'; } } else { - $this->secure = false; - } - $this->root=isset($params['root'])?$params['root']:'/'; - if ( ! $this->root || $this->root[0]!='/') { - $this->root='/'.$this->root; - } - if (substr($this->root, -1, 1)!='/') { - $this->root.='/'; + throw new \Exception(); } } @@ -54,11 +58,11 @@ class DAV extends \OC\Files\Storage\Common{ } $this->ready = true; - $settings = array( - 'baseUri' => $this->createBaseUri(), - 'userName' => $this->user, - 'password' => $this->password, - ); + $settings = array( + 'baseUri' => $this->createBaseUri(), + 'userName' => $this->user, + 'password' => $this->password, + ); $this->client = new \Sabre_DAV_Client($settings); @@ -69,7 +73,7 @@ class DAV extends \OC\Files\Storage\Common{ $this->client->addTrustedCertificates($certPath); } } - //create the root folder if necesary + //create the root folder if necessary $this->mkdir(''); } @@ -222,7 +226,7 @@ class DAV extends \OC\Files\Storage\Common{ return 0; } } catch(\Exception $e) { - return 0; + return \OC\Files\FREE_SPACE_UNKNOWN; } } @@ -313,7 +317,7 @@ class DAV extends \OC\Files\Storage\Common{ } } - private function cleanPath($path) { + public function cleanPath($path) { if ( ! $path || $path[0]=='/') { return substr($path, 1); } else { diff --git a/apps/files_external/personal.php b/apps/files_external/personal.php index 268d188023..90f5e15953 100755 --- a/apps/files_external/personal.php +++ b/apps/files_external/personal.php @@ -26,9 +26,9 @@ $backends = OC_Mount_Config::getBackends(); // Remove local storage unset($backends['\OC\Files\Storage\Local']); $tmpl = new OCP\Template('files_external', 'settings'); -$tmpl->assign('isAdminPage', false, false); +$tmpl->assign('isAdminPage', false); $tmpl->assign('mounts', OC_Mount_Config::getPersonalMountPoints()); $tmpl->assign('certs', OC_Mount_Config::getCertificates()); -$tmpl->assign('dependencies', OC_Mount_Config::checkDependencies(), false); +$tmpl->assign('dependencies', OC_Mount_Config::checkDependencies()); $tmpl->assign('backends', $backends); return $tmpl->fetchPage(); diff --git a/apps/files_external/settings.php b/apps/files_external/settings.php index cd0bfa9958..1a39affe2e 100644 --- a/apps/files_external/settings.php +++ b/apps/files_external/settings.php @@ -27,11 +27,11 @@ OCP\Util::addscript('3rdparty', 'chosen/chosen.jquery.min'); OCP\Util::addStyle('files_external', 'settings'); OCP\Util::addStyle('3rdparty', 'chosen/chosen'); $tmpl = new OCP\Template('files_external', 'settings'); -$tmpl->assign('isAdminPage', true, false); +$tmpl->assign('isAdminPage', true); $tmpl->assign('mounts', OC_Mount_Config::getSystemMountPoints()); $tmpl->assign('backends', OC_Mount_Config::getBackends()); $tmpl->assign('groups', OC_Group::getGroups()); $tmpl->assign('users', OCP\User::getUsers()); -$tmpl->assign('dependencies', OC_Mount_Config::checkDependencies(), false); +$tmpl->assign('dependencies', OC_Mount_Config::checkDependencies()); $tmpl->assign('allowUserMounting', OCP\Config::getAppValue('files_external', 'allow_user_mounting', 'yes')); return $tmpl->fetchPage(); diff --git a/apps/files_external/templates/settings.php b/apps/files_external/templates/settings.php index df8d7d6e2b..86492699fc 100644 --- a/apps/files_external/templates/settings.php +++ b/apps/files_external/templates/settings.php @@ -1,38 +1,44 @@
- t('External Storage'); ?> - '')) echo ''.$_['dependencies'].''; ?> - '> + t('External Storage')); ?> + '')) print_unescaped(''.$_['dependencies'].''); ?> +
'> - - - - - '.$l->t('Applicable').''; ?> + + + + + + '.$l->t('Applicable').''); ?> array())); ?> $mount): ?> - > + > + + value="" + placeholder="t('Folder name')); ?>" /> + data-class=""> @@ -77,27 +82,27 @@ + src="" /> @@ -120,9 +125,9 @@ /> -
- t('Allow users to mount their own external storage'); ?> + value="1" /> +
+ t('Allow users to mount their own external storage')); ?> @@ -131,26 +136,27 @@ + action="">
- t('SSL root certificates');?> -
t('Mount point'); ?>t('Backend'); ?>t('Configuration'); ?>t('Folder name')); ?>t('External storage')); ?>t('Configuration')); ?> 
+ + + + - '> + style="display:none;">t('Add storage')); ?> $backend): ?> - + @@ -41,35 +47,34 @@ + data-parameter="" + value="" + placeholder="" /> + /> + data-parameter="" + value="" + placeholder="" /> + data-parameter="" + value="" /> + data-parameter="" + value="" + placeholder="" /> - - + + ' + print_unescaped(json_encode($mount['applicable']['groups'])); ?>' data-applicable-users=''> + print_unescaped(json_encode($mount['applicable']['users'])); ?>'> @@ -105,10 +110,10 @@ class="remove" style="visibility:hidden;" - ><?php echo $l->t('Delete'); ?>><?php p($l->t('Delete')); ?>
'> + t('SSL root certificates'));?> +
'> - - + + + src="" />
class="remove" style="visibility:hidden;" - ><?php echo $l->t('Delete'); ?>><?php p($l->t('Delete')); ?>
+ - +
diff --git a/apps/files_sharing/appinfo/app.php b/apps/files_sharing/appinfo/app.php index d3e05cc62d..5b5893abc9 100644 --- a/apps/files_sharing/appinfo/app.php +++ b/apps/files_sharing/appinfo/app.php @@ -1,11 +1,11 @@ File sharing between users AGPL Michael Gapczynski - 4.91 + 4.93 true diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php index 1d22b32b50..48e41e9304 100644 --- a/apps/files_sharing/appinfo/update.php +++ b/apps/files_sharing/appinfo/update.php @@ -52,7 +52,10 @@ if (version_compare($installedVersion, '0.3', '<')) { } catch (Exception $e) { $update_error = true; - OCP\Util::writeLog('files_sharing', 'Upgrade Routine: Skipping sharing "'.$row['source'].'" to "'.$shareWith.'" (error is "'.$e->getMessage().'")', OCP\Util::WARN); + OCP\Util::writeLog('files_sharing', + 'Upgrade Routine: Skipping sharing "'.$row['source'].'" to "'.$shareWith + .'" (error is "'.$e->getMessage().'")', + OCP\Util::WARN); } OC_Util::tearDownFS(); } diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 13f42b130d..13298f113f 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -71,4 +71,5 @@ p.info a { thead{ background-color: white; + padding-left:0 !important; /* fixes multiselect bar offset on shared page */ } diff --git a/apps/files_sharing/l10n/ka.php b/apps/files_sharing/l10n/ka.php new file mode 100644 index 0000000000..0270d5d6f8 --- /dev/null +++ b/apps/files_sharing/l10n/ka.php @@ -0,0 +1,4 @@ + "პაროლი", +"Download" => "გადმოწერა" +); diff --git a/apps/files_sharing/l10n/my_MM.php b/apps/files_sharing/l10n/my_MM.php new file mode 100644 index 0000000000..dc7ec17e9c --- /dev/null +++ b/apps/files_sharing/l10n/my_MM.php @@ -0,0 +1,6 @@ + "စကားဝှက်", +"Submit" => "ထည့်သွင်းမည်", +"Download" => "ဒေါင်းလုတ်", +"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services" +); diff --git a/apps/files_sharing/l10n/ur_PK.php b/apps/files_sharing/l10n/ur_PK.php new file mode 100644 index 0000000000..f68b714350 --- /dev/null +++ b/apps/files_sharing/l10n/ur_PK.php @@ -0,0 +1,4 @@ + "پاسورڈ", +"web services under your control" => "آپ کے اختیار میں ویب سروسیز" +); diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php index 9655e44787..fb0f6c7b5a 100644 --- a/apps/files_sharing/lib/cache.php +++ b/apps/files_sharing/lib/cache.php @@ -71,8 +71,9 @@ class Shared_Cache extends Cache { } } else { $query = \OC_DB::prepare( - 'SELECT `fileid`, `storage`, `path`, `parent`, `name`, `mimetype`, `mimepart`, `size`, `mtime`, `encrypted` - FROM `*PREFIX*filecache` WHERE `fileid` = ?'); + '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']; diff --git a/apps/files_sharing/lib/permissions.php b/apps/files_sharing/lib/permissions.php index 2b068ff935..6747faa4d4 100644 --- a/apps/files_sharing/lib/permissions.php +++ b/apps/files_sharing/lib/permissions.php @@ -33,7 +33,8 @@ class Shared_Permissions extends Permissions { if ($fileId == -1) { return \OCP\PERMISSION_READ; } - $source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE, null, true); + $source = \OCP\Share::getItemSharedWithBySource('file', $fileId, \OC_Share_Backend_File::FORMAT_SHARED_STORAGE, + null, true); if ($source) { return $source['permissions']; } else { @@ -75,7 +76,7 @@ class Shared_Permissions extends Permissions { * @param int $fileId * @param string $user */ - public function remove($fileId, $user) { + public function remove($fileId, $user = null) { // 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 6d3c55a008..fa43e87b49 100644 --- a/apps/files_sharing/lib/share/file.php +++ b/apps/files_sharing/lib/share/file.php @@ -72,7 +72,13 @@ 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'], 'uid_owner' => $items[key($items)]['uid_owner']); + return array( + 'parent' => $items[key($items)]['parent'], + 'path' => $items[key($items)]['path'], + 'storage' => $items[key($items)]['storage'], + '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) { @@ -99,7 +105,13 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { } $size += (int)$item['size']; } - return array('fileid' => -1, 'name' => 'Shared', 'mtime' => $mtime, 'mimetype' => 'httpd/unix-directory', 'size' => $size); + 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) { @@ -129,13 +141,28 @@ class OC_Share_Backend_File implements OCP\Share_Backend_File_Dependent { $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; + } + if ($source) { + if (isset($source['parent'])) { + $parent = $source['parent']; + while (isset($parent)) { + $query = \OC_DB::prepare('SELECT `parent`, `uid_owner` FROM `*PREFIX*share` WHERE `id` = ?', 1); + $item = $query->execute(array($parent))->fetchRow(); + if (isset($item['parent'])) { + $parent = $item['parent']; + } else { + $fileOwner = $item['uid_owner']; + break; + } + } + } else { + $fileOwner = $source['uid_owner']; } + $source['fileOwner'] = $fileOwner; + 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 11c8c6b1e8..4426beec63 100644 --- a/apps/files_sharing/lib/share/folder.php +++ b/apps/files_sharing/lib/share/folder.php @@ -33,7 +33,8 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share } while (!empty($parents)) { $parents = "'".implode("','", $parents)."'"; - $query = OC_DB::prepare('SELECT `fileid`, `name`, `mimetype` FROM `*PREFIX*filecache` 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()) { @@ -47,4 +48,4 @@ class OC_Share_Backend_Folder extends OC_Share_Backend_File implements OCP\Share return $children; } -} \ No newline at end of file +} diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 65812b7e2f..be0e59e673 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -45,11 +45,7 @@ class Shared extends \OC\Files\Storage\Common { */ private function getFile($target) { if (!isset($this->files[$target])) { - $source = \OC_Share_Backend_File::getSource($target); - if ($source) { - $source['path'] = '/'.$source['uid_owner'].'/'.$source['path']; - } - $this->files[$target] = $source; + $this->files[$target] = \OC_Share_Backend_File::getSource($target); } return $this->files[$target]; } @@ -62,8 +58,16 @@ class Shared extends \OC\Files\Storage\Common { private function getSourcePath($target) { $source = $this->getFile($target); if ($source) { - \OC\Files\Filesystem::initMountPoints($source['uid_owner']); - return $source['path']; + if (!isset($source['fullPath'])) { + \OC\Files\Filesystem::initMountPoints($source['fileOwner']); + $mount = \OC\Files\Mount::findByNumericId($source['storage']); + if ($mount) { + $this->files[$target]['fullPath'] = $mount->getMountPoint().$source['path']; + } else { + $this->files[$target]['fullPath'] = false; + } + } + return $this->files[$target]['fullPath']; } return false; } @@ -240,7 +244,8 @@ class Shared extends \OC\Files\Storage\Common { public function file_put_contents($path, $data) { if ($source = $this->getSourcePath($path)) { // Check if permission is granted - if (($this->file_exists($path) && !$this->isUpdatable($path)) || ($this->is_dir($path) && !$this->isCreatable($path))) { + if (($this->file_exists($path) && !$this->isUpdatable($path)) + || ($this->is_dir($path) && !$this->isCreatable($path))) { return false; } $info = array( @@ -314,7 +319,8 @@ class Shared extends \OC\Files\Storage\Common { if ($this->isCreatable(dirname($path2))) { $source = $this->fopen($path1, 'r'); $target = $this->fopen($path2, 'w'); - return \OC_Helper::streamCopy($source, $target); + list ($count, $result) = \OC_Helper::streamCopy($source, $target); + return $result; } return false; } @@ -390,9 +396,12 @@ class Shared extends \OC\Files\Storage\Common { } public static function setup($options) { - if (!\OCP\User::isLoggedIn() || \OCP\User::getUser() != $options['user'] || \OCP\Share::getItemsSharedWith('file')) { + if (!\OCP\User::isLoggedIn() || \OCP\User::getUser() != $options['user'] + || \OCP\Share::getItemsSharedWith('file')) { $user_dir = $options['user_dir']; - \OC\Files\Filesystem::mount('\OC\Files\Storage\Shared', array('sharedFolder' => '/Shared'), $user_dir.'/Shared/'); + \OC\Files\Filesystem::mount('\OC\Files\Storage\Shared', + array('sharedFolder' => '/Shared'), + $user_dir.'/Shared/'); } } @@ -425,7 +434,7 @@ class Shared extends \OC\Files\Storage\Common { } $source = $this->getFile($path); if ($source) { - return $source['uid_owner']; + return $source['fileOwner']; } return false; } diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index 38d598f778..1da972ad7e 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -43,7 +43,7 @@ if (isset($_GET['t'])) { $path = \OC\Files\Filesystem::getPath($linkItem['file_source']); } } -} +} if (isset($path)) { if (!isset($linkItem['item_type'])) { OCP\Util::writeLog('share', 'No item type set for share id: ' . $linkItem['id'], \OCP\Util::ERROR); @@ -141,7 +141,9 @@ if (isset($path)) { OCP\Util::addscript('files', 'keyboardshortcuts'); $files = array(); $rootLength = strlen($basePath) + 1; + $totalSize = 0; foreach (\OC\Files\Filesystem::getDirectoryContent($path) as $i) { + $totalSize += $i['size']; $i['date'] = OCP\Util::formatDate($i['mtime']); if ($i['type'] == 'file') { $fileinfo = pathinfo($i['name']); @@ -168,16 +170,17 @@ if (isset($path)) { } } $list = new OCP\Template('files', 'part.list', ''); - $list->assign('files', $files, false); + $list->assign('files', $files); $list->assign('disableSharing', true); - $list->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false); - $list->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=', false); + $list->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path='); + $list->assign('downloadURL', + OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path='); $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); - $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); - $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path=', false); + $breadcrumbNav->assign('breadcrumb', $breadcrumb); + $breadcrumbNav->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path='); $folder = new OCP\Template('files', 'index', ''); - $folder->assign('fileList', $list->fetchPage(), false); - $folder->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); + $folder->assign('fileList', $list->fetchPage()); + $folder->assign('breadcrumb', $breadcrumbNav->fetchPage()); $folder->assign('dir', $getPath); $folder->assign('isCreatable', false); $folder->assign('permissions', 0); @@ -186,9 +189,12 @@ if (isset($path)) { $folder->assign('uploadMaxHumanFilesize', 0); $folder->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true))); $folder->assign('usedSpacePercent', 0); - $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)); + $tmpl->assign('folder', $folder->fetchPage()); + $allowZip = OCP\Config::getSystemValue('allowZipDownload', true) + && $totalSize <= OCP\Config::getSystemValue('maxZipInputSize', OCP\Util::computerFileSize('800 MB')); + $tmpl->assign('allowZipDownload', intval($allowZip)); + $tmpl->assign('downloadURL', + OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path=' . urlencode($getPath)); } else { $tmpl->assign('dir', $dir); @@ -209,4 +215,3 @@ if (isset($path)) { header('HTTP/1.0 404 Not Found'); $tmpl = new OCP\Template('', '404', 'guest'); $tmpl->printPage(); - diff --git a/apps/files_sharing/templates/authenticate.php b/apps/files_sharing/templates/authenticate.php index 6bce6857ac..7a67b6e550 100644 --- a/apps/files_sharing/templates/authenticate.php +++ b/apps/files_sharing/templates/authenticate.php @@ -1,9 +1,9 @@ -
+

- - - + + +

-
\ No newline at end of file + diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 7776fd63b3..88692445ec 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -1,35 +1,43 @@ - - - - + + + +
- +
- +
-

ownCloudt('web services under your control'); ?>

+

ownCloud – +t('web services under your control')); ?>

diff --git a/apps/files_trashbin/ajax/delete.php b/apps/files_trashbin/ajax/delete.php index 7a6bd1342e..1834fb5400 100644 --- a/apps/files_trashbin/ajax/delete.php +++ b/apps/files_trashbin/ajax/delete.php @@ -3,22 +3,43 @@ OCP\JSON::checkLoggedIn(); OCP\JSON::callCheck(); -$file = $_REQUEST['file']; +$files = $_POST['files']; +$dirlisting = $_POST['dirlisting']; +$list = json_decode($files); -$path_parts = pathinfo($file); -if ($path_parts['dirname'] == '.') { - $delimiter = strrpos($file, '.d'); - $filename = substr($file, 0, $delimiter); - $timestamp = substr($file, $delimiter+2); -} else { - $filename = $file; - $timestamp = null; +$error = array(); +$success = array(); + +$i = 0; +foreach ($list as $file) { + if ( $dirlisting=='0') { + $delimiter = strrpos($file, '.d'); + $filename = substr($file, 0, $delimiter); + $timestamp = substr($file, $delimiter+2); + } else { + $filename = $file; + $timestamp = null; + } + + OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp); + if (!OCA\Files_Trashbin\Trashbin::file_exists($filename, $timestamp)) { + $success[$i]['filename'] = $file; + $success[$i]['timestamp'] = $timestamp; + $i++; + } else { + $error[] = $filename; + } } -if (OCA\Files_Trashbin\Trashbin::delete($filename, $timestamp)) { - OCP\JSON::success(array("data" => array("filename" => $file))); -} else { +if ( $error ) { + $filelist = ''; + foreach ( $error as $e ) { + $filelist .= $e.', '; + } $l = OC_L10N::get('files_trashbin'); - OCP\JSON::error(array("data" => array("message" => $l->t("Couldn't delete %s permanently", array($file))))); + $message = $l->t("Couldn't delete %s permanently", array(rtrim($filelist, ', '))); + OCP\JSON::error(array("data" => array("message" => $message, + "success" => $success, "error" => $error))); +} else { + OCP\JSON::success(array("data" => array("success" => $success))); } - diff --git a/apps/files_trashbin/ajax/undelete.php b/apps/files_trashbin/ajax/undelete.php index 6320c1d082..80de3c31f9 100644 --- a/apps/files_trashbin/ajax/undelete.php +++ b/apps/files_trashbin/ajax/undelete.php @@ -1,11 +1,11 @@ -text true - 50 + 250 @@ -26,7 +26,7 @@ text true - 50 + 64 @@ -42,7 +42,7 @@ text true - 200 + 512 @@ -89,4 +89,30 @@ + + + *dbprefix*files_trashsize + + + + + user + text + + true + 64 + + + + size + text + + true + 50 + + + + +
+ diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml index e421733960..7f807da579 100644 --- a/apps/files_trashbin/appinfo/info.xml +++ b/apps/files_trashbin/appinfo/info.xml @@ -1,7 +1,7 @@ files_trashbin - Trash bin + Deleted files Keep a copy of deleted files so that they can be restored if needed AGPL Bjoern Schiessle diff --git a/apps/files_trashbin/appinfo/update.php b/apps/files_trashbin/appinfo/update.php new file mode 100644 index 0000000000..b0bf79cc51 --- /dev/null +++ b/apps/files_trashbin/appinfo/update.php @@ -0,0 +1,40 @@ +file_exists($filename)) { header("HTTP/1.0 404 Not Found"); diff --git a/apps/files_trashbin/index.php b/apps/files_trashbin/index.php index a2d4cc0a44..24ccd8c460 100644 --- a/apps/files_trashbin/index.php +++ b/apps/files_trashbin/index.php @@ -1,24 +1,26 @@ getAbsolutePath($dir); $dirContent = opendir($fullpath); $i = 0; @@ -35,13 +37,13 @@ if ($dir) { 'type' => $view->is_dir($dir.'/'.$entryName) ? 'dir' : 'file', 'location' => $dir, ); - } + } } - closedir($fullpath); - + closedir($dirContent); + } else { $dirlisting = false; - $query = \OC_DB::prepare('SELECT id,location,timestamp,type,mime FROM *PREFIX*files_trash WHERE user=?'); + $query = \OC_DB::prepare('SELECT `id`,`location`,`timestamp`,`type`,`mime` FROM `*PREFIX*files_trash` WHERE user = ?'); $result = $query->execute(array($user))->fetchAll(); } @@ -66,35 +68,49 @@ foreach ($result as $r) { $files[] = $i; } -// Make breadcrumb +function fileCmp($a, $b) { + if ($a['type'] == 'dir' and $b['type'] != 'dir') { + return -1; + } elseif ($a['type'] != 'dir' and $b['type'] == 'dir') { + return 1; + } else { + return strnatcasecmp($a['name'], $b['name']); + } +} + +usort($files, "fileCmp"); + +// Make breadcrumb $pathtohere = ''; -$breadcrumb = array(); -foreach (explode('/', $dir) as $i) { +$breadcrumb = array(); +foreach (explode('/', $dir) as $i) { if ($i != '') { if ( preg_match('/^(.+)\.d[0-9]+$/', $i, $match) ) { $name = $match[1]; } else { $name = $i; - } - $pathtohere .= '/' . $i; - $breadcrumb[] = array('dir' => $pathtohere, 'name' => $name); - } + } + $pathtohere .= '/' . $i; + $breadcrumb[] = array('dir' => $pathtohere, 'name' => $name); + } } -$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); -$breadcrumbNav->assign('breadcrumb', $breadcrumb, false); -$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php') . '?dir=', false); +$breadcrumbNav = new OCP\Template('files_trashbin', 'part.breadcrumb', ''); +$breadcrumbNav->assign('breadcrumb', $breadcrumb); +$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php') . '?dir='); +$breadcrumbNav->assign('home', OCP\Util::linkTo('files', 'index.php')); $list = new OCP\Template('files_trashbin', 'part.list', ''); -$list->assign('files', $files, false); -$list->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php'). '?dir='.$dir, false); -$list->assign('downloadURL', OCP\Util::linkTo('files_trashbin', 'download.php') . '?file='.$dir, false); +$list->assign('files', $files); +$list->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php'). '?dir='.$dir); +$list->assign('downloadURL', OCP\Util::linkTo('files_trashbin', 'download.php') . '?file='.$dir); $list->assign('disableSharing', true); $list->assign('dirlisting', $dirlisting); +$tmpl->assign('dirlisting', $dirlisting); $list->assign('disableDownloadActions', true); -$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage(), false); -$tmpl->assign('fileList', $list->fetchPage(), false); +$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage()); +$tmpl->assign('fileList', $list->fetchPage()); $tmpl->assign('files', $files); -$tmpl->assign('dir', OC_Filesystem::normalizePath($view->getAbsolutePath())); +$tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($view->getAbsolutePath())); $tmpl->printPage(); diff --git a/apps/files_trashbin/js/disableDefaultActions.js b/apps/files_trashbin/js/disableDefaultActions.js index 27c3e13db4..df08bfb1a5 100644 --- a/apps/files_trashbin/js/disableDefaultActions.js +++ b/apps/files_trashbin/js/disableDefaultActions.js @@ -1,4 +1,4 @@ -/* disable download and sharing actions */ -var disableDownloadActions = true; -var disableSharing = true; +/* disable download and sharing actions */ +var disableDownloadActions = true; +var disableSharing = true; var trashBinApp = true; \ No newline at end of file diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index 6c810e4c2b..39e76e10c9 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -6,9 +6,10 @@ $(document).ready(function() { var tr=$('tr').filterAttr('data-file', filename); var spinner = ''; var undeleteAction = $('tr').filterAttr('data-file',filename).children("td.date"); + var files = tr.attr('data-file'); undeleteAction[0].innerHTML = undeleteAction[0].innerHTML+spinner; $.post(OC.filePath('files_trashbin','ajax','undelete.php'), - {files:tr.attr('data-file'), dirlisting:tr.attr('data-dirlisting') }, + {files:JSON.stringify([files]), dirlisting:tr.attr('data-dirlisting') }, function(result){ for (var i = 0; i < result.data.success.length; i++) { var row = document.getElementById(result.data.success[i].filename); @@ -18,35 +19,36 @@ $(document).ready(function() { OC.dialogs.alert(result.data.message, 'Error'); } }); - + }); }; - + FileActions.register('all', 'Delete', OC.PERMISSION_READ, function () { return OC.imagePath('core', 'actions/delete'); }, function (filename) { $('.tipsy').remove(); - + var tr=$('tr').filterAttr('data-file', filename); var deleteAction = $('tr').filterAttr('data-file',filename).children("td.date").children(".action.delete"); var oldHTML = deleteAction[0].outerHTML; var newHTML = ''; + var files = tr.attr('data-file'); deleteAction[0].outerHTML = newHTML; - + $.post(OC.filePath('files_trashbin','ajax','delete.php'), - {file:tr.attr('data-file') }, + {files:JSON.stringify([files]), dirlisting:tr.attr('data-dirlisting') }, function(result){ - if ( result.status == 'success' ) { - var row = document.getElementById(result.data.filename); + for (var i = 0; i < result.data.success.length; i++) { + var row = document.getElementById(result.data.success[i].filename); row.parentNode.removeChild(row); - } else { - deleteAction[0].outerHTML = oldHTML; + } + if (result.status != 'success') { OC.dialogs.alert(result.data.message, 'Error'); } }); - + }); - + // Sets the select_all checkbox behaviour : $('#select_all').click(function() { if($(this).attr('checked')){ @@ -88,19 +90,19 @@ $(document).ready(function() { } } processSelection(); - }); - + }); + $('.undelete').click('click',function(event) { var spinner = ''; var files=getSelectedFiles('file'); - var fileslist=files.join(';'); + var fileslist = JSON.stringify(files); var dirlisting=getSelectedFiles('dirlisting')[0]; - - for (var i in files) { + + for (var i=0; i'; + var files=getSelectedFiles('file'); + var fileslist = JSON.stringify(files); + var dirlisting=getSelectedFiles('dirlisting')[0]; + + for (var i=0; i "Невъзможно изтриване на %s завинаги", "Couldn't restore %s" => "Невъзможно възтановяване на %s", -"perform restore operation" => "извършване на действие по възтановяване", +"perform restore operation" => "извършване на действие по възстановяване", "delete file permanently" => "изтриване на файла завинаги", +"Delete permanently" => "Изтриване завинаги", "Name" => "Име", "Deleted" => "Изтрито", "1 folder" => "1 папка", @@ -10,5 +11,6 @@ "1 file" => "1 файл", "{count} files" => "{count} файла", "Nothing in here. Your trash bin is empty!" => "Няма нищо. Кофата е празна!", -"Restore" => "Възтановяване" +"Restore" => "Възтановяване", +"Delete" => "Изтриване" ); diff --git a/apps/files_trashbin/l10n/bn_BD.php b/apps/files_trashbin/l10n/bn_BD.php index c669eff7e1..d61355c52c 100644 --- a/apps/files_trashbin/l10n/bn_BD.php +++ b/apps/files_trashbin/l10n/bn_BD.php @@ -3,5 +3,6 @@ "1 folder" => "১টি ফোল্ডার", "{count} folders" => "{count} টি ফোল্ডার", "1 file" => "১টি ফাইল", -"{count} files" => "{count} টি ফাইল" +"{count} files" => "{count} টি ফাইল", +"Delete" => "মুছে" ); diff --git a/apps/files_trashbin/l10n/ca.php b/apps/files_trashbin/l10n/ca.php index 803b0c81ef..894ed6a729 100644 --- a/apps/files_trashbin/l10n/ca.php +++ b/apps/files_trashbin/l10n/ca.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "No s'ha pogut restaurar %s", "perform restore operation" => "executa l'operació de restauració", "delete file permanently" => "esborra el fitxer permanentment", +"Delete permanently" => "Esborra permanentment", "Name" => "Nom", "Deleted" => "Eliminat", "1 folder" => "1 carpeta", @@ -10,5 +11,6 @@ "1 file" => "1 fitxer", "{count} files" => "{count} fitxers", "Nothing in here. Your trash bin is empty!" => "La paperera està buida!", -"Restore" => "Recupera" +"Restore" => "Recupera", +"Delete" => "Esborra" ); diff --git a/apps/files_trashbin/l10n/cs_CZ.php b/apps/files_trashbin/l10n/cs_CZ.php index eeb27784d3..d32af39877 100644 --- a/apps/files_trashbin/l10n/cs_CZ.php +++ b/apps/files_trashbin/l10n/cs_CZ.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Nelze obnovit %s", "perform restore operation" => "provést obnovu", "delete file permanently" => "trvale odstranit soubor", +"Delete permanently" => "Trvale odstranit", "Name" => "Název", "Deleted" => "Smazáno", "1 folder" => "1 složka", @@ -10,5 +11,6 @@ "1 file" => "1 soubor", "{count} files" => "{count} soubory", "Nothing in here. Your trash bin is empty!" => "Žádný obsah. Váš koš je prázdný.", -"Restore" => "Obnovit" +"Restore" => "Obnovit", +"Delete" => "Smazat" ); diff --git a/apps/files_trashbin/l10n/da.php b/apps/files_trashbin/l10n/da.php index 855888b315..ca4a2e8215 100644 --- a/apps/files_trashbin/l10n/da.php +++ b/apps/files_trashbin/l10n/da.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Kunne ikke gendanne %s", "perform restore operation" => "udfør gendannelsesoperation", "delete file permanently" => "slet fil permanent", +"Delete permanently" => "Slet permanent", "Name" => "Navn", "Deleted" => "Slettet", "1 folder" => "1 mappe", @@ -10,5 +11,6 @@ "1 file" => "1 fil", "{count} files" => "{count} filer", "Nothing in here. Your trash bin is empty!" => "Intet at se her. Din papirkurv er tom!", -"Restore" => "Gendan" +"Restore" => "Gendan", +"Delete" => "Slet" ); diff --git a/apps/files_trashbin/l10n/de.php b/apps/files_trashbin/l10n/de.php index 1271f5c313..d1952c9635 100644 --- a/apps/files_trashbin/l10n/de.php +++ b/apps/files_trashbin/l10n/de.php @@ -1,8 +1,9 @@ "Konnte %s nicht permanent löschen", +"Couldn't delete %s permanently" => "Konnte %s nicht dauerhaft löschen", "Couldn't restore %s" => "Konnte %s nicht wiederherstellen", "perform restore operation" => "Wiederherstellung ausführen", -"delete file permanently" => "Datei permanent löschen", +"delete file permanently" => "Datei dauerhaft löschen", +"Delete permanently" => "Permanent löschen", "Name" => "Name", "Deleted" => "gelöscht", "1 folder" => "1 Ordner", @@ -10,5 +11,6 @@ "1 file" => "1 Datei", "{count} files" => "{count} Dateien", "Nothing in here. Your trash bin is empty!" => "Nichts zu löschen, der Papierkorb ist leer!", -"Restore" => "Wiederherstellen" +"Restore" => "Wiederherstellen", +"Delete" => "Löschen" ); diff --git a/apps/files_trashbin/l10n/de_DE.php b/apps/files_trashbin/l10n/de_DE.php index 7cb1834141..269680ca2c 100644 --- a/apps/files_trashbin/l10n/de_DE.php +++ b/apps/files_trashbin/l10n/de_DE.php @@ -1,8 +1,9 @@ "Konnte %s nicht permanent löschen", +"Couldn't delete %s permanently" => "Konnte %s nicht dauerhaft löschen", "Couldn't restore %s" => "Konnte %s nicht wiederherstellen", -"perform restore operation" => "Führe die Wiederherstellung aus", -"delete file permanently" => "Datei entgültig löschen", +"perform restore operation" => "Wiederherstellung ausführen", +"delete file permanently" => "Datei dauerhaft löschen", +"Delete permanently" => "Endgültig löschen", "Name" => "Name", "Deleted" => "Gelöscht", "1 folder" => "1 Ordner", @@ -10,5 +11,6 @@ "1 file" => "1 Datei", "{count} files" => "{count} Dateien", "Nothing in here. Your trash bin is empty!" => "Nichts zu löschen, Ihr Papierkorb ist leer!", -"Restore" => "Wiederherstellen" +"Restore" => "Wiederherstellen", +"Delete" => "Löschen" ); diff --git a/apps/files_trashbin/l10n/el.php b/apps/files_trashbin/l10n/el.php index bc3c2350da..cf9471780c 100644 --- a/apps/files_trashbin/l10n/el.php +++ b/apps/files_trashbin/l10n/el.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Αδυναμία επαναφοράς %s", "perform restore operation" => "εκτέλεση λειτουργία επαναφοράς", "delete file permanently" => "μόνιμη διαγραφή αρχείου", +"Delete permanently" => "Μόνιμη διαγραφή", "Name" => "Όνομα", "Deleted" => "Διαγράφηκε", "1 folder" => "1 φάκελος", @@ -10,5 +11,6 @@ "1 file" => "1 αρχείο", "{count} files" => "{count} αρχεία", "Nothing in here. Your trash bin is empty!" => "Δεν υπάρχει τίποτα εδώ. Ο κάδος σας είναι άδειος!", -"Restore" => "Επαναφορά" +"Restore" => "Επαναφορά", +"Delete" => "Διαγραφή" ); diff --git a/apps/files_trashbin/l10n/eo.php b/apps/files_trashbin/l10n/eo.php index f357e3c10c..e1e5acbb5a 100644 --- a/apps/files_trashbin/l10n/eo.php +++ b/apps/files_trashbin/l10n/eo.php @@ -4,5 +4,6 @@ "{count} folders" => "{count} dosierujoj", "1 file" => "1 dosiero", "{count} files" => "{count} dosierujoj", -"Restore" => "Restaŭri" +"Restore" => "Restaŭri", +"Delete" => "Forigi" ); diff --git a/apps/files_trashbin/l10n/es.php b/apps/files_trashbin/l10n/es.php index c14b977647..ebc01b1d21 100644 --- a/apps/files_trashbin/l10n/es.php +++ b/apps/files_trashbin/l10n/es.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "No se puede restaurar %s", "perform restore operation" => "Restaurar", "delete file permanently" => "Eliminar archivo permanentemente", +"Delete permanently" => "Eliminar permanentemente", "Name" => "Nombre", "Deleted" => "Eliminado", "1 folder" => "1 carpeta", @@ -10,5 +11,6 @@ "1 file" => "1 archivo", "{count} files" => "{count} archivos", "Nothing in here. Your trash bin is empty!" => "Nada aqui. La papelera esta vacia!", -"Restore" => "Recuperar" +"Restore" => "Recuperar", +"Delete" => "Eliminar" ); diff --git a/apps/files_trashbin/l10n/es_AR.php b/apps/files_trashbin/l10n/es_AR.php index c7f98e38df..bb78a39d6c 100644 --- a/apps/files_trashbin/l10n/es_AR.php +++ b/apps/files_trashbin/l10n/es_AR.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "No se pudo restaurar %s", "perform restore operation" => "Restaurar", "delete file permanently" => "Borrar archivo de manera permanente", +"Delete permanently" => "Borrar de manera permanente", "Name" => "Nombre", "Deleted" => "Borrado", "1 folder" => "1 directorio", @@ -10,5 +11,6 @@ "1 file" => "1 archivo", "{count} files" => "{count} archivos", "Nothing in here. Your trash bin is empty!" => "No hay nada acá. ¡La papelera está vacía!", -"Restore" => "Recuperar" +"Restore" => "Recuperar", +"Delete" => "Borrar" ); diff --git a/apps/files_trashbin/l10n/et_EE.php b/apps/files_trashbin/l10n/et_EE.php index 8744ab5f12..73ae9dbee1 100644 --- a/apps/files_trashbin/l10n/et_EE.php +++ b/apps/files_trashbin/l10n/et_EE.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "%s ei saa taastada", "perform restore operation" => "soorita taastamine", "delete file permanently" => "kustuta fail jäädavalt", +"Delete permanently" => "Kustuta jäädavalt", "Name" => "Nimi", "Deleted" => "Kustutatud", "1 folder" => "1 kaust", @@ -10,5 +11,6 @@ "1 file" => "1 fail", "{count} files" => "{count} faili", "Nothing in here. Your trash bin is empty!" => "Siin pole midagi. Sinu prügikast on tühi!", -"Restore" => "Taasta" +"Restore" => "Taasta", +"Delete" => "Kustuta" ); diff --git a/apps/files_trashbin/l10n/eu.php b/apps/files_trashbin/l10n/eu.php index 6a4ff12545..5a565436ed 100644 --- a/apps/files_trashbin/l10n/eu.php +++ b/apps/files_trashbin/l10n/eu.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Ezin izan da %s berreskuratu", "perform restore operation" => "berreskuratu", "delete file permanently" => "ezabatu fitxategia betirako", +"Delete permanently" => "Ezabatu betirako", "Name" => "Izena", "Deleted" => "Ezabatuta", "1 folder" => "karpeta bat", @@ -10,5 +11,6 @@ "1 file" => "fitxategi bat", "{count} files" => "{count} fitxategi", "Nothing in here. Your trash bin is empty!" => "Ez dago ezer ez. Zure zakarrontzia hutsik dago!", -"Restore" => "Berrezarri" +"Restore" => "Berrezarri", +"Delete" => "Ezabatu" ); diff --git a/apps/files_trashbin/l10n/fa.php b/apps/files_trashbin/l10n/fa.php index 487d165798..7cc695215e 100644 --- a/apps/files_trashbin/l10n/fa.php +++ b/apps/files_trashbin/l10n/fa.php @@ -4,5 +4,6 @@ "{count} folders" => "{ شمار} پوشه ها", "1 file" => "1 پرونده", "{count} files" => "{ شمار } فایل ها", -"Restore" => "بازیابی" +"Restore" => "بازیابی", +"Delete" => "حذف" ); diff --git a/apps/files_trashbin/l10n/fi_FI.php b/apps/files_trashbin/l10n/fi_FI.php index ffdac8735b..e18689956d 100644 --- a/apps/files_trashbin/l10n/fi_FI.php +++ b/apps/files_trashbin/l10n/fi_FI.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Kohteen %s palautus epäonnistui", "perform restore operation" => "suorita palautustoiminto", "delete file permanently" => "poista tiedosto pysyvästi", +"Delete permanently" => "Poista pysyvästi", "Name" => "Nimi", "Deleted" => "Poistettu", "1 folder" => "1 kansio", @@ -10,5 +11,6 @@ "1 file" => "1 tiedosto", "{count} files" => "{count} tiedostoa", "Nothing in here. Your trash bin is empty!" => "Tyhjää täynnä! Roskakorissa ei ole mitään.", -"Restore" => "Palauta" +"Restore" => "Palauta", +"Delete" => "Poista" ); diff --git a/apps/files_trashbin/l10n/fr.php b/apps/files_trashbin/l10n/fr.php index 609b2fa9bd..0a783785ef 100644 --- a/apps/files_trashbin/l10n/fr.php +++ b/apps/files_trashbin/l10n/fr.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Impossible de restaurer %s", "perform restore operation" => "effectuer l'opération de restauration", "delete file permanently" => "effacer définitivement le fichier", +"Delete permanently" => "Supprimer de façon définitive", "Name" => "Nom", "Deleted" => "Effacé", "1 folder" => "1 dossier", @@ -10,5 +11,6 @@ "1 file" => "1 fichier", "{count} files" => "{count} fichiers", "Nothing in here. Your trash bin is empty!" => "Il n'y a rien ici. Votre corbeille est vide !", -"Restore" => "Restaurer" +"Restore" => "Restaurer", +"Delete" => "Supprimer" ); diff --git a/apps/files_trashbin/l10n/gl.php b/apps/files_trashbin/l10n/gl.php index ad9f6802e6..4e31dd0018 100644 --- a/apps/files_trashbin/l10n/gl.php +++ b/apps/files_trashbin/l10n/gl.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Non foi posíbel restaurar %s", "perform restore operation" => "realizar a operación de restauración", "delete file permanently" => "eliminar o ficheiro permanentemente", +"Delete permanently" => "Eliminar permanentemente", "Name" => "Nome", "Deleted" => "Eliminado", "1 folder" => "1 cartafol", @@ -10,5 +11,6 @@ "1 file" => "1 ficheiro", "{count} files" => "{count} ficheiros", "Nothing in here. Your trash bin is empty!" => "Aquí non hai nada. O cesto do lixo está baleiro!", -"Restore" => "Restablecer" +"Restore" => "Restablecer", +"Delete" => "Eliminar" ); diff --git a/apps/files_trashbin/l10n/he.php b/apps/files_trashbin/l10n/he.php index d026add5d7..9c767d2222 100644 --- a/apps/files_trashbin/l10n/he.php +++ b/apps/files_trashbin/l10n/he.php @@ -1,7 +1,16 @@ "בלתי אפשרי למחוק את %s לצמיתות", +"Couldn't restore %s" => "בלתי אפשרי לשחזר את %s", +"perform restore operation" => "בצע פעולת שחזור", +"delete file permanently" => "מחק קובץ לצמיתות", +"Delete permanently" => "מחק לצמיתות", "Name" => "שם", +"Deleted" => "נמחק", "1 folder" => "תיקייה אחת", "{count} folders" => "{count} תיקיות", "1 file" => "קובץ אחד", -"{count} files" => "{count} קבצים" +"{count} files" => "{count} קבצים", +"Nothing in here. Your trash bin is empty!" => "שום דבר כאן. סל המחזור שלך ריק!", +"Restore" => "שחזר", +"Delete" => "מחיקה" ); diff --git a/apps/files_trashbin/l10n/hr.php b/apps/files_trashbin/l10n/hr.php index 52255c7429..2cb86adfd4 100644 --- a/apps/files_trashbin/l10n/hr.php +++ b/apps/files_trashbin/l10n/hr.php @@ -1,3 +1,4 @@ "Ime" +"Name" => "Ime", +"Delete" => "Obriši" ); diff --git a/apps/files_trashbin/l10n/hu_HU.php b/apps/files_trashbin/l10n/hu_HU.php index 931e5a7543..9c158c2b9e 100644 --- a/apps/files_trashbin/l10n/hu_HU.php +++ b/apps/files_trashbin/l10n/hu_HU.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Nem sikerült %s visszaállítása", "perform restore operation" => "a visszaállítás végrehajtása", "delete file permanently" => "az állomány végleges törlése", +"Delete permanently" => "Végleges törlés", "Name" => "Név", "Deleted" => "Törölve", "1 folder" => "1 mappa", @@ -10,5 +11,6 @@ "1 file" => "1 fájl", "{count} files" => "{count} fájl", "Nothing in here. Your trash bin is empty!" => "Itt nincs semmi. Az Ön szemetes mappája üres!", -"Restore" => "Visszaállítás" +"Restore" => "Visszaállítás", +"Delete" => "Törlés" ); diff --git a/apps/files_trashbin/l10n/hy.php b/apps/files_trashbin/l10n/hy.php new file mode 100644 index 0000000000..3b80487278 --- /dev/null +++ b/apps/files_trashbin/l10n/hy.php @@ -0,0 +1,3 @@ + "Ջնջել" +); diff --git a/apps/files_trashbin/l10n/ia.php b/apps/files_trashbin/l10n/ia.php index c2581f3de1..0a51752312 100644 --- a/apps/files_trashbin/l10n/ia.php +++ b/apps/files_trashbin/l10n/ia.php @@ -1,3 +1,4 @@ "Nomine" +"Name" => "Nomine", +"Delete" => "Deler" ); diff --git a/apps/files_trashbin/l10n/id.php b/apps/files_trashbin/l10n/id.php index 1a14d8b7c2..ab5fe25ac6 100644 --- a/apps/files_trashbin/l10n/id.php +++ b/apps/files_trashbin/l10n/id.php @@ -1,3 +1,15 @@ "nama" +"Couldn't delete %s permanently" => "Tidak dapat menghapus permanen %s", +"Couldn't restore %s" => "Tidak dapat memulihkan %s", +"perform restore operation" => "jalankan operasi pemulihan", +"delete file permanently" => "hapus berkas secara permanen", +"Name" => "Nama", +"Deleted" => "Dihapus", +"1 folder" => "1 map", +"{count} folders" => "{count} map", +"1 file" => "1 berkas", +"{count} files" => "{count} berkas", +"Nothing in here. Your trash bin is empty!" => "Tempat sampah anda kosong!", +"Restore" => "Pulihkan", +"Delete" => "Hapus" ); diff --git a/apps/files_trashbin/l10n/is.php b/apps/files_trashbin/l10n/is.php index 416f641a8e..fba36c91cb 100644 --- a/apps/files_trashbin/l10n/is.php +++ b/apps/files_trashbin/l10n/is.php @@ -3,5 +3,6 @@ "1 folder" => "1 mappa", "{count} folders" => "{count} möppur", "1 file" => "1 skrá", -"{count} files" => "{count} skrár" +"{count} files" => "{count} skrár", +"Delete" => "Eyða" ); diff --git a/apps/files_trashbin/l10n/it.php b/apps/files_trashbin/l10n/it.php index 8627682d08..027b22c91a 100644 --- a/apps/files_trashbin/l10n/it.php +++ b/apps/files_trashbin/l10n/it.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Impossibile ripristinare %s", "perform restore operation" => "esegui operazione di ripristino", "delete file permanently" => "elimina il file definitivamente", +"Delete permanently" => "Elimina definitivamente", "Name" => "Nome", "Deleted" => "Eliminati", "1 folder" => "1 cartella", @@ -10,5 +11,6 @@ "1 file" => "1 file", "{count} files" => "{count} file", "Nothing in here. Your trash bin is empty!" => "Qui non c'è niente. Il tuo cestino è vuoto.", -"Restore" => "Ripristina" +"Restore" => "Ripristina", +"Delete" => "Elimina" ); diff --git a/apps/files_trashbin/l10n/ja_JP.php b/apps/files_trashbin/l10n/ja_JP.php index 2bccf3f3bd..478aa40066 100644 --- a/apps/files_trashbin/l10n/ja_JP.php +++ b/apps/files_trashbin/l10n/ja_JP.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "%s を復元出来ませんでした", "perform restore operation" => "復元操作を実行する", "delete file permanently" => "ファイルを完全に削除する", +"Delete permanently" => "完全に削除する", "Name" => "名前", "Deleted" => "削除済み", "1 folder" => "1 フォルダ", @@ -10,5 +11,6 @@ "1 file" => "1 ファイル", "{count} files" => "{count} ファイル", "Nothing in here. Your trash bin is empty!" => "ここには何もありません。ゴミ箱は空です!", -"Restore" => "復元" +"Restore" => "復元", +"Delete" => "削除" ); diff --git a/apps/files_trashbin/l10n/ka_GE.php b/apps/files_trashbin/l10n/ka_GE.php index 43dba38f5c..0506876786 100644 --- a/apps/files_trashbin/l10n/ka_GE.php +++ b/apps/files_trashbin/l10n/ka_GE.php @@ -3,5 +3,6 @@ "1 folder" => "1 საქაღალდე", "{count} folders" => "{count} საქაღალდე", "1 file" => "1 ფაილი", -"{count} files" => "{count} ფაილი" +"{count} files" => "{count} ფაილი", +"Delete" => "წაშლა" ); diff --git a/apps/files_trashbin/l10n/ko.php b/apps/files_trashbin/l10n/ko.php index 61acd1276a..b40546e34b 100644 --- a/apps/files_trashbin/l10n/ko.php +++ b/apps/files_trashbin/l10n/ko.php @@ -4,5 +4,6 @@ "{count} folders" => "폴더 {count}개", "1 file" => "파일 1개", "{count} files" => "파일 {count}개", -"Restore" => "복원" +"Restore" => "복원", +"Delete" => "삭제" ); diff --git a/apps/files_trashbin/l10n/lb.php b/apps/files_trashbin/l10n/lb.php index d1bd751866..01deea2350 100644 --- a/apps/files_trashbin/l10n/lb.php +++ b/apps/files_trashbin/l10n/lb.php @@ -1,3 +1,4 @@ "Numm" +"Name" => "Numm", +"Delete" => "Läschen" ); diff --git a/apps/files_trashbin/l10n/lt_LT.php b/apps/files_trashbin/l10n/lt_LT.php index 4933e97202..513c7626c4 100644 --- a/apps/files_trashbin/l10n/lt_LT.php +++ b/apps/files_trashbin/l10n/lt_LT.php @@ -3,5 +3,6 @@ "1 folder" => "1 aplankalas", "{count} folders" => "{count} aplankalai", "1 file" => "1 failas", -"{count} files" => "{count} failai" +"{count} files" => "{count} failai", +"Delete" => "Ištrinti" ); diff --git a/apps/files_trashbin/l10n/lv.php b/apps/files_trashbin/l10n/lv.php index 5ecb99b989..d3c68e2a77 100644 --- a/apps/files_trashbin/l10n/lv.php +++ b/apps/files_trashbin/l10n/lv.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Nevarēja atjaunot %s", "perform restore operation" => "veikt atjaunošanu", "delete file permanently" => "dzēst datni pavisam", +"Delete permanently" => "Dzēst pavisam", "Name" => "Nosaukums", "Deleted" => "Dzēsts", "1 folder" => "1 mape", @@ -10,5 +11,6 @@ "1 file" => "1 datne", "{count} files" => "{count} datnes", "Nothing in here. Your trash bin is empty!" => "Šeit nekā nav. Jūsu miskaste ir tukša!", -"Restore" => "Atjaunot" +"Restore" => "Atjaunot", +"Delete" => "Dzēst" ); diff --git a/apps/files_trashbin/l10n/mk.php b/apps/files_trashbin/l10n/mk.php index b983c341e8..22b288b002 100644 --- a/apps/files_trashbin/l10n/mk.php +++ b/apps/files_trashbin/l10n/mk.php @@ -3,5 +3,6 @@ "1 folder" => "1 папка", "{count} folders" => "{count} папки", "1 file" => "1 датотека", -"{count} files" => "{count} датотеки" +"{count} files" => "{count} датотеки", +"Delete" => "Избриши" ); diff --git a/apps/files_trashbin/l10n/ms_MY.php b/apps/files_trashbin/l10n/ms_MY.php index 73e97b496e..381d599865 100644 --- a/apps/files_trashbin/l10n/ms_MY.php +++ b/apps/files_trashbin/l10n/ms_MY.php @@ -1,3 +1,4 @@ "Nama" +"Name" => "Nama", +"Delete" => "Padam" ); diff --git a/apps/files_trashbin/l10n/nb_NO.php b/apps/files_trashbin/l10n/nb_NO.php index 49364753d1..fa9543a5eb 100644 --- a/apps/files_trashbin/l10n/nb_NO.php +++ b/apps/files_trashbin/l10n/nb_NO.php @@ -1,7 +1,16 @@ "Kunne ikke slette %s fullstendig", +"Couldn't restore %s" => "Kunne ikke gjenopprette %s", +"perform restore operation" => "utfør gjenopprettings operasjon", +"delete file permanently" => "slett filer permanent", +"Delete permanently" => "Slett permanent", "Name" => "Navn", +"Deleted" => "Slettet", "1 folder" => "1 mappe", "{count} folders" => "{count} mapper", "1 file" => "1 fil", -"{count} files" => "{count} filer" +"{count} files" => "{count} filer", +"Nothing in here. Your trash bin is empty!" => "Ingenting her. Søppelkassen din er tom!", +"Restore" => "Gjenopprett", +"Delete" => "Slett" ); diff --git a/apps/files_trashbin/l10n/nl.php b/apps/files_trashbin/l10n/nl.php index c4a26104ba..c576e5d81f 100644 --- a/apps/files_trashbin/l10n/nl.php +++ b/apps/files_trashbin/l10n/nl.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Kon %s niet herstellen", "perform restore operation" => "uitvoeren restore operatie", "delete file permanently" => "verwijder bestanden definitief", +"Delete permanently" => "Verwijder definitief", "Name" => "Naam", "Deleted" => "Verwijderd", "1 folder" => "1 map", @@ -10,5 +11,6 @@ "1 file" => "1 bestand", "{count} files" => "{count} bestanden", "Nothing in here. Your trash bin is empty!" => "Niets te vinden. Uw prullenbak is leeg!", -"Restore" => "Herstellen" +"Restore" => "Herstellen", +"Delete" => "Verwijder" ); diff --git a/apps/files_trashbin/l10n/nn_NO.php b/apps/files_trashbin/l10n/nn_NO.php index be60dabdf0..f8ab465ee4 100644 --- a/apps/files_trashbin/l10n/nn_NO.php +++ b/apps/files_trashbin/l10n/nn_NO.php @@ -1,3 +1,4 @@ "Namn" +"Name" => "Namn", +"Delete" => "Slett" ); diff --git a/apps/files_trashbin/l10n/oc.php b/apps/files_trashbin/l10n/oc.php index 2c705193c1..e6b939dac0 100644 --- a/apps/files_trashbin/l10n/oc.php +++ b/apps/files_trashbin/l10n/oc.php @@ -1,3 +1,4 @@ "Nom" +"Name" => "Nom", +"Delete" => "Escafa" ); diff --git a/apps/files_trashbin/l10n/pl.php b/apps/files_trashbin/l10n/pl.php index d2ada4c946..e5ea45b88a 100644 --- a/apps/files_trashbin/l10n/pl.php +++ b/apps/files_trashbin/l10n/pl.php @@ -1,8 +1,16 @@ "Nie można trwale usunąć %s", +"Couldn't restore %s" => "Nie można przywrócić %s", +"perform restore operation" => "wykonywanie operacji przywracania", +"delete file permanently" => "trwale usuń plik", +"Delete permanently" => "Trwale usuń", "Name" => "Nazwa", +"Deleted" => "Usunięte", "1 folder" => "1 folder", "{count} folders" => "{count} foldery", "1 file" => "1 plik", "{count} files" => "{count} pliki", -"Restore" => "Przywróć" +"Nothing in here. Your trash bin is empty!" => "Nic tu nie ma. Twój kosz jest pusty!", +"Restore" => "Przywróć", +"Delete" => "Usuń" ); diff --git a/apps/files_trashbin/l10n/pt_BR.php b/apps/files_trashbin/l10n/pt_BR.php index 5a6fc3a86b..b9932a7102 100644 --- a/apps/files_trashbin/l10n/pt_BR.php +++ b/apps/files_trashbin/l10n/pt_BR.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Não foi possível restaurar %s", "perform restore operation" => "realizar operação de restauração", "delete file permanently" => "excluir arquivo permanentemente", +"Delete permanently" => "Excluir permanentemente", "Name" => "Nome", "Deleted" => "Excluído", "1 folder" => "1 pasta", @@ -10,5 +11,6 @@ "1 file" => "1 arquivo", "{count} files" => "{count} arquivos", "Nothing in here. Your trash bin is empty!" => "Nada aqui. Sua lixeira está vazia!", -"Restore" => "Restaurar" +"Restore" => "Restaurar", +"Delete" => "Excluir" ); diff --git a/apps/files_trashbin/l10n/pt_PT.php b/apps/files_trashbin/l10n/pt_PT.php index 978ab452d6..a621587ea0 100644 --- a/apps/files_trashbin/l10n/pt_PT.php +++ b/apps/files_trashbin/l10n/pt_PT.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Não foi possível restaurar %s", "perform restore operation" => "Restaurar", "delete file permanently" => "Eliminar permanentemente o(s) ficheiro(s)", +"Delete permanently" => "Eliminar permanentemente", "Name" => "Nome", "Deleted" => "Apagado", "1 folder" => "1 pasta", @@ -10,5 +11,6 @@ "1 file" => "1 ficheiro", "{count} files" => "{count} ficheiros", "Nothing in here. Your trash bin is empty!" => "Não ha ficheiros. O lixo está vazio", -"Restore" => "Restaurar" +"Restore" => "Restaurar", +"Delete" => "Apagar" ); diff --git a/apps/files_trashbin/l10n/ro.php b/apps/files_trashbin/l10n/ro.php index 6ece51e02c..6a919b62df 100644 --- a/apps/files_trashbin/l10n/ro.php +++ b/apps/files_trashbin/l10n/ro.php @@ -3,5 +3,6 @@ "1 folder" => "1 folder", "{count} folders" => "{count} foldare", "1 file" => "1 fisier", -"{count} files" => "{count} fisiere" +"{count} files" => "{count} fisiere", +"Delete" => "Șterge" ); diff --git a/apps/files_trashbin/l10n/ru.php b/apps/files_trashbin/l10n/ru.php index f6c85a6800..4cf9af1fc3 100644 --- a/apps/files_trashbin/l10n/ru.php +++ b/apps/files_trashbin/l10n/ru.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "%s не может быть восстановлен", "perform restore operation" => "выполнить операцию восстановления", "delete file permanently" => "удалить файл навсегда", +"Delete permanently" => "Удалено навсегда", "Name" => "Имя", "Deleted" => "Удалён", "1 folder" => "1 папка", @@ -10,5 +11,6 @@ "1 file" => "1 файл", "{count} files" => "{count} файлов", "Nothing in here. Your trash bin is empty!" => "Здесь ничего нет. Ваша корзина пуста!", -"Restore" => "Восстановить" +"Restore" => "Восстановить", +"Delete" => "Удалить" ); diff --git a/apps/files_trashbin/l10n/ru_RU.php b/apps/files_trashbin/l10n/ru_RU.php index 379ee37af8..04a899bdd5 100644 --- a/apps/files_trashbin/l10n/ru_RU.php +++ b/apps/files_trashbin/l10n/ru_RU.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "%s не может быть восстановлен", "perform restore operation" => "выполнить операцию восстановления", "delete file permanently" => "удалить файл навсегда", +"Delete permanently" => "Удалить навсегда", "Name" => "Имя", "Deleted" => "Удалён", "1 folder" => "1 папка", @@ -10,5 +11,6 @@ "1 file" => "1 файл", "{count} files" => "{количество} файлов", "Nothing in here. Your trash bin is empty!" => "Здесь ничего нет. Ваша корзина пуста!", -"Restore" => "Восстановить" +"Restore" => "Восстановить", +"Delete" => "Удалить" ); diff --git a/apps/files_trashbin/l10n/si_LK.php b/apps/files_trashbin/l10n/si_LK.php index cb351afaec..71c5632977 100644 --- a/apps/files_trashbin/l10n/si_LK.php +++ b/apps/files_trashbin/l10n/si_LK.php @@ -1,5 +1,6 @@ "නම", "1 folder" => "1 ෆොල්ඩරයක්", -"1 file" => "1 ගොනුවක්" +"1 file" => "1 ගොනුවක්", +"Delete" => "මකා දමන්න" ); diff --git a/apps/files_trashbin/l10n/sk_SK.php b/apps/files_trashbin/l10n/sk_SK.php index b86e5d86e4..c5806a5dee 100644 --- a/apps/files_trashbin/l10n/sk_SK.php +++ b/apps/files_trashbin/l10n/sk_SK.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Nemožno obnoviť %s", "perform restore operation" => "vykonať obnovu", "delete file permanently" => "trvalo zmazať súbor", +"Delete permanently" => "Zmazať trvalo", "Name" => "Meno", "Deleted" => "Zmazané", "1 folder" => "1 priečinok", @@ -10,5 +11,6 @@ "1 file" => "1 súbor", "{count} files" => "{count} súborov", "Nothing in here. Your trash bin is empty!" => "Žiadny obsah. Kôš je prázdny!", -"Restore" => "Obnoviť" +"Restore" => "Obnoviť", +"Delete" => "Zmazať" ); diff --git a/apps/files_trashbin/l10n/sl.php b/apps/files_trashbin/l10n/sl.php index 2579f95c86..4765945747 100644 --- a/apps/files_trashbin/l10n/sl.php +++ b/apps/files_trashbin/l10n/sl.php @@ -3,5 +3,6 @@ "1 folder" => "1 mapa", "{count} folders" => "{count} map", "1 file" => "1 datoteka", -"{count} files" => "{count} datotek" +"{count} files" => "{count} datotek", +"Delete" => "Izbriši" ); diff --git a/apps/files_trashbin/l10n/sr.php b/apps/files_trashbin/l10n/sr.php index 36659e7080..2e7c139e38 100644 --- a/apps/files_trashbin/l10n/sr.php +++ b/apps/files_trashbin/l10n/sr.php @@ -7,5 +7,6 @@ "1 file" => "1 датотека", "{count} files" => "{count} датотеке/а", "Nothing in here. Your trash bin is empty!" => "Овде нема ништа. Корпа за отпатке је празна.", -"Restore" => "Врати" +"Restore" => "Врати", +"Delete" => "Обриши" ); diff --git a/apps/files_trashbin/l10n/sr@latin.php b/apps/files_trashbin/l10n/sr@latin.php index 52255c7429..2cb86adfd4 100644 --- a/apps/files_trashbin/l10n/sr@latin.php +++ b/apps/files_trashbin/l10n/sr@latin.php @@ -1,3 +1,4 @@ "Ime" +"Name" => "Ime", +"Delete" => "Obriši" ); diff --git a/apps/files_trashbin/l10n/sv.php b/apps/files_trashbin/l10n/sv.php index 53bb7a6ce0..6f8c236581 100644 --- a/apps/files_trashbin/l10n/sv.php +++ b/apps/files_trashbin/l10n/sv.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Kunde inte återställa %s", "perform restore operation" => "utför återställning", "delete file permanently" => "radera filen permanent", +"Delete permanently" => "Radera permanent", "Name" => "Namn", "Deleted" => "Raderad", "1 folder" => "1 mapp", @@ -10,5 +11,6 @@ "1 file" => "1 fil", "{count} files" => "{count} filer", "Nothing in here. Your trash bin is empty!" => "Ingenting här. Din papperskorg är tom!", -"Restore" => "Återskapa" +"Restore" => "Återskapa", +"Delete" => "Radera" ); diff --git a/apps/files_trashbin/l10n/ta_LK.php b/apps/files_trashbin/l10n/ta_LK.php index a436e2344a..f21e5fc750 100644 --- a/apps/files_trashbin/l10n/ta_LK.php +++ b/apps/files_trashbin/l10n/ta_LK.php @@ -3,5 +3,6 @@ "1 folder" => "1 கோப்புறை", "{count} folders" => "{எண்ணிக்கை} கோப்புறைகள்", "1 file" => "1 கோப்பு", -"{count} files" => "{எண்ணிக்கை} கோப்புகள்" +"{count} files" => "{எண்ணிக்கை} கோப்புகள்", +"Delete" => "நீக்குக" ); diff --git a/apps/files_trashbin/l10n/th_TH.php b/apps/files_trashbin/l10n/th_TH.php index 8a031fb0d7..3f5d44c763 100644 --- a/apps/files_trashbin/l10n/th_TH.php +++ b/apps/files_trashbin/l10n/th_TH.php @@ -7,5 +7,6 @@ "1 file" => "1 ไฟล์", "{count} files" => "{count} ไฟล์", "Nothing in here. Your trash bin is empty!" => "ไม่มีอะไรอยู่ในนี้ ถังขยะของคุณยังว่างอยู่", -"Restore" => "คืนค่า" +"Restore" => "คืนค่า", +"Delete" => "ลบ" ); diff --git a/apps/files_trashbin/l10n/tr.php b/apps/files_trashbin/l10n/tr.php index 5b7064ecea..c874d73316 100644 --- a/apps/files_trashbin/l10n/tr.php +++ b/apps/files_trashbin/l10n/tr.php @@ -1,7 +1,16 @@ "%s Kalıcı olarak silinemedi", +"Couldn't restore %s" => "%s Geri yüklenemedi", +"perform restore operation" => "Geri yükleme işlemini gerçekleştir", +"delete file permanently" => "Dosyayı kalıcı olarak sil", +"Delete permanently" => "Kalıcı olarak sil", "Name" => "İsim", +"Deleted" => "Silindi", "1 folder" => "1 dizin", "{count} folders" => "{count} dizin", "1 file" => "1 dosya", -"{count} files" => "{count} dosya" +"{count} files" => "{count} dosya", +"Nothing in here. Your trash bin is empty!" => "Burası boş. Çöp kutun tamamen boş.", +"Restore" => "Geri yükle", +"Delete" => "Sil" ); diff --git a/apps/files_trashbin/l10n/uk.php b/apps/files_trashbin/l10n/uk.php index 14c6931255..df7dd24864 100644 --- a/apps/files_trashbin/l10n/uk.php +++ b/apps/files_trashbin/l10n/uk.php @@ -1,7 +1,16 @@ "Неможливо видалити %s назавжди", +"Couldn't restore %s" => "Неможливо відновити %s", +"perform restore operation" => "виконати операцію відновлення", +"delete file permanently" => "видалити файл назавжди", +"Delete permanently" => "Видалити назавжди", "Name" => "Ім'я", +"Deleted" => "Видалено", "1 folder" => "1 папка", "{count} folders" => "{count} папок", "1 file" => "1 файл", -"{count} files" => "{count} файлів" +"{count} files" => "{count} файлів", +"Nothing in here. Your trash bin is empty!" => "Нічого немає. Ваший кошик для сміття пустий!", +"Restore" => "Відновити", +"Delete" => "Видалити" ); diff --git a/apps/files_trashbin/l10n/vi.php b/apps/files_trashbin/l10n/vi.php index ac2a7be029..165fa9cfd9 100644 --- a/apps/files_trashbin/l10n/vi.php +++ b/apps/files_trashbin/l10n/vi.php @@ -3,6 +3,7 @@ "Couldn't restore %s" => "Không thể khôi phục %s", "perform restore operation" => "thực hiện phục hồi", "delete file permanently" => "xóa file vĩnh viễn", +"Delete permanently" => "Xóa vĩnh vễn", "Name" => "Tên", "Deleted" => "Đã xóa", "1 folder" => "1 thư mục", @@ -10,5 +11,6 @@ "1 file" => "1 tập tin", "{count} files" => "{count} tập tin", "Nothing in here. Your trash bin is empty!" => "Không có gì ở đây. Thùng rác của bạn rỗng!", -"Restore" => "Khôi phục" +"Restore" => "Khôi phục", +"Delete" => "Xóa" ); diff --git a/apps/files_trashbin/l10n/zh_CN.GB2312.php b/apps/files_trashbin/l10n/zh_CN.GB2312.php index 2c6a7891e9..606d80d441 100644 --- a/apps/files_trashbin/l10n/zh_CN.GB2312.php +++ b/apps/files_trashbin/l10n/zh_CN.GB2312.php @@ -3,5 +3,6 @@ "1 folder" => "1 个文件夹", "{count} folders" => "{count} 个文件夹", "1 file" => "1 个文件", -"{count} files" => "{count} 个文件" +"{count} files" => "{count} 个文件", +"Delete" => "删除" ); diff --git a/apps/files_trashbin/l10n/zh_CN.php b/apps/files_trashbin/l10n/zh_CN.php index 0060b1f31d..327a3e2470 100644 --- a/apps/files_trashbin/l10n/zh_CN.php +++ b/apps/files_trashbin/l10n/zh_CN.php @@ -3,5 +3,6 @@ "1 folder" => "1个文件夹", "{count} folders" => "{count} 个文件夹", "1 file" => "1 个文件", -"{count} files" => "{count} 个文件" +"{count} files" => "{count} 个文件", +"Delete" => "删除" ); diff --git a/apps/files_trashbin/l10n/zh_TW.php b/apps/files_trashbin/l10n/zh_TW.php index be61d9b0b6..0142e901f5 100644 --- a/apps/files_trashbin/l10n/zh_TW.php +++ b/apps/files_trashbin/l10n/zh_TW.php @@ -1,7 +1,9 @@ "永久刪除", "Name" => "名稱", "1 folder" => "1 個資料夾", "{count} folders" => "{count} 個資料夾", "1 file" => "1 個檔案", -"{count} files" => "{count} 個檔案" +"{count} files" => "{count} 個檔案", +"Delete" => "刪除" ); diff --git a/apps/files_trashbin/lib/hooks.php b/apps/files_trashbin/lib/hooks.php index d6a62d447b..9081706a2c 100644 --- a/apps/files_trashbin/lib/hooks.php +++ b/apps/files_trashbin/lib/hooks.php @@ -1,23 +1,23 @@ . - * +/** + * ownCloud - trash bin + * + * @author Bjoern Schiessle + * @copyright 2013 Bjoern Schiessle schiessle@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 . + * */ /** @@ -36,7 +36,7 @@ class Hooks { * to copy the file to the trash bin */ public static function remove_hook($params) { - + if ( \OCP\App::isEnabled('files_trashbin') ) { $path = $params['path']; Trashbin::move2trash($path); diff --git a/apps/files_trashbin/lib/trash.php b/apps/files_trashbin/lib/trash.php index 76844ca92e..2fc8a8bc3c 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -1,111 +1,134 @@ . - * - */ +/** + * ownCloud - trash bin + * + * @author Bjoern Schiessle + * @copyright 2013 Bjoern Schiessle schiessle@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 OCA\Files_Trashbin; -namespace OCA\Files_Trashbin; - class Trashbin { - - const DEFAULT_RETENTION_OBLIGATION=180; // how long do we keep files in the trash bin if no other value is defined in the config file (unit: days) - const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota - + // how long do we keep files in the trash bin if no other value is defined in the config file (unit: days) + const DEFAULT_RETENTION_OBLIGATION=180; + + // unit: percentage; 50% of available disk space/quota + const DEFAULTMAXSIZE=50; + /** * move file to the trash bin - * + * * @param $file_path path to the deleted file/directory relative to the files root directory */ public static function move2trash($file_path) { $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'. $user); - if (!$view->is_dir('files_trashbin')) { - $view->mkdir('files_trashbin'); - $view->mkdir("versions_trashbin"); - } - - $path_parts = pathinfo($file_path); - - $deleted = $path_parts['basename']; - $location = $path_parts['dirname']; - $timestamp = time(); - $mime = $view->getMimeType('files'.$file_path); - - if ( $view->is_dir('files'.$file_path) ) { - $type = 'dir'; - } else { - $type = 'file'; + $view = new \OC\Files\View('/'. $user); + if (!$view->is_dir('files_trashbin')) { + $view->mkdir('files_trashbin'); + $view->mkdir("files_trashbin/files"); + $view->mkdir("files_trashbin/versions"); + $view->mkdir("files_trashbin/keyfiles"); } - - if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { - $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); - $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin')); - } - $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/'.$deleted.'.d'.$timestamp, $view); - if ( $view->file_exists('files_trashbin/'.$deleted.'.d'.$timestamp) ) { - $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user) VALUES (?,?,?,?,?,?)"); + $path_parts = pathinfo($file_path); + + $deleted = $path_parts['basename']; + $location = $path_parts['dirname']; + $timestamp = time(); + $mime = $view->getMimeType('files'.$file_path); + + if ( $view->is_dir('files'.$file_path) ) { + $type = 'dir'; + } else { + $type = 'file'; + } + + $trashbinSize = self::getTrashbinSize($user); + if ( $trashbinSize === false || $trashbinSize < 0 ) { + $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); + } + $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/files/'.$deleted.'.d'.$timestamp, $view); + + if ( $view->file_exists('files_trashbin/files/'.$deleted.'.d'.$timestamp) ) { + $query = \OC_DB::prepare("INSERT INTO *PREFIX*files_trash (id,timestamp,location,type,mime,user) VALUES (?,?,?,?,?,?)"); $result = $query->execute(array($deleted, $timestamp, $location, $type, $mime, $user)); if ( !$result ) { // if file couldn't be added to the database than also don't store it in the trash bin. - $view->deleteAll('files_trashbin/'.$deleted.'.d'.$timestamp); + $view->deleteAll('files_trashbin/files/'.$deleted.'.d'.$timestamp); \OC_Log::write('files_trashbin', 'trash bin database couldn\'t be updated', \OC_log::ERROR); return; - } - - if ( \OCP\App::isEnabled('files_versions') ) { - if ( $view->is_dir('files_versions'.$file_path) ) { - $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_versions/'.$file_path)); - $view->rename('files_versions'.$file_path, 'versions_trashbin/'. $deleted.'.d'.$timestamp); - } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($file_path) ) { + } + \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_moveToTrash', + array('filePath' => \OC\Files\Filesystem::normalizePath($file_path), + 'trashPath' => \OC\Files\Filesystem::normalizePath($deleted.'.d'.$timestamp))); + + // Take care of file versions + if ( \OCP\App::isEnabled('files_versions') ) { + if ( $view->is_dir('files_versions/'.$file_path) ) { + $trashbinSize += self::calculateSize(new \OC\Files\View('/'. $user.'/files_versions/'.$file_path)); + $view->rename('files_versions/'.$file_path, 'files_trashbin/versions'. $deleted.'.d'.$timestamp); + } else if ( $versions = \OCA\Files_Versions\Storage::getVersions($user, $file_path) ) { foreach ($versions as $v) { - $trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']); - $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'versions_trashbin/'. $deleted.'.v'.$v['version'].'.d'.$timestamp); - } - } + $trashbinSize += $view->filesize('files_versions'.$v['path'].'.v'.$v['version']); + $view->rename('files_versions'.$v['path'].'.v'.$v['version'], 'files_trashbin/versions/'. $deleted.'.v'.$v['version'].'.d'.$timestamp); + } + } + } + + // Take care of encryption keys + $keyfile = \OC\Files\Filesystem::normalizePath('files_encryption/keyfiles/'.$file_path); + if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile.'.key') ) { + if ( $view->is_dir('files'.$file_path) ) { + $trashbinSize += self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile)); + $view->rename($keyfile, 'files_trashbin/keyfiles/'. $deleted.'.d'.$timestamp); + } else { + $trashbinSize += $view->filesize($keyfile.'.key'); + $view->rename($keyfile.'.key', 'files_trashbin/keyfiles/'. $deleted.'.key.d'.$timestamp); + } } } else { \OC_Log::write('files_trashbin', 'Couldn\'t move '.$file_path.' to the trash bin', \OC_log::ERROR); } - // get available disk space for user - $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($user, 'files', 'quota')); - if ( $quota == null ) { - $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); - } - if ( $quota == null ) { - $quota = \OC\Files\Filesystem::free_space('/'); + // get available disk space for user + $quota = \OC_Preferences::getValue($user, 'files', 'quota'); + if ( $quota === null || $quota === 'default') { + $quota = \OC_Appconfig::getValue('files', 'default_quota'); + } + if ( $quota === null || $quota === 'none' ) { + $quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers()); + } else { + $quota = \OCP\Util::computerFileSize($quota); } - // calculate available space for trash bin - $rootInfo = $view->getFileInfo('/files'); - $free = $quota-$rootInfo['size']; // remaining free space for user - if ( $free > 0 ) { - $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $trashbinSize; // how much space can be used for versions - } else { - $availableSpace = $free-$trashbinSize; + // calculate available space for trash bin + $rootInfo = $view->getFileInfo('/files'); + $free = $quota-$rootInfo['size']; // remaining free space for user + if ( $free > 0 ) { + $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $trashbinSize; // how much space can be used for versions + } else { + $availableSpace = $free-$trashbinSize; } - $trashbinSize -= self::expire($availableSpace); - \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); + + self::setTrashbinSize($user, $trashbinSize); + } - - + + /** * restore files from trash bin * @param $file path to the deleted file @@ -114,46 +137,50 @@ class Trashbin { */ public static function restore($file, $filename, $timestamp) { $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'.$user); + $view = new \OC\Files\View('/'.$user); - if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { - $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); - $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin')); + $trashbinSize = self::getTrashbinSize($user); + if ( $trashbinSize === false || $trashbinSize < 0 ) { + $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); } if ( $timestamp ) { - $query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); + $query = \OC_DB::prepare('SELECT location,type FROM *PREFIX*files_trash' + .' WHERE user=? AND id=? AND timestamp=?'); $result = $query->execute(array($user,$filename,$timestamp))->fetchAll(); if ( count($result) != 1 ) { \OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR); return false; } - - // if location no longer exists, restore file in the root directory - $location = $result[0]['location']; - if ( $result[0]['location'] != '/' && - (!$view->is_dir('files'.$result[0]['location']) || - !$view->isUpdatable('files'.$result[0]['location'])) ) { - $location = ''; + + // if location no longer exists, restore file in the root directory + $location = $result[0]['location']; + if ( $result[0]['location'] != '/' && + (!$view->is_dir('files'.$result[0]['location']) || + !$view->isUpdatable('files'.$result[0]['location'])) ) { + $location = ''; } } else { - $path_parts = pathinfo($filename); + $path_parts = pathinfo($file); $result[] = array( 'location' => $path_parts['dirname'], - 'type' => $view->is_dir('/files_trashbin/'.$file) ? 'dir' : 'files', + 'type' => $view->is_dir('/files_trashbin/files/'.$file) ? 'dir' : 'files', ); $location = ''; } - $source = \OC_Filesystem::normalizePath('files_trashbin/'.$file); - $target = \OC_Filesystem::normalizePath('files/'.$location.'/'.$filename); - + $source = \OC\Files\Filesystem::normalizePath('files_trashbin/files/'.$file); + $target = \OC\Files\Filesystem::normalizePath('files/'.$location.'/'.$filename); + // we need a extension in case a file/dir with the same name already exists $ext = self::getUniqueExtension($location, $filename, $view); $mtime = $view->filemtime($source); if( $view->rename($source, $target.$ext) ) { $view->touch($target.$ext, $mtime); + \OCP\Util::emitHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', + array('filePath' => \OC\Files\Filesystem::normalizePath('/'.$location.'/'.$filename.$ext), + 'trashPath' => \OC\Files\Filesystem::normalizePath($file))); if ($view->is_dir($target.$ext)) { - $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.$target.$ext)); + $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.$target.$ext)); } else { $trashbinSize -= $view->filesize($target.$ext); } @@ -163,29 +190,50 @@ class Trashbin { $versionedFile = $filename; } else { $versionedFile = $file; - } - if ( $result[0]['type'] == 'dir' ) { - $trashbinSize -= self::calculateSize(new \OC_FilesystemView('/'.$user.'/'.'versions_trashbin/'. $file)); - $view->rename(\OC_Filesystem::normalizePath('versions_trashbin/'. $file), \OC_Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext)); - } else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) { + } + if ( $result[0]['type'] === 'dir' ) { + $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.'files_trashbin/versions/'. $file)); + $view->rename(\OC\Files\Filesystem::normalizePath('files_trashbin/versions/'. $file), \OC\Files\Filesystem::normalizePath('files_versions/'.$location.'/'.$filename.$ext)); + } else if ( $versions = self::getVersionsFromTrash($versionedFile, $timestamp) ) { foreach ($versions as $v) { if ($timestamp ) { - $trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp); - $view->rename('versions_trashbin/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); + $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp); + $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v.'.d'.$timestamp, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); } else { - $trashbinSize -= $view->filesize('versions_trashbin/'.$versionedFile.'.v'.$v); - $view->rename('versions_trashbin/'.$versionedFile.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); - } - } - } + $trashbinSize -= $view->filesize('files_trashbin/versions/'.$versionedFile.'.v'.$v); + $view->rename('files_trashbin/versions/'.$versionedFile.'.v'.$v, 'files_versions/'.$location.'/'.$filename.$ext.'.v'.$v); + } + } + } } - + + // Take care of encryption keys TODO! Get '.key' in file between file name and delete date (also for permanent delete!) + $parts = pathinfo($file); + if ( $result[0]['type'] === 'dir' ) { + $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename); + } else { + $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$parts['dirname'].'/'.$filename.'.key'); + } + if ($timestamp) { + $keyfile .= '.d'.$timestamp; + } + if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) { + if ( $result[0]['type'] === 'dir' ) { + $trashbinSize -= self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile)); + $view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename); + } else { + $trashbinSize -= $view->filesize($keyfile); + $view->rename($keyfile, 'files_encryption/keyfiles/'. $location.'/'.$filename.'.key'); + } + } + if ( $timestamp ) { - $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); + $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); $query->execute(array($user,$filename,$timestamp)); } - \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); + self::setTrashbinSize($user, $trashbinSize); + return true; } else { \OC_Log::write('files_trashbin', 'Couldn\'t restore file from trash bin, '.$filename, \OC_log::ERROR); @@ -193,107 +241,129 @@ class Trashbin { return false; } - - /** - * delete file from trash bin permanently + + /** + * delete file from trash bin permanently * @param $filename path to the file - * @param $timestamp of deletion time - * @return size of deleted files - */ - public static function delete($filename, $timestamp=null) { - $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'.$user); - $size = 0; + * @param $timestamp of deletion time + * @return size of deleted files + */ + public static function delete($filename, $timestamp=null) { + $user = \OCP\User::getUser(); + $view = new \OC\Files\View('/'.$user); + $size = 0; - if ( ($trashbinSize = \OCP\Config::getAppValue('files_trashbin', 'size')) === null ) { - $trashbinSize = self::calculateSize(new \OC_FilesystemView('/'. $user.'/files_trashbin')); - $trashbinSize += self::calculateSize(new \OC_FilesystemView('/'. $user.'/versions_trashbin')); + $trashbinSize = self::getTrashbinSize($user); + if ( $trashbinSize === false || $trashbinSize < 0 ) { + $trashbinSize = self::calculateSize(new \OC\Files\View('/'. $user.'/files_trashbin')); } - - if ( $timestamp ) { - $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); - $query->execute(array($user,$filename,$timestamp)); + + if ( $timestamp ) { + $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND id=? AND timestamp=?'); + $query->execute(array($user,$filename,$timestamp)); $file = $filename.'.d'.$timestamp; } else { $file = $filename; } - + if ( \OCP\App::isEnabled('files_versions') ) { - if ($view->is_dir('versions_trashbin/'.$file)) { - $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/versions_trashbin/'.$file)); - $view->unlink('versions_trashbin/'.$file); + if ($view->is_dir('files_trashbin/versions/'.$file)) { + $size += self::calculateSize(new \OC\Files\view('/'.$user.'/files_trashbin/versions/'.$file)); + $view->unlink('files_trashbin/versions/'.$file); } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { foreach ($versions as $v) { if ($timestamp ) { - $size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); - $view->unlink('/versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); + $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp); + $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v.'.d'.$timestamp); } else { - $size += $view->filesize('/versions_trashbin/'.$filename.'.v'.$v); - $view->unlink('/versions_trashbin/'.$filename.'.v'.$v); + $size += $view->filesize('/files_trashbin/versions/'.$filename.'.v'.$v); + $view->unlink('/files_trashbin/versions/'.$filename.'.v'.$v); } } } - } - - if ($view->is_dir('/files_trashbin/'.$file)) { - $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/'.$file)); - } else { - $size += $view->filesize('/files_trashbin/'.$file); } - $view->unlink('/files_trashbin/'.$file); + + // Take care of encryption keys + $parts = pathinfo($file); + if ( $view->is_dir('/files_trashbin/files/'.$file) ) { + $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename); + } else { + $keyfile = \OC\Files\Filesystem::normalizePath('files_trashbin/keyfiles/'.$filename.'.key'); + } + if ($timestamp) { + $keyfile .= '.d'.$timestamp; + } + if ( \OCP\App::isEnabled('files_encryption') && $view->file_exists($keyfile) ) { + if ( $view->is_dir($keyfile) ) { + $size += self::calculateSize(new \OC\Files\View('/'.$user.'/'.$keyfile)); + } else { + $size += $view->filesize($keyfile); + } + $view->unlink($keyfile); + } + + if ($view->is_dir('/files_trashbin/files/'.$file)) { + $size += self::calculateSize(new \OC\Files\View('/'.$user.'/files_trashbin/files/'.$file)); + } else { + $size += $view->filesize('/files_trashbin/files/'.$file); + } + $view->unlink('/files_trashbin/files/'.$file); $trashbinSize -= $size; - \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); - - return $size; + self::setTrashbinSize($user, $trashbinSize); + + return $size; } - - - /** - * clean up the trash bin - * @param max. available disk space for trashbin - */ - private static function expire($availableSpace) { - + + /** + * check to see whether a file exists in trashbin + * @param $filename path to the file + * @param $timestamp of deletion time + * @return true if file exists, otherwise false + */ + public static function file_exists($filename, $timestamp=null) { $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'.$user); + $view = new \OC\Files\View('/'.$user); + + if ($timestamp) { + $filename = $filename.'.d'.$timestamp; + } else { + $filename = $filename; + } + + $target = \OC\Files\Filesystem::normalizePath('files_trashbin/files/'.$filename); + return $view->file_exists($target); + } + + /** + * clean up the trash bin + * @param max. available disk space for trashbin + */ + private static function expire($availableSpace) { + + $user = \OCP\User::getUser(); + $view = new \OC\Files\View('/'.$user); $size = 0; - - $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=?'); + + $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=?'); $result = $query->execute(array($user))->fetchAll(); - - $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', self::DEFAULT_RETENTION_OBLIGATION); - + + $retention_obligation = \OC_Config::getValue('trashbin_retention_obligation', + self::DEFAULT_RETENTION_OBLIGATION); + $limit = time() - ($retention_obligation * 86400); foreach ( $result as $r ) { $timestamp = $r['timestamp']; $filename = $r['id']; if ( $r['timestamp'] < $limit ) { - if ($view->is_dir('files_trashbin/'.$filename.'.d'.$timestamp)) { - $size += self::calculateSize(new \OC_FilesystemView('/'.$user.'/files_trashbin/'.$filename.'.d'.$timestamp)); - } else { - $size += $view->filesize('files_trashbin/'.$filename.'.d'.$timestamp); - } - $view->unlink('files_trashbin/'.$filename.'.d'.$timestamp); - if ($r['type'] == 'dir') { - $size += self::calculateSize(new \OC_FilesystemView('/'.$user.'/versions_trashbin/'.$filename.'.d'.$timestamp)); - $view->unlink('versions_trashbin/'.$filename.'.d'.$timestamp); - } else if ( $versions = self::getVersionsFromTrash($filename, $timestamp) ) { - foreach ($versions as $v) { - $size += $view->filesize('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); - $view->unlink('versions_trashbin/'.$filename.'.v'.$v.'.d'.$timestamp); - } - } + $size += self::delete($filename, $timestamp); } } - - $query = \OC_DB::prepare('DELETE FROM *PREFIX*files_trash WHERE user=? AND timestampexecute(array($user,$limit)); - $availableSpace = $availableSpace + $size; // if size limit for trash bin reached, delete oldest files in trash bin if ($availableSpace < 0) { - $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash WHERE user=? ORDER BY timestamp ASC'); + $query = \OC_DB::prepare('SELECT location,type,id,timestamp FROM *PREFIX*files_trash' + .' WHERE user=? ORDER BY timestamp ASC'); $result = $query->execute(array($user))->fetchAll(); $length = count($result); $i = 0; @@ -303,15 +373,16 @@ class Trashbin { $size += $tmp; $i++; } - + + } - - return $size; + + return $size; } - + /** * recursive copy to copy a whole directory - * + * * @param $source source path, relative to the users files directory * @param $destination destination path relative to the users root directoy * @param $view file view for the users root directory @@ -338,15 +409,15 @@ class Trashbin { } return $size; } - + /** * find all versions which belong to the file we want to restore * @param $filename name of the file which should be restored * @param $timestamp timestamp when the file was deleted */ private static function getVersionsFromTrash($filename, $timestamp) { - $view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/versions_trashbin'); - $versionsName = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath($filename); + $view = new \OC\Files\View('/'.\OCP\User::getUser().'/files_trashbin/versions'); + $versionsName = $view->getLocalFile($filename); $versions = array(); if ($timestamp ) { // fetch for old versions @@ -354,20 +425,20 @@ class Trashbin { $offset = -strlen($timestamp)-2; } else { $matches = glob( $versionsName.'.v*' ); - } - + } + foreach( $matches as $ma ) { if ( $timestamp ) { - $parts = explode( '.v', substr($ma, 0, $offset) ); + $parts = explode( '.v', substr($ma, 0, $offset) ); $versions[] = ( end( $parts ) ); } else { - $parts = explode( '.v', $ma ); + $parts = explode( '.v', $ma ); $versions[] = ( end( $parts ) ); } } return $versions; } - + /** * find unique extension for restored file if a file with the same name already exists * @param $location where the file should be restored @@ -376,36 +447,71 @@ class Trashbin { * @return string with unique extension */ private static function getUniqueExtension($location, $filename, $view) { - $ext = ''; - if ( $view->file_exists('files'.$location.'/'.$filename) ) { - $tmpext = '.restored'; - $ext = $tmpext; - $i = 1; - while ( $view->file_exists('files'.$location.'/'.$filename.$ext) ) { - $ext = $tmpext.$i; - $i++; - } + $ext = ''; + if ( $view->file_exists('files'.$location.'/'.$filename) ) { + $tmpext = '.restored'; + $ext = $tmpext; + $i = 1; + while ( $view->file_exists('files'.$location.'/'.$filename.$ext) ) { + $ext = $tmpext.$i; + $i++; + } } return $ext; } - /** + /** * @brief get the size from a given root folder - * @param $view file view on the root folder - * @return size of the folder - */ - private static function calculateSize($view) { - $root = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath(''); - $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($root), \RecursiveIteratorIterator::CHILD_FIRST); - $size = 0; - + * @param $view file view on the root folder + * @return size of the folder + */ + private static function calculateSize($view) { + $root = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath(''); + if (!file_exists($root)) { + return 0; + } + $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($root), + \RecursiveIteratorIterator::CHILD_FIRST); + $size = 0; + foreach ($iterator as $path) { $relpath = substr($path, strlen($root)-1); if ( !$view->is_dir($relpath) ) { $size += $view->filesize($relpath); - } - } - return $size; + } + } + return $size; + } + + /** + * get current size of trash bin from a given user + * + * @param $user user who owns the trash bin + * @return mixed trash bin size or false if no trash bin size is stored + */ + private static function getTrashbinSize($user) { + $query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_trashsize WHERE user=?'); + $result = $query->execute(array($user))->fetchAll(); + + if ($result) { + return $result[0]['size']; + } + return false; } -} + /** + * write to the database how much space is in use for the trash bin + * + * @param $user owner of the trash bin + * @param $size size of the trash bin + */ + private static function setTrashbinSize($user, $size) { + if ( self::getTrashbinSize($user) === false) { + $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_trashsize (size, user) VALUES (?, ?)'); + }else { + $query = \OC_DB::prepare('UPDATE *PREFIX*files_trashsize SET size=? WHERE user=?'); + } + $query->execute(array($size, $user)); + } + +} diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php index c3e51b4bec..cb5edaa2c9 100644 --- a/apps/files_trashbin/templates/index.php +++ b/apps/files_trashbin/templates/index.php @@ -1,34 +1,41 @@
- +
- -
t('Nothing in here. Your trash bin is empty!')?>
+ +
t('Nothing in here. Your trash bin is empty!'))?>
- +
- +
- t( 'Name' ); ?> + t( 'Name' )); ?> - <?php echo $l->t( 'Restore' ); ?>" /> - t('Restore')?> + <?php p($l->t( 'Restore' )); ?>" /> + t('Restore'))?> - t( 'Deleted' ); ?> + t( 'Deleted' )); ?> + + + t('Delete'))?> + <?php p($l->t('Delete'))?>" /> + +
diff --git a/apps/files_trashbin/templates/part.breadcrumb.php b/apps/files_trashbin/templates/part.breadcrumb.php new file mode 100644 index 0000000000..2801e04e9a --- /dev/null +++ b/apps/files_trashbin/templates/part.breadcrumb.php @@ -0,0 +1,20 @@ + + + + + +
svg" + data-dir=''> + +
+"> + 200) $relative_date_color = 200; $name = str_replace('+', '%20', urlencode($file['name'])); $name = str_replace('%2F', '/', $name); $directory = str_replace('+', '%20', urlencode($file['directory'])); $directory = str_replace('%2F', '/', $directory); ?> - ' + ' - id="" - data-file="" + id="" + data-file="" data-timestamp='' data-dirlisting=1 - id="" - data-file="" - data-timestamp='' + id="" + data-file="" + data-timestamp='' data-dirlisting=0 > - style="background-image:url()" + style="background-image:url()" - style="background-image:url()" + style="background-image:url()" > - + - + - + - + - + - + @@ -64,13 +60,12 @@ " + style="color:rgb()"> - + .$relative_date_color) ?>)"> + array( "message" => $l->t("Could not revert: %s", array($file) )))); } - diff --git a/apps/files_versions/ajax/togglesettings.php b/apps/files_versions/ajax/togglesettings.php deleted file mode 100644 index 546b37ae1a..0000000000 --- a/apps/files_versions/ajax/togglesettings.php +++ /dev/null @@ -1,10 +0,0 @@ - + + + *dbname* + true + false + + utf8 + + + + *dbprefix*files_versions + + + + + user + text + + true + 64 + + + size + text + + true + 50 + + + + +
+ +
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml index 0155f8e830..44878da5e4 100644 --- a/apps/files_versions/appinfo/info.xml +++ b/apps/files_versions/appinfo/info.xml @@ -4,7 +4,7 @@ Versions AGPL Frank Karlitschek - 4.91 + 4.93 true Versioning of files diff --git a/apps/files_versions/appinfo/version b/apps/files_versions/appinfo/version index e6d5cb833c..e4c0d46e55 100644 --- a/apps/files_versions/appinfo/version +++ b/apps/files_versions/appinfo/version @@ -1 +1 @@ -1.0.2 \ No newline at end of file +1.0.3 \ No newline at end of file diff --git a/apps/files_versions/history.php b/apps/files_versions/history.php index 437a3fec06..719a7208fe 100644 --- a/apps/files_versions/history.php +++ b/apps/files_versions/history.php @@ -59,7 +59,8 @@ if ( isset( $_GET['path'] ) ) { // show the history only if there is something to show $count = 999; //show the newest revisions - if( ($versions = OCA\Files_Versions\Storage::getVersions( $path, $count)) ) { + list ($uid, $filename) = OCA\Files_Versions\Storage::getUidAndFilename($path); + if( ($versions = OCA\Files_Versions\Storage::getVersions($uid, $filename, $count)) ) { $tmpl->assign( 'versions', array_reverse( $versions ) ); diff --git a/apps/files_versions/js/versions.js b/apps/files_versions/js/versions.js index b9c5468981..a5b2441748 100644 --- a/apps/files_versions/js/versions.js +++ b/apps/files_versions/js/versions.js @@ -1,19 +1,9 @@ -$(document).ready(function() { - $('#versions').bind('change', function() { - var checked = 1; - if (!this.checked) { - checked = 0; - } - $.post(OC.filePath('files_versions','ajax','togglesettings.php'), 'versions='+checked); - }); -}); - $(document).ready(function(){ if (typeof FileActions !== 'undefined') { - // Add history button to 'files/index.php' + // Add versions button to 'files/index.php' FileActions.register( 'file' - , t('files_versions', 'History') + , t('files_versions', 'Versions') , OC.PERMISSION_UPDATE , function() { // Specify icon for hitory button @@ -41,6 +31,10 @@ $(document).ready(function(){ } }); +function goToVersionPage(url){ + window.location.assign(url); +} + function createVersionsDropdown(filename, files) { var historyUrl = OC.linkTo('files_versions', 'history.php') + '?path='+encodeURIComponent( $( '#dir' ).val() ).replace( /%2F/g, '/' )+'/'+encodeURIComponent( filename ); @@ -51,7 +45,7 @@ function createVersionsDropdown(filename, files) { html += ''; html += ''; html += '
'; - html += ''; + html += ''; html += ''; if (filename) { @@ -61,6 +55,10 @@ function createVersionsDropdown(filename, files) { $(html).appendTo($('thead .share')); } + $("#makelink").click(function() { + goToVersionPage(historyUrl); + }); + $.ajax({ type: 'GET', url: OC.filePath('files_versions', 'ajax', 'getVersions.php'), diff --git a/apps/files_versions/l10n/ar.php b/apps/files_versions/l10n/ar.php index 1f1f310040..b84445972d 100644 --- a/apps/files_versions/l10n/ar.php +++ b/apps/files_versions/l10n/ar.php @@ -1,5 +1,3 @@ "السجل الزمني", -"Files Versioning" => "أصدرة الملفات", -"Enable" => "تفعيل" +"Versions" => "الإصدارات" ); diff --git a/apps/files_versions/l10n/bg_BG.php b/apps/files_versions/l10n/bg_BG.php index 6ecf12d0b0..6a1882c2bf 100644 --- a/apps/files_versions/l10n/bg_BG.php +++ b/apps/files_versions/l10n/bg_BG.php @@ -1,4 +1,3 @@ "История", -"Enable" => "Включено" +"Versions" => "Версии" ); diff --git a/apps/files_versions/l10n/bn_BD.php b/apps/files_versions/l10n/bn_BD.php index dffa4d79a0..f3b0071a35 100644 --- a/apps/files_versions/l10n/bn_BD.php +++ b/apps/files_versions/l10n/bn_BD.php @@ -1,5 +1,3 @@ "ইতিহাস", -"Files Versioning" => "ফাইল ভার্সন করা", -"Enable" => "সক্রিয় " +"Versions" => "ভার্সন" ); diff --git a/apps/files_versions/l10n/ca.php b/apps/files_versions/l10n/ca.php index fc900c47dc..433d974c8c 100644 --- a/apps/files_versions/l10n/ca.php +++ b/apps/files_versions/l10n/ca.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "El fitxer %s no s'ha pogut revertir a la versió %s", "No old versions available" => "No hi ha versións antigues disponibles", "No path specified" => "No heu especificat el camí", -"History" => "Historial", -"Revert a file to a previous version by clicking on its revert button" => "Reverteix un fitxer a una versió anterior fent clic en el seu botó de reverteix", -"Files Versioning" => "Fitxers de Versions", -"Enable" => "Habilita" +"Versions" => "Versions", +"Revert a file to a previous version by clicking on its revert button" => "Reverteix un fitxer a una versió anterior fent clic en el seu botó de reverteix" ); diff --git a/apps/files_versions/l10n/cs_CZ.php b/apps/files_versions/l10n/cs_CZ.php index 22d4a2ad82..087d800137 100644 --- a/apps/files_versions/l10n/cs_CZ.php +++ b/apps/files_versions/l10n/cs_CZ.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Soubor %s nemohl být navrácen na verzi %s", "No old versions available" => "Nejsou dostupné žádné starší verze", "No path specified" => "Nezadána cesta", -"History" => "Historie", -"Revert a file to a previous version by clicking on its revert button" => "Navraťte soubor do předchozí verze kliknutím na tlačítko navrátit", -"Files Versioning" => "Verzování souborů", -"Enable" => "Povolit" +"Versions" => "Verze", +"Revert a file to a previous version by clicking on its revert button" => "Navraťte soubor do předchozí verze kliknutím na tlačítko navrátit" ); diff --git a/apps/files_versions/l10n/da.php b/apps/files_versions/l10n/da.php index 93fcb9c99c..447a3d2b85 100644 --- a/apps/files_versions/l10n/da.php +++ b/apps/files_versions/l10n/da.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Filen %s blev genskabt til version: %s", "No old versions available" => "Ingen gamle version tilgængelige", "No path specified" => "Ingen sti specificeret", -"History" => "Historik", -"Revert a file to a previous version by clicking on its revert button" => "Genskab en fil til en tidligere version ved at klikke på denne genskab knap.", -"Files Versioning" => "Versionering af filer", -"Enable" => "Aktiver" +"Versions" => "Versioner", +"Revert a file to a previous version by clicking on its revert button" => "Genskab en fil til en tidligere version ved at klikke på denne genskab knap." ); diff --git a/apps/files_versions/l10n/de.php b/apps/files_versions/l10n/de.php index f62043dade..c34a8c1fd3 100644 --- a/apps/files_versions/l10n/de.php +++ b/apps/files_versions/l10n/de.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Datei %s konnte nicht auf Version %s zurückgesetzt werden", "No old versions available" => "Keine älteren Versionen verfügbar", "No path specified" => "Kein Pfad angegeben", -"History" => "Historie", -"Revert a file to a previous version by clicking on its revert button" => "Setzen Sie eine Datei durch klicken auf den Zurücksetzen Button zurück", -"Files Versioning" => "Dateiversionierung", -"Enable" => "Aktivieren" +"Versions" => "Versionen", +"Revert a file to a previous version by clicking on its revert button" => "Setze eine Datei durch klicken auf den Zurücksetzen Button zurück" ); diff --git a/apps/files_versions/l10n/de_DE.php b/apps/files_versions/l10n/de_DE.php index 1cf2a63a1d..c0b2f2a83f 100644 --- a/apps/files_versions/l10n/de_DE.php +++ b/apps/files_versions/l10n/de_DE.php @@ -4,10 +4,8 @@ "File %s was reverted to version %s" => "Die Datei %s wurde zur Version %s zurückgesetzt", "failure" => "Fehlgeschlagen", "File %s could not be reverted to version %s" => "Die Datei %s konnte nicht zur Version %s zurückgesetzt werden", -"No old versions available" => "keine älteren Versionen verfügbar", +"No old versions available" => "Keine älteren Versionen verfügbar", "No path specified" => "Kein Pfad angegeben", -"History" => "Historie", -"Revert a file to a previous version by clicking on its revert button" => "Setze eine Datei durch Klicken, auf den Zurücksetzen-Button, auf einer frühere Version zurück", -"Files Versioning" => "Dateiversionierung", -"Enable" => "Aktivieren" +"Versions" => "Versionen", +"Revert a file to a previous version by clicking on its revert button" => "Setze eine Datei durch Klicken auf den Zurücksetzen-Button auf eine frühere Version zurück" ); diff --git a/apps/files_versions/l10n/el.php b/apps/files_versions/l10n/el.php index 8b7ecf085f..6e1900b233 100644 --- a/apps/files_versions/l10n/el.php +++ b/apps/files_versions/l10n/el.php @@ -6,8 +6,5 @@ "File %s could not be reverted to version %s" => "Το αρχείο %s δεν είναι δυνατό να επαναφερθεί στην έκδοση %s", "No old versions available" => "Μη διαθέσιμες παλιές εκδόσεις", "No path specified" => "Δεν καθορίστηκε διαδρομή", -"History" => "Ιστορικό", -"Revert a file to a previous version by clicking on its revert button" => "Επαναφορά ενός αρχείου σε προηγούμενη έκδοση πατώντας στο κουμπί επαναφοράς", -"Files Versioning" => "Εκδόσεις Αρχείων", -"Enable" => "Ενεργοποίηση" +"Revert a file to a previous version by clicking on its revert button" => "Επαναφορά ενός αρχείου σε προηγούμενη έκδοση πατώντας στο κουμπί επαναφοράς" ); diff --git a/apps/files_versions/l10n/es.php b/apps/files_versions/l10n/es.php index 608e171a4b..8c1a30f822 100644 --- a/apps/files_versions/l10n/es.php +++ b/apps/files_versions/l10n/es.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "El archivo %s no puede ser revertido a la version %s", "No old versions available" => "No hay versiones antiguas disponibles", "No path specified" => "Ruta no especificada", -"History" => "Historial", -"Revert a file to a previous version by clicking on its revert button" => "Revertir un archivo a una versión anterior haciendo clic en el boton de revertir", -"Files Versioning" => "Versionado de archivos", -"Enable" => "Habilitar" +"Versions" => "Revisiones", +"Revert a file to a previous version by clicking on its revert button" => "Revertir un archivo a una versión anterior haciendo clic en el boton de revertir" ); diff --git a/apps/files_versions/l10n/es_AR.php b/apps/files_versions/l10n/es_AR.php index dc604e2a9c..363693c913 100644 --- a/apps/files_versions/l10n/es_AR.php +++ b/apps/files_versions/l10n/es_AR.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "El archivo %s no pudo ser revertido a la versión %s", "No old versions available" => "No hay versiones antiguas disponibles", "No path specified" => "Ruta de acceso no especificada", -"History" => "Historia", -"Revert a file to a previous version by clicking on its revert button" => "Revertí un archivo a una versión anterior haciendo click en su botón de \"revertir\"", -"Files Versioning" => "Versionado de archivos", -"Enable" => "Activar" +"Versions" => "Versiones", +"Revert a file to a previous version by clicking on its revert button" => "Revertí un archivo a una versión anterior haciendo click en su botón de \"revertir\"" ); diff --git a/apps/files_versions/l10n/et_EE.php b/apps/files_versions/l10n/et_EE.php index 4aa80c4f55..fa2a33f9dd 100644 --- a/apps/files_versions/l10n/et_EE.php +++ b/apps/files_versions/l10n/et_EE.php @@ -2,8 +2,5 @@ "success" => "korras", "failure" => "ebaõnnestus", "No old versions available" => "Vanu versioone pole saadaval", -"No path specified" => "Asukohta pole määratud", -"History" => "Ajalugu", -"Files Versioning" => "Failide versioonihaldus", -"Enable" => "Luba" +"No path specified" => "Asukohta pole määratud" ); diff --git a/apps/files_versions/l10n/eu.php b/apps/files_versions/l10n/eu.php index d7f7a79663..2a7f279af1 100644 --- a/apps/files_versions/l10n/eu.php +++ b/apps/files_versions/l10n/eu.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "%s fitxategia ezin da %s bertsiora leheneratu", "No old versions available" => "Ez dago bertsio zaharrik eskuragarri", "No path specified" => "Ez da bidea zehaztu", -"History" => "Historia", -"Revert a file to a previous version by clicking on its revert button" => "Itzuli fitxategi bat aurreko bertsio batera leheneratu bere leheneratu botoia sakatuz", -"Files Versioning" => "Fitxategien Bertsioak", -"Enable" => "Gaitu" +"Versions" => "Bertsioak", +"Revert a file to a previous version by clicking on its revert button" => "Itzuli fitxategi bat aurreko bertsio batera leheneratu bere leheneratu botoia sakatuz" ); diff --git a/apps/files_versions/l10n/fa.php b/apps/files_versions/l10n/fa.php index 9b618fdd32..4ec6aa1bbb 100644 --- a/apps/files_versions/l10n/fa.php +++ b/apps/files_versions/l10n/fa.php @@ -1,4 +1,8 @@ "تاریخچه", -"Enable" => "فعال" +"Could not revert: %s" => "بازگردانی امکان ناپذیر است: %s", +"success" => "موفقیت", +"failure" => "شکست", +"No old versions available" => "هیچ نسخه قدیمی در دسترس نیست", +"No path specified" => "هیچ مسیری مشخص نشده است", +"Revert a file to a previous version by clicking on its revert button" => "بازگردانی یک پرورنده به نسخه قدیمی اش از طریق دکمه بازگردانی امکان پذیر است" ); diff --git a/apps/files_versions/l10n/fi_FI.php b/apps/files_versions/l10n/fi_FI.php index 61e073d4e0..0dec7fc258 100644 --- a/apps/files_versions/l10n/fi_FI.php +++ b/apps/files_versions/l10n/fi_FI.php @@ -6,8 +6,5 @@ "File %s could not be reverted to version %s" => "Tiedoston %s palautus versioon %s epäonnistui", "No old versions available" => "Vanhoja ei ole saatavilla", "No path specified" => "Polkua ei ole määritetty", -"History" => "Historia", -"Revert a file to a previous version by clicking on its revert button" => "Palauta tiedoston edellinen versio napsauttamalla palautuspainiketta", -"Files Versioning" => "Tiedostojen versiointi", -"Enable" => "Käytä" +"Revert a file to a previous version by clicking on its revert button" => "Palauta tiedoston edellinen versio napsauttamalla palautuspainiketta" ); diff --git a/apps/files_versions/l10n/fr.php b/apps/files_versions/l10n/fr.php index 6b2cf9ba6b..76ad8fc97a 100644 --- a/apps/files_versions/l10n/fr.php +++ b/apps/files_versions/l10n/fr.php @@ -6,8 +6,5 @@ "File %s could not be reverted to version %s" => "Le fichier %s ne peut être restauré dans sa version %s", "No old versions available" => "Aucune ancienne version n'est disponible", "No path specified" => "Aucun chemin spécifié", -"History" => "Historique", -"Revert a file to a previous version by clicking on its revert button" => "Restaurez un fichier dans une version antérieure en cliquant sur son bouton de restauration", -"Files Versioning" => "Versionnage des fichiers", -"Enable" => "Activer" +"Revert a file to a previous version by clicking on its revert button" => "Restaurez un fichier dans une version antérieure en cliquant sur son bouton de restauration" ); diff --git a/apps/files_versions/l10n/gl.php b/apps/files_versions/l10n/gl.php index b822b223cc..586ef8c3a6 100644 --- a/apps/files_versions/l10n/gl.php +++ b/apps/files_versions/l10n/gl.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Non foi posíbel reverter o ficheiro %s á versión %s", "No old versions available" => "Non hai versións antigas dispoñíbeis", "No path specified" => "Non foi indicada a ruta", -"History" => "Historial", -"Revert a file to a previous version by clicking on its revert button" => "Reverta un ficheiro a unha versión anterior premendo no botón reversión", -"Files Versioning" => "Sistema de versión de ficheiros", -"Enable" => "Activar" +"Versions" => "Versións", +"Revert a file to a previous version by clicking on its revert button" => "Reverta un ficheiro a unha versión anterior premendo no botón reversión" ); diff --git a/apps/files_versions/l10n/hu_HU.php b/apps/files_versions/l10n/hu_HU.php index dcf2883815..9f7420157e 100644 --- a/apps/files_versions/l10n/hu_HU.php +++ b/apps/files_versions/l10n/hu_HU.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "%s állományt nem sikerült átállítani erre a változatra: %s", "No old versions available" => "Nincs régebbi változat", "No path specified" => "Nincs megadva az útvonal", -"History" => "Korábbi változatok", -"Revert a file to a previous version by clicking on its revert button" => "Az állomány átállítható egy régebbi változatra, ha a gombra kattint", -"Files Versioning" => "Az állományok verzionálása", -"Enable" => "engedélyezve" +"Versions" => "Az állományok korábbi változatai", +"Revert a file to a previous version by clicking on its revert button" => "Az állomány átállítható egy régebbi változatra, ha a gombra kattint" ); diff --git a/apps/files_versions/l10n/id.php b/apps/files_versions/l10n/id.php index 6c553327c4..4662aa8643 100644 --- a/apps/files_versions/l10n/id.php +++ b/apps/files_versions/l10n/id.php @@ -1,5 +1,10 @@ "riwayat", -"Files Versioning" => "pembuatan versi file", -"Enable" => "aktifkan" +"Could not revert: %s" => "Tidak dapat mengembalikan: %s", +"success" => "sukses", +"File %s was reverted to version %s" => "Berkas %s telah dikembalikan ke versi %s", +"failure" => "gagal", +"File %s could not be reverted to version %s" => "Berkas %s gagal dikembalikan ke versi %s", +"No old versions available" => "Versi lama tidak tersedia", +"No path specified" => "Lokasi tidak ditentukan", +"Revert a file to a previous version by clicking on its revert button" => "Kembalikan berkas ke versi sebelumnya dengan mengklik tombol kembalikan" ); diff --git a/apps/files_versions/l10n/is.php b/apps/files_versions/l10n/is.php index ccb8287b71..d165a78c31 100644 --- a/apps/files_versions/l10n/is.php +++ b/apps/files_versions/l10n/is.php @@ -1,5 +1,3 @@ "Saga", -"Files Versioning" => "Útgáfur af skrám", -"Enable" => "Virkja" +"Versions" => "Útgáfur" ); diff --git a/apps/files_versions/l10n/it.php b/apps/files_versions/l10n/it.php index 3289f7f68d..bca0087999 100644 --- a/apps/files_versions/l10n/it.php +++ b/apps/files_versions/l10n/it.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Il file %s non può essere ripristinato alla versione %s", "No old versions available" => "Non sono disponibili versioni precedenti", "No path specified" => "Nessun percorso specificato", -"History" => "Cronologia", -"Revert a file to a previous version by clicking on its revert button" => "Ripristina un file a una versione precedente facendo clic sul rispettivo pulsante di ripristino", -"Files Versioning" => "Controllo di versione dei file", -"Enable" => "Abilita" +"Versions" => "Versioni", +"Revert a file to a previous version by clicking on its revert button" => "Ripristina un file a una versione precedente facendo clic sul rispettivo pulsante di ripristino" ); diff --git a/apps/files_versions/l10n/ja_JP.php b/apps/files_versions/l10n/ja_JP.php index 1601876570..0c2dbd401c 100644 --- a/apps/files_versions/l10n/ja_JP.php +++ b/apps/files_versions/l10n/ja_JP.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "ファイル %s をバージョン %s に戻せませんでした", "No old versions available" => "利用可能な古いバージョンはありません", "No path specified" => "パスが指定されていません", -"History" => "履歴", -"Revert a file to a previous version by clicking on its revert button" => "もとに戻すボタンをクリックすると、ファイルを過去のバージョンに戻します", -"Files Versioning" => "ファイルのバージョン管理", -"Enable" => "有効化" +"Versions" => "バージョン", +"Revert a file to a previous version by clicking on its revert button" => "もとに戻すボタンをクリックすると、ファイルを過去のバージョンに戻します" ); diff --git a/apps/files_versions/l10n/lv.php b/apps/files_versions/l10n/lv.php index 2203dc706b..bf8d40fa0f 100644 --- a/apps/files_versions/l10n/lv.php +++ b/apps/files_versions/l10n/lv.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Datni %s nevarēja atgriezt uz versiju %s", "No old versions available" => "Nav pieejamu vecāku versiju", "No path specified" => "Nav norādīts ceļš", -"History" => "Vēsture", -"Revert a file to a previous version by clicking on its revert button" => "Atgriez datni uz iepriekšēju versiju, spiežot uz tās atgriešanas pogu", -"Files Versioning" => "Datņu versiju izskošana", -"Enable" => "Aktivēt" +"Versions" => "Versijas", +"Revert a file to a previous version by clicking on its revert button" => "Atgriez datni uz iepriekšēju versiju, spiežot uz tās atgriešanas pogu" ); diff --git a/apps/files_versions/l10n/mk.php b/apps/files_versions/l10n/mk.php index d3ec233fe4..6a1882c2bf 100644 --- a/apps/files_versions/l10n/mk.php +++ b/apps/files_versions/l10n/mk.php @@ -1,5 +1,3 @@ "Историја", -"Files Versioning" => "Верзии на датотеки", -"Enable" => "Овозможи" +"Versions" => "Версии" ); diff --git a/apps/files_versions/l10n/nl.php b/apps/files_versions/l10n/nl.php index fb1cfc3533..9208852212 100644 --- a/apps/files_versions/l10n/nl.php +++ b/apps/files_versions/l10n/nl.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Bestand %s kon niet worden teruggedraaid naar versie %s", "No old versions available" => "Geen oudere versies beschikbaar", "No path specified" => "Geen pad opgegeven", -"History" => "Geschiedenis", -"Revert a file to a previous version by clicking on its revert button" => "Draai een bestand terug naar een voorgaande versie door te klikken op de terugdraai knop", -"Files Versioning" => "Bestand versies", -"Enable" => "Activeer" +"Versions" => "Versies", +"Revert a file to a previous version by clicking on its revert button" => "Draai een bestand terug naar een voorgaande versie door te klikken op de terugdraai knop" ); diff --git a/apps/files_versions/l10n/pl.php b/apps/files_versions/l10n/pl.php index ae3bfc4a84..68944e8676 100644 --- a/apps/files_versions/l10n/pl.php +++ b/apps/files_versions/l10n/pl.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Plik %s nie mógł być przywrócony do wersji %s", "No old versions available" => "Nie są dostępne żadne starsze wersje", "No path specified" => "Nie podano ścieżki", -"History" => "Historia", -"Revert a file to a previous version by clicking on its revert button" => "Przywróć plik do poprzedniej wersji klikając w jego przycisk przywrócenia", -"Files Versioning" => "Wersjonowanie plików", -"Enable" => "Włącz" +"Versions" => "Wersje", +"Revert a file to a previous version by clicking on its revert button" => "Przywróć plik do poprzedniej wersji klikając w jego przycisk przywrócenia" ); diff --git a/apps/files_versions/l10n/pt_BR.php b/apps/files_versions/l10n/pt_BR.php index 9ce509c653..f13b7931d4 100644 --- a/apps/files_versions/l10n/pt_BR.php +++ b/apps/files_versions/l10n/pt_BR.php @@ -1,13 +1,11 @@ "Não foi possível reverter: %s", +"Could not revert: %s" => "Impossível reverter: %s", "success" => "sucesso", "File %s was reverted to version %s" => "Arquivo %s revertido à versão %s", "failure" => "falha", "File %s could not be reverted to version %s" => "Arquivo %s não pôde ser revertido à versão %s", "No old versions available" => "Nenhuma versão antiga disponível", "No path specified" => "Nenhum caminho especificado", -"History" => "Histórico", -"Revert a file to a previous version by clicking on its revert button" => "Reverta um arquivo a uma versão anterior clicando no botão reverter", -"Files Versioning" => "Versionamento de Arquivos", -"Enable" => "Habilitar" +"Versions" => "Versões", +"Revert a file to a previous version by clicking on its revert button" => "Reverta um arquivo a uma versão anterior clicando no botão reverter" ); diff --git a/apps/files_versions/l10n/pt_PT.php b/apps/files_versions/l10n/pt_PT.php index 629809f955..9337954729 100644 --- a/apps/files_versions/l10n/pt_PT.php +++ b/apps/files_versions/l10n/pt_PT.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Não foi possível reverter o ficheiro %s para a versão %s", "No old versions available" => "Não existem versões mais antigas", "No path specified" => "Nenhum caminho especificado", -"History" => "Histórico", -"Revert a file to a previous version by clicking on its revert button" => "Reverter um ficheiro para uma versão anterior clicando no seu botão reverter.", -"Files Versioning" => "Versionamento de Ficheiros", -"Enable" => "Activar" +"Versions" => "Versões", +"Revert a file to a previous version by clicking on its revert button" => "Reverter um ficheiro para uma versão anterior clicando no seu botão reverter." ); diff --git a/apps/files_versions/l10n/ru.php b/apps/files_versions/l10n/ru.php index 221d24ce8d..7377fbb538 100644 --- a/apps/files_versions/l10n/ru.php +++ b/apps/files_versions/l10n/ru.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Файл %s не может быть возвращён к версии %s", "No old versions available" => "Нет доступных старых версий", "No path specified" => "Путь не указан", -"History" => "История", -"Revert a file to a previous version by clicking on its revert button" => "Вернуть файл к предыдущей версии нажатием на кнопку возврата", -"Files Versioning" => "Версии файлов", -"Enable" => "Включить" +"Versions" => "Версии", +"Revert a file to a previous version by clicking on its revert button" => "Вернуть файл к предыдущей версии нажатием на кнопку возврата" ); diff --git a/apps/files_versions/l10n/sk_SK.php b/apps/files_versions/l10n/sk_SK.php index 8b46e93bb9..50e4af4d96 100644 --- a/apps/files_versions/l10n/sk_SK.php +++ b/apps/files_versions/l10n/sk_SK.php @@ -6,8 +6,6 @@ "File %s could not be reverted to version %s" => "Súbor %s nemohol byť obnovený na verziu %s", "No old versions available" => "Nie sú dostupné žiadne staršie verzie", "No path specified" => "Nevybrali ste cestu", -"History" => "História", -"Revert a file to a previous version by clicking on its revert button" => "Obnovte súbor do predošlej verzie kliknutím na tlačítko obnoviť", -"Files Versioning" => "Vytváranie verzií súborov", -"Enable" => "Zapnúť" +"Versions" => "Verzie", +"Revert a file to a previous version by clicking on its revert button" => "Obnovte súbor do predošlej verzie kliknutím na tlačítko obnoviť" ); diff --git a/apps/files_versions/l10n/sl.php b/apps/files_versions/l10n/sl.php index 7f386c9eda..b6ad6a1e9b 100644 --- a/apps/files_versions/l10n/sl.php +++ b/apps/files_versions/l10n/sl.php @@ -1,5 +1,3 @@ "Zgodovina", -"Files Versioning" => "Sledenje različicam", -"Enable" => "Omogoči" +"No old versions available" => "Starejših različic ni na voljo" ); diff --git a/apps/files_versions/l10n/sv.php b/apps/files_versions/l10n/sv.php index 853644848f..46e2c0f8bc 100644 --- a/apps/files_versions/l10n/sv.php +++ b/apps/files_versions/l10n/sv.php @@ -6,8 +6,5 @@ "File %s could not be reverted to version %s" => "Filen %s kunde inte återställas till version %s", "No old versions available" => "Inga gamla versioner finns tillgängliga", "No path specified" => "Ingen sökväg angiven", -"History" => "Historik", -"Revert a file to a previous version by clicking on its revert button" => "Återställ en fil till en tidigare version genom att klicka på knappen", -"Files Versioning" => "Versionshantering av filer", -"Enable" => "Aktivera" +"Revert a file to a previous version by clicking on its revert button" => "Återställ en fil till en tidigare version genom att klicka på knappen" ); diff --git a/apps/files_versions/l10n/tr.php b/apps/files_versions/l10n/tr.php index e9a4c4702e..745400d331 100644 --- a/apps/files_versions/l10n/tr.php +++ b/apps/files_versions/l10n/tr.php @@ -1,5 +1,10 @@ "Geçmiş", -"Files Versioning" => "Dosya Sürümleri", -"Enable" => "Etkinleştir" +"Could not revert: %s" => "Geri alınamıyor: %s", +"success" => "Başarılı.", +"File %s was reverted to version %s" => "Dosya %s, %s versiyonuna döndürüldü", +"failure" => "hata", +"File %s could not be reverted to version %s" => "Dosya %s, %s versiyonuna döndürülemedi.", +"No old versions available" => "Eski versiyonlar mevcut değil.", +"No path specified" => "Yama belirtilmemiş", +"Versions" => "Sürümler" ); diff --git a/apps/files_versions/l10n/uk.php b/apps/files_versions/l10n/uk.php index 49acda8107..e722d95497 100644 --- a/apps/files_versions/l10n/uk.php +++ b/apps/files_versions/l10n/uk.php @@ -1,5 +1,11 @@ "Історія", -"Files Versioning" => "Версії файлів", -"Enable" => "Включити" +"Could not revert: %s" => "Не вдалося відновити: %s", +"success" => "успішно", +"File %s was reverted to version %s" => "Файл %s був відновлений до версії %s", +"failure" => "неуспішно", +"File %s could not be reverted to version %s" => "Файл %s не може бути відновлений до версії %s", +"No old versions available" => "Старі версії недоступні", +"No path specified" => "Шлях не вказаний", +"Versions" => "Версії", +"Revert a file to a previous version by clicking on its revert button" => "Відновити файл на попередню версію, натиснувши на кнопку Відновити" ); diff --git a/apps/files_versions/l10n/vi.php b/apps/files_versions/l10n/vi.php index 675cb841c7..f2499e7bf3 100644 --- a/apps/files_versions/l10n/vi.php +++ b/apps/files_versions/l10n/vi.php @@ -6,8 +6,5 @@ "File %s could not be reverted to version %s" => "File %s không thể khôi phục về phiên bản %s", "No old versions available" => "Không có phiên bản cũ nào", "No path specified" => "Không chỉ ra đường dẫn rõ ràng", -"History" => "Lịch sử", -"Revert a file to a previous version by clicking on its revert button" => "Khôi phục một file về phiên bản trước đó bằng cách click vào nút Khôi phục tương ứng", -"Files Versioning" => "Phiên bản tập tin", -"Enable" => "Bật " +"Revert a file to a previous version by clicking on its revert button" => "Khôi phục một file về phiên bản trước đó bằng cách click vào nút Khôi phục tương ứng" ); diff --git a/apps/files_versions/l10n/zh_CN.php b/apps/files_versions/l10n/zh_CN.php index 14301ff0c0..65d0d284a0 100644 --- a/apps/files_versions/l10n/zh_CN.php +++ b/apps/files_versions/l10n/zh_CN.php @@ -1,5 +1,11 @@ "历史", -"Files Versioning" => "文件版本", -"Enable" => "开启" +"Could not revert: %s" => "无法恢复: %s", +"success" => "成功", +"File %s was reverted to version %s" => "文件 %s 已被恢复到历史版本 %s", +"failure" => "失败", +"File %s could not be reverted to version %s" => "文件 %s 无法被恢复到历史版本 %s", +"No old versions available" => "该文件没有历史版本", +"No path specified" => "未指定路径", +"Versions" => "版本", +"Revert a file to a previous version by clicking on its revert button" => "点击恢复按钮可将文件恢复到之前的版本" ); diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index dc02c605c4..7891b20e92 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -20,13 +20,10 @@ class Hooks { public static function write_hook( $params ) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - - $versions = new Storage( new \OC\Files\View('') ); - $path = $params[\OC\Files\Filesystem::signal_param_path]; - - if($path<>'') $versions->store( $path ); - + if($path<>'') { + Storage::store($path); + } } } @@ -40,13 +37,11 @@ class Hooks { */ public static function remove_hook($params) { 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 ); - + if($path<>'') { + Storage::delete($path); + } + } } @@ -59,15 +54,13 @@ class Hooks { */ public static function rename_hook($params) { 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 ); - + if($oldpath<>'' && $newpath<>'') { + Storage::rename( $oldpath, $newpath ); + } + } } - + } diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index f23381cb15..20611c61ec 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -19,53 +19,82 @@ class Storage { const DEFAULTENABLED=true; const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota - - 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 - '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 - 'step' => 86400), - 6 => array('intervalEndsAfter' => -1, //until the end one version per week - 'step' => 604800), - ); - private static function getUidAndFilename($filename) - { - if (\OCP\App::isEnabled('files_sharing') - && substr($filename, 0, 7) == '/Shared' - && $source = \OCP\Share::getItemSharedWith('file', - substr($filename, 7), - \OC_Share_Backend_File::FORMAT_SHARED_STORAGE)) { - $filename = $source['path']; - $pos = strpos($filename, '/files', 1); - $uid = substr($filename, 1, $pos - 1); - $filename = substr($filename, $pos + 6); - } else { - $uid = \OCP\User::getUser(); + private static $max_versions_per_interval = array( + //first 10sec, one version every 2sec + 1 => array('intervalEndsAfter' => 10, 'step' => 2), + //next minute, one version every 10sec + 2 => array('intervalEndsAfter' => 60, 'step' => 10), + //next hour, one version every minute + 3 => array('intervalEndsAfter' => 3600, 'step' => 60), + //next 24h, one version every hour + 4 => array('intervalEndsAfter' => 86400, 'step' => 3600), + //next 30days, one version per day + 5 => array('intervalEndsAfter' => 2592000, 'step' => 86400), + //until the end one version per week + 6 => array('intervalEndsAfter' => -1, 'step' => 604800), + ); + + public static function getUidAndFilename($filename) { + $uid = \OC\Files\Filesystem::getOwner($filename); + \OC\Files\Filesystem::initMountPoints($uid); + if ( $uid != \OCP\User::getUser() ) { + $info = \OC\Files\Filesystem::getFileInfo($filename); + $ownerView = new \OC\Files\View('/'.$uid.'/files'); + $filename = $ownerView->getPath($info['fileid']); } return array($uid, $filename); } + /** + * get current size of all versions from a given user + * + * @param $user user who owns the versions + * @return mixed versions size or false if no versions size is stored + */ + private static function getVersionsSize($user) { + $query = \OC_DB::prepare('SELECT size FROM *PREFIX*files_versions WHERE user=?'); + $result = $query->execute(array($user))->fetchAll(); + + if ($result) { + return $result[0]['size']; + } + return false; + } + + /** + * write to the database how much space is in use for versions + * + * @param $user owner of the versions + * @param $size size of the versions + */ + private static function setVersionsSize($user, $size) { + if ( self::getVersionsSize($user) === false) { + $query = \OC_DB::prepare('INSERT INTO *PREFIX*files_versions (size, user) VALUES (?, ?)'); + }else { + $query = \OC_DB::prepare('UPDATE *PREFIX*files_versions SET size=? WHERE user=?'); + } + $query->execute(array($size, $user)); + } + /** * store a new version of a file. */ - public function store($filename) { + public static function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - list($uid, $filename) = self::getUidAndFilename($filename); - $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? - if ($users_view->file_exists($filename)) { - return false; + + // if the file gets streamed we need to remove the .part extension + // to get the right target + $ext = pathinfo($filename, PATHINFO_EXTENSION); + if ($ext === 'part') { + $filename = substr($filename, 0, strlen($filename)-5); } + + list($uid, $filename) = self::getUidAndFilename($filename); + + $files_view = new \OC\Files\View('/'.$uid .'/files'); + $users_view = new \OC\Files\View('/'.$uid); + $versions_view = new \OC\Files\View('/'.$uid.'/files_versions'); // check if filename is a directory if($files_view->is_dir($filename)) { @@ -79,23 +108,25 @@ class Storage { // create all parent folders $info=pathinfo($filename); - $versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$users_view->getAbsolutePath('files_versions/'); + $versionsFolderName=$versions_view->getLocalFolder(''); if(!file_exists($versionsFolderName.'/'.$info['dirname'])) { mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true); } // 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 ) { + $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); + $versionsSize = self::getVersionsSize($uid); + if ( $versionsSize === false || $versionsSize < 0 ) { $versionsSize = self::calculateSize($uid); } + $versionsSize += $users_view->filesize('files'.$filename); - + // expire old revisions if necessary $newSize = self::expire($filename, $versionsSize); - + if ( $newSize != $versionsSize ) { - \OCP\Config::setAppValue('files_versions', 'size', $versionsSize); + self::setVersionsSize($uid, $newSize); } } } @@ -106,43 +137,43 @@ class Storage { */ public static function delete($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 ) { + $versions_fileview = new \OC\Files\View('/'.$uid .'/files_versions'); + + $abs_path = $versions_fileview->getLocalFile($filename.'.v'); + if( ($versions = self::getVersions($uid, $filename)) ) { + $versionsSize = self::getVersionsSize($uid); + if ( $versionsSize === false || $versionsSize < 0 ) { $versionsSize = self::calculateSize($uid); } foreach ($versions as $v) { unlink($abs_path . $v['version']); $versionsSize -= $v['size']; } - \OCP\Config::setAppValue('files_versions', 'size', $versionsSize); + self::setVersionsSize($uid, $versionsSize); } } - + /** * rename versions of a file */ public static function rename($oldpath, $newpath) { list($uid, $oldpath) = self::getUidAndFilename($oldpath); 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; - + $versions_view = new \OC\Files\View('/'.$uid .'/files_versions'); + $files_view = new \OC\Files\View('/'.$uid .'/files'); + $abs_newpath = $versions_view->getLocalFile($newpath); + if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) { $versions_view->rename($oldpath, $newpath); - } else if ( ($versions = Storage::getVersions($oldpath)) ) { + } else if ( ($versions = Storage::getVersions($uid, $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']); } } } - + /** * rollback to an old version of a file. */ @@ -152,14 +183,14 @@ class Storage { list($uid, $filename) = self::getUidAndFilename($filename); $users_view = new \OC\Files\View('/'.$uid); $versionCreated = false; - + //first create a new version $version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename); if ( !$users_view->file_exists($version)) { $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); $versionCreated = true; } - + // rollback if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) { $users_view->touch('files'.$filename, $revision); @@ -177,27 +208,27 @@ class Storage { /** * @brief get a list of all available versions of a file in descending chronological order + * @param $uid user id from the owner of the file * @param $filename file to find versions of, relative to the user files dir * @param $count number of versions to return * @returns array */ - public static function getVersions( $filename, $count = 0 ) { + public static function getVersions($uid, $filename, $count = 0 ) { if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) { - list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC\Files\View('/' . \OCP\User::getUser() . '/files_versions'); - - $versionsName = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); + $versions_fileview = new \OC\Files\View('/' . $uid . '/files_versions'); + $versionsName = $versions_fileview->getLocalFile($filename); + $versions = array(); // fetch for old versions - $matches = glob( $versionsName.'.v*' ); - + $matches = glob(preg_quote($versionsName).'.v*' ); + if ( !$matches ) { return $versions; } sort( $matches ); - $files_view = new \OC_FilesystemView('/'.$uid.'/files'); + $files_view = new \OC\Files\View('/'.$uid.'/files'); $local_file = $files_view->getLocalFile($filename); $local_file_md5 = \md5_file( $local_file ); @@ -248,24 +279,27 @@ class Storage { */ 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); - + $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); + $versionsRoot = $versions_fileview->getLocalFolder(''); + + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($versionsRoot), + \RecursiveIteratorIterator::CHILD_FIRST + ); + $size = 0; - + foreach ($iterator as $path) { if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) { $relpath = substr($path, strlen($versionsRoot)-1); $size += $versions_fileview->filesize($relpath); } } - + return $size; } } - + /** * @brief returns all stored file versions from a given user * @param $uid id to the user @@ -273,26 +307,29 @@ class Storage { */ private static function getAllVersions($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); - + $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); + $versionsRoot = $versions_fileview->getLocalFolder(''); + + $iterator = new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($versionsRoot), + \RecursiveIteratorIterator::CHILD_FIRST + ); + $versions = array(); - + foreach ($iterator as $path) { if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) { $relpath = substr($path, strlen($versionsRoot)-1); $versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]); } } - + ksort($versions); - + $i = 0; - + $result = array(); - + foreach( $versions as $key => $value ) { $i++; $size = $versions_fileview->filesize($value['path']); @@ -301,14 +338,14 @@ class Storage { $result['all'][$key]['version'] = $value['timestamp']; $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]['size'] = $size; - + } - + return $result; } } @@ -318,68 +355,71 @@ class Storage { */ private static function expire($filename, $versionsSize = null) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { - list($uid, $filename) = self::getUidAndFilename($filename); - $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions'); - + list($uid, $filename) = self::getUidAndFilename($filename); + $versions_fileview = new \OC\Files\View('/'.$uid.'/files_versions'); + // get available disk space for user - $quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota')); - if ( $quota == null ) { - $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota')); + $quota = \OC_Preferences::getValue($uid, 'files', 'quota'); + if ( $quota === null || $quota === 'default') { + $quota = \OC_Appconfig::getValue('files', 'default_quota'); } - if ( $quota == null ) { - $quota = \OC\Files\Filesystem::free_space('/'); + if ( $quota === null || $quota === 'none' ) { + $quota = \OC\Files\Filesystem::free_space('/') / count(\OCP\User::getUsers()); + } else { + $quota = \OCP\Util::computerFileSize($quota); } // make sure that we have the current size of the version history if ( $versionsSize === null ) { - if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) { + $versionsSize = self::getVersionsSize($uid); + if ( $versionsSize === false || $versionsSize < 0 ) { $versionsSize = self::calculateSize($uid); } } // calculate available space for version history - $files_view = new \OC_FilesystemView('/'.$uid.'/files'); + $files_view = new \OC\Files\View('/'.$uid.'/files'); $rootInfo = $files_view->getFileInfo('/'); $free = $quota-$rootInfo['size']; // remaining free space for user if ( $free > 0 ) { $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions } else { $availableSpace = $free-$versionsSize; - } + } - // after every 1000s run reduce the number of all versions not only for the current file + // after every 1000s run reduce the number of all versions not only for the current file $random = rand(0, 1000); if ($random == 0) { $result = Storage::getAllVersions($uid); $versions_by_file = $result['by_file']; $all_versions = $result['all']; } else { - $all_versions = Storage::getVersions($filename); + $all_versions = Storage::getVersions($uid, $filename); $versions_by_file[$filename] = $all_versions; } - + $time = time(); - + // it is possible to expire versions from more than one file // iterate through all given files foreach ($versions_by_file as $filename => $versions) { $versions = array_reverse($versions); // newest version first - + $interval = 1; - $step = Storage::$max_versions_per_interval[$interval]['step']; + $step = Storage::$max_versions_per_interval[$interval]['step']; if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) { $nextInterval = -1; } else { $nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter']; } - + $firstVersion = reset($versions); $firstKey = key($versions); $prevTimestamp = $firstVersion['version']; $nextVersion = $firstVersion['version'] - $step; $remaining_versions[$firstKey] = $firstVersion; unset($versions[$firstKey]); - + foreach ($versions as $key => $version) { $newInterval = true; while ( $newInterval ) { @@ -409,22 +449,22 @@ class Storage { $prevTimestamp = $version['version']; } } - - // check if enough space is available after versions are rearranged. - // if not we delete the oldest versions until we meet the size limit for versions - $numOfVersions = count($all_versions); - $i = 0; - while ($availableSpace < 0) { - if ($i = $numOfVersions-2) break; // keep at least the last version + + // Check if enough space is available after versions are rearranged. + // If not we delete the oldest versions until we meet the size limit for versions, + // but always keep the two latest versions + $numOfVersions = count($all_versions) -2 ; + $i = 0; + while ($availableSpace < 0 && $i < $numOfVersions) { $versions_fileview->unlink($all_versions[$i]['path'].'.v'.$all_versions[$i]['version']); $versionsSize -= $all_versions[$i]['size']; $availableSpace += $all_versions[$i]['size']; $i++; } - + return $versionsSize; // finally return the new size of the version history } - + return false; } } diff --git a/apps/files_versions/settings.php b/apps/files_versions/settings.php deleted file mode 100644 index f2873b8f7c..0000000000 --- a/apps/files_versions/settings.php +++ /dev/null @@ -1,9 +0,0 @@ -fetchPage(); diff --git a/apps/files_versions/templates/history.php b/apps/files_versions/templates/history.php index 850ece89c9..f728443904 100644 --- a/apps/files_versions/templates/history.php +++ b/apps/files_versions/templates/history.php @@ -5,28 +5,29 @@ if( isset( $_['message'] ) ) { - if( isset($_['path'] ) ) echo('File: '.$_['path'] ).'
'; - echo(''.$_['message'] ).'
'; + if( isset($_['path'] ) ) print_unescaped('File: '.OC_Util::sanitizeHTML($_['path'])).'
'; + print_unescaped(''.OC_Util::sanitizeHTML($_['message']) ).'
'; }else{ if( isset( $_['outcome_stat'] ) ) { - echo( '

'.$_['outcome_msg'] ).'


'; + print_unescaped( '

'.OC_Util::sanitizeHTML($_['outcome_msg']) ).'


'; } - echo( 'Versions of '.$_['path'] ).'
'; - echo('

'.$l->t('Revert a file to a previous version by clicking on its revert button').'


'); + print_unescaped( 'Versions of '.OC_Util::sanitizeHTML($_['path']) ).'
'; + print_unescaped('

'.OC_Util::sanitizeHTML($l->t('Revert a file to a previous version by clicking on its revert button')).'


'); foreach ( $_['versions'] as $v ) { - echo ' '; - echo OCP\Util::formatDate( doubleval($v['version']) ); - echo '
Revert

'; + p(' '); + p(OCP\Util::formatDate( doubleval($v['version']))); + print_unescaped(' Revert

'); if ( $v['cur'] ) { - echo ' (Current)'; + print_unescaped(' (Current)'); } - echo '

'; + print_unescaped('

'); } } diff --git a/apps/files_versions/templates/settings.php b/apps/files_versions/templates/settings.php deleted file mode 100644 index bfca8366f5..0000000000 --- a/apps/files_versions/templates/settings.php +++ /dev/null @@ -1,6 +0,0 @@ -
-
- t('Files Versioning');?> - />
-
-
diff --git a/apps/user_ldap/ajax/testConfiguration.php b/apps/user_ldap/ajax/testConfiguration.php index f8038e3146..7ce1258a79 100644 --- a/apps/user_ldap/ajax/testConfiguration.php +++ b/apps/user_ldap/ajax/testConfiguration.php @@ -32,10 +32,13 @@ $connection = new \OCA\user_ldap\lib\Connection('', null); if($connection->setConfiguration($_POST)) { //Configuration is okay if($connection->bind()) { - OCP\JSON::success(array('message' => $l->t('The configuration is valid and the connection could be established!'))); + OCP\JSON::success(array('message' + => $l->t('The configuration is valid and the connection could be established!'))); } else { - OCP\JSON::error(array('message' => $l->t('The configuration is valid, but the Bind failed. Please check the server settings and credentials.'))); + OCP\JSON::error(array('message' + => $l->t('The configuration is valid, but the Bind failed. Please check the server settings and credentials.'))); } } else { - OCP\JSON::error(array('message' => $l->t('The configuration is invalid. Please look in the ownCloud log for further details.'))); + OCP\JSON::error(array('message' + => $l->t('The configuration is invalid. Please look in the ownCloud log for further details.'))); } diff --git a/apps/user_ldap/appinfo/app.php b/apps/user_ldap/appinfo/app.php index dec87684c9..89410b5ef0 100644 --- a/apps/user_ldap/appinfo/app.php +++ b/apps/user_ldap/appinfo/app.php @@ -51,5 +51,7 @@ $entry = array( OCP\Backgroundjob::addRegularTask('OCA\user_ldap\lib\Jobs', 'updateGroups'); if(OCP\App::isEnabled('user_webdavauth')) { - OCP\Util::writeLog('user_ldap', 'user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour', OCP\Util::WARN); + OCP\Util::writeLog('user_ldap', + 'user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour', + OCP\Util::WARN); } diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml index 53269edfb3..148a72cecb 100644 --- a/apps/user_ldap/appinfo/info.xml +++ b/apps/user_ldap/appinfo/info.xml @@ -2,12 +2,14 @@ user_ldap LDAP user and group backend - Authenticate users and groups by LDAP resp. Active Directoy. + Authenticate users and groups by LDAP respectively Active + Directory. - This app is not compatible to the WebDAV user backend. + This app is not compatible with the WebDAV user backend. + AGPL Dominik Schmidt and Arthur Schiwon - 4.91 + 4.93 true diff --git a/apps/user_ldap/appinfo/update.php b/apps/user_ldap/appinfo/update.php index bc32d4ef4c..2fcbf1902a 100644 --- a/apps/user_ldap/appinfo/update.php +++ b/apps/user_ldap/appinfo/update.php @@ -58,7 +58,9 @@ foreach($objects as $object) { try { $updateQuery->execute(array($newDN, $uuid, $dn['ldap_dn'])); } catch(Exception $e) { - \OCP\Util::writeLog('user_ldap', 'Could not update '.$object.' '.$dn['ldap_dn'].' in the mappings table. ', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'Could not update '.$object.' '.$dn['ldap_dn'].' in the mappings table. ', + \OCP\Util::WARN); } } diff --git a/apps/user_ldap/appinfo/version b/apps/user_ldap/appinfo/version index e4d93c8d61..e619108dd6 100644 --- a/apps/user_ldap/appinfo/version +++ b/apps/user_ldap/appinfo/version @@ -1 +1 @@ -0.3.9.4 \ No newline at end of file +0.3.9.5 \ No newline at end of file diff --git a/apps/user_ldap/group_ldap.php b/apps/user_ldap/group_ldap.php index 02ceecaea0..efa5f8b4fe 100644 --- a/apps/user_ldap/group_ldap.php +++ b/apps/user_ldap/group_ldap.php @@ -177,7 +177,8 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { if($isMemberUid) { //we got uids, need to get their DNs to 'tranlsate' them to usernames $filter = $this->combineFilterWithAnd(array( - \OCP\Util::mb_str_replace('%uid', $member, $this->connection>ldapLoginFilter, 'UTF-8'), + \OCP\Util::mb_str_replace('%uid', $member, + $this->connection>ldapLoginFilter, 'UTF-8'), $this->getFilterPartForUserSearch($search) )); $ldap_users = $this->fetchListOfUsers($filter, 'dn'); @@ -188,7 +189,9 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { } else { //we got DNs, check if we need to filter by search or we can give back all of them if(!empty($search)) { - if(!$this->readAttribute($member, $this->connection->ldapUserDisplayName, $this->getFilterPartForUserSearch($search))) { + if(!$this->readAttribute($member, + $this->connection->ldapUserDisplayName, + $this->getFilterPartForUserSearch($search))) { continue; } } @@ -206,6 +209,19 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { return $groupUsers; } + /** + * @brief get a list of all display names in a group + * @returns array with display names (value) and user ids(key) + */ + public function displayNamesInGroup($gid, $search, $limit, $offset) { + $users = $this->usersInGroup($gid, $search, $limit, $offset); + $displayNames = array(); + foreach($users as $user) { + $displayNames[$user] = \OC_User::getDisplayName($user); + } + return $displayNames; + } + /** * @brief get a list of all groups * @returns array with group names @@ -225,7 +241,8 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { return $ldap_groups; } - // if we'd pass -1 to LDAP search, we'd end up in a Protocol error. With a limit of 0, we get 0 results. So we pass null. + // if we'd pass -1 to LDAP search, we'd end up in a Protocol + // error. With a limit of 0, we get 0 results. So we pass null. if($limit <= 0) { $limit = null; } @@ -234,7 +251,8 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { $this->getFilterPartForGroupSearch($search) )); \OCP\Util::writeLog('user_ldap', 'getGroups Filter '.$filter, \OCP\Util::DEBUG); - $ldap_groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName, 'dn'), $limit, $offset); + $ldap_groups = $this->fetchListOfGroups($filter, array($this->connection->ldapGroupDisplayName, 'dn'), + $limit, $offset); $ldap_groups = $this->ownCloudGroupNames($ldap_groups); $this->connection->writeToCache($cachekey, $ldap_groups); @@ -282,7 +300,6 @@ class GROUP_LDAP extends lib\Access implements \OCP\GroupInterface { * compared with OC_USER_BACKEND_CREATE_USER etc. */ public function implementsActions($actions) { - //always returns false, because possible actions are modifying actions. We do not write to LDAP, at least for now. - return false; + return (bool)(OC_GROUP_BACKEND_GET_DISPLAYNAME & $actions); } -} \ No newline at end of file +} diff --git a/apps/user_ldap/group_proxy.php b/apps/user_ldap/group_proxy.php index 5aa1aef0e0..68d2efe387 100644 --- a/apps/user_ldap/group_proxy.php +++ b/apps/user_ldap/group_proxy.php @@ -135,6 +135,22 @@ class Group_Proxy extends lib\Proxy implements \OCP\GroupInterface { return $users; } + /** + * @brief get a list of all display names in a group + * @returns array with display names (value) and user ids(key) + */ + public function displayNamesInGroup($gid, $search, $limit, $offset) { + $displayNames = array(); + + foreach($this->backends as $backend) { + $backendUsers = $backend->displayNamesInGroup($gid, $search, $limit, $offset); + if (is_array($backendUsers)) { + $displayNames = array_merge($displayNames, $backendUsers); + } + } + return $displayNames; + } + /** * @brief get a list of all groups * @returns array with group names diff --git a/apps/user_ldap/l10n/ca.php b/apps/user_ldap/l10n/ca.php index e4f27e25a7..abdecb164e 100644 --- a/apps/user_ldap/l10n/ca.php +++ b/apps/user_ldap/l10n/ca.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Desactiva la validació de certificat SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la connexió només funciona amb aquesta opció, importeu el certificat SSL del servidor LDAP en el vostre servidor ownCloud.", "Not recommended, use for testing only." => "No recomanat, ús només per proves.", +"Cache Time-To-Live" => "Memòria de cau Time-To-Live", "in seconds. A change empties the cache." => "en segons. Un canvi buidarà la memòria de cau.", "Directory Settings" => "Arranjaments de carpetes", "User Display Name Field" => "Camp per mostrar el nom d'usuari", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Atributs de cerca de grup", "Group-Member association" => "Associació membres-grup", "Special Attributes" => "Atributs especials", +"Quota Field" => "Camp de quota", +"Quota Default" => "Quota per defecte", "in bytes" => "en bytes", +"Email Field" => "Camp de correu electrònic", +"User Home Folder Naming Rule" => "Norma per anomenar la carpeta arrel d'usuari", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixeu-ho buit pel nom d'usuari (per defecte). Altrament, especifiqueu un atribut LDAP/AD.", +"Test Configuration" => "Comprovació de la configuració", "Help" => "Ajuda" ); diff --git a/apps/user_ldap/l10n/cs_CZ.php b/apps/user_ldap/l10n/cs_CZ.php index 4c74f195cf..c5d77026b9 100644 --- a/apps/user_ldap/l10n/cs_CZ.php +++ b/apps/user_ldap/l10n/cs_CZ.php @@ -1,5 +1,5 @@ "Selhalo smazání konfigurace serveru", +"Failed to delete the server configuration" => "Selhalo smazání nastavení serveru", "The configuration is valid and the connection could be established!" => "Nastavení je v pořádku a spojení bylo navázáno.", "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurace je v pořádku, ale spojení selhalo. Zkontrolujte, prosím, nastavení serveru a přihlašovací údaje.", "The configuration is invalid. Please look in the ownCloud log for further details." => "Nastavení je neplatné. Zkontrolujte, prosím, záznam ownCloud pro další podrobnosti.", @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Vypnout ověřování SSL certifikátu.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Pokud připojení pracuje pouze s touto možností, tak importujte SSL certifikát SSL serveru do Vašeho serveru ownCloud", "Not recommended, use for testing only." => "Není doporučeno, pouze pro testovací účely.", +"Cache Time-To-Live" => "TTL vyrovnávací paměti", "in seconds. A change empties the cache." => "ve vteřinách. Změna vyprázdní vyrovnávací paměť.", "Directory Settings" => "Nastavení adresáře", "User Display Name Field" => "Pole pro zobrazované jméno uživatele", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Atributy vyhledávání skupin", "Group-Member association" => "Asociace člena skupiny", "Special Attributes" => "Speciální atributy", +"Quota Field" => "Pole pro kvótu", +"Quota Default" => "Výchozí kvóta", "in bytes" => "v bajtech", +"Email Field" => "Pole e-mailu", +"User Home Folder Naming Rule" => "Pravidlo pojmenování domovské složky uživatele", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Ponechte prázdné pro uživatelské jméno (výchozí). Jinak uveďte LDAP/AD parametr.", +"Test Configuration" => "Vyzkoušet nastavení", "Help" => "Nápověda" ); diff --git a/apps/user_ldap/l10n/de.php b/apps/user_ldap/l10n/de.php index a1da7d49cb..6217a6d482 100644 --- a/apps/user_ldap/l10n/de.php +++ b/apps/user_ldap/l10n/de.php @@ -12,7 +12,7 @@ "Do you really want to delete the current Server Configuration?" => "Wollen Sie die aktuelle Serverkonfiguration wirklich löschen?", "Confirm Deletion" => "Löschung bestätigen", "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 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 nicht installiert ist, wird das Backend nicht funktionieren. Bitte Deinen Systemadministrator das Modul zu installieren.", "Server configuration" => "Serverkonfiguration", "Add Server Configuration" => "Serverkonfiguration hinzufügen", "Host" => "Host", @@ -38,12 +38,12 @@ "When unchecked, this configuration will be skipped." => "Konfiguration wird übersprungen wenn deaktiviert", "Port" => "Port", "Backup (Replica) Host" => "Backup Host (Kopie)", -"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Gib einen optionalen Backup Host an. Es muss sich um eine kopie des Haupt LDAP/AD Servers handeln.", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Gib einen optionalen Backup Host an. Es muss sich um eine Kopie des Haupt LDAP/AD Servers handeln.", "Backup (Replica) Port" => "Backup Port", "Disable Main Server" => "Hauptserver deaktivieren", -"When switched on, ownCloud will only connect to the replica server." => "Wenn aktiviert wird ownCloud ausschließlich den Backupserver verwenden", +"When switched on, ownCloud will only connect to the replica server." => "Wenn aktiviert, wird ownCloud ausschließlich den Backupserver verwenden.", "Use TLS" => "Nutze TLS", -"Do not use it additionally for LDAPS connections, it will fail." => "Benutze es nicht zusätzlich für LDAPS Verbindungen, es wird scheitern.", +"Do not use it additionally for LDAPS connections, it will fail." => "Benutze es nicht zusammen mit LDAPS Verbindungen, es wird fehlschlagen.", "Case insensitve LDAP server (Windows)" => "LDAP-Server (Windows: Groß- und Kleinschreibung bleibt unbeachtet)", "Turn off SSL certificate validation." => "Schalte die SSL-Zertifikatsprüfung aus.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Falls die Verbindung es erfordert, muss das SSL-Zertifikat des LDAP-Server importiert werden.", @@ -55,7 +55,7 @@ "Base User Tree" => "Basis-Benutzerbaum", "One User Base DN per line" => "Ein Benutzer Base DN pro Zeile", "User Search Attributes" => "Benutzersucheigenschaften", -"Optional; one attribute per line" => "Optional, eine Eigenschaft pro Zeile", +"Optional; one attribute per line" => "Optional; eine Eigenschaft pro Zeile", "Group Display Name Field" => "Feld für den Anzeigenamen der Gruppe", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Das LDAP-Attribut für die Generierung des Gruppennamens in ownCloud. ", "Base Group Tree" => "Basis-Gruppenbaum", diff --git a/apps/user_ldap/l10n/de_DE.php b/apps/user_ldap/l10n/de_DE.php index 69faf5dc45..bff7b0312c 100644 --- a/apps/user_ldap/l10n/de_DE.php +++ b/apps/user_ldap/l10n/de_DE.php @@ -1,20 +1,20 @@ "Das Löschen der Server-Konfiguration schlug fehl", -"The configuration is valid and the connection could be established!" => "Die Konfiguration ist valide und eine Verbindung konnte hergestellt werden!", -"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Die Konfiguration ist valide, aber das Herstellen einer Verbindung schlug fehl. Bitte überprüfen Sie die Server-Einstellungen und Zertifikate.", -"The configuration is invalid. Please look in the ownCloud log for further details." => "Die Konfiguration ist nicht valide. Weitere Details können Sie im ownCloud-Log nachlesen.", +"The configuration is valid and the connection could be established!" => "Die Konfiguration ist gültig und die Verbindung konnte hergestellt werden!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Die Konfiguration ist gültig, aber das Herstellen der Verbindung schlug fehl. Bitte überprüfen Sie die Server-Einstellungen und Zertifikate.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Die Konfiguration ist ungültig. Weitere Details können Sie im ownCloud-Log nachlesen.", "Deletion failed" => "Löschen fehlgeschlagen", -"Take over settings from recent server configuration?" => "Sollen die Einstellungen der letzten Server-Konfiguration übernommen werden?", +"Take over settings from recent server configuration?" => "Sollen die Einstellungen der letzten Serverkonfiguration übernommen werden?", "Keep settings?" => "Einstellungen behalten?", -"Cannot add server configuration" => "Das Hinzufügen der Server-Konfiguration schlug fehl", -"Connection test succeeded" => "Verbindungs-Test erfolgreich", -"Connection test failed" => "Verbindungs-Test fehlgeschlagen", -"Do you really want to delete the current Server Configuration?" => "Möchten Sie wirklich die Server-Konfiguration löschen?", +"Cannot add server configuration" => "Das Hinzufügen der Serverkonfiguration schlug fehl", +"Connection test succeeded" => "Verbindungstest erfolgreich", +"Connection test failed" => "Verbindungstest fehlgeschlagen", +"Do you really want to delete the current Server Configuration?" => "Möchten Sie die Serverkonfiguration wirklich löschen?", "Confirm Deletion" => "Löschung bestätigen", "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 ist nicht installiert, das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.", -"Server configuration" => "Server-Konfiguration", -"Add Server Configuration" => "Server-Konfiguration hinzufügen", +"Server configuration" => "Serverkonfiguration", +"Add Server Configuration" => "Serverkonfiguration hinzufügen", "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", @@ -33,37 +33,43 @@ "Group Filter" => "Gruppen-Filter", "Defines the filter to apply, when retrieving groups." => "Definiert den Filter für die Anfrage der Gruppen.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "ohne Platzhalter, z.B.: \"objectClass=posixGroup\"", -"Connection Settings" => "Verbindungs-Einstellungen", +"Connection Settings" => "Verbindungseinstellungen", "Configuration Active" => "Konfiguration aktiv", "When unchecked, this configuration will be skipped." => "Wenn nicht angehakt, wird diese Konfiguration übersprungen.", "Port" => "Port", "Backup (Replica) Host" => "Back-Up (Replikation) Host", -"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Optionaler Backup Host. Es muss ein Replikat des eigentlichen LDAP/AD Servers sein.", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Geben Sie einen optionalen Backup Host an. Es muss ein Replikat des Haupt- LDAP/AD Servers sein.", "Backup (Replica) Port" => "Back-Up (Replikation) Port", "Disable Main Server" => "Hauptserver deaktivieren", -"When switched on, ownCloud will only connect to the replica server." => "Wenn eingeschaltet wird sich ownCloud nur mit dem Replilat-Server verbinden.", +"When switched on, ownCloud will only connect to the replica server." => "Wenn eingeschaltet wird sich die ownCloud nur mit dem Replikat-Server verbinden.", "Use TLS" => "Nutze TLS", -"Do not use it additionally for LDAPS connections, it will fail." => "Benutze es nicht zusätzlich für LDAPS Verbindungen, es wird scheitern.", +"Do not use it additionally for LDAPS connections, it will fail." => "Benutzen Sie es nicht in Verbindung mit LDAPS Verbindungen, es wird fehlschlagen.", "Case insensitve LDAP server (Windows)" => "LDAP-Server (Windows: Groß- und Kleinschreibung bleibt unbeachtet)", "Turn off SSL certificate validation." => "Schalten Sie die SSL-Zertifikatsprüfung aus.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Falls die Verbindung es erfordert, muss das SSL-Zertifikat des LDAP-Server importiert werden.", "Not recommended, use for testing only." => "Nicht empfohlen, nur zu Testzwecken.", +"Cache Time-To-Live" => "Speichere Time-To-Live zwischen", "in seconds. A change empties the cache." => "in Sekunden. Eine Änderung leert den Cache.", -"Directory Settings" => "Verzeichnis-Einstellungen", +"Directory Settings" => "Verzeichniseinstellungen", "User Display Name Field" => "Feld für den Anzeigenamen des Benutzers", "The LDAP attribute to use to generate the user`s ownCloud name." => "Das LDAP-Attribut für die Generierung des Benutzernamens in ownCloud. ", "Base User Tree" => "Basis-Benutzerbaum", "One User Base DN per line" => "Ein Benutzer Base DN pro Zeile", "User Search Attributes" => "Benutzer-Suche Eigenschaften", -"Optional; one attribute per line" => "Optional; Ein Attribut pro Zeile", +"Optional; one attribute per line" => "Optional; ein Attribut pro Zeile", "Group Display Name Field" => "Feld für den Anzeigenamen der Gruppe", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Das LDAP-Attribut für die Generierung des Gruppennamens in ownCloud. ", "Base Group Tree" => "Basis-Gruppenbaum", "One Group Base DN per line" => "Ein Gruppen Base DN pro Zeile", "Group Search Attributes" => "Gruppen-Suche Eigenschaften", "Group-Member association" => "Assoziation zwischen Gruppe und Benutzer", -"Special Attributes" => "besondere Eigenschaften", +"Special Attributes" => "Besondere Eigenschaften", +"Quota Field" => "Kontingent Feld", +"Quota Default" => "Kontingent Standard", "in bytes" => "in Bytes", +"Email Field" => "E-Mail Feld", +"User Home Folder Naming Rule" => "Benennungsregel für das Heimatverzeichnis des Benutzers", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Ohne Eingabe wird der Benutzername (Standard) verwendet. Anderenfall trage ein LDAP/AD-Attribut ein.", +"Test Configuration" => "Testkonfiguration", "Help" => "Hilfe" ); diff --git a/apps/user_ldap/l10n/el.php b/apps/user_ldap/l10n/el.php index 7c0940dc09..96ec818043 100644 --- a/apps/user_ldap/l10n/el.php +++ b/apps/user_ldap/l10n/el.php @@ -1,6 +1,19 @@ "Αποτυχία διαγραφής ρυθμίσεων διακομιστή", +"The configuration is valid and the connection could be established!" => "Οι ρυθμίσεις είναι έγκυρες και η σύνδεση μπορεί να πραγματοποιηθεί!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Οι ρυθμίσεις είναι έγκυρες, αλλά απέτυχε η σύνδεση. Παρακαλώ ελέγξτε τις ρυθμίσεις του διακομιστή και τα διαπιστευτήρια.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Μη έγκυρες ρυθμίσεις. Παρακαλώ ελέγξτε τις καταγραφές του ownCloud για περισσότερες λεπτομέρειες.", "Deletion failed" => "Η διαγραφή απέτυχε", +"Keep settings?" => "Διατήρηση ρυθμίσεων;", +"Cannot add server configuration" => "Αδυναμία προσθήκης ρυθμίσεων διακομιστή", +"Connection test succeeded" => "Επιτυχημένη δοκιμαστική σύνδεση", +"Connection test failed" => "Αποτυχημένη δοκιμαστική σύνδεσης.", +"Do you really want to delete the current Server Configuration?" => "Θέλετε να διαγράψετε τις τρέχουσες ρυθμίσεις του διακομιστή;", +"Confirm Deletion" => "Επιβεβαίωση Διαγραφής", "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 δεν είναι εγκατεστημένο και το σύστημα υποστήριξης δεν θα δουλέψει. Παρακαλώ ζητήστε από τον διαχειριστή συστήματος να το εγκαταστήσει.", +"Server configuration" => "Ρυθμίσεις Διακομιστή", +"Add Server Configuration" => "Προσθήκη Ρυθμίσεων Διακομιστή", "Host" => "Διακομιστής", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Μπορείτε να παραλείψετε το πρωτόκολλο, εκτός αν απαιτείται SSL. Σε αυτή την περίπτωση ξεκινήστε με ldaps://", "Base DN" => "Base DN", @@ -18,6 +31,7 @@ "Group Filter" => "Group Filter", "Defines the filter to apply, when retrieving groups." => "Καθορίζει το φίλτρο που θα ισχύει κατά την ανάκτηση ομάδων.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "χωρίς κάποια μεταβλητή, π.χ. \"objectClass=ΟμάδαPosix\".", +"Connection Settings" => "Ρυθμίσεις Σύνδεσης", "Port" => "Θύρα", "Use TLS" => "Χρήση TLS", "Case insensitve LDAP server (Windows)" => "LDAP server (Windows) με διάκριση πεζών-ΚΕΦΑΛΑΙΩΝ", @@ -25,6 +39,7 @@ "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Εάν η σύνδεση δουλεύει μόνο με αυτή την επιλογή, εισάγετε το LDAP SSL πιστοποιητικό του διακομιστή στον ownCloud server σας.", "Not recommended, use for testing only." => "Δεν προτείνεται, χρήση μόνο για δοκιμές.", "in seconds. A change empties the cache." => "σε δευτερόλεπτα. Μια αλλαγή αδειάζει την μνήμη cache.", +"Directory Settings" => "Ρυθμίσεις Καταλόγου", "User Display Name Field" => "Πεδίο Ονόματος Χρήστη", "The LDAP attribute to use to generate the user`s ownCloud name." => "Η ιδιότητα LDAP που θα χρησιμοποιείται για τη δημιουργία του ονόματος χρήστη του ownCloud.", "Base User Tree" => "Base User Tree", diff --git a/apps/user_ldap/l10n/es.php b/apps/user_ldap/l10n/es.php index c0a444c0c7..1f0f92e7ac 100644 --- a/apps/user_ldap/l10n/es.php +++ b/apps/user_ldap/l10n/es.php @@ -15,7 +15,7 @@ "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Advertencia: El módulo LDAP de PHP no está instalado, el sistema no funcionará. Por favor consulte al administrador del sistema para instalarlo.", "Server configuration" => "Configuración del Servidor", "Add Server Configuration" => "Agregar configuracion del servidor", -"Host" => "Máquina", +"Host" => "Servidor", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Puede omitir el protocolo, excepto si requiere SSL. En ese caso, empiece con ldaps://", "Base DN" => "DN base", "One Base DN per line" => "Un DN Base por línea", @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Apagar la validación por certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Si la conexión sólo funciona con esta opción, importe el certificado SSL del servidor LDAP en su servidor ownCloud.", "Not recommended, use for testing only." => "No recomendado, sólo para pruebas.", +"Cache Time-To-Live" => "Cache TTL", "in seconds. A change empties the cache." => "en segundos. Un cambio vacía la cache.", "Directory Settings" => "Configuracion de directorio", "User Display Name Field" => "Campo de nombre de usuario a mostrar", @@ -63,7 +64,11 @@ "Group Search Attributes" => "Atributos de busqueda de grupo", "Group-Member association" => "Asociación Grupo-Miembro", "Special Attributes" => "Atributos especiales", +"Quota Field" => "Cuota", +"Quota Default" => "Cuota por defecto", "in bytes" => "en bytes", +"Email Field" => "E-mail", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Vacío para el nombre de usuario (por defecto). En otro caso, especifique un atributo LDAP/AD.", +"Test Configuration" => "Configuración de prueba", "Help" => "Ayuda" ); diff --git a/apps/user_ldap/l10n/eu.php b/apps/user_ldap/l10n/eu.php index 7ab4d00e75..5e9fd014c6 100644 --- a/apps/user_ldap/l10n/eu.php +++ b/apps/user_ldap/l10n/eu.php @@ -4,6 +4,7 @@ "The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurazioa ongi dago, baina Bind-ek huts egin du. Mesedez egiaztatu zerbitzariaren ezarpenak eta kredentzialak.", "The configuration is invalid. Please look in the ownCloud log for further details." => "Konfigurazioa ez dago ongi. Mesedez ikusi ownCloud-en egunerokoa informazio gehiago eskuratzeko.", "Deletion failed" => "Ezabaketak huts egin du", +"Take over settings from recent server configuration?" => "oraintsuko zerbitzariaren konfigurazioaren ezarpenen ardura hartu?", "Keep settings?" => "Mantendu ezarpenak?", "Cannot add server configuration" => "Ezin da zerbitzariaren konfigurazioa gehitu", "Connection test succeeded" => "Konexio froga ongi burutu da", @@ -47,6 +48,7 @@ "Turn off SSL certificate validation." => "Ezgaitu SSL ziurtagirien egiaztapena.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Konexioa aukera hau ezinbestekoa badu, inportatu LDAP zerbitzariaren SSL ziurtagiria zure ownCloud zerbitzarian.", "Not recommended, use for testing only." => "Ez da aholkatzen, erabili bakarrik frogak egiteko.", +"Cache Time-To-Live" => "Katxearen Bizi-Iraupena", "in seconds. A change empties the cache." => "segundutan. Aldaketak katxea husten du.", "Directory Settings" => "Karpetaren Ezarpenak", "User Display Name Field" => "Erabiltzaileen bistaratzeko izena duen eremua", @@ -62,7 +64,12 @@ "Group Search Attributes" => "Taldekatu Bilaketa Atributuak ", "Group-Member association" => "Talde-Kide elkarketak", "Special Attributes" => "Atributu Bereziak", +"Quota Field" => "Kuota Eremua", +"Quota Default" => "Kuota Lehenetsia", "in bytes" => "bytetan", +"Email Field" => "Eposta eremua", +"User Home Folder Naming Rule" => "Erabiltzailearen Karpeta Nagusia Izendatzeko Patroia", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Utzi hutsik erabiltzaile izenarako (lehentsia). Bestela zehaztu LDAP/AD atributua.", +"Test Configuration" => "Egiaztatu Konfigurazioa", "Help" => "Laguntza" ); diff --git a/apps/user_ldap/l10n/gl.php b/apps/user_ldap/l10n/gl.php index 36c1f7af11..deb6dbb555 100644 --- a/apps/user_ldap/l10n/gl.php +++ b/apps/user_ldap/l10n/gl.php @@ -1,9 +1,24 @@ "Non foi posíbel eliminar a configuración do servidor", +"The configuration is valid and the connection could be established!" => "A configuración é correcta e pode estabelecerse a conexión.", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "A configuración é correcta, mais a ligazón non. Comprobe a configuración do servidor e as credenciais.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "A configuración non é correcta. Vexa o rexistro de ownCloud para máis detalles", "Deletion failed" => "Fallou o borrado", +"Take over settings from recent server configuration?" => "Tomar os recentes axustes de configuración do servidor?", +"Keep settings?" => "Manter os axustes?", +"Cannot add server configuration" => "Non é posíbel engadir a configuración do servidor", +"Connection test succeeded" => "A proba de conexión foi satisfactoria", +"Connection test failed" => "A proba de conexión fracasou", +"Do you really want to delete the current Server Configuration?" => "Confirma que quere eliminar a configuración actual do servidor?", +"Confirm Deletion" => "Confirmar a eliminación", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Aviso: Os aplicativos user_ldap e user_webdavauth son incompatíbeis. Pode acontecer un comportamento estraño. Consulte co administrador do sistema para desactivar un deles.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Aviso: O módulo PHP LDAP non está instalado, o servidor non funcionará. Consulte co administrador do sistema para instalalo.", +"Server configuration" => "Configuración do servidor", +"Add Server Configuration" => "Engadir a configuración do servidor", "Host" => "Servidor", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Pode omitir o protocolo agás que precise de SSL. Nese caso comece con ldaps://", "Base DN" => "DN base", +"One Base DN per line" => "Un DN base por liña", "You can specify Base DN for users and groups in the Advanced tab" => "Pode especificar a DN base para usuarios e grupos na lapela de «Avanzado»", "User DN" => "DN do 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." => "O DN do cliente do usuario co que hai que estabelecer unha conexión, p.ex uid=axente, dc=exemplo, dc=com. Para o acceso anónimo deixe o DN e o contrasinal baleiros.", @@ -18,21 +33,43 @@ "Group Filter" => "Filtro de grupo", "Defines the filter to apply, when retrieving groups." => "Define o filtro a aplicar cando se recompilan os grupos.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sen ningunha marca de posición, como p.ex «objectClass=grupoPosix».", +"Connection Settings" => "Axustes da conexión", +"Configuration Active" => "Configuración activa", +"When unchecked, this configuration will be skipped." => "Se está sen marcar, omítese esta configuración.", "Port" => "Porto", +"Backup (Replica) Host" => "Servidor da copia de seguranza (Réplica)", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Indicar un servidor de copia de seguranza opcional. Debe ser unha réplica do servidor principal LDAP/AD.", +"Backup (Replica) Port" => "Porto da copia de seguranza (Réplica)", +"Disable Main Server" => "Desactivar o servidor principal", +"When switched on, ownCloud will only connect to the replica server." => "Cando está activado, ownCloud só se conectará ao servidor de réplica.", "Use TLS" => "Usar TLS", +"Do not use it additionally for LDAPS connections, it will fail." => "Non utilizalo ademais para conexións LDAPS xa que fallará.", "Case insensitve LDAP server (Windows)" => "Servidor LDAP que non distingue entre maiúsculas e minúsculas (Windows)", "Turn off SSL certificate validation." => "Desactiva a validación do certificado SSL.", -"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexión só funciona con esta opción importa o certificado SSL do servidor LDAP no seu servidor ownCloud.", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexión só funciona con esta opción importe o certificado SSL do servidor LDAP no seu servidor ownCloud.", "Not recommended, use for testing only." => "Non se recomenda. Só para probas.", +"Cache Time-To-Live" => "Tempo de persistencia da caché", "in seconds. A change empties the cache." => "en segundos. Calquera cambio baleira a caché.", +"Directory Settings" => "Axustes do directorio", "User Display Name Field" => "Campo de mostra do nome de usuario", "The LDAP attribute to use to generate the user`s ownCloud name." => "O atributo LDAP a empregar para xerar o nome de usuario de ownCloud.", "Base User Tree" => "Base da árbore de usuarios", +"One User Base DN per line" => "Un DN base de usuario por liña", +"User Search Attributes" => "Atributos de busca do usuario", +"Optional; one attribute per line" => "Opcional; un atributo por liña", "Group Display Name Field" => "Campo de mostra do nome de grupo", "The LDAP attribute to use to generate the groups`s ownCloud name." => "O atributo LDAP úsase para xerar os nomes dos grupos de ownCloud.", "Base Group Tree" => "Base da árbore de grupo", +"One Group Base DN per line" => "Un DN base de grupo por liña", +"Group Search Attributes" => "Atributos de busca do grupo", "Group-Member association" => "Asociación de grupos e membros", +"Special Attributes" => "Atributos especiais", +"Quota Field" => "Campo de cota", +"Quota Default" => "Cota predeterminada", "in bytes" => "en bytes", +"Email Field" => "Campo do correo", +"User Home Folder Naming Rule" => "Regra de nomeado do cartafol do usuario", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixar baleiro para o nome de usuario (predeterminado). Noutro caso, especifique un atributo LDAP/AD.", +"Test Configuration" => "Probar a configuración", "Help" => "Axuda" ); diff --git a/apps/user_ldap/l10n/he.php b/apps/user_ldap/l10n/he.php index 5c563b7b6f..c9b0e282f1 100644 --- a/apps/user_ldap/l10n/he.php +++ b/apps/user_ldap/l10n/he.php @@ -7,6 +7,7 @@ "User Login Filter" => "סנן כניסת משתמש", "User List Filter" => "סנן רשימת משתמשים", "Group Filter" => "סנן קבוצה", +"Port" => "פורט", "in seconds. A change empties the cache." => "בשניות. שינוי מרוקן את המטמון.", "in bytes" => "בבתים", "Help" => "עזרה" diff --git a/apps/user_ldap/l10n/hu_HU.php b/apps/user_ldap/l10n/hu_HU.php index c7dfc125d7..a82a64ab32 100644 --- a/apps/user_ldap/l10n/hu_HU.php +++ b/apps/user_ldap/l10n/hu_HU.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Ne ellenőrizzük az SSL-tanúsítvány érvényességét", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Ha a kapcsolat csak ezzel a beállítással működik, akkor importálja az LDAP-kiszolgáló SSL tanúsítványát az ownCloud kiszolgálóra!", "Not recommended, use for testing only." => "Nem javasolt, csak tesztelésre érdemes használni.", +"Cache Time-To-Live" => "A gyorsítótár tárolási időtartama", "in seconds. A change empties the cache." => "másodpercben. A változtatás törli a cache tartalmát.", "Directory Settings" => "Címtár beállítások", "User Display Name Field" => "A felhasználónév mezője", @@ -63,7 +64,12 @@ "Group Search Attributes" => "A csoportok lekérdezett attribútumai", "Group-Member association" => "A csoporttagság attribútuma", "Special Attributes" => "Különleges attribútumok", +"Quota Field" => "Kvóta mező", +"Quota Default" => "Alapértelmezett kvóta", "in bytes" => "bájtban", +"Email Field" => "Email mező", +"User Home Folder Naming Rule" => "A home könyvtár elérési útvonala", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Hagyja üresen, ha a felhasználónevet kívánja használni. Ellenkező esetben adjon meg egy LDAP/AD attribútumot!", +"Test Configuration" => "A beállítások tesztelése", "Help" => "Súgó" ); diff --git a/apps/user_ldap/l10n/id.php b/apps/user_ldap/l10n/id.php index c07892386d..5912789c85 100644 --- a/apps/user_ldap/l10n/id.php +++ b/apps/user_ldap/l10n/id.php @@ -1,14 +1,69 @@ "Gagal menghapus konfigurasi server", +"The configuration is valid and the connection could be established!" => "Konfigurasi valid dan koneksi dapat dilakukan!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurasi valid, tetapi Bind gagal. Silakan cek pengaturan server dan keamanan.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Konfigurasi salah. Silakan lihat log ownCloud untuk lengkapnya.", "Deletion failed" => "penghapusan gagal", +"Take over settings from recent server configuration?" => "Ambil alih pengaturan dari konfigurasi server saat ini?", +"Keep settings?" => "Biarkan pengaturan?", +"Cannot add server configuration" => "Gagal menambah konfigurasi server", +"Connection test succeeded" => "Tes koneksi sukses", +"Connection test failed" => "Tes koneksi gagal", +"Do you really want to delete the current Server Configuration?" => "Anda ingin menghapus Konfigurasi Server saat ini?", +"Confirm Deletion" => "Konfirmasi Penghapusan", +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Peringatan:/b> Aplikasi user_ldap dan user_webdavauth tidak kompatibel. Anda mungkin akan mengalami kejadian yang tidak diharapkan. Silakan minta administrator sistem untuk menonaktifkan salah satunya.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Peringatan: Modul LDAP PHP tidak terpasang, perangkat tidak akan bekerja. Silakan minta administrator sistem untuk memasangnya.", +"Server configuration" => "Konfigurasi server", +"Add Server Configuration" => "Tambah Konfigurasi Server", "Host" => "host", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokol dapat tidak ditulis, kecuali anda menggunakan SSL. Lalu jalankan dengan ldaps://", +"Base DN" => "Base DN", +"One Base DN per line" => "Satu Base DN per baris", +"You can specify Base DN for users and groups in the Advanced tab" => "Anda dapat menetapkan Base DN untuk pengguna dan grup dalam tab Lanjutan", +"User DN" => "User 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 dari klien pengguna yang dengannya tautan akan diterapkan, mis. uid=agen,dc=contoh,dc=com. Untuk akses anonim, biarkan DN dan kata sandi kosong.", "Password" => "kata kunci", +"For anonymous access, leave DN and Password empty." => "Untuk akses anonim, biarkan DN dan Kata sandi kosong.", "User Login Filter" => "gunakan saringan login", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Definisikan filter untuk diterapkan, saat login dilakukan. %%uid menggantikan username saat login.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "gunakan pengganti %%uid, mis. \"uid=%%uid\"", +"User List Filter" => "Daftar Filter Pengguna", +"Defines the filter to apply, when retrieving users." => "Definisikan filter untuk diterapkan saat menerima pengguna.", +"without any placeholder, e.g. \"objectClass=person\"." => "tanpa pengganti apapun, mis. \"objectClass=seseorang\".", "Group Filter" => "saringan grup", +"Defines the filter to apply, when retrieving groups." => "Definisikan filter untuk diterapkan saat menerima grup.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "tanpa pengganti apapaun, mis. \"objectClass=posixGroup\".", +"Connection Settings" => "Pengaturan Koneksi", +"Configuration Active" => "Konfigurasi Aktif", +"When unchecked, this configuration will be skipped." => "Jika tidak dicentang, konfigurasi ini dilewati.", "Port" => "port", +"Backup (Replica) Host" => "Host Cadangan (Replika)", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Berikan pilihan host cadangan. Harus merupakan replika dari server LDAP/AD utama.", +"Backup (Replica) Port" => "Port Cadangan (Replika)", +"Disable Main Server" => "Nonaktifkan Server Utama", +"When switched on, ownCloud will only connect to the replica server." => "Saat diaktifkan, ownCloud hanya akan terhubung ke server replika.", "Use TLS" => "gunakan TLS", +"Do not use it additionally for LDAPS connections, it will fail." => "Jangan gunakan utamanya untuk koneksi LDAPS, koneksi akan gagal.", +"Case insensitve LDAP server (Windows)" => "Server LDAP dengan kapitalisasi tidak sensitif (Windows)", "Turn off SSL certificate validation." => "matikan validasi sertivikat SSL", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Jika koneksi hanya bekerja dengan opsi ini, impor sertifikat SSL server LDAP dari server ownCloud anda.", "Not recommended, use for testing only." => "tidak disarankan, gunakan hanya untuk pengujian.", "in seconds. A change empties the cache." => "dalam detik. perubahan mengosongkan cache", +"Directory Settings" => "Pengaturan Direktori", +"User Display Name Field" => "Bidang Tampilan Nama Pengguna", +"The LDAP attribute to use to generate the user`s ownCloud name." => "Atribut LDAP yang digunakan untuk menghasilkan nama pengguna ownCloud.", +"Base User Tree" => "Pohon Pengguna Dasar", +"One User Base DN per line" => "Satu Pengguna Base DN per baris", +"User Search Attributes" => "Atribut Pencarian Pengguna", +"Optional; one attribute per line" => "Pilihan; satu atribut per baris", +"Group Display Name Field" => "Bidang Tampilan Nama Grup", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "Atribut LDAP yang digunakan untuk menghasilkan nama grup ownCloud.", +"Base Group Tree" => "Pohon Grup Dasar", +"One Group Base DN per line" => "Satu Grup Base DN per baris", +"Group Search Attributes" => "Atribut Pencarian Grup", +"Group-Member association" => "asosiasi Anggota-Grup", +"Special Attributes" => "Atribut Khusus", "in bytes" => "dalam bytes", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Biarkan nama pengguna kosong (default). Atau tetapkan atribut LDAP/AD.", "Help" => "bantuan" ); diff --git a/apps/user_ldap/l10n/it.php b/apps/user_ldap/l10n/it.php index 594529190d..a2790fd1de 100644 --- a/apps/user_ldap/l10n/it.php +++ b/apps/user_ldap/l10n/it.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Disattiva il controllo del certificato SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se la connessione funziona esclusivamente con questa opzione, importa il certificato SSL del server LDAP nel tuo server ownCloud.", "Not recommended, use for testing only." => "Non consigliato, utilizzare solo per test.", +"Cache Time-To-Live" => "Tempo di vita della cache", "in seconds. A change empties the cache." => "in secondi. Il cambio svuota la cache.", "Directory Settings" => "Impostazioni delle cartelle", "User Display Name Field" => "Campo per la visualizzazione del nome utente", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Attributi di ricerca gruppo", "Group-Member association" => "Associazione gruppo-utente ", "Special Attributes" => "Attributi speciali", +"Quota Field" => "Campo Quota", +"Quota Default" => "Quota predefinita", "in bytes" => "in byte", +"Email Field" => "Campo Email", +"User Home Folder Naming Rule" => "Regola di assegnazione del nome della cartella utente", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Lascia vuoto per il nome utente (predefinito). Altrimenti, specifica un attributo LDAP/AD.", +"Test Configuration" => "Prova configurazione", "Help" => "Aiuto" ); diff --git a/apps/user_ldap/l10n/ja_JP.php b/apps/user_ldap/l10n/ja_JP.php index 11ad6cc7a3..3ae7d2e639 100644 --- a/apps/user_ldap/l10n/ja_JP.php +++ b/apps/user_ldap/l10n/ja_JP.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "SSL証明書の確認を無効にする。", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "接続がこのオプションでのみ動作する場合は、LDAPサーバのSSL証明書をownCloudサーバにインポートしてください。", "Not recommended, use for testing only." => "推奨しません、テスト目的でのみ利用してください。", +"Cache Time-To-Live" => "キャッシュのTTL", "in seconds. A change empties the cache." => "秒。変更後にキャッシュがクリアされます。", "Directory Settings" => "ディレクトリ設定", "User Display Name Field" => "ユーザ表示名のフィールド", @@ -63,7 +64,12 @@ "Group Search Attributes" => "グループ検索属性", "Group-Member association" => "グループとメンバーの関連付け", "Special Attributes" => "特殊属性", +"Quota Field" => "クォータフィールド", +"Quota Default" => "クォータのデフォルト", "in bytes" => "バイト", +"Email Field" => "メールフィールド", +"User Home Folder Naming Rule" => "ユーザのホームフォルダ命名規則", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "ユーザ名を空のままにしてください(デフォルト)。そうでない場合は、LDAPもしくはADの属性を指定してください。", +"Test Configuration" => "テスト設定", "Help" => "ヘルプ" ); diff --git a/apps/user_ldap/l10n/ka.php b/apps/user_ldap/l10n/ka.php new file mode 100644 index 0000000000..169926283e --- /dev/null +++ b/apps/user_ldap/l10n/ka.php @@ -0,0 +1,4 @@ + "პაროლი", +"Help" => "შველა" +); diff --git a/apps/user_ldap/l10n/my_MM.php b/apps/user_ldap/l10n/my_MM.php new file mode 100644 index 0000000000..ee8d3dd26f --- /dev/null +++ b/apps/user_ldap/l10n/my_MM.php @@ -0,0 +1,4 @@ + "စကားဝှက်", +"Help" => "အကူအညီ" +); diff --git a/apps/user_ldap/l10n/nb_NO.php b/apps/user_ldap/l10n/nb_NO.php index 8aab71354b..c4700245f2 100644 --- a/apps/user_ldap/l10n/nb_NO.php +++ b/apps/user_ldap/l10n/nb_NO.php @@ -1,11 +1,58 @@ "Sletting feilet", +"Failed to delete the server configuration" => "Klarte ikke å slette tjener-konfigurasjonen.", +"The configuration is valid and the connection could be established!" => "Konfigurasjonen er i orden og tilkoblingen skal være etablert!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfigurasjonen er i orden, men Bind mislyktes. Vennligst sjekk tjener-konfigurasjonen og påloggingsinformasjonen.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Konfigurasjonen er ikke i orden. Vennligst se ownClouds logfil for flere detaljer.", +"Deletion failed" => "Sletting mislyktes", +"Take over settings from recent server configuration?" => "Hent innstillinger fra tidligere tjener-konfigurasjon?", +"Keep settings?" => "Behold innstillinger?", +"Cannot add server configuration" => "Kan ikke legge til tjener-konfigurasjon", +"Connection test succeeded" => "Tilkoblingstest lyktes", +"Connection test failed" => "Tilkoblingstest mislyktes", +"Do you really want to delete the current Server Configuration?" => "Er du sikker på at du vil slette aktiv tjener-konfigurasjon?", +"Confirm Deletion" => "Bekreft sletting", +"Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Advarsel:Apps user_ldap og user_webdavauth er ikke kompatible. Du kan oppleve uventet atferd fra systemet. Vennligst spør din system-administrator om å deaktivere en av dem.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Warning: PHP LDAP modulen er ikke installert, hjelperen vil ikke virke. Vennligst be din system-administrator om å installere den.", +"Server configuration" => "Tjener-konfigurasjon", +"Add Server Configuration" => "Legg til tjener-konfigurasjon", +"Host" => "Tjener", +"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Du kan utelate protokollen, men du er påkrevd å bruke SSL. Deretter starte med ldaps://", +"Base DN" => "Base DN", +"One Base DN per line" => "En hoved DN pr. linje", +"You can specify Base DN for users and groups in the Advanced tab" => "Du kan spesifisere Base DN for brukere og grupper under Avansert fanen", +"User DN" => "Bruker 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 nummeret til klienten som skal bindes til, f.eks. uid=agent,dc=example,dc=com. For anonym tilgang, la DN- og passord-feltet stå tomt.", "Password" => "Passord", +"For anonymous access, leave DN and Password empty." => "For anonym tilgang, la DN- og passord-feltet stå tomt.", +"User Login Filter" => "Brukerpålogging filter", +"Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Definerer filteret som skal brukes når et påloggingsforsøk blir utført. %%uid erstatter brukernavnet i innloggingshandlingen.", +"use %%uid placeholder, e.g. \"uid=%%uid\"" => "bruk %%uid plassholder, f.eks. \"uid=%%uid\"", +"User List Filter" => "Brukerliste filter", +"Defines the filter to apply, when retrieving users." => "Definerer filteret som skal brukes, når systemet innhenter brukere.", +"without any placeholder, e.g. \"objectClass=person\"." => "uten noe plassholder, f.eks. \"objectClass=person\".", "Group Filter" => "Gruppefilter", +"Defines the filter to apply, when retrieving groups." => "Definerer filteret som skal brukes, når systemet innhenter grupper.", +"without any placeholder, e.g. \"objectClass=posixGroup\"." => "uten noe plassholder, f.eks. \"objectClass=posixGroup\".", +"Configuration Active" => "Konfigurasjon aktiv", +"When unchecked, this configuration will be skipped." => "Når ikke huket av så vil denne konfigurasjonen bli hoppet over.", "Port" => "Port", +"Backup (Replica) Host" => "Sikkerhetskopierings (Replica) vert", "Use TLS" => "Bruk TLS", +"Case insensitve LDAP server (Windows)" => "Case-insensitiv LDAP tjener (Windows)", +"Turn off SSL certificate validation." => "Slå av SSL-sertifikat validering", +"If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Hvis tilgang kun fungerer med dette alternativet, importer LDAP-tjenerens SSL-sertifikat til din egen ownCloud tjener.", "Not recommended, use for testing only." => "Ikke anbefalt, bruk kun for testing", "in seconds. A change empties the cache." => "i sekunder. En endring tømmer bufferen.", +"User Display Name Field" => "Vis brukerens navnfelt", +"The LDAP attribute to use to generate the user`s ownCloud name." => "LDAP-attributen å bruke for å generere brukers ownCloud navn.", +"Base User Tree" => "Hovedbruker tre", +"One User Base DN per line" => "En Bruker Base DN pr. linje", +"Group Display Name Field" => "Vis gruppens navnfelt", +"The LDAP attribute to use to generate the groups`s ownCloud name." => "LDAP-attributen å bruke for å generere gruppens ownCloud navn.", +"Base Group Tree" => "Hovedgruppe tre", +"One Group Base DN per line" => "En gruppe hoved-DN pr. linje", +"Group-Member association" => "gruppe-medlem assosiasjon", "in bytes" => "i bytes", +"Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "La stå tom for brukernavn (standard). Ellers, spesifiser en LDAP/AD attributt.", "Help" => "Hjelp" ); diff --git a/apps/user_ldap/l10n/nl.php b/apps/user_ldap/l10n/nl.php index 0eda263aa1..7973c66cd1 100644 --- a/apps/user_ldap/l10n/nl.php +++ b/apps/user_ldap/l10n/nl.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Schakel SSL certificaat validatie uit.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Als de connectie alleen werkt met deze optie, importeer dan het LDAP server SSL certificaat naar je ownCloud server.", "Not recommended, use for testing only." => "Niet aangeraden, gebruik alleen voor test doeleinden.", +"Cache Time-To-Live" => "Cache time-to-live", "in seconds. A change empties the cache." => "in seconden. Een verandering maakt de cache leeg.", "Directory Settings" => "Mapinstellingen", "User Display Name Field" => "Gebruikers Schermnaam Veld", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Attributen voor groepszoekopdrachten", "Group-Member association" => "Groepslid associatie", "Special Attributes" => "Speciale attributen", +"Quota Field" => "Quota veld", +"Quota Default" => "Quota standaard", "in bytes" => "in bytes", +"Email Field" => "E-mailveld", +"User Home Folder Naming Rule" => "Gebruikers Home map naamgevingsregel", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Laat leeg voor de gebruikersnaam (standaard). Of, specificeer een LDAP/AD attribuut.", +"Test Configuration" => "Test configuratie", "Help" => "Help" ); diff --git a/apps/user_ldap/l10n/pl.php b/apps/user_ldap/l10n/pl.php index ef3f9140ef..776aa445e4 100644 --- a/apps/user_ldap/l10n/pl.php +++ b/apps/user_ldap/l10n/pl.php @@ -1,9 +1,24 @@ "Nie można usunąć konfiguracji serwera", +"The configuration is valid and the connection could be established!" => "Konfiguracja jest prawidłowa i można ustanowić połączenie!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "Konfiguracja jest prawidłowa, ale Bind nie. Sprawdź ustawienia serwera i poświadczenia.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "Konfiguracja jest nieprawidłowa. Proszę przejrzeć logi dziennika ownCloud ", "Deletion failed" => "Skasowanie nie powiodło się", +"Take over settings from recent server configuration?" => "Przejmij ustawienia z ostatnich konfiguracji serwera?", +"Keep settings?" => "Zachować ustawienia?", +"Cannot add server configuration" => "Nie można dodać konfiguracji serwera", +"Connection test succeeded" => "Test połączenia udany", +"Connection test failed" => "Test połączenia nie udany", +"Do you really want to delete the current Server Configuration?" => "Czy chcesz usunąć bieżącą konfigurację serwera?", +"Confirm Deletion" => "Potwierdź usunięcie", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Ostrzeżenie: Aplikacje user_ldap i user_webdavauth nie są kompatybilne. Mogą powodować nieoczekiwane zachowanie. Poproś administratora o wyłączenie jednej z nich.", +"Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Ostrzeżenie: Moduł PHP LDAP nie jest zainstalowany i nie będzie działał. Poproś administratora o włączenie go.", +"Server configuration" => "Konfiguracja servera", +"Add Server Configuration" => "Dodaj konfigurację servera", "Host" => "Host", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Można pominąć protokół, z wyjątkiem wymaganego protokołu SSL. Następnie uruchom z ldaps://", "Base DN" => "Baza DN", +"One Base DN per line" => "Jedna baza DN na linię", "You can specify Base DN for users and groups in the Advanced tab" => "Bazę DN można określić dla użytkowników i grup w karcie Zaawansowane", "User DN" => "Użytkownik 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 użytkownika klienta, z którym powiązanie wykonuje się, np. uid=agent,dc=example,dc=com. Dla dostępu anonimowego pozostawić DN i hasło puste", @@ -18,21 +33,43 @@ "Group Filter" => "Grupa filtrów", "Defines the filter to apply, when retrieving groups." => "Definiuje filtry do zastosowania, podczas pobierania grup.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez żadnych symboli zastępczych np. \"objectClass=posixGroup\".", +"Connection Settings" => "Konfiguracja połączeń", +"Configuration Active" => "Konfiguracja archiwum", +"When unchecked, this configuration will be skipped." => "Gdy niezaznaczone, ta konfiguracja zostanie pominięta.", "Port" => "Port", +"Backup (Replica) Host" => "Kopia zapasowa (repliki) host", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Dać opcjonalnie hosta kopii zapasowej . To musi być repliką głównego serwera LDAP/AD.", +"Backup (Replica) Port" => "Kopia zapasowa (repliki) Port", +"Disable Main Server" => "Wyłącz serwer główny", +"When switched on, ownCloud will only connect to the replica server." => "Po włączeniu, ownCloud tylko połączy się z serwerem repliki.", "Use TLS" => "Użyj TLS", +"Do not use it additionally for LDAPS connections, it will fail." => "Nie używaj go dodatkowo dla połączeń protokołu LDAPS, zakończy się niepowodzeniem.", "Case insensitve LDAP server (Windows)" => "Wielkość liter serwera LDAP (Windows)", "Turn off SSL certificate validation." => "Wyłączyć sprawdzanie poprawności certyfikatu SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Jeśli połączenie działa tylko z tą opcją, zaimportuj certyfikat SSL serwera LDAP w serwerze ownCloud.", "Not recommended, use for testing only." => "Niezalecane, użyj tylko testowo.", +"Cache Time-To-Live" => "Przechowuj czas życia", "in seconds. A change empties the cache." => "w sekundach. Zmiana opróżnia pamięć podręczną.", +"Directory Settings" => "Ustawienia katalogów", "User Display Name Field" => "Pole wyświetlanej nazwy użytkownika", "The LDAP attribute to use to generate the user`s ownCloud name." => "Atrybut LDAP służy do generowania nazwy użytkownika ownCloud.", "Base User Tree" => "Drzewo bazy użytkowników", +"One User Base DN per line" => "Jeden użytkownik Bazy DN na linię", +"User Search Attributes" => "Szukaj atrybutów", +"Optional; one attribute per line" => "Opcjonalnie; jeden atrybut w wierszu", "Group Display Name Field" => "Pole wyświetlanej nazwy grupy", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Atrybut LDAP służy do generowania nazwy grup ownCloud.", "Base Group Tree" => "Drzewo bazy grup", +"One Group Base DN per line" => "Jedna grupa bazy DN na linię", +"Group Search Attributes" => "Grupa atrybutów wyszukaj", "Group-Member association" => "Członek grupy stowarzyszenia", +"Special Attributes" => "Specjalne atrybuty", +"Quota Field" => "Pole przydziału", +"Quota Default" => "Przydział domyślny", "in bytes" => "w bajtach", +"Email Field" => "Pole email", +"User Home Folder Naming Rule" => "Reguły nazewnictwa folderu domowego użytkownika", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Pozostaw puste dla user name (domyślnie). W przeciwnym razie podaj atrybut LDAP/AD.", +"Test Configuration" => "Konfiguracja testowa", "Help" => "Pomoc" ); diff --git a/apps/user_ldap/l10n/pt_BR.php b/apps/user_ldap/l10n/pt_BR.php index dd4019fc35..a728ea15fd 100644 --- a/apps/user_ldap/l10n/pt_BR.php +++ b/apps/user_ldap/l10n/pt_BR.php @@ -1,12 +1,24 @@ "Falha ao deletar a configuração do servidor", +"The configuration is valid and the connection could be established!" => "A configuração é válida e a conexão foi estabelecida!", +"The configuration is valid, but the Bind failed. Please check the server settings and credentials." => "A configuração é válida, mas o Bind falhou. Confira as configurações do servidor e as credenciais.", +"The configuration is invalid. Please look in the ownCloud log for further details." => "A configuração é inválida. Leia o log do ownCloud para mais detalhes.", "Deletion failed" => "Remoção falhou", +"Take over settings from recent server configuration?" => "Tomar parámetros de recente configuração de servidor?", "Keep settings?" => "Manter ajustes?", +"Cannot add server configuration" => "Impossível adicionar a configuração do servidor", +"Connection test succeeded" => "Teste de conexão bem sucedida", +"Connection test failed" => "Teste de conexão falhou", +"Do you really want to delete the current Server Configuration?" => "Você quer realmente deletar as atuais Configurações de Servidor?", "Confirm Deletion" => "Confirmar Exclusão", "Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "Aviso: Os aplicativos user_ldap e user_webdavauth são incompatíveis. Você deverá experienciar comportamento inesperado. Por favor, peça ao seu administrador do sistema para desabilitar um deles.", "Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "Aviso: O módulo PHP LDAP não está instalado, o backend não funcionará. Por favor, peça ao seu administrador do sistema para instalá-lo.", -"Host" => "Host", +"Server configuration" => "Configuração de servidor", +"Add Server Configuration" => "Adicionar Configuração de Servidor", +"Host" => "Servidor", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Você pode omitir o protocolo, exceto quando requerer SSL. Então inicie com ldaps://", "Base DN" => "DN Base", +"One Base DN per line" => "Uma base DN por linha", "You can specify Base DN for users and groups in the Advanced tab" => "Você pode especificar DN Base para usuários e grupos na guia Avançada", "User DN" => "DN Usuário", "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." => "O DN do cliente usuário com qual a ligação deverá ser feita, ex. uid=agent,dc=example,dc=com. Para acesso anônimo, deixe DN e Senha vazios.", @@ -16,26 +28,48 @@ "Defines the filter to apply, when login is attempted. %%uid replaces the username in the login action." => "Define o filtro pra aplicar ao efetuar uma tentativa de login. %%uuid substitui o nome de usuário na ação de login.", "use %%uid placeholder, e.g. \"uid=%%uid\"" => "use %%uid placeholder, ex. \"uid=%%uid\"", "User List Filter" => "Filtro de Lista de Usuário", -"Defines the filter to apply, when retrieving users." => "Define filtro a aplicar ao obter usuários.", +"Defines the filter to apply, when retrieving users." => "Define filtro a ser aplicado ao obter usuários.", "without any placeholder, e.g. \"objectClass=person\"." => "sem nenhum espaço reservado, ex. \"objectClass=person\".", "Group Filter" => "Filtro de Grupo", "Defines the filter to apply, when retrieving groups." => "Define o filtro a aplicar ao obter grupos.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sem nenhum espaço reservado, ex. \"objectClass=posixGroup\"", +"Connection Settings" => "Configurações de Conexão", +"Configuration Active" => "Configuração ativa", +"When unchecked, this configuration will be skipped." => "Quando não marcada, esta configuração será ignorada.", "Port" => "Porta", +"Backup (Replica) Host" => "Servidor de Backup (Réplica)", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Defina um servidor de backup opcional. Ele deverá ser uma réplica do servidor LDAP/AD principal.", +"Backup (Replica) Port" => "Porta do Backup (Réplica)", +"Disable Main Server" => "Desativar Servidor Principal", +"When switched on, ownCloud will only connect to the replica server." => "Quando ativado, ownCloud somente se conectará ao servidor de réplica.", "Use TLS" => "Usar TLS", +"Do not use it additionally for LDAPS connections, it will fail." => "Não use adicionalmente para conexões LDAPS, pois falhará.", "Case insensitve LDAP server (Windows)" => "Servidor LDAP sensível à caixa alta (Windows)", "Turn off SSL certificate validation." => "Desligar validação de certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a conexão só funciona com essa opção, importe o certificado SSL do servidor LDAP no seu servidor ownCloud.", "Not recommended, use for testing only." => "Não recomendado, use somente para testes.", +"Cache Time-To-Live" => "Cache Time-To-Live", "in seconds. A change empties the cache." => "em segundos. Uma mudança esvaziará o cache.", +"Directory Settings" => "Configurações de Diretório", "User Display Name Field" => "Campo Nome de Exibição de Usuário", "The LDAP attribute to use to generate the user`s ownCloud name." => "O atributo LDAP para usar para gerar nome ownCloud do usuário.", "Base User Tree" => "Árvore de Usuário Base", +"One User Base DN per line" => "Um usuário-base DN por linha", +"User Search Attributes" => "Atributos de Busca de Usuário", +"Optional; one attribute per line" => "Opcional; um atributo por linha", "Group Display Name Field" => "Campo Nome de Exibição de Grupo", "The LDAP attribute to use to generate the groups`s ownCloud name." => "O atributo LDAP para usar para gerar nome ownCloud do grupo.", "Base Group Tree" => "Árvore de Grupo Base", +"One Group Base DN per line" => "Um grupo-base DN por linha", +"Group Search Attributes" => "Atributos de Busca de Grupo", "Group-Member association" => "Associação Grupo-Membro", +"Special Attributes" => "Atributos Especiais", +"Quota Field" => "Campo de Cota", +"Quota Default" => "Cota Padrão", "in bytes" => "em bytes", +"Email Field" => "Campo de Email", +"User Home Folder Naming Rule" => "Regra para Nome da Pasta Pessoal do Usuário", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixe vazio para nome de usuário (padrão). Caso contrário, especifique um atributo LDAP/AD.", +"Test Configuration" => "Teste de Configuração", "Help" => "Ajuda" ); diff --git a/apps/user_ldap/l10n/pt_PT.php b/apps/user_ldap/l10n/pt_PT.php index bfe6656b3b..3092d06143 100644 --- a/apps/user_ldap/l10n/pt_PT.php +++ b/apps/user_ldap/l10n/pt_PT.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Desligar a validação de certificado SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Se a ligação apenas funcionar com está opção, importe o certificado SSL do servidor LDAP para o seu servidor do ownCloud.", "Not recommended, use for testing only." => "Não recomendado, utilizado apenas para testes!", +"Cache Time-To-Live" => "Cache do tempo de vida dos objetos no servidor", "in seconds. A change empties the cache." => "em segundos. Uma alteração esvazia a cache.", "Directory Settings" => "Definições de directorias", "User Display Name Field" => "Mostrador do nome de utilizador.", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Atributos de pesquisa de grupo", "Group-Member association" => "Associar utilizador ao grupo.", "Special Attributes" => "Atributos especiais", +"Quota Field" => "Quota", +"Quota Default" => "Quota padrão", "in bytes" => "em bytes", +"Email Field" => "Campo de email", +"User Home Folder Naming Rule" => "Regra da pasta inicial do utilizador", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Deixe vazio para nome de utilizador (padrão). De outro modo, especifique um atributo LDAP/AD.", +"Test Configuration" => "Testar a configuração", "Help" => "Ajuda" ); diff --git a/apps/user_ldap/l10n/ru.php b/apps/user_ldap/l10n/ru.php index c66530174a..0746e1e892 100644 --- a/apps/user_ldap/l10n/ru.php +++ b/apps/user_ldap/l10n/ru.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Отключить проверку сертификата SSL.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Если соединение работает только с этой опцией, импортируйте на ваш сервер ownCloud сертификат SSL сервера LDAP.", "Not recommended, use for testing only." => "Не рекомендуется, используйте только для тестирования.", +"Cache Time-To-Live" => "Кэш времени жизни", "in seconds. A change empties the cache." => "в секундах. Изменение очистит кэш.", "Directory Settings" => "Настройки каталога", "User Display Name Field" => "Поле отображаемого имени пользователя", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Атрибуты поиска для группы", "Group-Member association" => "Ассоциация Группа-Участник", "Special Attributes" => "Специальные атрибуты", +"Quota Field" => "Поле квота", +"Quota Default" => "Квота по умолчанию", "in bytes" => "в байтах", +"Email Field" => "Поле адресса эллектронной почты", +"User Home Folder Naming Rule" => "Правило именования Домашней Папки Пользователя", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Оставьте имя пользователя пустым (по умолчанию). Иначе укажите атрибут LDAP/AD.", +"Test Configuration" => "Тестовая конфигурация", "Help" => "Помощь" ); diff --git a/apps/user_ldap/l10n/sk_SK.php b/apps/user_ldap/l10n/sk_SK.php index 727765a150..cb55762e64 100644 --- a/apps/user_ldap/l10n/sk_SK.php +++ b/apps/user_ldap/l10n/sk_SK.php @@ -48,6 +48,7 @@ "Turn off SSL certificate validation." => "Vypnúť overovanie SSL certifikátu.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Ak pripojenie pracuje len s touto možnosťou, tak importujte SSL certifikát LDAP serveru do vášho servera ownCloud.", "Not recommended, use for testing only." => "Nie je doporučované, len pre testovacie účely.", +"Cache Time-To-Live" => "Životnosť objektov v cache", "in seconds. A change empties the cache." => "v sekundách. Zmena vyprázdni vyrovnávaciu pamäť.", "Directory Settings" => "Nastavenie priečinka", "User Display Name Field" => "Pole pre zobrazenia mena používateľa", @@ -63,7 +64,12 @@ "Group Search Attributes" => "Atribúty vyhľadávania skupín", "Group-Member association" => "Priradenie člena skupiny", "Special Attributes" => "Špeciálne atribúty", +"Quota Field" => "Pole kvóty", +"Quota Default" => "Predvolená kvóta", "in bytes" => "v bajtoch", +"Email Field" => "Pole email", +"User Home Folder Naming Rule" => "Pravidlo pre nastavenie mena používateľského priečinka dát", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Nechajte prázdne pre používateľské meno (predvolené). Inak uveďte atribút LDAP/AD.", +"Test Configuration" => "Test nastavenia", "Help" => "Pomoc" ); diff --git a/apps/user_ldap/l10n/sv.php b/apps/user_ldap/l10n/sv.php index 702912f9c6..12ecc7b163 100644 --- a/apps/user_ldap/l10n/sv.php +++ b/apps/user_ldap/l10n/sv.php @@ -63,7 +63,9 @@ "Group Search Attributes" => "Gruppsökningsattribut", "Group-Member association" => "Attribut för gruppmedlemmar", "Special Attributes" => "Specialattribut", +"Quota Field" => "Kvotfält", "in bytes" => "i bytes", +"Email Field" => "E-postfält", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Lämnas tomt för användarnamn (standard). Ange annars ett LDAP/AD-attribut.", "Help" => "Hjälp" ); diff --git a/apps/user_ldap/l10n/tr.php b/apps/user_ldap/l10n/tr.php index 1bed9e246c..7bcabb0448 100644 --- a/apps/user_ldap/l10n/tr.php +++ b/apps/user_ldap/l10n/tr.php @@ -1,16 +1,22 @@ "Silme başarısız oldu", -"Host" => "Konak", -"Base DN" => "Base DN", -"User DN" => "User DN", +"Keep settings?" => "Ayarları kalsınmı?", +"Connection test succeeded" => "Bağlantı testi başarılı oldu", +"Connection test failed" => "Bağlantı testi başarısız oldu", +"Confirm Deletion" => "Silmeyi onayla", +"Host" => "Sunucu", +"Base DN" => "Ana DN", +"User DN" => "Kullanıcı DN", "Password" => "Parola", "For anonymous access, leave DN and Password empty." => "Anonim erişim için DN ve Parola alanlarını boş bırakın.", -"User Login Filter" => "Kullanıcı Oturum Açma Süzgeci", +"User Login Filter" => "Kullanıcı Oturum Filtresi", "use %%uid placeholder, e.g. \"uid=%%uid\"" => "%%uid yer tutucusunu kullanın, örneğin \"uid=%%uid\"", -"User List Filter" => "Kullanıcı Liste Süzgeci", +"User List Filter" => "Kullanıcı Liste Filtresi", "without any placeholder, e.g. \"objectClass=person\"." => "bir yer tutucusu olmadan, örneğin \"objectClass=person\"", "Group Filter" => "Grup Süzgeci", +"Connection Settings" => "Bağlantı ayarları", "Port" => "Port", +"Disable Main Server" => "Ana sunucuyu devredışı birak", "Use TLS" => "TLS kullan", "Turn off SSL certificate validation." => "SSL sertifika doğrulamasını kapat.", "Not recommended, use for testing only." => "Önerilmez, sadece test için kullanın.", diff --git a/apps/user_ldap/l10n/uk.php b/apps/user_ldap/l10n/uk.php index 643a749589..623d34c98e 100644 --- a/apps/user_ldap/l10n/uk.php +++ b/apps/user_ldap/l10n/uk.php @@ -33,25 +33,43 @@ "Group Filter" => "Фільтр Груп", "Defines the filter to apply, when retrieving groups." => "Визначає фільтр, який застосовується при отриманні груп.", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "без будь-якого заповнювача, наприклад: \"objectClass=posixGroup\".", +"Connection Settings" => "Налаштування З'єднання", "Configuration Active" => "Налаштування Активне", "When unchecked, this configuration will be skipped." => "Якщо \"галочка\" знята, ця конфігурація буде пропущена.", "Port" => "Порт", +"Backup (Replica) Host" => "Сервер для резервних копій", +"Give an optional backup host. It must be a replica of the main LDAP/AD server." => "Вкажіть додатковий резервний сервер. Він повинен бути копією головного LDAP/AD сервера.", +"Backup (Replica) Port" => "Порт сервера для резервних копій", +"Disable Main Server" => "Вимкнути Головний Сервер", +"When switched on, ownCloud will only connect to the replica server." => "Коли увімкнуто, ownCloud буде приєднуватись лише до сервера з резервними копіями.", "Use TLS" => "Використовуйте TLS", +"Do not use it additionally for LDAPS connections, it will fail." => "Не використовуйте це додатково для під'єднання до LDAP, бо виконано не буде.", "Case insensitve LDAP server (Windows)" => "Нечутливий до регістру LDAP сервер (Windows)", "Turn off SSL certificate validation." => "Вимкнути перевірку SSL сертифіката.", "If connection only works with this option, import the LDAP server's SSL certificate in your ownCloud server." => "Якщо з'єднання працює лише з цією опцією, імпортуйте SSL сертифікат LDAP сервера у ваший ownCloud сервер.", "Not recommended, use for testing only." => "Не рекомендується, використовуйте лише для тестів.", +"Cache Time-To-Live" => "Час актуальності Кеша", "in seconds. A change empties the cache." => "в секундах. Зміна очищує кеш.", +"Directory Settings" => "Налаштування Каталога", "User Display Name Field" => "Поле, яке відображає Ім'я Користувача", "The LDAP attribute to use to generate the user`s ownCloud name." => "Атрибут LDAP, який використовується для генерації імен користувачів ownCloud.", "Base User Tree" => "Основне Дерево Користувачів", "One User Base DN per line" => "Один Користувач Base DN на одній строчці", +"User Search Attributes" => "Пошукові Атрибути Користувача", +"Optional; one attribute per line" => "Додатково; один атрибут на строчку", "Group Display Name Field" => "Поле, яке відображає Ім'я Групи", "The LDAP attribute to use to generate the groups`s ownCloud name." => "Атрибут LDAP, який використовується для генерації імен груп ownCloud.", "Base Group Tree" => "Основне Дерево Груп", "One Group Base DN per line" => "Одна Група Base DN на одній строчці", +"Group Search Attributes" => "Пошукові Атрибути Групи", "Group-Member association" => "Асоціація Група-Член", +"Special Attributes" => "Спеціальні Атрибути", +"Quota Field" => "Поле Квоти", +"Quota Default" => "Квота за замовчанням", "in bytes" => "в байтах", +"Email Field" => "Поле Ел. пошти", +"User Home Folder Naming Rule" => "Правило іменування домашньої теки користувача", "Leave empty for user name (default). Otherwise, specify an LDAP/AD attribute." => "Залиште порожнім для імені користувача (за замовчанням). Інакше, вкажіть атрибут LDAP/AD.", +"Test Configuration" => "Тестове налаштування", "Help" => "Допомога" ); diff --git a/apps/user_ldap/l10n/ur_PK.php b/apps/user_ldap/l10n/ur_PK.php new file mode 100644 index 0000000000..4c606a1380 --- /dev/null +++ b/apps/user_ldap/l10n/ur_PK.php @@ -0,0 +1,4 @@ + "پاسورڈ", +"Help" => "مدد" +); diff --git a/apps/user_ldap/lib/access.php b/apps/user_ldap/lib/access.php index 4aa8ae8e8a..a8cfd45bf4 100644 --- a/apps/user_ldap/lib/access.php +++ b/apps/user_ldap/lib/access.php @@ -48,7 +48,9 @@ abstract class Access { */ public function readAttribute($dn, $attr, $filter = 'objectClass=*') { if(!$this->checkConnection()) { - \OCP\Util::writeLog('user_ldap', 'No LDAP Connector assigned, access impossible for readAttribute.', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'No LDAP Connector assigned, access impossible for readAttribute.', + \OCP\Util::WARN); return false; } $cr = $this->connection->getConnectionResource(); @@ -123,7 +125,8 @@ abstract class Access { return $result; } - //OID sometimes gives back DNs with whitespace after the comma a la "uid=foo, cn=bar, dn=..." We need to tackle this! + //OID sometimes gives back DNs with whitespace after the comma + // a la "uid=foo, cn=bar, dn=..." We need to tackle this! $dn = preg_replace('/([^\\\]),(\s+)/u', '\1,', $dn); //make comparisons and everything work @@ -141,6 +144,9 @@ abstract class Access { '\;' => '\5c3B', '\"' => '\5c22', '\#' => '\5c23', + '(' => '\28', + ')' => '\29', + '*' => '\2A', ); $dn = str_replace(array_keys($replacements), array_values($replacements), $dn); @@ -218,7 +224,8 @@ abstract class Access { * @param $ldapname optional, the display name of the object * @returns string with with the name to use in ownCloud, false on DN outside of search DN * - * returns the internal ownCloud name for the given LDAP DN of the group, false on DN outside of search DN or failure + * returns the internal ownCloud name for the given LDAP DN of the + * group, false on DN outside of search DN or failure */ public function dn2groupname($dn, $ldapname = null) { //To avoid bypassing the base DN settings under certain circumstances @@ -620,7 +627,8 @@ abstract class Access { * @brief executes an LDAP search * @param $filter the LDAP filter for the search * @param $base an array containing the LDAP subtree(s) that shall be searched - * @param $attr optional, when a certain attribute shall be filtered out + * @param $attr optional, array, one or more attributes that shall be + * retrieved. Results will according to the order in the array. * @returns array with the search result * * Executes an LDAP search @@ -645,11 +653,21 @@ abstract class Access { $linkResources = array_pad(array(), count($base), $link_resource); $sr = ldap_search($linkResources, $base, $filter, $attr); $error = ldap_errno($link_resource); - if(!is_array($sr) || $error > 0) { - \OCP\Util::writeLog('user_ldap', 'Error when searching: '.ldap_error($link_resource).' code '.ldap_errno($link_resource), \OCP\Util::ERROR); + if(!is_array($sr) || $error != 0) { + \OCP\Util::writeLog('user_ldap', + 'Error when searching: '.ldap_error($link_resource).' code '.ldap_errno($link_resource), + \OCP\Util::ERROR); \OCP\Util::writeLog('user_ldap', 'Attempt for Paging? '.print_r($pagedSearchOK, true), \OCP\Util::ERROR); return array(); } + + // Do the server-side sorting + foreach(array_reverse($attr) as $sortAttr){ + foreach($sr as $searchResource) { + ldap_sort($link_resource, $searchResource, $sortAttr); + } + } + $findings = array(); foreach($sr as $key => $res) { $findings = array_merge($findings, ldap_get_entries($link_resource, $res )); @@ -668,7 +686,9 @@ abstract class Access { if($skipHandling) { return; } - //if count is bigger, then the server does not support paged search. Instead, he did a normal search. We set a flag here, so the callee knows how to deal with it. + // if count is bigger, then the server does not support + // paged search. Instead, he did a normal search. We set a + // flag here, so the callee knows how to deal with it. if($findings['count'] <= $limit) { $this->pagedSearchedSuccessful = true; } @@ -702,7 +722,9 @@ abstract class Access { $key = mb_strtolower($key, 'UTF-8'); if(isset($item[$key])) { if($key != 'dn') { - $selection[$i][$key] = $this->resemblesDN($key) ? $this->sanitizeDN($item[$key][0]) : $item[$key][0]; + $selection[$i][$key] = $this->resemblesDN($key) ? + $this->sanitizeDN($item[$key][0]) + : $item[$key][0]; } else { $selection[$i][$key] = $this->sanitizeDN($item[$key]); } @@ -806,7 +828,9 @@ abstract class Access { * @return string the final filter part to use in LDAP searches */ public function getFilterPartForUserSearch($search) { - return $this->getFilterPartForSearch($search, $this->connection->ldapAttributesForUserSearch, $this->connection->ldapUserDisplayName); + return $this->getFilterPartForSearch($search, + $this->connection->ldapAttributesForUserSearch, + $this->connection->ldapUserDisplayName); } /** @@ -815,7 +839,9 @@ abstract class Access { * @return string the final filter part to use in LDAP searches */ public function getFilterPartForGroupSearch($search) { - return $this->getFilterPartForSearch($search, $this->connection->ldapAttributesForGroupSearch, $this->connection->ldapGroupDisplayName); + return $this->getFilterPartForSearch($search, + $this->connection->ldapAttributesForGroupSearch, + $this->connection->ldapGroupDisplayName); } /** @@ -874,13 +900,15 @@ abstract class Access { foreach($testAttributes as $attribute) { \OCP\Util::writeLog('user_ldap', 'Testing '.$attribute.' as UUID attr', \OCP\Util::DEBUG); - $value = $this->readAttribute($dn, $attribute); - if(is_array($value) && isset($value[0]) && !empty($value[0])) { + $value = $this->readAttribute($dn, $attribute); + if(is_array($value) && isset($value[0]) && !empty($value[0])) { \OCP\Util::writeLog('user_ldap', 'Setting '.$attribute.' as UUID attr', \OCP\Util::DEBUG); $this->connection->ldapUuidAttribute = $attribute; return true; - } - \OCP\Util::writeLog('user_ldap', 'The looked for uuid attr is not '.$attribute.', result was '.print_r($value, true), \OCP\Util::DEBUG); + } + \OCP\Util::writeLog('user_ldap', + 'The looked for uuid attr is not '.$attribute.', result was '.print_r($value, true), + \OCP\Util::DEBUG); } return false; @@ -888,7 +916,9 @@ abstract class Access { public function getUUID($dn) { if($this->detectUuidAttribute($dn)) { - \OCP\Util::writeLog('user_ldap', 'UUID Checking \ UUID for '.$dn.' using '. $this->connection->ldapUuidAttribute, \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', + 'UUID Checking \ UUID for '.$dn.' using '. $this->connection->ldapUuidAttribute, + \OCP\Util::DEBUG); $uuid = $this->readAttribute($dn, $this->connection->ldapUuidAttribute); if(!is_array($uuid) && $this->connection->ldapOverrideUuidAttribute) { $this->detectUuidAttribute($dn, true); @@ -1027,13 +1057,18 @@ abstract class Access { $pagedSearchOK = false; if($this->connection->hasPagedResultSupport && !is_null($limit)) { $offset = intval($offset); //can be null - \OCP\Util::writeLog('user_ldap', 'initializing paged search for Filter'.$filter.' base '.print_r($bases, true).' attr '.print_r($attr, true). ' limit ' .$limit.' offset '.$offset, \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'initializing paged search for Filter'.$filter.' base '.print_r($bases, true) + .' attr '.print_r($attr, true). ' limit ' .$limit.' offset '.$offset, + \OCP\Util::INFO); //get the cookie from the search for the previous search, required by LDAP foreach($bases as $base) { $cookie = $this->getPagedResultCookie($base, $filter, $limit, $offset); if(empty($cookie) && ($offset > 0)) { - //no cookie known, although the offset is not 0. Maybe cache run out. We need to start all over *sigh* (btw, Dear Reader, did you need LDAP paged searching was designed by MSFT?) + // no cookie known, although the offset is not 0. Maybe cache run out. We need + // to start all over *sigh* (btw, Dear Reader, did you need LDAP paged + // searching was designed by MSFT?) $reOffset = ($offset - $limit) < 0 ? 0 : $offset - $limit; //a bit recursive, $offset of 0 is the exit \OCP\Util::writeLog('user_ldap', 'Looking for cookie L/O '.$limit.'/'.$reOffset, \OCP\Util::INFO); @@ -1049,13 +1084,16 @@ abstract class Access { if($offset > 0) { \OCP\Util::writeLog('user_ldap', 'Cookie '.$cookie, \OCP\Util::INFO); } - $pagedSearchOK = ldap_control_paged_result($this->connection->getConnectionResource(), $limit, false, $cookie); + $pagedSearchOK = ldap_control_paged_result($this->connection->getConnectionResource(), + $limit, false, $cookie); if(!$pagedSearchOK) { return false; } \OCP\Util::writeLog('user_ldap', 'Ready for a paged search', \OCP\Util::INFO); } else { - \OCP\Util::writeLog('user_ldap', 'No paged search for us, Cpt., Limit '.$limit.' Offset '.$offset, \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'No paged search for us, Cpt., Limit '.$limit.' Offset '.$offset, + \OCP\Util::INFO); } } diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index 0bf2efe35a..6643428afe 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -76,7 +76,8 @@ class Connection { $this->configPrefix = $configPrefix; $this->configID = $configID; $this->cache = \OC_Cache::getGlobalCache(); - $this->config['hasPagedResultSupport'] = (function_exists('ldap_control_paged_result') && function_exists('ldap_control_paged_result_response')); + $this->config['hasPagedResultSupport'] = (function_exists('ldap_control_paged_result') + && function_exists('ldap_control_paged_result_response')); } public function __destruct() { @@ -274,9 +275,36 @@ class Connection { * @return returns an array that maps internal variable names to database fields */ private function getConfigTranslationArray() { - static $array = array('ldap_host'=>'ldapHost', 'ldap_port'=>'ldapPort', 'ldap_backup_host'=>'ldapBackupHost', 'ldap_backup_port'=>'ldapBackupPort', 'ldap_override_main_server' => 'ldapOverrideMainServer', 'ldap_dn'=>'ldapAgentName', 'ldap_agent_password'=>'ldapAgentPassword', 'ldap_base'=>'ldapBase', 'ldap_base_users'=>'ldapBaseUsers', 'ldap_base_groups'=>'ldapBaseGroups', 'ldap_userlist_filter'=>'ldapUserFilter', 'ldap_login_filter'=>'ldapLoginFilter', 'ldap_group_filter'=>'ldapGroupFilter', 'ldap_display_name'=>'ldapUserDisplayName', 'ldap_group_display_name'=>'ldapGroupDisplayName', + static $array = array( + 'ldap_host'=>'ldapHost', + 'ldap_port'=>'ldapPort', + 'ldap_backup_host'=>'ldapBackupHost', + 'ldap_backup_port'=>'ldapBackupPort', + 'ldap_override_main_server' => 'ldapOverrideMainServer', + 'ldap_dn'=>'ldapAgentName', + 'ldap_agent_password'=>'ldapAgentPassword', + 'ldap_base'=>'ldapBase', + 'ldap_base_users'=>'ldapBaseUsers', + 'ldap_base_groups'=>'ldapBaseGroups', + 'ldap_userlist_filter'=>'ldapUserFilter', + 'ldap_login_filter'=>'ldapLoginFilter', + 'ldap_group_filter'=>'ldapGroupFilter', + 'ldap_display_name'=>'ldapUserDisplayName', + 'ldap_group_display_name'=>'ldapGroupDisplayName', - 'ldap_tls'=>'ldapTLS', 'ldap_nocase'=>'ldapNoCase', 'ldap_quota_def'=>'ldapQuotaDefault', 'ldap_quota_attr'=>'ldapQuotaAttribute', 'ldap_email_attr'=>'ldapEmailAttribute', 'ldap_group_member_assoc_attribute'=>'ldapGroupMemberAssocAttr', 'ldap_cache_ttl'=>'ldapCacheTTL', 'home_folder_naming_rule' => 'homeFolderNamingRule', 'ldap_turn_off_cert_check' => 'turnOffCertCheck', 'ldap_configuration_active' => 'ldapConfigurationActive', 'ldap_attributes_for_user_search' => 'ldapAttributesForUserSearch', 'ldap_attributes_for_group_search' => 'ldapAttributesForGroupSearch'); + 'ldap_tls'=>'ldapTLS', + 'ldap_nocase'=>'ldapNoCase', + 'ldap_quota_def'=>'ldapQuotaDefault', + 'ldap_quota_attr'=>'ldapQuotaAttribute', + 'ldap_email_attr'=>'ldapEmailAttribute', + 'ldap_group_member_assoc_attribute'=>'ldapGroupMemberAssocAttr', + 'ldap_cache_ttl'=>'ldapCacheTTL', + 'home_folder_naming_rule' => 'homeFolderNamingRule', + 'ldap_turn_off_cert_check' => 'turnOffCertCheck', + 'ldap_configuration_active' => 'ldapConfigurationActive', + 'ldap_attributes_for_user_search' => 'ldapAttributesForUserSearch', + 'ldap_attributes_for_group_search' => 'ldapAttributesForGroupSearch' + ); return $array; } @@ -295,7 +323,8 @@ class Connection { foreach($config as $parameter => $value) { if(($parameter == 'homeFolderNamingRule' - || $params[$parameter] == 'homeFolderNamingRule') + || (isset($params[$parameter]) + && $params[$parameter] == 'homeFolderNamingRule')) && !empty($value)) { $value = 'attr:'.$value; } @@ -328,9 +357,6 @@ class Connection { case 'ldapAgentPassword': $value = base64_encode($value); break; - case 'homeFolderNamingRule': - $value = empty($value) ? 'opt:username' : $value; - break; case 'ldapBase': case 'ldapBaseUsers': case 'ldapBaseGroups': @@ -365,10 +391,10 @@ class Connection { $config = array(); foreach($trans as $dbKey => $classKey) { if($classKey == 'homeFolderNamingRule') { - if(strpos($this->config[$classKey], 'opt') === 0) { - $config[$dbKey] = ''; - } else { + if(strpos($this->config[$classKey], 'attr:') === 0) { $config[$dbKey] = substr($this->config[$classKey], 5); + } else { + $config[$dbKey] = ''; } continue; } else if((strpos($classKey, 'ldapBase') !== false) @@ -387,7 +413,8 @@ class Connection { * @returns true if configuration seems OK, false otherwise */ private function validateConfiguration() { - //first step: "soft" checks: settings that are not really necessary, but advisable. If left empty, give an info message + // first step: "soft" checks: settings that are not really + // necessary, but advisable. If left empty, give an info message if(empty($this->config['ldapBaseUsers'])) { \OCP\Util::writeLog('user_ldap', 'Base tree for Users is empty, using Base DN', \OCP\Util::INFO); $this->config['ldapBaseUsers'] = $this->config['ldapBase']; @@ -397,11 +424,16 @@ class Connection { $this->config['ldapBaseGroups'] = $this->config['ldapBase']; } if(empty($this->config['ldapGroupFilter']) && empty($this->config['ldapGroupMemberAssocAttr'])) { - \OCP\Util::writeLog('user_ldap', 'No group filter is specified, LDAP group feature will not be used.', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'No group filter is specified, LDAP group feature will not be used.', + \OCP\Util::INFO); } - if(!in_array($this->config['ldapUuidAttribute'], array('auto', 'entryuuid', 'nsuniqueid', 'objectguid')) && (!is_null($this->configID))) { + if(!in_array($this->config['ldapUuidAttribute'], array('auto', 'entryuuid', 'nsuniqueid', 'objectguid')) + && (!is_null($this->configID))) { \OCP\Config::setAppValue($this->configID, $this->configPrefix.'ldap_uuid_attribute', 'auto'); - \OCP\Util::writeLog('user_ldap', 'Illegal value for the UUID Attribute, reset to autodetect.', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'Illegal value for the UUID Attribute, reset to autodetect.', + \OCP\Util::INFO); } if(empty($this->config['ldapBackupPort'])) { //force default @@ -417,7 +449,9 @@ class Connection { if((strpos($this->config['ldapHost'], 'ldaps') === 0) && $this->config['ldapTLS']) { $this->config['ldapTLS'] = false; - \OCP\Util::writeLog('user_ldap', 'LDAPS (already using secure connection) and TLS do not work together. Switched off TLS.', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'LDAPS (already using secure connection) and TLS do not work together. Switched off TLS.', + \OCP\Util::INFO); } @@ -434,20 +468,28 @@ class Connection { } if((empty($this->config['ldapAgentName']) && !empty($this->config['ldapAgentPassword'])) || (!empty($this->config['ldapAgentName']) && empty($this->config['ldapAgentPassword']))) { - \OCP\Util::writeLog('user_ldap', 'Either no password given for the user agent or a password is given, but no LDAP agent; won`t connect.', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'Either no password given for the user agent or a password is given, but no LDAP agent; won`t connect.', + \OCP\Util::WARN); $configurationOK = false; } //TODO: check if ldapAgentName is in DN form - if(empty($this->config['ldapBase']) && (empty($this->config['ldapBaseUsers']) && empty($this->config['ldapBaseGroups']))) { + if(empty($this->config['ldapBase']) + && (empty($this->config['ldapBaseUsers']) + && empty($this->config['ldapBaseGroups']))) { \OCP\Util::writeLog('user_ldap', 'No Base DN given, won`t connect.', \OCP\Util::WARN); $configurationOK = false; } if(empty($this->config['ldapUserDisplayName'])) { - \OCP\Util::writeLog('user_ldap', 'No user display name attribute specified, won`t connect.', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'No user display name attribute specified, won`t connect.', + \OCP\Util::WARN); $configurationOK = false; } if(empty($this->config['ldapGroupDisplayName'])) { - \OCP\Util::writeLog('user_ldap', 'No group display name attribute specified, won`t connect.', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'No group display name attribute specified, won`t connect.', + \OCP\Util::WARN); $configurationOK = false; } if(empty($this->config['ldapLoginFilter'])) { @@ -455,7 +497,9 @@ class Connection { $configurationOK = false; } if(mb_strpos($this->config['ldapLoginFilter'], '%uid', 0, 'UTF-8') === false) { - \OCP\Util::writeLog('user_ldap', 'Login filter does not contain %uid place holder, won`t connect.', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'Login filter does not contain %uid place holder, won`t connect.', + \OCP\Util::WARN); \OCP\Util::writeLog('user_ldap', 'Login filter was ' . $this->config['ldapLoginFilter'], \OCP\Util::DEBUG); $configurationOK = false; } @@ -493,7 +537,7 @@ class Connection { 'ldap_cache_ttl' => 600, 'ldap_uuid_attribute' => 'auto', 'ldap_override_uuid_attribute' => 0, - 'home_folder_naming_rule' => 'opt:username', + 'home_folder_naming_rule' => '', 'ldap_turn_off_cert_check' => 0, 'ldap_configuration_active' => 1, 'ldap_attributes_for_user_search' => '', @@ -519,13 +563,17 @@ class Connection { if(!$this->ldapConnectionRes) { if(!function_exists('ldap_connect')) { $phpLDAPinstalled = false; - \OCP\Util::writeLog('user_ldap', 'function ldap_connect is not available. Make sure that the PHP ldap module is installed.', \OCP\Util::ERROR); + \OCP\Util::writeLog('user_ldap', + 'function ldap_connect is not available. Make sure that the PHP ldap module is installed.', + \OCP\Util::ERROR); return false; } if($this->config['turnOffCertCheck']) { if(putenv('LDAPTLS_REQCERT=never')) { - \OCP\Util::writeLog('user_ldap', 'Turned off SSL certificate validation successfully.', \OCP\Util::WARN); + \OCP\Util::writeLog('user_ldap', + 'Turned off SSL certificate validation successfully.', + \OCP\Util::WARN); } else { \OCP\Util::writeLog('user_ldap', 'Could not turn off SSL certificate validation.', \OCP\Util::WARN); } @@ -583,7 +631,9 @@ class Connection { } $ldapLogin = @ldap_bind($cr, $this->config['ldapAgentName'], $this->config['ldapAgentPassword']); if(!$ldapLogin) { - \OCP\Util::writeLog('user_ldap', 'Bind failed: ' . ldap_errno($cr) . ': ' . ldap_error($cr), \OCP\Util::ERROR); + \OCP\Util::writeLog('user_ldap', + 'Bind failed: ' . ldap_errno($cr) . ': ' . ldap_error($cr), + \OCP\Util::ERROR); $this->ldapConnectionRes = null; return false; } diff --git a/apps/user_ldap/lib/helper.php b/apps/user_ldap/lib/helper.php index 29ce998dae..308da3ef72 100644 --- a/apps/user_ldap/lib/helper.php +++ b/apps/user_ldap/lib/helper.php @@ -54,7 +54,7 @@ class Helper { WHERE `configkey` LIKE ? '; if($activeConfigurations) { - $query .= ' AND `configvalue` = 1'; + $query .= ' AND `configvalue` = \'1\''; } $query = \OCP\DB::prepare($query); @@ -86,8 +86,8 @@ class Helper { DELETE FROM `*PREFIX*appconfig` WHERE `configkey` LIKE ? - AND `appid` = "user_ldap" - AND `configkey` NOT IN ("enabled", "installed_version", "types", "bgjUpdateGroupsLastRun") + AND `appid` = \'user_ldap\' + AND `configkey` NOT IN (\'enabled\', \'installed_version\', \'types\', \'bgjUpdateGroupsLastRun\') '); $res = $query->execute(array($prefix.'%')); @@ -102,4 +102,3 @@ class Helper { return true; } } - diff --git a/apps/user_ldap/lib/jobs.php b/apps/user_ldap/lib/jobs.php index b265a8339e..094d11db3d 100644 --- a/apps/user_ldap/lib/jobs.php +++ b/apps/user_ldap/lib/jobs.php @@ -42,7 +42,9 @@ class Jobs { $actualGroups = self::getGroupBE()->getGroups(); if(empty($actualGroups) && empty($knownGroups)) { - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – groups do not seem to be configured properly, aborting.', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – groups do not seem to be configured properly, aborting.', + \OCP\Util::INFO); \OCP\Config::setAppValue('user_ldap', 'bgjUpdateGroupsLastRun', time()); return; } @@ -75,19 +77,25 @@ class Jobs { $hasChanged = false; foreach(array_diff($knownUsers, $actualUsers) as $removedUser) { \OCP\Util::emitHook('OC_User', 'post_removeFromGroup', array('uid' => $removedUser, 'gid' => $group)); - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – "'.$removedUser.'" removed from "'.$group.'".', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – "'.$removedUser.'" removed from "'.$group.'".', + \OCP\Util::INFO); $hasChanged = true; } foreach(array_diff($actualUsers, $knownUsers) as $addedUser) { \OCP\Util::emitHook('OC_User', 'post_addFromGroup', array('uid' => $addedUser, 'gid' => $group)); - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – "'.$addedUser.'" added to "'.$group.'".', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – "'.$addedUser.'" added to "'.$group.'".', + \OCP\Util::INFO); $hasChanged = true; } if($hasChanged) { $query->execute(array(serialize($actualUsers), $group)); } } - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with known Groups.', \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – FINISHED dealing with known Groups.', + \OCP\Util::DEBUG); } static private function handleCreatedGroups($createdGroups) { @@ -98,11 +106,15 @@ class Jobs { VALUES (?, ?) '); foreach($createdGroups as $createdGroup) { - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – new group "'.$createdGroup.'" found.', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – new group "'.$createdGroup.'" found.', + \OCP\Util::INFO); $users = serialize(self::getGroupBE()->usersInGroup($createdGroup)); $query->execute(array($createdGroup, $users)); } - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with created Groups.', \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – FINISHED dealing with created Groups.', + \OCP\Util::DEBUG); } static private function handleRemovedGroups($removedGroups) { @@ -113,10 +125,14 @@ class Jobs { WHERE `owncloudname` = ? '); foreach($removedGroups as $removedGroup) { - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – group "'.$removedGroup.'" was removed.', \OCP\Util::INFO); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – group "'.$removedGroup.'" was removed.', + \OCP\Util::INFO); $query->execute(array($removedGroup)); } - \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – FINISHED dealing with removed groups.', \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', + 'bgJ "updateGroups" – FINISHED dealing with removed groups.', + \OCP\Util::DEBUG); } static private function getConnector() { @@ -154,4 +170,4 @@ class Jobs { return self::$groupsFromDB; } -} \ No newline at end of file +} diff --git a/apps/user_ldap/settings.php b/apps/user_ldap/settings.php index d5d2f648b3..05497ae8a3 100644 --- a/apps/user_ldap/settings.php +++ b/apps/user_ldap/settings.php @@ -42,17 +42,7 @@ OCP\Util::addstyle('user_ldap', 'settings'); $tmpl = new OCP\Template('user_ldap', 'settings'); $prefixes = \OCA\user_ldap\lib\Helper::getServerConfigurationPrefixes(); -$scoHtml = ''; -$i = 1; -$sel = ' selected'; -foreach($prefixes as $prefix) { - $scoHtml .= ''; - $sel = ''; -} -if(count($prefixes) == 0) { - $scoHtml .= ''; -} -$tmpl->assign('serverConfigurationOptions', $scoHtml, false); +$tmpl->assign('serverConfigurationPrefixes', $prefixes); // assign default values if(!isset($ldap)) { diff --git a/apps/user_ldap/templates/settings.php b/apps/user_ldap/templates/settings.php index c6f1834e01..d3c2c29890 100644 --- a/apps/user_ldap/templates/settings.php +++ b/apps/user_ldap/templates/settings.php @@ -5,61 +5,98 @@
  • Advanced
  • '.$l->t('Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them.').'

    '; + print_unescaped('

    '.$l->t('Warning: Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them.').'

    '); } if(!function_exists('ldap_connect')) { - echo '

    '.$l->t('Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.').'

    '; + print_unescaped('

    '.$l->t('Warning: The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.').'

    '); } ?>
    -

    + + '); + + + + - +

    -

    -

    -

    -

    -


    t('use %%uid placeholder, e.g. "uid=%%uid"');?>

    -


    t('without any placeholder, e.g. "objectClass=person".');?>

    -


    t('without any placeholder, e.g. "objectClass=posixGroup".');?>

    +

    +

    +

    +

    +

    +

    +

    +

    +

    + +
    t('use %%uid placeholder, e.g. "uid=%%uid"'));?>

    +

    + +
    t('without any placeholder, e.g. "objectClass=person".'));?>

    +

    + +
    t('without any placeholder, e.g. "objectClass=posixGroup".'));?>

    -

    t('Connection Settings');?>

    +

    t('Connection Settings'));?>

    -

    -

    -

    -

    -

    -

    -

    >

    -


    t('Not recommended, use for testing only.');?>

    -

    +

    +

    +

    +

    +

    +

    +

    >

    +


    t('Not recommended, use for testing only.'));?>

    +

    -

    t('Directory Settings');?>

    +

    t('Directory Settings'));?>

    -

    -

    -

    -

    -

    -

    -

    +

    +

    +

    +

    +

    +

    +

    -

    t('Special Attributes');?>

    +

    t('Special Attributes'));?>

    -

    -

    -

    -

    +

    +

    +

    +

    - t('Help');?> + t('Help'));?>
    diff --git a/apps/user_ldap/user_ldap.php b/apps/user_ldap/user_ldap.php index 7778c37c79..44a1947859 100644 --- a/apps/user_ldap/user_ldap.php +++ b/apps/user_ldap/user_ldap.php @@ -112,7 +112,8 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { return $ldap_users; } - // if we'd pass -1 to LDAP search, we'd end up in a Protocol error. With a limit of 0, we get 0 results. So we pass null. + // if we'd pass -1 to LDAP search, we'd end up in a Protocol + // error. With a limit of 0, we get 0 results. So we pass null. if($limit <= 0) { $limit = null; } @@ -121,9 +122,12 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { $this->getFilterPartForUserSearch($search) )); - \OCP\Util::writeLog('user_ldap', 'getUsers: Options: search '.$search.' limit '.$limit.' offset '.$offset.' Filter: '.$filter, \OCP\Util::DEBUG); + \OCP\Util::writeLog('user_ldap', + 'getUsers: Options: search '.$search.' limit '.$limit.' offset '.$offset.' Filter: '.$filter, + \OCP\Util::DEBUG); //do the search and translate results to owncloud names - $ldap_users = $this->fetchListOfUsers($filter, array($this->connection->ldapUserDisplayName, 'dn'), $limit, $offset); + $ldap_users = $this->fetchListOfUsers($filter, array($this->connection->ldapUserDisplayName, 'dn'), + $limit, $offset); $ldap_users = $this->ownCloudUserNames($ldap_users); \OCP\Util::writeLog('user_ldap', 'getUsers: '.count($ldap_users). ' Users found', \OCP\Util::DEBUG); @@ -189,11 +193,13 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { //check for / at the beginning or pattern c:\ resp. c:/ if( '/' == $path[0] - || (3 < strlen($path) && ctype_alpha($path[0]) && $path[1] == ':' && ('\\' == $path[2] || '/' == $path[2])) + || (3 < strlen($path) && ctype_alpha($path[0]) + && $path[1] == ':' && ('\\' == $path[2] || '/' == $path[2])) ) { $homedir = $path; } else { - $homedir = \OCP\Config::getSystemValue('datadirectory', \OC::$SERVERROOT.'/data' ) . '/' . $homedir[0]; + $homedir = \OCP\Config::getSystemValue('datadirectory', + \OC::$SERVERROOT.'/data' ) . '/' . $homedir[0]; } $this->connection->writeToCache($cacheKey, $homedir); return $homedir; @@ -221,7 +227,7 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { $this->connection->ldapUserDisplayName); if($displayName && (count($displayName) > 0)) { - $this->connection->writeToCache($cacheKey, $displayName); + $this->connection->writeToCache($cacheKey, $displayName[0]); return $displayName[0]; } @@ -258,7 +264,10 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { * compared with OC_USER_BACKEND_CREATE_USER etc. */ public function implementsActions($actions) { - return (bool)((OC_USER_BACKEND_CHECK_PASSWORD | OC_USER_BACKEND_GET_HOME) & $actions); + return (bool)((OC_USER_BACKEND_CHECK_PASSWORD + | OC_USER_BACKEND_GET_HOME + | OC_USER_BACKEND_GET_DISPLAYNAME) + & $actions); } /** @@ -267,4 +276,4 @@ class USER_LDAP extends lib\Access implements \OCP\UserInterface { public function hasUserListings() { return true; } -} \ No newline at end of file +} diff --git a/apps/user_webdavauth/appinfo/app.php b/apps/user_webdavauth/appinfo/app.php index c4c131b7ef..3cd227bddb 100755 --- a/apps/user_webdavauth/appinfo/app.php +++ b/apps/user_webdavauth/appinfo/app.php @@ -21,7 +21,7 @@ * */ -require_once 'apps/user_webdavauth/user_webdavauth.php'; +require_once OC_App::getAppPath('user_webdavauth').'/user_webdavauth.php'; OC_APP::registerAdmin('user_webdavauth', 'settings'); diff --git a/apps/user_webdavauth/appinfo/info.xml b/apps/user_webdavauth/appinfo/info.xml index f62f03577e..76b314e48a 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. AGPL Frank Karlitschek - 4.91 + 4.93 true diff --git a/apps/user_webdavauth/l10n/de.php b/apps/user_webdavauth/l10n/de.php index f893bddc71..c86ff44e55 100644 --- a/apps/user_webdavauth/l10n/de.php +++ b/apps/user_webdavauth/l10n/de.php @@ -1,5 +1,5 @@ "WebDAV Authentifikation", "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 wird die Benutzer-Anmeldedaten an diese URL schicken. Dieses Plugin prüft die Anmeldedaten auf ihre Gültigkeit und interpretiert die HTTP Statusfehler 401 und 403 als ungültige, sowie alle Anderen als gültige Anmeldedaten." +"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 sendet die Benutzerdaten an diese URL. Dieses Plugin prüft die Antwort und wird die Statuscodes 401 und 403 als ungültige Daten und alle anderen Antworten als gültige Daten interpretieren." ); diff --git a/apps/user_webdavauth/l10n/de_DE.php b/apps/user_webdavauth/l10n/de_DE.php index 8f67575fc0..bd5d328e47 100644 --- a/apps/user_webdavauth/l10n/de_DE.php +++ b/apps/user_webdavauth/l10n/de_DE.php @@ -1,5 +1,5 @@ "WebDAV Authentifizierung", "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 sendet die Benutzerdaten an diese URL. Dieses Plugin prüft die Antwort und wird die Statuscodes 401 und 403 als ungültige Daten interpretieren und alle anderen Antworten als gültige Daten." +"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 sendet die Benutzerdaten an diese URL. Dieses Plugin prüft die Antwort und wird die Statuscodes 401 und 403 als ungültige Daten und alle anderen Antworten als gültige Daten interpretieren." ); diff --git a/apps/user_webdavauth/l10n/tr.php b/apps/user_webdavauth/l10n/tr.php index 245a510134..4a2f6d2403 100644 --- a/apps/user_webdavauth/l10n/tr.php +++ b/apps/user_webdavauth/l10n/tr.php @@ -1,3 +1,4 @@ "WebDAV Kimlik doğrulaması", "URL: http://" => "URL: http://" ); diff --git a/apps/user_webdavauth/l10n/uk.php b/apps/user_webdavauth/l10n/uk.php index 245a510134..66887df54b 100644 --- a/apps/user_webdavauth/l10n/uk.php +++ b/apps/user_webdavauth/l10n/uk.php @@ -1,3 +1,5 @@ "URL: http://" +"WebDAV Authentication" => "Аутентифікація 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." => "ownCloud надішле облікові дані на цей URL. Цей плагін перевірить відповідь і буде інтерпретувати HTTP коди 401 і 403 як повідомлення про недійсні повноваження, а решту відповідей як дійсні облікові дані." ); diff --git a/apps/user_webdavauth/settings.php b/apps/user_webdavauth/settings.php index 7eabb0d48c..ae9cb7e4c9 100755 --- a/apps/user_webdavauth/settings.php +++ b/apps/user_webdavauth/settings.php @@ -26,7 +26,7 @@ OC_Util::checkAdminUser(); if($_POST) { // CSRF check OCP\JSON::callCheck(); - + if(isset($_POST['webdav_url'])) { OC_CONFIG::setValue('user_webdavauth_url', strip_tags($_POST['webdav_url'])); } diff --git a/apps/user_webdavauth/templates/settings.php b/apps/user_webdavauth/templates/settings.php index 45f4d81aec..ec6524ee4f 100755 --- a/apps/user_webdavauth/templates/settings.php +++ b/apps/user_webdavauth/templates/settings.php @@ -1,9 +1,9 @@
    - t('WebDAV Authentication');?> -

    - + t('WebDAV Authentication'));?> +

    + -
    t('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.'); ?> +
    t('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.')); ?>

    diff --git a/autotest.cmd b/autotest.cmd index 053860db54..a511faef9c 100644 --- a/autotest.cmd +++ b/autotest.cmd @@ -4,14 +4,14 @@ :: @author Thomas Müller :: @author Tobias Ramforth (translated into Windows batch file) :: -:: @copyright 2012 Thomas Müller thomas.mueller@tmit.eu +:: @copyright 2012, 2013 Thomas Müller thomas.mueller@tmit.eu :: @echo off set DATADIR=data-autotest set BASEDIR=%~dp0 -:: create autoconfig for sqlite, mysql and postgresql +:: create autoconfig for sqlite, mysql, postgresql and mssql echo ^ .\tests\autoconfig-sqlite.php echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-sqlite.php echo 'installed' ^=^> false^, >> .\tests\autoconfig-sqlite.php @@ -50,16 +50,35 @@ echo 'dbhost' ^=^> 'localhost'^, >> .\tests\autoconfig-pgsql.php echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-pgsql.php echo ^)^; >> .\tests\autoconfig-pgsql.php +echo ^ .\tests\autoconfig-mssql.php +echo $AUTOCONFIG ^= array ^( >> .\tests\autoconfig-mssql.php +echo 'installed' ^=^> false^, >> .\tests\autoconfig-mssql.php +echo 'dbtype' ^=^> 'mssql'^, >> .\tests\autoconfig-mssql.php +echo 'dbtableprefix' ^=^> 'oc_'^, >> .\tests\autoconfig-mssql.php +echo 'adminlogin' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.php +echo 'adminpass' ^=^> 'admin'^, >> .\tests\autoconfig-mssql.php +echo 'directory' ^=^> '%BASEDIR%%DATADIR%'^, >> .\tests\autoconfig-mssql.php +echo 'dbuser' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.php +echo 'dbname' ^=^> 'oc_autotest'^, >> .\tests\autoconfig-mssql.php +echo 'dbhost' ^=^> 'localhost\sqlexpress'^, >> .\tests\autoconfig-mssql.php +echo 'dbpass' ^=^> 'owncloud'^, >> .\tests\autoconfig-mssql.php +echo ^)^; >> .\tests\autoconfig-mssql.php + echo localhost:5432:*:oc_autotest:owncloud > %APPDATA%\postgresql\pgpass.conf :: :: start test execution :: -::call:execute_tests "sqlite" -call:execute_tests "mysql" -::call:execute_tests "mssql" -::call:execute_tests "ora" -::call:execute_tests "pgsql" +if [%1] == [] ( + echo "Running on all database backends" + call:execute_tests "sqlite" + call:execute_tests "mysql" + call:execute_tests "mssql" + ::call:execute_tests "ora" + call:execute_tests "pgsql" +) else ( + call:execute_tests "%1" +) goto:eof @@ -83,6 +102,9 @@ goto:eof if "%~1" == "mysql" mysql -u oc_autotest -powncloud -e "DROP DATABASE oc_autotest" if "%~1" == "pgsql" dropdb -h localhost -p 5432 -U oc_autotest -w oc_autotest + + :: we assume a sqlexpress installation + if "%~1" == "mssql" sqlcmd -S localhost\sqlexpress -U oc_autotest -P owncloud -Q "IF EXISTS (SELECT name FROM sys.databases WHERE name=N'oc_autotest') DROP DATABASE [oc_autotest]" :: copy autoconfig copy /y %BASEDIR%\tests\autoconfig-%~1.php %BASEDIR%\config\autoconfig.php @@ -96,9 +118,8 @@ goto:eof rmdir /s /q coverage-html-%~1 md coverage-html-%~1 php -f enable_all.php - ::phpunit --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1 - ::phpunit --bootstrap bootstrap.php --configuration phpunit.xml - php win32-phpunit.php --bootstrap bootstrap.php --configuration phpunit.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1 + + php win32-phpunit.php --bootstrap bootstrap.php --configuration phpunit-autotest.xml --log-junit autotest-results-%~1.xml --coverage-clover autotest-clover-%~1.xml --coverage-html coverage-html-%~1 echo "Done with testing %~1 ..." cd %BASEDIR% goto:eof @@ -114,4 +135,10 @@ goto:eof :: - to enable dropdb I decided to add following line to pg_hba.conf (this is not the safest way but I don't care for the testing machine): :: local all all trust :: +:: NOTES on mssql: +:: we assume the usage of a local installed sqlexpress +:: create a user 'oc_autotest' with password 'owncloud' and assign the server role 'dbcreator' +:: make sure the sqlserver is configured to allow sql authentication +:: + diff --git a/config/config.sample.php b/config/config.sample.php index 2f394c41a3..ec61ceefd6 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -136,7 +136,7 @@ $CONFIG = array( "remember_login_cookie_lifetime" => 60*60*24*15, /* Custom CSP policy, changing this will overwrite the standard policy */ -"custom_csp_policy" => "default-src \'self\'; script-src \'self\' \'unsafe-eval\'; style-src \'self\' \'unsafe-inline\'; frame-src *; img-src *; font-src \'self\' data:", +"custom_csp_policy" => "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-src *; img-src *; font-src 'self' data:", /* The directory where the user data is stored, default to data in the owncloud * directory. The sqlite database is also stored here, when sqlite is used. diff --git a/core/ajax/share.php b/core/ajax/share.php index 6704a00c5a..9201b48cb9 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -34,7 +34,13 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $shareWith = null; } - $token = OCP\Share::shareItem($_POST['itemType'], $_POST['itemSource'], $shareType, $shareWith, $_POST['permissions']); + $token = OCP\Share::shareItem( + $_POST['itemType'], + $_POST['itemSource'], + $shareType, + $shareWith, + $_POST['permissions'] + ); if (is_string($token)) { OC_JSON::success(array('data' => array('token' => $token))); @@ -59,7 +65,13 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo break; case 'setPermissions': if (isset($_POST['shareType']) && isset($_POST['shareWith']) && isset($_POST['permissions'])) { - $return = OCP\Share::setPermissions($_POST['itemType'], $_POST['itemSource'], $_POST['shareType'], $_POST['shareWith'], $_POST['permissions']); + $return = OCP\Share::setPermissions( + $_POST['itemType'], + $_POST['itemSource'], + $_POST['shareType'], + $_POST['shareWith'], + $_POST['permissions'] + ); ($return) ? OC_JSON::success() : OC_JSON::error(); } break; @@ -86,9 +98,11 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo if ($type === 'dir') $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($displayName, $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($displayName, $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'); @@ -112,14 +126,29 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo } break; case 'getItem': - if (isset($_GET['itemType']) && isset($_GET['itemSource']) && isset($_GET['checkReshare']) && isset($_GET['checkShares'])) { + if (isset($_GET['itemType']) + && isset($_GET['itemSource']) + && isset($_GET['checkReshare']) + && isset($_GET['checkShares'])) { if ($_GET['checkReshare'] == 'true') { - $reshare = OCP\Share::getItemSharedWithBySource($_GET['itemType'], $_GET['itemSource'], OCP\Share::FORMAT_NONE, null, true); + $reshare = OCP\Share::getItemSharedWithBySource( + $_GET['itemType'], + $_GET['itemSource'], + OCP\Share::FORMAT_NONE, + null, + true + ); } else { $reshare = false; } if ($_GET['checkShares'] == 'true') { - $shares = OCP\Share::getItemShared($_GET['itemType'], $_GET['itemSource'], OCP\Share::FORMAT_NONE, null, true); + $shares = OCP\Share::getItemShared( + $_GET['itemType'], + $_GET['itemSource'], + OCP\Share::FORMAT_NONE, + null, + true + ); } else { $shares = false; } @@ -156,8 +185,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo $users = array(); $limit = 0; $offset = 0; - while ($count < 4 && count($users) == $limit) { - $limit = 4 - $count; + while ($count < 15 && count($users) == $limit) { + $limit = 15 - $count; if ($sharePolicy == 'groups_only') { $users = OC_Group::DisplayNamesInGroups($groups, $_GET['search'], $limit, $offset); } else { @@ -165,21 +194,34 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo } $offset += $limit; 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)); + 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++; } } } $count = 0; foreach ($groups as $group) { - if ($count < 4) { + if ($count < 15) { if (stripos($group, $_GET['search']) !== false && (!isset($_GET['itemShares']) || !isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP]) || !is_array($_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP]) || !in_array($group, $_GET['itemShares'][OCP\Share::SHARE_TYPE_GROUP]))) { - $shareWith[] = array('label' => $group.' (group)', 'value' => array('shareType' => OCP\Share::SHARE_TYPE_GROUP, 'shareWith' => $group)); + $shareWith[] = array( + 'label' => $group.' (group)', + 'value' => array( + 'shareType' => OCP\Share::SHARE_TYPE_GROUP, + 'shareWith' => $group + ) + ); $count++; } } else { diff --git a/core/ajax/translations.php b/core/ajax/translations.php index e52a2e9b1e..c9c6420779 100644 --- a/core/ajax/translations.php +++ b/core/ajax/translations.php @@ -21,7 +21,8 @@ * */ -$app = $_POST["app"]; +$app = isset($_POST["app"]) ? $_POST["app"] : ""; + $app = OC_App::cleanAppId($app); $l = OC_L10N::get( $app ); diff --git a/core/ajax/update.php b/core/ajax/update.php index 20ab045c89..8b20150d43 100644 --- a/core/ajax/update.php +++ b/core/ajax/update.php @@ -4,6 +4,7 @@ $RUNTIME_NOAPPS = true; require_once '../../lib/base.php'; if (OC::checkUpgrade(false)) { + \OC_DB::enableCaching(false); $updateEventSource = new OC_EventSource(); $watcher = new UpdateWatcher($updateEventSource); OC_Hook::connect('update', 'success', $watcher, 'success'); @@ -16,10 +17,6 @@ if (OC::checkUpgrade(false)) { } catch (Exception $exception) { $watcher->failure($exception->getMessage()); } - $minimizerCSS = new OC_Minimizer_CSS(); - $minimizerCSS->clearCache(); - $minimizerJS = new OC_Minimizer_JS(); - $minimizerJS->clearCache(); OC_Config::setValue('version', implode('.', OC_Util::getVersion())); OC_App::checkAppsRequirements(); // load all apps to also upgrade enabled apps @@ -64,4 +61,4 @@ class UpdateWatcher { $this->eventSource->close(); } -} \ No newline at end of file +} diff --git a/core/css/share.css b/core/css/share.css index e806d25982..2d6849b4bb 100644 --- a/core/css/share.css +++ b/core/css/share.css @@ -24,6 +24,18 @@ #shareWithList li { padding-top:.1em; } + + #shareWithList li:first-child { + white-space:normal; + } + + #shareWithList .cruds { + margin-left:-10px; + } + +#shareWithList .unshare img, #shareWithList .showCruds img { + vertical-align:text-bottom; /* properly align icons */ +} #dropdown label { font-weight:400; @@ -43,6 +55,7 @@ float:right; opacity:.5; padding:.3em 0 0 .3em !important; + margin-top:-5px; } #link { @@ -75,4 +88,12 @@ a.showCruds:hover,a.unshare:hover { opacity:1; - } \ No newline at end of file + } + +.reshare { white-space:normal; } /* fix shared by text going out of box */ + +.ui-autocomplete { /* limit dropdown height to 4 1/2 entries */ + max-height:103px; + overflow-y:auto; + overflow-x:hidden; +} diff --git a/core/css/styles.css b/core/css/styles.css index c2e1ad9208..0725e65896 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -32,12 +32,12 @@ background:linear-gradient(top, #35537a 0%,#1d2d42 100%); /* W3C */ filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', endColorstr='#1d2d42',GradientType=0 ); /* IE6-9 */ } #owncloud { position:absolute; top:0; left:0; padding:6px; padding-bottom:0; } -.header-right { float:right; vertical-align:middle; padding:0 0.5em; } +.header-right { float:right; vertical-align:middle; padding:0.5em; } .header-right > * { vertical-align:middle; } + /* INPUTS */ -input[type="text"], input[type="password"] { cursor:text; } -input[type="text"], input[type="password"], input[type="search"], +input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], textarea, select, button, .button, #quota, div.jp-progress, .pager li a { width:10em; margin:.3em; padding:.6em .5em .4em; font-size:1em; font-family:Arial, Verdana, sans-serif; @@ -46,12 +46,22 @@ textarea, select, button, .button, #quota, div.jp-progress, .pager li a { -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; } input[type="hidden"] { height:0; width:0; } -input[type="text"], input[type="password"], input[type="search"], textarea { background:#f8f8f8; color:#555; cursor:text; } -input[type="text"], input[type="password"], input[type="search"] { -webkit-appearance:textfield; -moz-appearance:textfield; -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; } +input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], textarea { + background:#f8f8f8; color:#555; cursor:text; +} +input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"] { + -webkit-appearance:textfield; -moz-appearance:textfield; + -webkit-box-sizing:content-box; -moz-box-sizing:content-box; box-sizing:content-box; +} input[type="text"]:hover, input[type="text"]:focus, input[type="text"]:active, input[type="password"]:hover, input[type="password"]:focus, input[type="password"]:active, +input[type="number"]:hover, input[type="number"]:focus, input[type="number"]:active, .searchbox input[type="search"]:hover, .searchbox input[type="search"]:focus, .searchbox input[type="search"]:active, -textarea:hover, textarea:focus, textarea:active { background-color:#fff; color:#333; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } +input[type="email"]:hover, input[type="email"]:focus, input[type="email"]:active, +textarea:hover, textarea:focus, textarea:active { + background-color:#fff; color:#333; + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; +} input[type="checkbox"] { margin:0; padding:0; height:auto; width:auto; } input[type="checkbox"]:hover+label, input[type="checkbox"]:focus+label { color:#111 !important; } #quota { cursor:default; } @@ -138,6 +148,7 @@ input[type="submit"].enabled { background:#66f866; border:1px solid #5e5; -moz-b #body-login div.buttons { text-align:center; } #body-login p.info { width:22em; text-align:center; margin:2em auto; color:#777; text-shadow:#fff 0 1px 0; } #body-login p.info a { font-weight:bold; color:#777; } +#body-login #submit.login { margin-right:7px; } /* quick fix for log in button not being aligned with input fields, should be properly fixed by input field width later */ #login { min-height:30em; margin:2em auto 0; border-bottom:1px solid #f8f8f8; background:#eee; } #login form { width:22em; margin:2em auto 2em; padding:0; } @@ -196,7 +207,7 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } #show, #personal-show { display:none; } #show + label { right:1em; top:1.25em!important; } #show:checked + label, #personal-show:checked + label { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; } -#show + label, #personal-show + label { +#show + label, #personal-show + label { position:absolute!important; height:14px; width:24px; background-image:url("../img/actions/toggle.png"); background-repeat:no-repeat; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; filter:alpha(opacity=30); opacity:.3; @@ -258,8 +269,8 @@ fieldset.warning a { color:#b94a48 !important; font-weight:bold; } #expand:hover img, #expand:focus img, #expand:active img { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } #expanddiv { position:absolute; right:0; top:45px; z-index:76; display:none; - background-color:#444; border-bottom-left-radius:7px; box-shadow: 0 0 20px rgb(29,45,68); - background:#383c43 url('../img/noise.png') repeat; border-bottom:1px #333 solid; border-left:border-bottom:1px #333 solid; + background:#383c43 url('../img/noise.png') repeat; + border-bottom-left-radius:7px; border-bottom:1px #333 solid; border-left:1px #333 solid; -moz-box-shadow:0 0 7px rgb(29,45,68); -webkit-box-shadow:0 0 7px rgb(29,45,68); box-shadow:0 0 7px rgb(29,45,68); } #expanddiv a { diff --git a/core/img/actions/caret-dark.png b/core/img/actions/caret-dark.png new file mode 100644 index 0000000000..ce7e1e6980 Binary files /dev/null and b/core/img/actions/caret-dark.png differ diff --git a/core/img/actions/caret-dark.svg b/core/img/actions/caret-dark.svg new file mode 100644 index 0000000000..abb1dc192d --- /dev/null +++ b/core/img/actions/caret-dark.svg @@ -0,0 +1,102 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/core/img/actions/triangle-n.png b/core/img/actions/triangle-n.png index b0d7183caa..14825f7011 100644 Binary files a/core/img/actions/triangle-n.png and b/core/img/actions/triangle-n.png differ diff --git a/core/img/actions/triangle-n.svg b/core/img/actions/triangle-n.svg index 3565863111..e8d70fa8ce 100644 --- a/core/img/actions/triangle-n.svg +++ b/core/img/actions/triangle-n.svg @@ -57,10 +57,10 @@ showgrid="true" inkscape:grid-bbox="true" inkscape:document-units="px" - inkscape:window-width="1920" - inkscape:window-height="1025" - inkscape:window-x="-2" - inkscape:window-y="-3" + inkscape:window-width="1280" + inkscape:window-height="773" + inkscape:window-x="0" + inkscape:window-y="-1" inkscape:window-maximized="1" /> @@ -79,14 +79,10 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + sodipodi:nodetypes="cccc" /> diff --git a/core/img/actions/triangle-s.png b/core/img/actions/triangle-s.png index 53590a2197..f36faef2b8 100644 Binary files a/core/img/actions/triangle-s.png and b/core/img/actions/triangle-s.png differ diff --git a/core/img/actions/triangle-s.svg b/core/img/actions/triangle-s.svg index f899300bbc..396c61e01e 100644 --- a/core/img/actions/triangle-s.svg +++ b/core/img/actions/triangle-s.svg @@ -14,7 +14,7 @@ height="16px" id="svg6077" version="1.1" - inkscape:version="0.48.2 r9819" + inkscape:version="0.48.3.1 r9886" sodipodi:docname="triangle-s.svg" inkscape:export-filename="/home/tol/tanghus-owncloud/core/img/actions/triangle-s.png" inkscape:export-xdpi="90" @@ -57,10 +57,10 @@ showgrid="true" inkscape:grid-bbox="true" inkscape:document-units="px" - inkscape:window-width="1600" - inkscape:window-height="845" - inkscape:window-x="-2" - inkscape:window-y="-3" + inkscape:window-width="1280" + inkscape:window-height="773" + inkscape:window-x="0" + inkscape:window-y="-1" inkscape:window-maximized="1" /> @@ -70,7 +70,7 @@ image/svg+xml - + @@ -79,14 +79,10 @@ inkscape:label="Layer 1" inkscape:groupmode="layer"> - + sodipodi:nodetypes="cccc" /> diff --git a/core/img/filetypes/application-msexcel.png b/core/img/filetypes/application-msexcel.png index abcd93689a..b977d7e52e 100644 Binary files a/core/img/filetypes/application-msexcel.png and b/core/img/filetypes/application-msexcel.png differ diff --git a/core/img/filetypes/application-mspowerpoint.png b/core/img/filetypes/application-mspowerpoint.png index b4aaad9a45..c4eff0387d 100644 Binary files a/core/img/filetypes/application-mspowerpoint.png and b/core/img/filetypes/application-mspowerpoint.png differ diff --git a/core/img/filetypes/application-msword.png b/core/img/filetypes/application-msword.png index e8b230c59c..ae8ecbf476 100644 Binary files a/core/img/filetypes/application-msword.png and b/core/img/filetypes/application-msword.png differ diff --git a/core/img/filetypes/ms-excel.png b/core/img/filetypes/ms-excel.png index abcd93689a..b977d7e52e 100644 Binary files a/core/img/filetypes/ms-excel.png and b/core/img/filetypes/ms-excel.png differ diff --git a/core/img/filetypes/ms-powerpoint.png b/core/img/filetypes/ms-powerpoint.png index b4aaad9a45..c4eff0387d 100644 Binary files a/core/img/filetypes/ms-powerpoint.png and b/core/img/filetypes/ms-powerpoint.png differ diff --git a/core/img/logo-square.png b/core/img/logo-square.png deleted file mode 100644 index b836de8f3b..0000000000 Binary files a/core/img/logo-square.png and /dev/null differ diff --git a/core/img/logo-sticker.jpg b/core/img/logo-sticker.jpg deleted file mode 100644 index ad2bf63ca3..0000000000 Binary files a/core/img/logo-sticker.jpg and /dev/null differ diff --git a/core/img/logo-sticker.svg b/core/img/logo-sticker.svg deleted file mode 100644 index e48f7a78c7..0000000000 --- a/core/img/logo-sticker.svg +++ /dev/null @@ -1,764 +0,0 @@ - - - -image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core/img/logo-wide.png b/core/img/logo-wide.png index 702f1d97e5..b0c90984e4 100644 Binary files a/core/img/logo-wide.png and b/core/img/logo-wide.png differ diff --git a/core/img/logo-wide.svg b/core/img/logo-wide.svg index 37fc000747..cf8eace520 100644 --- a/core/img/logo-wide.svg +++ b/core/img/logo-wide.svg @@ -19,8 +19,11 @@ viewBox="0 0 147.33262 32" enable-background="new 0 0 595.275 311.111" xml:space="preserve" - inkscape:version="0.48.2 r9819" - sodipodi:docname="logo-wide.svg">image/svg+xml + fit-margin-bottom="0"> \ No newline at end of file + \ No newline at end of file diff --git a/core/js/config.php b/core/js/config.php index 9069175ed6..0aaa448228 100644 --- a/core/js/config.php +++ b/core/js/config.php @@ -29,8 +29,33 @@ $array = array( "oc_current_user" => "\"".OC_User::getUser(). "\"", "oc_requesttoken" => "\"".OC_Util::callRegister(). "\"", "datepickerFormatDate" => json_encode($l->l('jsdate', 'jsdate')), - "dayNames" => json_encode(array((string)$l->t('Sunday'), (string)$l->t('Monday'), (string)$l->t('Tuesday'), (string)$l->t('Wednesday'), (string)$l->t('Thursday'), (string)$l->t('Friday'), (string)$l->t('Saturday'))), - "monthNames" => json_encode(array((string)$l->t('January'), (string)$l->t('February'), (string)$l->t('March'), (string)$l->t('April'), (string)$l->t('May'), (string)$l->t('June'), (string)$l->t('July'), (string)$l->t('August'), (string)$l->t('September'), (string)$l->t('October'), (string)$l->t('November'), (string)$l->t('December'))), + "dayNames" => json_encode( + array( + (string)$l->t('Sunday'), + (string)$l->t('Monday'), + (string)$l->t('Tuesday'), + (string)$l->t('Wednesday'), + (string)$l->t('Thursday'), + (string)$l->t('Friday'), + (string)$l->t('Saturday') + ) + ), + "monthNames" => json_encode( + array( + (string)$l->t('January'), + (string)$l->t('February'), + (string)$l->t('March'), + (string)$l->t('April'), + (string)$l->t('May'), + (string)$l->t('June'), + (string)$l->t('July'), + (string)$l->t('August'), + (string)$l->t('September'), + (string)$l->t('October'), + (string)$l->t('November'), + (string)$l->t('December') + ) + ), "firstDay" => json_encode($l->l('firstday', 'firstday')) , ); @@ -38,4 +63,3 @@ $array = array( foreach ($array as $setting => $value) { echo("var ". $setting ."=".$value.";\n"); } -?> \ No newline at end of file diff --git a/core/js/js.js b/core/js/js.js index 6d5d65403f..1a94215c27 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -1,7 +1,7 @@ /** * Disable console output unless DEBUG mode is enabled. * Add - * define('DEBUG', true); + * define('DEBUG', true); * To the end of config/config.php to enable debug mode. * The undefined checks fix the broken ie8 console */ @@ -44,13 +44,13 @@ function t(app,text, vars){ } } var _build = function (text, vars) { - return text.replace(/{([^{}]*)}/g, - function (a, b) { - var r = vars[b]; - return typeof r === 'string' || typeof r === 'number' ? r : a; - } - ); - }; + return text.replace(/{([^{}]*)}/g, + function (a, b) { + var r = vars[b]; + return typeof r === 'string' || typeof r === 'number' ? r : a; + } + ); + }; if( typeof( t.cache[app][text] ) !== 'undefined' ){ if(typeof vars === 'object') { return _build(t.cache[app][text], vars); @@ -274,7 +274,7 @@ var OC={ var popup = $('#appsettings_popup'); if(popup.length == 0) { $('body').prepend(''); - popup = $('#appsettings_popup'); + popup = $('#appsettings_popup'); popup.addClass(settings.hasClass('topright') ? 'topright' : 'bottomleft'); } if(popup.is(':visible')) { @@ -317,35 +317,44 @@ OC.addStyle.loaded=[]; OC.addScript.loaded=[]; OC.Notification={ - getDefaultNotificationFunction: null, - setDefault: function(callback) { - OC.Notification.getDefaultNotificationFunction = callback; - }, - hide: function(callback) { - $("#notification").text(''); - $('#notification').fadeOut('400', function(){ - if (OC.Notification.isHidden()) { - if (OC.Notification.getDefaultNotificationFunction) { - OC.Notification.getDefaultNotificationFunction.call(); - } - } - if (callback) { - callback.call(); - } - }); - }, - showHtml: function(html) { - var notification = $('#notification'); - notification.hide(); - notification.html(html); - notification.fadeIn().css("display","inline"); - }, - show: function(text) { - var notification = $('#notification'); - notification.hide(); - notification.text(text); - notification.fadeIn().css("display","inline"); - }, + queuedNotifications: [], + getDefaultNotificationFunction: null, + setDefault: function(callback) { + OC.Notification.getDefaultNotificationFunction = callback; + }, + hide: function(callback) { + $('#notification').fadeOut('400', function(){ + if (OC.Notification.isHidden()) { + if (OC.Notification.getDefaultNotificationFunction) { + OC.Notification.getDefaultNotificationFunction.call(); + } + } + if (callback) { + callback.call(); + } + $('#notification').empty(); + if(OC.Notification.queuedNotifications.length > 0){ + OC.Notification.showHtml(OC.Notification.queuedNotifications[0]); + OC.Notification.queuedNotifications.shift(); + } + }); + }, + showHtml: function(html) { + if(($('#notification').filter('span.undo').length == 1) || OC.Notification.isHidden()){ + $('#notification').html(html); + $('#notification').fadeIn().css("display","inline"); + }else{ + OC.Notification.queuedNotifications.push(html); + } + }, + show: function(text) { + if(($('#notification').filter('span.undo').length == 1) || OC.Notification.isHidden()){ + $('#notification').html(text); + $('#notification').fadeIn().css("display","inline"); + }else{ + OC.Notification.queuedNotifications.push($(text).html()); + } + }, isHidden: function() { return ($("#notification").text() === ''); } @@ -548,7 +557,7 @@ function replaceSVG(){ */ function object(o) { function F() {} - F.prototype = o; + F.prototype = o; return new F(); } @@ -584,6 +593,7 @@ function fillWindow(selector) { } $(document).ready(function(){ + sessionHeartBeat(); if(!SVGSupport()){ //replace all svg images with png images for browser that dont support svg replaceSVG(); @@ -669,7 +679,7 @@ $(document).ready(function(){ $('#settings #expanddiv').click(function(event){ event.stopPropagation(); }); - $(window).click(function(){//hide the settings menu when clicking outside it + $(document).click(function(){//hide the settings menu when clicking outside it $('#settings #expanddiv').slideUp(200); }); @@ -815,3 +825,17 @@ OC.set=function(name, value) { } context[tail]=value; }; + + +/** + * Calls the server periodically every 15 mins to ensure that session doesnt + * time out + */ +function sessionHeartBeat(){ + OC.Router.registerLoadedCallback(function(){ + var url = OC.Router.generate('heartbeat'); + setInterval(function(){ + $.post(url); + }, 900000); + }); +} diff --git a/core/js/multiselect.js b/core/js/multiselect.js index 623c6e0f7e..bc4223feb6 100644 --- a/core/js/multiselect.js +++ b/core/js/multiselect.js @@ -266,8 +266,9 @@ } list.append(list.find('li.creator')); var pos=button.position(); - if($(document).height() > (button.offset().top+button.outerHeight() + list.children().length * button.height()) - || $(document).height()/2 > pos.top + if(($(document).height() > (button.offset().top+button.outerHeight() + list.children().length * button.height()) + && $(document).height() - button.offset().top > (button.offset().top+button.outerHeight() + list.children().length * button.height())) + || $(document).height()/2 > button.offset().top ) { list.css({ top:pos.top+button.outerHeight()-5, diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 28dec97fd3..cfbca2833c 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -129,13 +129,13 @@ var OCdialogs = { var p; if ($(c_id).data('multiselect') == true) { p = []; - $(c_id+' .filepicker_element_selected #filename').each(function(i, elem) { + $(c_id+' .filepicker_element_selected .filename').each(function(i, elem) { p.push(($(c_id).data('path')?$(c_id).data('path'):'')+'/'+$(elem).text()); }); } else { var p = $(c_id).data('path'); if (p == undefined) p = ''; - p = p+'/'+$(c_id+' .filepicker_element_selected #filename').text() + p = p+'/'+$(c_id+' .filepicker_element_selected .filename').text() } callback(p); $(c_id).dialog('close'); @@ -216,13 +216,15 @@ var OCdialogs = { } }, fillFilePicker:function(r, dialog_content_id) { - var entry_template = '
    *NAME*
    *LASTMODDATE*
    '; + var entry_template = '
    *NAME*
    *LASTMODDATE*
    '; var names = ''; $.each(r.data, function(index, a) { names += entry_template.replace('*LASTMODDATE*', OC.mtime2date(a.mtime)).replace('*NAME*', a.name).replace('*MIMETYPEICON*', a.mimetype_icon).replace('*ENTRYNAME*', a.name).replace('*ENTRYTYPE*', a.type); }); - $(dialog_content_id + ' #filelist').html(names); + $(dialog_content_id + ' #filelist').html(names).on('click', '[data="file"]', function() { + OC.dialogs.handlePickerClick(this, $(this).data('entryname'), $(this).data('dcid')); + }); $(dialog_content_id + ' .filepicker_loader').css('visibility', 'hidden'); }, handleTreeListSelect:function(event) { diff --git a/core/js/router.js b/core/js/router.js index 3562785b34..b94721673a 100644 --- a/core/js/router.js +++ b/core/js/router.js @@ -1,11 +1,11 @@ -OC.router_base_url = OC.webroot + '/index.php/', +OC.router_base_url = OC.webroot + '/index.php', OC.Router = { // register your ajax requests to load after the loading of the routes // has finished. otherwise you face problems with race conditions registerLoadedCallback: function(callback){ this.routes_request.done(callback); }, - routes_request: $.ajax(OC.router_base_url + 'core/routes.json', { + routes_request: $.ajax(OC.router_base_url + '/core/routes.json', { dataType: 'json', success: function(jsondata) { if (jsondata.status === 'success') { diff --git a/core/js/setup.js b/core/js/setup.js index 2656cac2f4..76812b2997 100644 --- a/core/js/setup.js +++ b/core/js/setup.js @@ -5,6 +5,7 @@ $(document).ready(function() { mysql:!!$('#hasMySQL').val(), postgresql:!!$('#hasPostgreSQL').val(), oracle:!!$('#hasOracle').val(), + mssql:!!$('#hasMSSQL').val() }; $('#selectDbType').buttonset(); @@ -41,6 +42,12 @@ $(document).ready(function() { $('#dbhost').show(250); $('#dbhostlabel').show(250); }); + + $('#mssql').click(function() { + $('#use_other_db').slideDown(250); + $('#dbhost').show(250); + $('#dbhostlabel').show(250); + }); $('input[checked]').trigger('click'); diff --git a/core/js/share.js b/core/js/share.js index 6d1c395404..34f24da4df 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -24,9 +24,9 @@ OC.Share={ var file = $('tr').filterAttr('data-file', OC.basename(item)); if (file.length > 0) { var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share'); - action.find('img').attr('src', image); + var img = action.find('img').attr('src', image); action.addClass('permanent'); - action.html(t('core', 'Shared')); + action.html(' '+t('core', 'Shared')).prepend(img); } var dir = $('#dir').val(); if (dir.length > 1) { @@ -40,7 +40,7 @@ OC.Share={ if (img.attr('src') != OC.imagePath('core', 'actions/public')) { img.attr('src', image); action.addClass('permanent'); - action.html(t('core', 'Shared')); + action.html(' '+t('core', 'Shared')).prepend(img); } } last = path; @@ -84,13 +84,13 @@ OC.Share={ $('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); + var img = action.find('img').attr('src', image); if (shares) { action.addClass('permanent'); - action.html(t('core', 'Shared')); + action.html(' '+t('core', 'Shared')).prepend(img); } else { action.removeClass('permanent'); - action.html(t('core', 'Share')); + action.html(' '+t('core', 'Share')).prepend(img); } } if (shares) { @@ -186,8 +186,8 @@ OC.Share={ html += '
    '; html += ''; html += ''; } html += '
    '; @@ -213,7 +213,7 @@ OC.Share={ } }); } - $('#shareWith').autocomplete({minLength: 2, source: function(search, response) { + $('#shareWith').autocomplete({minLength: 1, source: function(search, response) { // if (cache[search.term]) { // response(cache[search.term]); // } else { @@ -309,12 +309,12 @@ OC.Share={ if (permissions & OC.PERMISSION_SHARE) { shareChecked = 'checked="checked"'; } - var html = '
  • '; + var html = '
  • '; html += ''; if(shareWith.length > 14){ - html += shareWithDisplayName.substr(0,11) + '...'; + html += escapeHTML(shareWithDisplayName.substr(0,11) + '...'); }else{ - html += shareWithDisplayName; + html += escapeHTML(shareWithDisplayName); } if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) { if (editChecked == '') { diff --git a/core/l10n/be.php b/core/l10n/be.php new file mode 100644 index 0000000000..ecf16e5d6a --- /dev/null +++ b/core/l10n/be.php @@ -0,0 +1,6 @@ + "Дасведчаны", +"Finish setup" => "Завяршыць ўстаноўку.", +"prev" => "Папярэдняя", +"next" => "Далей" +); diff --git a/core/l10n/ca.php b/core/l10n/ca.php index d260241c4d..3837ceb0f9 100644 --- a/core/l10n/ca.php +++ b/core/l10n/ca.php @@ -85,7 +85,7 @@ "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.", +"The update was successful. Redirecting you to ownCloud now." => "L'actualització ha estat correcte. Ara us redirigim 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.", diff --git a/core/l10n/de.php b/core/l10n/de.php index c18cf7259c..e60f061ff3 100644 --- a/core/l10n/de.php +++ b/core/l10n/de.php @@ -1,8 +1,8 @@ "Der Nutzer %s hat eine Datei für Dich freigegeben", -"User %s shared a folder with you" => "%s hat ein Verzeichnis für Dich freigegeben", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s hat eine Datei \"%s\" für Dich freigegeben. Sie ist zum Download hier ferfügbar: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat eine Verzeichnis \"%s\" für Dich freigegeben. Es ist zum Download hier ferfügbar: %s", +"User %s shared a file with you" => "Der Nutzer %s hat eine Datei mit Dir geteilt", +"User %s shared a folder with you" => "%s hat ein Verzeichnis mit Dir geteilt", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s hat die Datei \"%s\" mit Dir geteilt. Sie ist hier zum Download verfügbar: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat den Ordner \"%s\" mit Dir geteilt. Er ist hier zum Download verfügbar: %s", "Category type not provided." => "Kategorie nicht angegeben.", "No category to add?" => "Keine Kategorie hinzuzufügen?", "This category already exists: %s" => "Die Kategorie '%s' existiert bereits.", @@ -53,22 +53,22 @@ "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.", -"Shared" => "Freigegeben", -"Share" => "Freigeben", -"Error while sharing" => "Fehler beim Freigeben", -"Error while unsharing" => "Fehler beim Aufheben der Freigabe", +"Shared" => "Geteilt", +"Share" => "Teilen", +"Error while sharing" => "Fehler beim Teilen", +"Error while unsharing" => "Fehler beim Aufheben der Teilung", "Error while changing permissions" => "Fehler beim Ändern der Rechte", -"Shared with you and the group {group} by {owner}" => "{owner} hat dies für Dich und die Gruppe {group} freigegeben", -"Shared with you by {owner}" => "{owner} hat dies für Dich freigegeben", -"Share with" => "Freigeben für", -"Share with link" => "Über einen Link freigeben", +"Shared with you and the group {group} by {owner}" => "{owner} hat dies mit Dir und der Gruppe {group} geteilt", +"Shared with you by {owner}" => "{owner} hat dies mit Dir geteilt", +"Share with" => "Teilen mit", +"Share with link" => "Über einen Link freigegeben", "Password protect" => "Passwortschutz", "Password" => "Passwort", "Email link to person" => "Link per E-Mail verschicken", "Send" => "Senden", "Set expiration date" => "Setze ein Ablaufdatum", "Expiration date" => "Ablaufdatum", -"Share via email:" => "Über eine E-Mail freigeben:", +"Share via email:" => "Über eine E-Mail teilen:", "No people found" => "Niemand gefunden", "Resharing is not allowed" => "Weiterverteilen ist nicht erlaubt", "Shared in {item} with {user}" => "Für {user} in {item} freigegeben", @@ -78,7 +78,7 @@ "create" => "erstellen", "update" => "aktualisieren", "delete" => "löschen", -"share" => "freigeben", +"share" => "teilen", "Password protected" => "Durch ein Passwort geschützt", "Error unsetting expiration date" => "Fehler beim entfernen des Ablaufdatums", "Error setting expiration date" => "Fehler beim Setzen des Ablaufdatums", @@ -109,7 +109,7 @@ "Security Warning" => "Sicherheitswarnung", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktiviere die PHP-Erweiterung für OpenSSL.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Konten zu übernehmen.", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Dein Daten-Verzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Dein Datenverzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", "For information how to properly configure your server, please see the documentation." => "Bitte lesen Sie die Dokumentation für Informationen, wie Sie Ihren Server konfigurieren.", "Create an admin account" => "Administrator-Konto anlegen", "Advanced" => "Fortgeschritten", diff --git a/core/l10n/de_DE.php b/core/l10n/de_DE.php index b099510d0d..9a975ddcb8 100644 --- a/core/l10n/de_DE.php +++ b/core/l10n/de_DE.php @@ -1,8 +1,8 @@ "Der Nutzer %s hat eine Datei für Sie freigegeben", -"User %s shared a folder with you" => "%s hat ein Verzeichnis für Sie freigegeben", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s hat eine Datei \"%s\" für Sie freigegeben. Sie ist zum Download hier ferfügbar: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat eine Verzeichnis \"%s\" für Sie freigegeben. Es ist zum Download hier ferfügbar: %s", +"User %s shared a file with you" => "Der Nutzer %s hat eine Datei mit Ihnen geteilt", +"User %s shared a folder with you" => "%s hat einen Ordner mit Ihnen geteilt", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s hat die Datei \"%s\" mit Ihnen geteilt. Sie ist hier zum Download verfügbar: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s hat den Ordner \"%s\" mit Ihnen geteilt. Er ist hier zum Download verfügbar: %s", "Category type not provided." => "Kategorie nicht angegeben.", "No category to add?" => "Keine Kategorie hinzuzufügen?", "This category already exists: %s" => "Die Kategorie '%s' existiert bereits.", @@ -53,22 +53,22 @@ "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.", -"Shared" => "Freigegeben", -"Share" => "Freigeben", -"Error while sharing" => "Fehler bei der Freigabe", -"Error while unsharing" => "Fehler bei der Aufhebung der Freigabe", +"Shared" => "Geteilt", +"Share" => "Teilen", +"Error while sharing" => "Fehler beim Teilen", +"Error while unsharing" => "Fehler bei der Aufhebung der Teilung", "Error while changing permissions" => "Fehler bei der Änderung der Rechte", -"Shared with you and the group {group} by {owner}" => "Durch {owner} für Sie und die Gruppe {group} freigegeben.", -"Shared with you by {owner}" => "Durch {owner} für Sie freigegeben.", -"Share with" => "Freigeben für", -"Share with link" => "Über einen Link freigeben", +"Shared with you and the group {group} by {owner}" => "Von {owner} mit Ihnen und der Gruppe {group} geteilt.", +"Shared with you by {owner}" => "Von {owner} mit Ihnen geteilt.", +"Share with" => "Teilen mit", +"Share with link" => "Über einen Link teilen", "Password protect" => "Passwortschutz", "Password" => "Passwort", "Email link to person" => "Link per E-Mail verschicken", "Send" => "Senden", "Set expiration date" => "Setze ein Ablaufdatum", "Expiration date" => "Ablaufdatum", -"Share via email:" => "Mittels einer E-Mail freigeben:", +"Share via email:" => "Mittels einer E-Mail teilen:", "No people found" => "Niemand gefunden", "Resharing is not allowed" => "Das Weiterverteilen ist nicht erlaubt", "Shared in {item} with {user}" => "Freigegeben in {item} von {user}", @@ -78,13 +78,13 @@ "create" => "erstellen", "update" => "aktualisieren", "delete" => "löschen", -"share" => "freigeben", +"share" => "teilen", "Password protected" => "Durch ein Passwort geschützt", "Error unsetting expiration date" => "Fehler beim Entfernen des Ablaufdatums", "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 unsuccessful. Please report this issue to the ownCloud community." => "Das Update ist fehlgeschlagen. Bitte melden Sie dieses Problem an die ownCloud Community.", "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}", @@ -109,8 +109,8 @@ "Security Warning" => "Sicherheitshinweis", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Es ist kein sicherer Zufallszahlengenerator verfügbar, bitte aktivieren Sie die PHP-Erweiterung für OpenSSL.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Ohne einen sicheren Zufallszahlengenerator sind Angreifer in der Lage, die Tokens für das Zurücksetzen der Passwörter vorherzusehen und Ihr Konto zu übernehmen.", -"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Dein Daten-Verzeichnis und deine Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", -"For information how to properly configure your server, please see the documentation." => "Bitte lesen Sie die Dokumentation für Informationen, wie Sie Ihren Server wahrscheinlich konfigurieren.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Ihr Datenverzeichnis und Ihre Dateien sind wahrscheinlich vom Internet aus erreichbar, weil die .htaccess-Datei nicht funktioniert.", +"For information how to properly configure your server, please see the documentation." => "Bitte lesen Sie die Dokumentation für Informationen, wie Sie Ihren Server konfigurieren.", "Create an admin account" => "Administrator-Konto anlegen", "Advanced" => "Fortgeschritten", "Data folder" => "Datenverzeichnis", diff --git a/core/l10n/el.php b/core/l10n/el.php index 54720f5ecb..62d1256933 100644 --- a/core/l10n/el.php +++ b/core/l10n/el.php @@ -53,6 +53,7 @@ "Error" => "Σφάλμα", "The app name is not specified." => "Δεν καθορίστηκε το όνομα της εφαρμογής.", "The required file {file} is not installed!" => "Το απαιτούμενο αρχείο {file} δεν εγκαταστάθηκε!", +"Shared" => "Κοινόχρηστα", "Share" => "Διαμοιρασμός", "Error while sharing" => "Σφάλμα κατά τον διαμοιρασμό", "Error while unsharing" => "Σφάλμα κατά το σταμάτημα του διαμοιρασμού", @@ -83,6 +84,8 @@ "Error setting expiration date" => "Σφάλμα κατά τον ορισμό ημ. λήξης", "Sending ..." => "Αποστολή...", "Email sent" => "Το Email απεστάλη ", +"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." => "Θα λάβετε ένα σύνδεσμο για να επαναφέρετε τον κωδικό πρόσβασής σας μέσω ηλεκτρονικού ταχυδρομείου.", @@ -106,6 +109,8 @@ "Security Warning" => "Προειδοποίηση Ασφαλείας", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Δεν είναι διαθέσιμο το πρόσθετο δημιουργίας τυχαίων αριθμών ασφαλείας, παρακαλώ ενεργοποιήστε το πρόσθετο της PHP, OpenSSL.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Χωρίς το πρόσθετο δημιουργίας τυχαίων αριθμών ασφαλείας, μπορεί να διαρρεύσει ο λογαριασμός σας από επιθέσεις στο διαδίκτυο.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Ο κατάλογος δεδομένων και τα αρχεία σας είναι πιθανό προσβάσιμα από το internet γιατί δεν δουλεύει το αρχείο .htaccess.", +"For information how to properly configure your server, please see the documentation." => "Για πληροφορίες σχετικά με την σωστή ρύθμιση του διακομιστή σας, δείτε στην τεκμηρίωση.", "Create an admin account" => "Δημιουργήστε έναν λογαριασμό διαχειριστή", "Advanced" => "Για προχωρημένους", "Data folder" => "Φάκελος δεδομένων", @@ -125,6 +130,7 @@ "Lost your password?" => "Ξεχάσατε το συνθηματικό σας;", "remember" => "απομνημόνευση", "Log in" => "Είσοδος", +"Alternative Logins" => "Εναλλακτικές Συνδέσεις", "prev" => "προηγούμενο", "next" => "επόμενο", "Updating ownCloud to version %s, this may take a while." => "Ενημερώνοντας το ownCloud στην έκδοση %s,μπορεί να πάρει λίγο χρόνο." diff --git a/core/l10n/eu.php b/core/l10n/eu.php index 8c36254caf..834af44b38 100644 --- a/core/l10n/eu.php +++ b/core/l10n/eu.php @@ -1,8 +1,8 @@ "%s erabiltzaileak zurekin fitxategi bat partekatu du ", -"User %s shared a folder with you" => "%s erabiltzaileak zurekin karpeta bat partekatu du ", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" fitxategia zurekin partekatu du. Hemen duzu eskuragarri: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" karpeta zurekin partekatu du. Hemen duzu eskuragarri: %s", +"User %s shared a file with you" => "%s erabiltzaileak zurekin fitxategi bat elkarbanatu du ", +"User %s shared a folder with you" => "%s erabiltzaileak zurekin karpeta bat elkarbanatu du ", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" fitxategia zurekin elkarbanatu du. Hemen duzu eskuragarri: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s erabiltzaileak \"%s\" karpeta zurekin elkarbanatu du. Hemen duzu eskuragarri: %s", "Category type not provided." => "Kategoria mota ez da zehaztu.", "No category to add?" => "Ez dago gehitzeko kategoriarik?", "This category already exists: %s" => "Kategoria hau dagoeneko existitzen da: %s", @@ -58,8 +58,8 @@ "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", -"Shared with you and the group {group} by {owner}" => "{owner}-k zu eta {group} taldearekin partekatuta", -"Shared with you by {owner}" => "{owner}-k zurekin partekatuta", +"Shared with you and the group {group} by {owner}" => "{owner}-k zu eta {group} taldearekin elkarbanatuta", +"Shared with you by {owner}" => "{owner}-k zurekin elkarbanatuta", "Share with" => "Elkarbanatu honekin", "Share with link" => "Elkarbanatu lotura batekin", "Password protect" => "Babestu pasahitzarekin", @@ -71,7 +71,7 @@ "Share via email:" => "Elkarbanatu eposta bidez:", "No people found" => "Ez da inor aurkitu", "Resharing is not allowed" => "Berriz elkarbanatzea ez dago baimendua", -"Shared in {item} with {user}" => "{user}ekin {item}-n partekatuta", +"Shared in {item} with {user}" => "{user}ekin {item}-n elkarbanatuta", "Unshare" => "Ez elkarbanatu", "can edit" => "editatu dezake", "access control" => "sarrera kontrola", diff --git a/core/l10n/fa.php b/core/l10n/fa.php index 10a57962f6..2420ee67df 100644 --- a/core/l10n/fa.php +++ b/core/l10n/fa.php @@ -5,6 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "کاربر %s پوشه \"%s\" را با شما به اشتراک گذاشته است. پرونده برای دانلود اینجاست : %s", "Category type not provided." => "نوع دسته بندی ارائه نشده است.", "No category to add?" => "آیا گروه دیگری برای افزودن ندارید", +"This category already exists: %s" => "این دسته هم اکنون وجود دارد: %s", "Object type not provided." => "نوع شی ارائه نشده است.", "%s ID not provided." => "شناسه %s ارائه نشده است.", "Error adding %s to favorites." => "خطای اضافه کردن %s به علاقه مندی ها.", @@ -52,6 +53,7 @@ "Error" => "خطا", "The app name is not specified." => "نام برنامه تعیین نشده است.", "The required file {file} is not installed!" => "پرونده { پرونده} درخواست شده نصب نشده است !", +"Shared" => "اشتراک گذاشته شده", "Share" => "اشتراک‌گزاری", "Error while sharing" => "خطا درحال به اشتراک گذاشتن", "Error while unsharing" => "خطا درحال لغو اشتراک", @@ -63,6 +65,7 @@ "Password protect" => "نگهداری کردن رمز عبور", "Password" => "گذرواژه", "Email link to person" => "پیوند ایمیل برای شخص.", +"Send" => "ارسال", "Set expiration date" => "تنظیم تاریخ انقضا", "Expiration date" => "تاریخ انقضا", "Share via email:" => "از طریق ایمیل به اشتراک بگذارید :", @@ -79,6 +82,10 @@ "Password protected" => "نگهداری از رمز عبور", "Error unsetting expiration date" => "خطا در تنظیم نکردن تاریخ انقضا ", "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" => "پسورد ابرهای شما تغییرکرد", "Use the following link to reset your password: {link}" => "از لینک زیر جهت دوباره سازی پسورد استفاده کنید :\n{link}", "You will receive a link to reset your password via Email." => "شما یک نامه الکترونیکی حاوی یک لینک جهت بازسازی گذرواژه دریافت خواهید کرد.", @@ -122,5 +129,6 @@ "remember" => "بیاد آوری", "Log in" => "ورود", "prev" => "بازگشت", -"next" => "بعدی" +"next" => "بعدی", +"Updating ownCloud to version %s, this may take a while." => "به روز رسانی OwnCloud به نسخه ی %s، این عملیات ممکن است زمان بر باشد." ); diff --git a/core/l10n/gl.php b/core/l10n/gl.php index 8fd9292ce6..194c28e7cf 100644 --- a/core/l10n/gl.php +++ b/core/l10n/gl.php @@ -5,6 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "O usuario %s compartiu o cartafol «%s» con vostede. Teno dispoñíbel en: %s", "Category type not provided." => "Non se indicou o tipo de categoría", "No category to add?" => "Sen categoría que engadir?", +"This category already exists: %s" => "Esta categoría xa existe: %s", "Object type not provided." => "Non se forneceu o tipo de obxecto.", "%s ID not provided." => "Non se forneceu o ID %s.", "Error adding %s to favorites." => "Produciuse un erro ao engadir %s aos favoritos.", @@ -52,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", +"Shared" => "Compartir", "Share" => "Compartir", "Error while sharing" => "Produciuse un erro ao compartir", "Error while unsharing" => "Produciuse un erro ao deixar de compartir", @@ -82,6 +84,8 @@ "Error setting expiration date" => "Produciuse un erro ao definir a data de caducidade", "Sending ..." => "Enviando...", "Email sent" => "Correo enviado", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "A actualización non foi satisfactoria, informe deste problema á comunidade de ownCloud.", +"The update was successful. Redirecting you to ownCloud now." => "A actualización realizouse correctamente. Redirixíndoo agora á ownCloud.", "ownCloud password reset" => "Restabelecer o contrasinal de ownCloud", "Use the following link to reset your password: {link}" => "Usa a seguinte ligazón para restabelecer o contrasinal: {link}", "You will receive a link to reset your password via Email." => "Recibirá unha ligazón por correo para restabelecer o contrasinal", @@ -105,6 +109,8 @@ "Security Warning" => "Aviso de seguranza", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Non hai un xerador de números ao chou dispoñíbel. Active o engadido de OpenSSL para PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Sen un xerador seguro de números ao chou podería acontecer que predicindo as cadeas de texto de reinicio de contrasinais se afagan coa súa conta.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "O seu directorio de datos e os ficheiros probabelmente sexan accesíbeis desde a Internet xa que o ficheiro .htaccess non está a traballar.", +"For information how to properly configure your server, please see the documentation." => "Para obter información sobre como como configurar axeitadamente o seu servidor, vexa a documentación.", "Create an admin account" => "Crear unha contra de administrador", "Advanced" => "Avanzado", "Data folder" => "Cartafol de datos", @@ -124,6 +130,7 @@ "Lost your password?" => "Perdeu o contrasinal?", "remember" => "lembrar", "Log in" => "Conectar", +"Alternative Logins" => "Accesos alternativos", "prev" => "anterior", "next" => "seguinte", "Updating ownCloud to version %s, this may take a while." => "Actualizando ownCloud a versión %s, esto pode levar un anaco." diff --git a/core/l10n/he.php b/core/l10n/he.php index 75c378cece..1db5820bdf 100644 --- a/core/l10n/he.php +++ b/core/l10n/he.php @@ -5,6 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "המשתמש %s שיתף אתך את התיקייה „%s“. ניתן להוריד את התיקייה מכאן: %s", "Category type not provided." => "סוג הקטגוריה לא סופק.", "No category to add?" => "אין קטגוריה להוספה?", +"This category already exists: %s" => "הקטגוריה הבאה כבר קיימת: %s", "Object type not provided." => "סוג הפריט לא סופק.", "%s ID not provided." => "מזהה %s לא סופק.", "Error adding %s to favorites." => "אירעה שגיאה בעת הוספת %s למועדפים.", @@ -52,6 +53,7 @@ "Error" => "שגיאה", "The app name is not specified." => "שם היישום לא צוין.", "The required file {file} is not installed!" => "הקובץ הנדרש {file} אינו מותקן!", +"Shared" => "שותף", "Share" => "שתף", "Error while sharing" => "שגיאה במהלך השיתוף", "Error while unsharing" => "שגיאה במהלך ביטול השיתוף", @@ -82,6 +84,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." => "יישלח לתיבת הדוא״ל שלך קישור לאיפוס הססמה.", @@ -105,6 +109,8 @@ "Security Warning" => "אזהרת אבטחה", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "אין מחולל מספרים אקראיים מאובטח, נא להפעיל את ההרחבה OpenSSL ב־PHP.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "ללא מחולל מספרים אקראיים מאובטח תוקף יכול לנבא את מחרוזות איפוס הססמה ולהשתלט על החשבון שלך.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "תיקיית וקבצי המידע שלך כנראה נגישים מהאינטרנט מכיוון שקובץ ה.htaccess לא עובד.", +"For information how to properly configure your server, please see the documentation." => "לקבלת מידע להגדרה נכונה של השרת שלך, ראה את התיעוד.", "Create an admin account" => "יצירת חשבון מנהל", "Advanced" => "מתקדם", "Data folder" => "תיקיית נתונים", @@ -124,6 +130,7 @@ "Lost your password?" => "שכחת את ססמתך?", "remember" => "שמירת הססמה", "Log in" => "כניסה", +"Alternative Logins" => "כניסות אלטרנטיביות", "prev" => "הקודם", "next" => "הבא", "Updating ownCloud to version %s, this may take a while." => "מעדכן את ownCloud אל גרסא %s, זה עלול לקחת זמן מה." diff --git a/core/l10n/id.php b/core/l10n/id.php index 697195e751..0be3ef20fb 100644 --- a/core/l10n/id.php +++ b/core/l10n/id.php @@ -1,6 +1,12 @@ "Tipe kategori tidak diberikan.", "No category to add?" => "Tidak ada kategori yang akan ditambahkan?", +"This category already exists: %s" => "Kategori ini sudah ada: %s", +"Object type not provided." => "Tipe obyek tidak diberikan.", +"%s ID not provided." => "%s ID tidak diberikan.", +"Error adding %s to favorites." => "Kesalahan menambah %s ke favorit", "No categories selected for deletion." => "Tidak ada kategori terpilih untuk penghapusan.", +"Error removing %s from favorites." => "Kesalahan menghapus %s dari favorit", "Sunday" => "minggu", "Monday" => "senin", "Tuesday" => "selasa", @@ -23,9 +29,14 @@ "Settings" => "Setelan", "seconds ago" => "beberapa detik yang lalu", "1 minute ago" => "1 menit lalu", +"{minutes} minutes ago" => "{minutes} menit yang lalu", +"1 hour ago" => "1 jam yang lalu", +"{hours} hours ago" => "{hours} jam yang lalu", "today" => "hari ini", "yesterday" => "kemarin", +"{days} days ago" => "{days} hari yang lalu", "last month" => "bulan kemarin", +"{months} months ago" => "{months} bulan yang lalu", "months ago" => "beberapa bulan lalu", "last year" => "tahun kemarin", "years ago" => "beberapa tahun lalu", @@ -35,7 +46,8 @@ "Yes" => "Ya", "Ok" => "Oke", "Error" => "gagal", -"Share" => "berbagi", +"Shared" => "Terbagi", +"Share" => "Bagi", "Error while sharing" => "gagal ketika membagikan", "Error while unsharing" => "gagal ketika membatalkan pembagian", "Error while changing permissions" => "gagal ketika merubah perijinan", @@ -45,6 +57,8 @@ "Share with link" => "bagikan dengan tautan", "Password protect" => "lindungi dengan kata kunci", "Password" => "Password", +"Email link to person" => "Email link ini ke orang", +"Send" => "Kirim", "Set expiration date" => "set tanggal kadaluarsa", "Expiration date" => "tanggal kadaluarsa", "Share via email:" => "berbagi memlalui surel:", @@ -61,9 +75,13 @@ "Password protected" => "dilindungi kata kunci", "Error unsetting expiration date" => "gagal melepas tanggal kadaluarsa", "Error setting expiration date" => "gagal memasang tanggal kadaluarsa", +"Sending ..." => "Sedang mengirim ...", +"Email sent" => "Email terkirim", +"The update was successful. Redirecting you to ownCloud now." => "Update sukses. Membawa anda ke ownCloud sekarang.", "ownCloud password reset" => "reset password ownCloud", "Use the following link to reset your password: {link}" => "Gunakan tautan berikut untuk mereset password anda: {link}", "You will receive a link to reset your password via Email." => "Anda akan mendapatkan link untuk mereset password anda lewat Email.", +"Request failed!" => "Permintaan gagal!", "Username" => "Username", "Request reset" => "Meminta reset", "Your password was reset" => "Password anda telah direset", @@ -100,6 +118,7 @@ "Lost your password?" => "Lupa password anda?", "remember" => "selalu login", "Log in" => "Masuk", +"Alternative Logins" => "Login dengan cara lain", "prev" => "sebelum", "next" => "selanjutnya" ); diff --git a/core/l10n/ka.php b/core/l10n/ka.php new file mode 100644 index 0000000000..b8deeb1e55 --- /dev/null +++ b/core/l10n/ka.php @@ -0,0 +1,12 @@ + "წამის წინ", +"1 minute ago" => "1 წუთის წინ", +"1 hour ago" => "1 საათის წინ", +"today" => "დღეს", +"yesterday" => "გუშინ", +"Password" => "პაროლი", +"Personal" => "პერსონა", +"Users" => "მომხმარებლები", +"Admin" => "ადმინისტრატორი", +"Help" => "შველა" +); diff --git a/core/l10n/ka_GE.php b/core/l10n/ka_GE.php index 731a353455..4cdada58d9 100644 --- a/core/l10n/ka_GE.php +++ b/core/l10n/ka_GE.php @@ -48,7 +48,7 @@ "Set expiration date" => "მიუთითე ვადის გასვლის დრო", "Expiration date" => "ვადის გასვლის დრო", "Share via email:" => "გააზიარე მეილზე", -"No people found" => "გვერდი არ არის ნაპოვნი", +"No people found" => "მომხმარებელი არ არის ნაპოვნი", "Resharing is not allowed" => "მეორეჯერ გაზიარება არ არის დაშვებული", "Unshare" => "გაზიარების მოხსნა", "can edit" => "შეგიძლია შეცვლა", @@ -64,11 +64,11 @@ "Use the following link to reset your password: {link}" => "გამოიყენე შემდეგი ლინკი პაროლის შესაცვლელად: {link}", "You will receive a link to reset your password via Email." => "თქვენ მოგივათ პაროლის შესაცვლელი ლინკი მეილზე", "Username" => "მომხმარებელი", -"Request reset" => "რესეტის მოთხოვნა", +"Request reset" => "პაროლის შეცვლის მოთხოვნა", "Your password was reset" => "თქვენი პაროლი შეცვლილია", "To login page" => "შესვლის გვერდზე", "New password" => "ახალი პაროლი", -"Reset password" => "პაროლის რესეტი", +"Reset password" => "პაროლის შეცვლა", "Personal" => "პირადი", "Users" => "მომხმარებლები", "Apps" => "აპლიკაციები", @@ -81,16 +81,16 @@ "Security Warning" => "უსაფრთხოების გაფრთხილება", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "შემთხვევითი სიმბოლოების გენერატორი არ არსებობს, გთხოვთ ჩართოთ PHP OpenSSL გაფართოება.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "შემთხვევითი სიმბოლოების გენერატორის გარეშე, შემტევმა შეიძლება ამოიცნოს თქვენი პაროლი შეგიცვალოთ ის და დაეუფლოს თქვენს ექაუნთს.", -"Create an admin account" => "შექმენი ადმინ ექაუნტი", +"Create an admin account" => "შექმენი ადმინ ექაუნტი", "Advanced" => "Advanced", "Data folder" => "მონაცემთა საქაღალდე", -"Configure the database" => "ბაზის კონფიგურირება", +"Configure the database" => "მონაცემთა ბაზის კონფიგურირება", "will be used" => "გამოყენებული იქნება", -"Database user" => "ბაზის მომხმარებელი", -"Database password" => "ბაზის პაროლი", -"Database name" => "ბაზის სახელი", +"Database user" => "მონაცემთა ბაზის მომხმარებელი", +"Database password" => "მონაცემთა ბაზის პაროლი", +"Database name" => "მონაცემთა ბაზის სახელი", "Database tablespace" => "ბაზის ცხრილის ზომა", -"Database host" => "ბაზის ჰოსტი", +"Database host" => "მონაცემთა ბაზის ჰოსტი", "Finish setup" => "კონფიგურაციის დასრულება", "web services under your control" => "თქვენი კონტროლის ქვეშ მყოფი ვებ სერვისები", "Log out" => "გამოსვლა", diff --git a/core/l10n/my_MM.php b/core/l10n/my_MM.php new file mode 100644 index 0000000000..97631d4df5 --- /dev/null +++ b/core/l10n/my_MM.php @@ -0,0 +1,64 @@ + "ထည့်ရန်ခေါင်းစဉ်မရှိဘူးလား", +"No categories selected for deletion." => "ဖျက်ရန်အတွက်ခေါင်းစဉ်မရွေးထားပါ", +"January" => "ဇန်နဝါရီ", +"February" => "ဖေဖော်ဝါရီ", +"March" => "မတ်", +"April" => "ဧပြီ", +"May" => "မေ", +"June" => "ဇွန်", +"July" => "ဇူလိုင်", +"August" => "ဩဂုတ်", +"September" => "စက်တင်ဘာ", +"October" => "အောက်တိုဘာ", +"November" => "နိုဝင်ဘာ", +"December" => "ဒီဇင်ဘာ", +"seconds ago" => "စက္ကန့်အနည်းငယ်က", +"1 minute ago" => "၁ မိနစ်အရင်က", +"1 hour ago" => "၁ နာရီ အရင်က", +"today" => "ယနေ့", +"yesterday" => "မနေ့က", +"last month" => "ပြီးခဲ့သောလ", +"last year" => "မနှစ်က", +"years ago" => "နှစ် အရင်က", +"Choose" => "ရွေးချယ်", +"Cancel" => "ပယ်ဖျက်မည်", +"No" => "မဟုတ်ဘူး", +"Yes" => "ဟုတ်", +"Ok" => "အိုကေ", +"Password" => "စကားဝှက်", +"Set expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်သတ်မှတ်မည်", +"Expiration date" => "သက်တမ်းကုန်ဆုံးမည့်ရက်", +"Share via email:" => "အီးမေးလ်ဖြင့်ဝေမျှမည် -", +"Resharing is not allowed" => "ပြန်လည်ဝေမျှခြင်းခွင့်မပြုပါ", +"can edit" => "ပြင်ဆင်နိုင်", +"create" => "ဖန်တီးမည်", +"delete" => "ဖျက်မည်", +"share" => "ဝေမျှမည်", +"Password protected" => "စကားဝှက်ဖြင့်ကာကွယ်ထားသည်", +"You will receive a link to reset your password via Email." => "အီးမေးလ်မှတစ်ဆင့် သင်၏စကားဝှက်ကို ပြန်ဖော်ရန်အတွက် Link တစ်ခုလက်ခံရရှိပါလိမ့်မယ်။", +"Username" => "သုံးစွဲသူအမည်", +"Your password was reset" => "သင်၏စကားဝှက်ကိုပြန်ဖော်ပြီးပါပြီ။", +"To login page" => "ဝင်ရောက်သည့်စာမျက်နှာသို့", +"New password" => "စကားဝှက်အသစ်", +"Users" => "သုံးစွဲသူ", +"Apps" => "Apps", +"Admin" => "အက်ဒမင်", +"Help" => "အကူအညီ", +"Cloud not found" => "မတွေ့ရှိမိပါ", +"Add" => "ပေါင်းထည့်", +"Security Warning" => "လုံခြုံရေးသတိပေးချက်", +"Create an admin account" => "အက်ဒမင်အကောင့်တစ်ခုဖန်တီးမည်", +"Advanced" => "အဆင့်မြင့်", +"Data folder" => "အချက်အလက်ဖိုလ်ဒါလ်", +"Database user" => "Database သုံးစွဲသူ", +"Database password" => "Database စကားဝှက်", +"Database name" => "Database အမည်", +"Finish setup" => "တပ်ဆင်ခြင်းပြီးပါပြီ။", +"web services under your control" => "သင်၏ထိန်းချုပ်မှု့အောက်တွင်ရှိသော Web services", +"Lost your password?" => "သင်၏စကားဝှက်ပျောက်သွားပြီလား။", +"remember" => "မှတ်မိစေသည်", +"Log in" => "ဝင်ရောက်ရန်", +"prev" => "ယခင်", +"next" => "နောက်သို့" +); diff --git a/core/l10n/pl.php b/core/l10n/pl.php index 8f548fe5be..4914ec6691 100644 --- a/core/l10n/pl.php +++ b/core/l10n/pl.php @@ -1,15 +1,16 @@ "Użytkownik %s współdzieli plik z tobą", -"User %s shared a folder with you" => "Uzytkownik %s wspóldzieli folder z toba", -"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Użytkownik %s współdzieli plik \"%s\" z tobą. Jest dostępny tutaj: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Uzytkownik %s wspóldzieli folder \"%s\" z toba. Jest dostepny tutaj: %s", -"Category type not provided." => "Typ kategorii nie podany.", -"No category to add?" => "Brak kategorii", -"Object type not provided." => "Typ obiektu nie podany.", -"%s ID not provided." => "%s ID nie podany.", -"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.", +"User %s shared a file with you" => "Użytkownik %s udostępnił ci plik", +"User %s shared a folder with you" => "Użytkownik %s udostępnił ci folder", +"User %s shared the file \"%s\" with you. It is available for download here: %s" => "Użytkownik %s udostępnił ci plik „%s”. Możesz pobrać go stąd: %s", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Użytkownik %s udostępnił ci folder „%s”. Możesz pobrać go stąd: %s", +"Category type not provided." => "Nie podano typu kategorii.", +"No category to add?" => "Brak kategorii do dodania?", +"This category already exists: %s" => "Ta kategoria już istnieje: %s", +"Object type not provided." => "Nie podano typu obiektu.", +"%s ID not provided." => "Nie podano ID %s.", +"Error adding %s to favorites." => "Błąd podczas dodawania %s do ulubionych.", +"No categories selected for deletion." => "Nie zaznaczono kategorii do usunięcia.", +"Error removing %s from favorites." => "Błąd podczas usuwania %s z ulubionych.", "Sunday" => "Niedziela", "Monday" => "Poniedziałek", "Tuesday" => "Wtorek", @@ -31,63 +32,65 @@ "December" => "Grudzień", "Settings" => "Ustawienia", "seconds ago" => "sekund temu", -"1 minute ago" => "1 minute temu", +"1 minute ago" => "1 minutę temu", "{minutes} minutes ago" => "{minutes} minut temu", -"1 hour ago" => "1 godzine temu", +"1 hour ago" => "1 godzinę temu", "{hours} hours ago" => "{hours} godzin temu", "today" => "dziś", "yesterday" => "wczoraj", "{days} days ago" => "{days} dni temu", -"last month" => "ostani miesiąc", +"last month" => "w zeszłym miesiącu", "{months} months ago" => "{months} miesięcy temu", "months ago" => "miesięcy temu", -"last year" => "ostatni rok", +"last year" => "w zeszłym roku", "years ago" => "lat temu", "Choose" => "Wybierz", "Cancel" => "Anuluj", "No" => "Nie", "Yes" => "Tak", -"Ok" => "Ok", -"The object type is not specified." => "Typ obiektu nie jest określony.", +"Ok" => "OK", +"The object type is not specified." => "Nie określono typu obiektu.", "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!", +"The app name is not specified." => "Nie określono nazwy aplikacji.", +"The required file {file} is not installed!" => "Wymagany plik {file} nie jest zainstalowany!", "Shared" => "Udostępniono", "Share" => "Udostępnij", "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ń", -"Shared with you and the group {group} by {owner}" => "Udostępnione Tobie i grupie {group} przez {owner}", -"Shared with you by {owner}" => "Udostępnione Ci przez {owner}", +"Shared with you and the group {group} by {owner}" => "Udostępnione tobie i grupie {group} przez {owner}", +"Shared with you by {owner}" => "Udostępnione tobie przez {owner}", "Share with" => "Współdziel z", -"Share with link" => "Współdziel z link", -"Password protect" => "Zabezpieczone hasłem", +"Share with link" => "Współdziel wraz z odnośnikiem", +"Password protect" => "Zabezpiecz hasłem", "Password" => "Hasło", -"Email link to person" => "Email do osoby", +"Email link to person" => "Wyślij osobie odnośnik poprzez e-mail", "Send" => "Wyślij", "Set expiration date" => "Ustaw datę wygaśnięcia", "Expiration date" => "Data wygaśnięcia", -"Share via email:" => "Współdziel poprzez maila", +"Share via email:" => "Współdziel poprzez e-mail:", "No people found" => "Nie znaleziono ludzi", "Resharing is not allowed" => "Współdzielenie nie jest możliwe", "Shared in {item} with {user}" => "Współdzielone w {item} z {user}", "Unshare" => "Zatrzymaj współdzielenie", -"can edit" => "można edytować", +"can edit" => "może edytować", "access control" => "kontrola dostępu", "create" => "utwórz", "update" => "uaktualnij", "delete" => "usuń", "share" => "współdziel", "Password protected" => "Zabezpieczone hasłem", -"Error unsetting expiration date" => "Błąd niszczenie daty wygaśnięcia", +"Error unsetting expiration date" => "Błąd podczas usuwania daty wygaśnięcia", "Error setting expiration date" => "Błąd podczas ustawiania daty wygaśnięcia", "Sending ..." => "Wysyłanie...", -"Email sent" => "Wyślij Email", -"ownCloud password reset" => "restart hasła", -"Use the following link to reset your password: {link}" => "Proszę użyć tego odnośnika do zresetowania hasła: {link}", +"Email sent" => "E-mail wysłany", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "Aktualizacja zakończyła się niepowodzeniem. Zgłoś ten problem spoleczności ownCloud.", +"The update was successful. Redirecting you to ownCloud now." => "Aktualizacji zakończyła się powodzeniem. Przekierowuję do ownCloud.", +"ownCloud password reset" => "restart hasła ownCloud", +"Use the following link to reset your password: {link}" => "Użyj tego odnośnika by zresetować hasło: {link}", "You will receive a link to reset your password via Email." => "Odnośnik służący do resetowania hasła zostanie wysłany na adres e-mail.", -"Reset email send." => "Wyślij zresetowany email.", -"Request failed!" => "Próba nieudana!", +"Reset email send." => "Wysłano e-mail resetujący.", +"Request failed!" => "Żądanie nieudane!", "Username" => "Nazwa użytkownika", "Request reset" => "Żądanie resetowania", "Your password was reset" => "Zresetowano hasło", @@ -96,20 +99,22 @@ "Reset password" => "Zresetuj hasło", "Personal" => "Osobiste", "Users" => "Użytkownicy", -"Apps" => "Programy", +"Apps" => "Aplikacje", "Admin" => "Administrator", "Help" => "Pomoc", "Access forbidden" => "Dostęp zabroniony", "Cloud not found" => "Nie odnaleziono chmury", -"Edit categories" => "Edytuj kategorię", +"Edit categories" => "Edytuj kategorie", "Add" => "Dodaj", "Security Warning" => "Ostrzeżenie o zabezpieczeniach", -"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Niedostępny bezpieczny generator liczb losowych, należy włączyć rozszerzenie OpenSSL w PHP.", -"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Bez bezpiecznego generatora liczb losowych, osoba atakująca może być w stanie przewidzieć resetujące hasło tokena i przejąć kontrolę nad swoim kontem.", -"Create an admin account" => "Tworzenie konta administratora", +"No secure random number generator is available, please enable the PHP OpenSSL extension." => "Bezpieczny generator liczb losowych jest niedostępny. Włącz rozszerzenie OpenSSL w PHP.", +"Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Bez bezpiecznego generatora liczb losowych, osoba atakująca może przewidzieć token resetujący hasło i przejąć kontrolę nad twoim kontem.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Twój katalog danych i pliki są prawdopodobnie dostępne z poziomu internetu, ponieważ plik .htaccess nie działa.", +"For information how to properly configure your server, please see the documentation." => "Aby uzyskać informacje dotyczące prawidłowej konfiguracji serwera, sięgnij do dokumentacji.", +"Create an admin account" => "Utwórz konta administratora", "Advanced" => "Zaawansowane", "Data folder" => "Katalog danych", -"Configure the database" => "Konfiguracja bazy danych", +"Configure the database" => "Skonfiguruj bazę danych", "will be used" => "zostanie użyte", "Database user" => "Użytkownik bazy danych", "Database password" => "Hasło do bazy danych", @@ -118,14 +123,15 @@ "Database host" => "Komputer bazy danych", "Finish setup" => "Zakończ konfigurowanie", "web services under your control" => "usługi internetowe pod kontrolą", -"Log out" => "Wylogowuje użytkownika", +"Log out" => "Wyloguj", "Automatic logon rejected!" => "Automatyczne logowanie odrzucone!", -"If you did not change your password recently, your account may be compromised!" => "Jeśli nie było zmianie niedawno hasło, Twoje konto może być zagrożone!", -"Please change your password to secure your account again." => "Proszę zmienić swoje hasło, aby zabezpieczyć swoje konto ponownie.", +"If you did not change your password recently, your account may be compromised!" => "Jeśli hasło było dawno niezmieniane, twoje konto może być zagrożone!", +"Please change your password to secure your account again." => "Zmień swoje hasło, aby ponownie zabezpieczyć swoje konto.", "Lost your password?" => "Nie pamiętasz hasła?", -"remember" => "Zapamiętanie", +"remember" => "pamiętaj", "Log in" => "Zaloguj", +"Alternative Logins" => "Alternatywne loginy", "prev" => "wstecz", "next" => "naprzód", -"Updating ownCloud to version %s, this may take a while." => "Aktualizowanie ownCloud do wersji %s, może to potrwać chwilę." +"Updating ownCloud to version %s, this may take a while." => "Aktualizowanie ownCloud do wersji %s. Może to trochę potrwać." ); diff --git a/core/l10n/sk_SK.php b/core/l10n/sk_SK.php index b2c2dcf989..7e32dac57e 100644 --- a/core/l10n/sk_SK.php +++ b/core/l10n/sk_SK.php @@ -1,11 +1,11 @@ "Používateľ %s zdieľa s Vami súbor", -"User %s shared a folder with you" => "Používateľ %s zdieľa s Vami adresár", +"User %s shared a folder with you" => "Používateľ %s zdieľa s Vami priečinok", "User %s shared the file \"%s\" with you. It is available for download here: %s" => "Používateľ %s zdieľa s Vami súbor \"%s\". Môžete si ho stiahnuť tu: %s", -"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Používateľ %s zdieľa s Vami adresár \"%s\". Môžete si ho stiahnuť tu: %s", -"Category type not provided." => "Neposkytnutý kategorický typ.", +"User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Používateľ %s zdieľa s Vami priečinok \"%s\". Môžete si ho stiahnuť tu: %s", +"Category type not provided." => "Neposkytnutý typ kategórie.", "No category to add?" => "Žiadna kategória pre pridanie?", -"This category already exists: %s" => "Kategéria: %s už existuje.", +"This category already exists: %s" => "Kategória: %s už existuje.", "Object type not provided." => "Neposkytnutý typ objektu.", "%s ID not provided." => "%s ID neposkytnuté.", "Error adding %s to favorites." => "Chyba pri pridávaní %s do obľúbených položiek.", @@ -52,9 +52,9 @@ "The object type is not specified." => "Nešpecifikovaný typ objektu.", "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ý!", +"The required file {file} is not installed!" => "Požadovaný súbor {file} nie je nainštalovaný!", "Shared" => "Zdieľané", -"Share" => "Zdieľaj", +"Share" => "Zdieľať", "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í", @@ -64,7 +64,7 @@ "Share with link" => "Zdieľať cez odkaz", "Password protect" => "Chrániť heslom", "Password" => "Heslo", -"Email link to person" => "Odoslať odkaz osobe e-mailom", +"Email link to person" => "Odoslať odkaz emailom", "Send" => "Odoslať", "Set expiration date" => "Nastaviť dátum expirácie", "Expiration date" => "Dátum expirácie", @@ -74,18 +74,18 @@ "Shared in {item} with {user}" => "Zdieľané v {item} s {user}", "Unshare" => "Zrušiť zdieľanie", "can edit" => "môže upraviť", -"access control" => "riadenie prístupu", +"access control" => "prístupové práva", "create" => "vytvoriť", -"update" => "aktualizácia", -"delete" => "zmazať", +"update" => "aktualizovať", +"delete" => "vymazať", "share" => "zdieľať", "Password protected" => "Chránené heslom", -"Error unsetting expiration date" => "Chyba pri odstraňovaní dátumu vypršania platnosti", -"Error setting expiration date" => "Chyba pri nastavení dátumu vypršania platnosti", +"Error unsetting expiration date" => "Chyba pri odstraňovaní dátumu expirácie", +"Error setting expiration date" => "Chyba pri nastavení dátumu expirácie", "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.", +"The update was successful. Redirecting you to ownCloud now." => "Aktualizácia bola úspešná. Presmerovávam na prihlasovaciu stránku.", "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.", @@ -96,7 +96,7 @@ "Your password was reset" => "Vaše heslo bolo obnovené", "To login page" => "Na prihlasovaciu stránku", "New password" => "Nové heslo", -"Reset password" => "Obnova hesla", +"Reset password" => "Obnovenie hesla", "Personal" => "Osobné", "Users" => "Používatelia", "Apps" => "Aplikácie", @@ -112,7 +112,7 @@ "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Váš priečinok s dátami a súbormi je dostupný z internetu, lebo súbor .htaccess nefunguje.", "For information how to properly configure your server, please see the documentation." => "Pre informácie, ako správne nastaviť Váš server sa pozrite do dokumentácie.", "Create an admin account" => "Vytvoriť administrátorský účet", -"Advanced" => "Pokročilé", +"Advanced" => "Rozšírené", "Data folder" => "Priečinok dát", "Configure the database" => "Nastaviť databázu", "will be used" => "bude použité", @@ -130,7 +130,7 @@ "Lost your password?" => "Zabudli ste heslo?", "remember" => "zapamätať", "Log in" => "Prihlásiť sa", -"Alternative Logins" => "Altrnatívne loginy", +"Alternative Logins" => "Alternatívne prihlasovanie", "prev" => "späť", "next" => "ďalej", "Updating ownCloud to version %s, this may take a while." => "Aktualizujem ownCloud na verziu %s, môže to chvíľu trvať." diff --git a/core/l10n/ta_LK.php b/core/l10n/ta_LK.php index f7ad09fbc7..9863ca8154 100644 --- a/core/l10n/ta_LK.php +++ b/core/l10n/ta_LK.php @@ -91,7 +91,7 @@ "Admin" => "நிர்வாகி", "Help" => "உதவி", "Access forbidden" => "அணுக தடை", -"Cloud not found" => "Cloud கண்டுப்பிடிப்படவில்லை", +"Cloud not found" => "Cloud காணப்படவில்லை", "Edit categories" => "வகைகளை தொகுக்க", "Add" => "சேர்க்க", "Security Warning" => "பாதுகாப்பு எச்சரிக்கை", diff --git a/core/l10n/tr.php b/core/l10n/tr.php index 201b511647..9d9ff0e7eb 100644 --- a/core/l10n/tr.php +++ b/core/l10n/tr.php @@ -5,6 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "%s kullanıcısı \"%s\" dizinini sizinle paylaştı. %s adresinden indirilebilir", "Category type not provided." => "Kategori türü desteklenmemektedir.", "No category to add?" => "Eklenecek kategori yok?", +"This category already exists: %s" => "Bu kategori zaten mevcut: %s", "Object type not provided." => "Nesne türü desteklenmemektedir.", "%s ID not provided." => "%s ID belirtilmedi.", "Error adding %s to favorites." => "%s favorilere eklenirken hata oluştu", @@ -52,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.", +"Shared" => "Paylaşılan", "Share" => "Paylaş", "Error while sharing" => "Paylaşım sırasında hata ", "Error while unsharing" => "Paylaşım iptal ediliyorken hata", @@ -82,6 +84,8 @@ "Error setting expiration date" => "Geçerlilik tarihi tanımlama hatası", "Sending ..." => "Gönderiliyor...", "Email sent" => "Eposta gönderildi", +"The update was unsuccessful. Please report this issue to the ownCloud community." => "Güncelleme başarılı olmadı. Lütfen bu hatayı bildirin ownCloud community.", +"The update was successful. Redirecting you to ownCloud now." => "Güncelleme başarılı. ownCloud'a yönlendiriliyor.", "ownCloud password reset" => "ownCloud parola sıfırlama", "Use the following link to reset your password: {link}" => "Bu bağlantıyı kullanarak parolanızı sıfırlayın: {link}", "You will receive a link to reset your password via Email." => "Parolanızı sıfırlamak için bir bağlantı Eposta olarak gönderilecek.", @@ -105,6 +109,8 @@ "Security Warning" => "Güvenlik Uyarisi", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Güvenli rasgele sayı üreticisi bulunamadı. Lütfen PHP OpenSSL eklentisini etkinleştirin.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Güvenli rasgele sayı üreticisi olmadan saldırganlar parola sıfırlama simgelerini tahmin edip hesabınızı ele geçirebilir.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Veri klasörünüz ve dosyalarınız .htaccess dosyası çalışmadığı için internet'ten erişime açık.", +"For information how to properly configure your server, please see the documentation." => "Server'ınızı nasıl ayarlayacağınıza dair bilgi için, lütfen bu linki ziyaret edin documentation.", "Create an admin account" => "Bir yönetici hesabı oluşturun", "Advanced" => "Gelişmiş", "Data folder" => "Veri klasörü", @@ -124,6 +130,7 @@ "Lost your password?" => "Parolanızı mı unuttunuz?", "remember" => "hatırla", "Log in" => "Giriş yap", +"Alternative Logins" => "Alternatif Girişler", "prev" => "önceki", "next" => "sonraki", "Updating ownCloud to version %s, this may take a while." => "Owncloud %s versiyonuna güncelleniyor. Biraz zaman alabilir." diff --git a/core/l10n/uk.php b/core/l10n/uk.php index a2f297fc22..685a31d52e 100644 --- a/core/l10n/uk.php +++ b/core/l10n/uk.php @@ -5,6 +5,7 @@ "User %s shared the folder \"%s\" with you. It is available for download here: %s" => "Користувач %s поділився текою \"%s\" з вами. Він доступний для завантаження звідси: %s", "Category type not provided." => "Не вказано тип категорії.", "No category to add?" => "Відсутні категорії для додавання?", +"This category already exists: %s" => "Ця категорія вже існує: %s", "Object type not provided." => "Не вказано тип об'єкту.", "%s ID not provided." => "%s ID не вказано.", "Error adding %s to favorites." => "Помилка при додаванні %s до обраного.", @@ -108,6 +109,8 @@ "Security Warning" => "Попередження про небезпеку", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Не доступний безпечний генератор випадкових чисел, будь ласка, активуйте PHP OpenSSL додаток.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Без безпечного генератора випадкових чисел зловмисник може визначити токени скидання пароля і заволодіти Вашим обліковим записом.", +"Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Ваші дані каталогів і файлів, ймовірно, доступні з інтернету, тому що .htaccess файл не працює.", +"For information how to properly configure your server, please see the documentation." => "Для отримання інформації, як правильно налаштувати сервер, зверніться до документації.", "Create an admin account" => "Створити обліковий запис адміністратора", "Advanced" => "Додатково", "Data folder" => "Каталог даних", diff --git a/core/l10n/ur_PK.php b/core/l10n/ur_PK.php new file mode 100644 index 0000000000..e2448c4d65 --- /dev/null +++ b/core/l10n/ur_PK.php @@ -0,0 +1,78 @@ + "شامل کرنے کے لیے کوئی زمرہ نہیں؟", +"No categories selected for deletion." => "ختم کرنے کے لیے کسی زمرہ جات کا انتخاب نہیں کیا گیا۔", +"January" => "جنوری", +"February" => "فرورئ", +"March" => "مارچ", +"April" => "اپریل", +"May" => "مئی", +"June" => "جون", +"July" => "جولائی", +"August" => "اگست", +"September" => "ستمبر", +"October" => "اکتوبر", +"November" => "نومبر", +"December" => "دسمبر", +"Settings" => "سیٹینگز", +"Choose" => "منتخب کریں", +"Cancel" => "منسوخ کریں", +"No" => "نہیں", +"Yes" => "ہاں", +"Ok" => "اوکے", +"Error" => "ایرر", +"Error while sharing" => "شئیرنگ کے دوران ایرر", +"Error while unsharing" => "شئیرنگ ختم کرنے کے دوران ایرر", +"Error while changing permissions" => "اختیارات کو تبدیل کرنے کے دوران ایرر", +"Share with" => "اس کے ساتھ شئیر کریں", +"Share with link" => "لنک کے ساتھ شئیر کریں", +"Password protect" => "پاسورڈ سے محفوظ کریں", +"Password" => "پاسورڈ", +"Set expiration date" => "تاریخ معیاد سیٹ کریں", +"Expiration date" => "تاریخ معیاد", +"No people found" => "کوئی لوگ نہیں ملے۔", +"Resharing is not allowed" => "دوبارہ شئیر کرنے کی اجازت نہیں", +"Unshare" => "شئیرنگ ختم کریں", +"can edit" => "ایڈٹ کر سکے", +"access control" => "اسیس کنٹرول", +"create" => "نیا بنائیں", +"update" => "اپ ڈیٹ", +"delete" => "ختم کریں", +"share" => "شئیر کریں", +"Password protected" => "پاسورڈ سے محفوظ کیا گیا ہے", +"ownCloud password reset" => "اون کلاؤڈ پاسورڈ ری سیٹ", +"Use the following link to reset your password: {link}" => "اپنا پاسورڈ ری سیٹ کرنے کے لیے اس لنک پر کلک کریں۔ {link}", +"You will receive a link to reset your password via Email." => "آپ ای میل کے ذریعے اپنے پاسورڈ ری سیٹ کا لنک موصول کریں گے", +"Username" => "یوزر نیم", +"Request reset" => "ری سیٹ کی درخواست کریں", +"Your password was reset" => "آپ کا پاسورڈ ری سیٹ کر دیا گیا ہے", +"To login page" => "لاگ ان صفحے کی طرف", +"New password" => "نیا پاسورڈ", +"Reset password" => "ری سیٹ پاسورڈ", +"Personal" => "ذاتی", +"Users" => "یوزرز", +"Apps" => "ایپز", +"Admin" => "ایڈمن", +"Help" => "مدد", +"Access forbidden" => "پہنچ کی اجازت نہیں", +"Cloud not found" => "نہیں مل سکا", +"Edit categories" => "زمرہ جات کی تدوین کریں", +"Add" => "شامل کریں", +"Create an admin account" => "ایک ایڈمن اکاؤنٹ بنائیں", +"Advanced" => "ایڈوانسڈ", +"Data folder" => "ڈیٹا فولڈر", +"Configure the database" => "ڈیٹا بیس کونفگر کریں", +"will be used" => "استعمال ہو گا", +"Database user" => "ڈیٹابیس یوزر", +"Database password" => "ڈیٹابیس پاسورڈ", +"Database name" => "ڈیٹابیس کا نام", +"Database tablespace" => "ڈیٹابیس ٹیبل سپیس", +"Database host" => "ڈیٹابیس ہوسٹ", +"Finish setup" => "سیٹ اپ ختم کریں", +"web services under your control" => "آپ کے اختیار میں ویب سروسیز", +"Log out" => "لاگ آؤٹ", +"Lost your password?" => "کیا آپ پاسورڈ بھول گئے ہیں؟", +"remember" => "یاد رکھیں", +"Log in" => "لاگ ان", +"prev" => "پچھلا", +"next" => "اگلا" +); diff --git a/core/lostpassword/controller.php b/core/lostpassword/controller.php index 3ef8eaf71a..fbcf4a87f2 100644 --- a/core/lostpassword/controller.php +++ b/core/lostpassword/controller.php @@ -44,7 +44,11 @@ class OC_Core_LostPassword_Controller { $msg = $tmpl->fetchPage(); $l = OC_L10N::get('core'); $from = OCP\Util::getDefaultEmailAddress('lostpassword-noreply'); - OC_Mail::send($email, $_POST['user'], $l->t('ownCloud password reset'), $msg, $from, 'ownCloud'); + try { + OC_Mail::send($email, $_POST['user'], $l->t('ownCloud password reset'), $msg, $from, 'ownCloud'); + } catch (Exception $e) { + OC_Template::printErrorPage( 'A problem occurs during sending the e-mail please contact your administrator.'); + } self::displayLostPasswordPage(false, true); } else { self::displayLostPasswordPage(true, false); diff --git a/core/lostpassword/templates/lostpassword.php b/core/lostpassword/templates/lostpassword.php index 55c070f3e0..dc9f0bc8ad 100644 --- a/core/lostpassword/templates/lostpassword.php +++ b/core/lostpassword/templates/lostpassword.php @@ -9,7 +9,7 @@

    - +

    diff --git a/core/routes.php b/core/routes.php index 2527816b66..be19b66bf7 100644 --- a/core/routes.php +++ b/core/routes.php @@ -69,3 +69,8 @@ $this->create('app_script', '/apps/{app}/{file}') ->defaults(array('file' => 'index.php')) ->requirements(array('file' => '.*.php')) ->action('OC', 'loadAppScriptFile'); + +// used for heartbeat +$this->create('heartbeat', '/heartbeat')->action(function(){ + // do nothing +}); \ No newline at end of file diff --git a/core/setup.php b/core/setup.php index f16385466c..77eed5376d 100644 --- a/core/setup.php +++ b/core/setup.php @@ -16,6 +16,7 @@ $hasSQLite = class_exists('SQLite3'); $hasMySQL = is_callable('mysql_connect'); $hasPostgreSQL = is_callable('pg_connect'); $hasOracle = is_callable('oci_connect'); +$hasMSSQL = is_callable('sqlsrv_connect'); $datadir = OC_Config::getValue('datadirectory', OC::$SERVERROOT.'/data'); // Protect data directory here, so we can test if the protection is working @@ -26,6 +27,7 @@ $opts = array( 'hasMySQL' => $hasMySQL, 'hasPostgreSQL' => $hasPostgreSQL, 'hasOracle' => $hasOracle, + 'hasMSSQL' => $hasMSSQL, 'directory' => $datadir, 'secureRNG' => OC_Util::secureRNG_available(), 'htaccessWorking' => OC_Util::ishtaccessworking(), diff --git a/core/templates/403.php b/core/templates/403.php index fbf0e64fdb..6e910fd2e8 100644 --- a/core/templates/403.php +++ b/core/templates/403.php @@ -9,7 +9,7 @@ if(!isset($_)) {//also provide standalone error page ?>
    • - t( 'Access forbidden' ); ?>
      -

      + t( 'Access forbidden' )); ?>
      +

    diff --git a/core/templates/404.php b/core/templates/404.php index c111fd70fa..ee17f0de8e 100644 --- a/core/templates/404.php +++ b/core/templates/404.php @@ -9,7 +9,7 @@ if(!isset($_)) {//also provide standalone error page ?>
    • - t( 'Cloud not found' ); ?>
      -

      + t( 'Cloud not found' )); ?>
      +

    diff --git a/core/templates/edit_categories_dialog.php b/core/templates/edit_categories_dialog.php index d0b7b5ee62..ea155bdf0b 100644 --- a/core/templates/edit_categories_dialog.php +++ b/core/templates/edit_categories_dialog.php @@ -1,19 +1,19 @@ -
    +
      -
    • +
    - +
    diff --git a/core/templates/error.php b/core/templates/error.php index 4f05e008f9..ac91357b35 100644 --- a/core/templates/error.php +++ b/core/templates/error.php @@ -1,8 +1,8 @@
    • -
      -

      +
      +

    diff --git a/core/templates/exception.php b/core/templates/exception.php deleted file mode 100644 index 62d6cf2ade..0000000000 --- a/core/templates/exception.php +++ /dev/null @@ -1,30 +0,0 @@ -
      -
    • -
      - We're sorry, but something went terribly wrong.
      -

      - bug tracker, please copy the following informations into the description.

      '; - } else { - echo 'Your administrator has disabled systeminformations.'; - } - ?> -

      -
      -
    • -
    diff --git a/core/templates/installation.php b/core/templates/installation.php index b3b7cfc4b8..842686932c 100644 --- a/core/templates/installation.php +++ b/core/templates/installation.php @@ -1,7 +1,8 @@ -'> -'> -'> -'> +'> +'> +'> +'> +'>
    0): ?> @@ -9,10 +10,10 @@
  • - -

    + +

    - +
  • @@ -20,118 +21,143 @@
    - t('Security Warning');?> -

    t('No secure random number generator is available, please enable the PHP OpenSSL extension.');?>
    - t('Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account.');?>

    + t('Security Warning'));?> +

    t('No secure random number generator is available, please enable the PHP OpenSSL extension.'));?>
    + t('Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account.'));?>

    - t('Security Warning');?> -

    t('Your data directory and files are probably accessible from the internet because the .htaccess file does not work.');?>
    - t('For information how to properly configure your server, please see the documentation.');?>

    + t('Security Warning'));?> +

    t('Your data directory and files are probably accessible from the internet because the .htaccess file does not work.'));?>
    + t('For information how to properly configure your server, please see the documentation.'));?>

    - t( 'Create an admin account' ); ?> + t( 'Create an admin account' )); ?>

    - - - + + +

    - - - + + +

    - t( 'Advanced' ); ?> + t( 'Advanced' )); ?>
    - - + +
    - - t( 'Configure the database' ); ?> + + t( 'Configure the database' )); ?>
    -

    SQLite t( 'will be used' ); ?>.

    +

    SQLite t( 'will be used' )); ?>.

    - /> + /> - -

    MySQL t( 'will be used' ); ?>.

    + +

    MySQL t( 'will be used' )); ?>.

    - /> + /> - -

    PostgreSQL t( 'will be used' ); ?>.

    + +

    PostgreSQL t( 'will be used' )); ?>.

    - /> + /> - -

    Oracle t( 'will be used' ); ?>.

    + +

    Oracle t( 'will be used' )); ?>.

    - /> + /> + + + + +

    MS SQL t( 'will be used' )); ?>.

    + + + + /> + +

    - - + +

    - - + +

    - - + +

    - - + +

    - - + +

    -
    +
    diff --git a/core/templates/layout.base.php b/core/templates/layout.base.php index 2049bcb36d..336df27ef1 100644 --- a/core/templates/layout.base.php +++ b/core/templates/layout.base.php @@ -1,27 +1,33 @@ - + + + + + + ownCloud - + + - + - + $value) { - echo "$name='$value' "; + print_unescaped("$name='$value' "); }; - echo '/>'; + print_unescaped('/>'); ?> - + diff --git a/core/templates/layout.guest.php b/core/templates/layout.guest.php index 69330aa9fc..0416192543 100644 --- a/core/templates/layout.guest.php +++ b/core/templates/layout.guest.php @@ -1,24 +1,30 @@ - + + + + + + ownCloud - + + - + - + $value) { - echo "$name='$value' "; + print_unescaped("$name='$value' "); }; - echo '/>'; + print_unescaped('/>'); ?> @@ -26,10 +32,11 @@
    - +
    -

    ownCloudt( 'web services under your control' ); ?>

    +

    ownCloud – + t( 'web services under your control' )); ?>

    diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 2d00bdb5c8..982efb412b 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -1,68 +1,81 @@ - + + + + + + - <?php echo !empty($_['application'])?$_['application'].' | ':'' ?>ownCloud <?php echo !empty($_['user_displayname'])?' ('.$_['user_displayname'].') ':'' ?> + <?php p(!empty($_['application'])?$_['application'].' | ':'') ?>ownCloud + <?php p(trim($_['user_displayname']) != '' ?' ('.$_['user_displayname'].') ':'') ?> - + + - + - + $value) { - echo "$name='$value' "; + print_unescaped("$name='$value' "); }; - echo '/>'; + print_unescaped('/>'); ?> - +