diff --git a/.htaccess b/.htaccess index 048a56d6389dd0b05cc0b4bd36490f125631bdaa..616118b2ce8ae57bd914f595f1d6f069e52478c7 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 9b113c4f6742e981d1310f0af731120323009295..5f5d190cb0152dc5d85541614b71de81468ea298 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 b9a4ddaf5e7df297d3ad4c5666e35eec4f344a2b..7c8dcb372e24c5d4517b1ac5459e1c03feb9744a 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 07977f5ddf1ddb04972bd027b903429889dc04db..5b697777e47cd701f09c4d61d1d7c95dfcb9c8d1 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 7c82c839dabd9f609ace7b8527b883fb41001518..34800378537ead29daf6456563038a43dc3bbbe4 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 dfc2e4c0e2f7255379fdc5c08e4fe55868e82af4..4d2b16e6f1c2f4cefbbf04410e8678f5f7adeb68 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 434e98c6ea847a8b2f2316c570685be84b1446d4..20fbf7f93be9a1232f271188c10c5f28da047976 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 cc107656da8dc55055cf57b4cc910053a624958c..1db54f45bb82839d86cc41ec6f68a16178de636f 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 918182162d4694598b35cf4f283a85d75aac2d39..a4ef41c280382cdf34925504d416ea0ea39777eb 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 f16a83bdfa370ee82b714a126c9db5951afd9c4d..a4d23e5afb54e317b8a7b15ddd8aea2f343de914 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 05cfb9f1381e9d95889789932b21318e19805f64..aec5d7f9d9215e934c10358d6e782ad844d5c4b4 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 ecfc6abc8d506ae3032cf27dc0f37c1f6a958b2d..43aaea31e8a722e7268338990b0e9fe610752ef7 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 7376056e4c379a8659b9025d80896039f335beaa..48b60bfb7118c7f8e3cb82e1118369bdf8682930 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 8b4ad675e0f4adf583590857253268a071ea2b1e..c147c939f847bd96768e18ca3850777ab187d883 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 d96e512ece25b33c5953d975e653b4ecabe385d3..53427503f4c0ac790c3a126e1705d99b7f2efded 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 0dfc19ff01bd9570b1c464760a4ffd3d11de8f6a..538c1b63652f2c0ba16466473d39256215364976 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 2a110afa9602e08d10ca4c1850ddb2479cf5a818..63759f1201eed295f2c01c994604f811d7d963cd 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 b943244f1ae74a77bb2559e4e66f544a756f66dd..225408f9a76e8ef9b664bc1e25e18572016cb8f1 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 12262b54818eee70d1b443555ff21e5f8acf9c8a..f702a5b513d4d89ea35f2771074255e14f61627d 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 0dc423f96f5a88096f25b2c125be4d8f45fc5601..f16385a652d5b4318036a5e1f7b035cbb9cadbfc 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 3ec7cbb1a64d4349cf2e254d10a7c6fef06fd64b..f1c94e93aab7a02334a4f41f10c0f0f1d38cff6c 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 10f19cf4cbb53763ad1d1540139dbd2dc6a2a437..63c62ce9a55d92e747edcdd88cde30a3ad92d0ff 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 d4cbb99e10aa2edb6bae15b2cd5700f846b14643..f4e0af9576d269c298ee3ec0cbe3de814beb1871 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 81ac32c09f3a08dd78d2c1d76668db8d57aeb37b..6eb891d29d3b5b902b9090b93c21130f4c0c605b 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 e2af33da77f59e794fd3dfbcc8ebef68affeb011..9849184441d861a43f605a4d580129fc5e665fc7 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 91896b8e39b660f89516aa971d13c937e063751d..d48839d0b6022788f0243af3f1054f1469ede71a 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 442eafe1c04362590237f3a6ea121cdfe240b57b..9d6b411c415d826adc98c0f95df0b74cb83a1ab7 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 9eed324415abe7855be13b3aa3c30465ec943f93..54d5033f907d1cdce3825039c6a6877bce46befc 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 0000000000000000000000000000000000000000..29c0cd8b8d0627dcd2b067b297f902c626f162ef --- /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 4c4e2e0f7144b1a40cfa34e3cb013b240a1e18e3..aff1933e569e9d3b801b5769dcf8d083dbfadf7c 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 c0898c555b9f63b158dc087471063d85e292960c..9d735c3c5411ab29e43c2d0cde6f7c5290b09612 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 583a0ca7f7d5427ed64636bd7612632dbee7ab5e..2aac4ef20f532176aa0fccbf4433ff377866aead 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 85ec6b6e953fd979e8fe737ebc9780aa548eabb1..88349d1ba4022e84598b962386581d5188e5c24a 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 0000000000000000000000000000000000000000..148e688547a77524b2b5d762b2b1946469b54eac --- /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 a7b58f02d21e37d51ddda793f3cc3e6038dbc7ed..421c720a330024db5d36e0e4ac8eb5322695d234 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 d483f8061a1995810bd8b584b595c8524d80c6fb..ba45bdaa5d7f2b479f15f10354434d1b489560cf 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 70296b5db9f99c9f9d19f5d75d25cf145743af7a..2f16fc224200fe36a54171ea990ab6a02c9220ce 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 9d4d2c9fb6caf70d8b062edda26316669382ffea..a7a9284c6512fa1661554d042198dcfa1d742f11 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 5cb7e7205845fe65188807dbdaf8b0a16e9a8b31..cf9ad8abafc75fdcf85a367e91786d0155dd62ca 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 0000000000000000000000000000000000000000..b791a134ccce079a6f7c47dbc4b5bb61eb1586fc --- /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 2609923cbf49a93250b51940b22bdba814e57cf3..d9972feb6a585c8bde21be9082311499f3db0126 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 381325d113ce94c8332c7fbcdf037ac17e4ea3f2..6af7edf2501836bf3ba9dc6d8f7dc497af5464d0 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 83091bad18cf94b9e3e07617d2d6d6f28cd59250..89eb3421291944cdec37b27f1d8506c94c08d258 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 3a9dafcabf97d7099e067349f2d0240750e35961..3bebb68227113e7e01b39f667e072fd70608fdac 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 e036b3dacbb5895e63a938703810a33a736b48a7..7162517e8162dcff122399c849521733ad5a79b1 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 79604f56ad2fb95536022e1065eff76e6571ab00..153caba2291e8938db91e0e8d0f3316f993df763 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 803b34e99c8efbb3c0a76f33f313a1005ff51257..cf8ee7c6c75693c0bda14776b6f5372b6af9533c 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 dbeab6b351e87ed09a4cada8c012eab7cc0fa805..054ed8094db1b6d74d861565689a47aa736dc615 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 8ece8140d8a15d273915a9c86a32aa5111d47902..a6cb2909111d3e9183acae000e50453492db5e89 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 6a379459f0e4d105b7ef1219e15a679cb2d4bf17..6458a588aedfe2165b0836f1d837209c375fac64 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 e50d6612c4c43bff2c8eabfb61c36ac0e78e3339..fe71ee9c90d1b05bcd9712f9b5ca340dd0157d43 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 ca4dfcf553b8fefe61cc42e0cc25db140b6a2a41..ca9610a33c7766bb746df9c14008180b134b41fd 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 069a2ac58230462ba46cc32381d3ecb769c4a75a..304453f1290b87b5b30e3df562bf0c77488625ef 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 fce74874f137bbddedcb5b5614b6c560f9cd912a..2353501b4782dfe8ba4649a43ef9dabf282ea3e4 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 f6943f1f4d145e18ae1fd35e8e797140c28136c1..bcbef8daf3581dfd47cfe09cc87f59c863dcc9df 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 7e499e6c2c83b8afd3b3d0a5a0d2ef300f17eee7..f5e161996c0e2e993ba98a802d348f50e4415a24 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 b069246f01767292cddc72304271e04b25d285ec..affca6c12f86b9109dcd20781ea2aeb209598fec 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 727b8038000d556e902c919de3387debb8e2fa04..fa75627f141da59894425a31de973b64b97cde34 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 569aaf1b0aef7c14213241338860791500cb72e2..88fdc537c3aab28ae731fe0bcc9c7bd02f3651f5 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 7be0f1d658c7f4d96463b2ef4a2d6f7c90595dae..793fedac41260ef5630419250e01b2bc6bad9c03 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 ad69b5519d9a616a354256f4aea247ce3428d5b0..e1ca6afc4ada49f11ba2fa1da5c0df8bd242dec0 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 c7bf0d21c13dcf021d68b106ce22926bd4bc8bb7..a53df4e2d3e808af55e8d55136e56868cf627342 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 f01cb8d212a8eb0a7dac203a491509da912e0183..7ea1755d1d7459c8ac8ce2d01c8013328e876671 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 de6cc7130284ca37c0148a18c8059e1ebc625c11..e03f086e47d487518539afdc6d0b8c345c1de706 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 c7cd8ca32de87890a1057fb576e1bb705c0a284a..f7b2140b580afa15b02923ec1f3ac0d8f91b5e5e 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 3f9a6c7d07f89c8f6d1ec9806981af61765b0251..6044348e72e335b5f813e25382185af6bfd9927f 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 e52ecb868af102a058ea58e23d00456dc891a788..a5e16a034218f70cfbd03f2b55073b9c46934166 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 0868d0a69053a9779b74f04d672f91d313cbb4c8..6b42c757e6577a64371ba5d57f679eb136d17c48 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 8236c5afefd415f0220732f3bf7ff483910d6206..d495714119163fc5709491d5491a6a2795609cbb 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 47467c52c08a3879064624754a3e271815e63146..5f0accaed5fd960c3c6a2a08b3493f483148b841 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 f7ef8a8efe65772bb44d0775766c214a0c3e2ffa..b873d7f5aafd8e081088de28b8ad009aabcc5a56 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 4cd8871b310c34384f979b0390a4274919cc23b2..fed2ddfcf3d95e3597b6426b0eac3cdf0cedabfa 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 7794238ab3619092042a149cc19c3dcfdde1426d..43fd6752c4ae9a1d85d4a95f4362a47cd05fcb1f 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 d976c0175232bfe3364f84cca636a40a708765d1..d786c6c7a2aa33552d1ad30c93bf325f4000f014 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 2c04216a9fb00f17cbf31ab6dc569970b6a4a928..0542b7b10a7afe831d0b917b9daf284949ab08f5 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 ca4b1c3ba8937d6affb071e89621cf047fa227ad..94b453793b1badda59574975a89fb9da90893b4e 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 0000000000000000000000000000000000000000..e8cf45e7a41e358da5d573dc48edf966b9d8d3cb 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 0000000000000000000000000000000000000000..6f7022ee7f5672b43bdf72f848a7358e4473eb60 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 0000000000000000000000000000000000000000..02a8cbff0da63ad584ae7a5c11ddefdf0bd9e24b 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 cd3c957e0a8470a0631ee423b7fbac2904f58f61..957daeb4d1f9152af29b06c85273b39f4cc760da 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 9b7f9514f12d38b3c9d885bcf4ec269b6503efd7..7be1b338e904fb1cba80cea821d28882a465d18b 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')+''); + } else { + onGoogleInputsChange(tr); } } + } + + $('#externalStorage').on('paste', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google td', function() { + var tr = $(this).parent(); + setTimeout(function() { + onGoogleInputsChange(tr); + }, 20); }); - $('#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').on('keyup', 'tbody tr.\\\\OC\\\\Files\\\\Storage\\\\Google td', function() { + onGoogleInputsChange($(this).parent()); }); - $('#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 { + $('#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 126903952704c9ae0e83908c98dca0f5e83fe126..ac408786ff6271a4088530927f2141075e495e63 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 6342da3f3a2fed64407017e0a9663aec98b1b73f..66ad4a879d441a038c6c5f79359fccc22a613024 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 a4a2b23030b9aefe8b0ac1c0069ba97b738cf2da..07ccd50074667723f638cc89f7c04d82f9246cfe 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 e8a922ca0f9f22bfe09dcc080aec02411946de4b..aa9304d3301a234835b4cdf0291e8a31a0682632 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 9c647fad939862d8810b34429821a7ac16e604a0..20bbe8acbaaf42d5b7f3e35b1f92481fcd14bbe1 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 bae89a6cfdd6fc8c593cbbcdff91123be7a6eebc..0c9c6c390443c5a789b73dad88908215cf08f4e4 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 277cc2e6efe64e39568bfabb77a3dbfd105e8094..24183772217a0d59ce1b14f7569b5ac653319aef 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 5675eb057f019e7333fecdf5f89965da7d40140b..d55c0c6909de06d2c5b26b5fe74ef97e4c4ee181 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 9bf499a911d3a47cfbb8d53834f4a0a021877853..38b5a098f6266fe169329cde07322dff6e65f3e6 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 97453aafedb92eabac851765877f9cd71cc37799..b0afb77498f28d39dcc65fa278b1172f8eda92a2 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 d4e566276496b028601743484c0373e1dd02e418..da22f41032070f52d6f585874e05fe778d487319 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 aa117e802743c5c661afb752bbcabbacb7d496ac..6706aa43a311ffde100251e5f4d1bdb1b840bb65 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 86922bc751b3971a94350bf0d04c951655a8ee4f..fd0cdefd347cd7bfb232ebc93777c66aeb847390 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 597204c894d4e14c21a83c8beaee91dc96e28088..83be50deb00e2cbdffcc7b460c62222dd82bdb43 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 5acf3eac5a59a4e4cea5159330911a442d707e5b..a7eac596b04925a0c0c636fc751356180857a65a 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 120c190790b37c92ef3e25a0a77e310cb3ca5c9c..4cf97f2fc35db8e525376a5be388b119e831133b 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 0825a961b1c26ee555389a9a4e41f372fc826575..db4140b483db83aed824e20b16c3299d5a8bcf8e 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 f8100e14620a97972c0d0e1ba5956505328e7c8e..715417e25a0d96dde674f0cec29d1ce6fbe24bb6 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 3dc04d4e79c81ef34a48d6232d261b9e3dbb6221..9cba045d1eafe5d12b01ba1c05bbb5261af7f44c 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 b8973c9641111ee2a505385899b83191b3d0b94e..9ecd2d1088b7a0d348409b470ee196c2d4c52309 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 0000000000000000000000000000000000000000..3b80487278a16a8f1f7b407908ea855f3f5def10 --- /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 4b7850025f4e845a9165809b20d48ac204e9b7f2..647220706bae67ec6469ea2ae3c8c6e0ff100e71 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 5110bf5ad2704d3c86b9aef8c99db2df8a2f1f39..6af53096facafd5205ff3deb9529ab3576397049 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 98c83146d48456e28d571ed1be0cbefe1ffcbc20..d7e0c81a0b0b6e0f23f4fbb9c2e4dea96774d88a 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 cd09bb43db79c92a192bb834cc879b7ad8db4662..12a0b30938a5e668377371ead59d07e9005451fa 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 0000000000000000000000000000000000000000..14c0625e1f280d2661e7dd33cb07e27814ef1fe4 --- /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 47b75f74b86cbdd05b197877b5c850eba041d44f..47de9aad5e0ff566e4812e0f00be6136605133d6 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 c614168d773376d802f17789c1757cb4c211e0b3..59eabb36c9ffd7f5779582ff862c0ff9723ee4ea 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 7cbfaea6a57f851b2f1d96ca166dc103d220a6f7..2a62cad3fe90c3a6e2e97a7de790f5faf8ef0958 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 cdb168dd38515e081f5f87921aea5f64e20a4bf2..f7dca99ef654bb245aaf65135c2e4977990c4e3b 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 ee53346fcdeb3e8600539fc3e6666d46a9faed71..b37dbcbdc16adbeeace1cbaf2588e5ce6bec524f 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 e3c1e4652b3ff53d9537af9b23da7cc318b240ad..1f1a1c27831fd1a6d97e8f5bb4b23b0c13068082 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 0000000000000000000000000000000000000000..5acfbb0321e780fbde7413815f045f9ec50a4366 --- /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 273b40cf8eec029f3b887f06e01b47e234895f24..961ef2b1046bb8833751b47be4a337f77c761371 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 132c8cf3ac2713e6abfbda15fcfc1efe8b91e28c..ad3eda9747fe44c0dda8ef59b8e433a807598ee1 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 0da31bb6b4ac11962cf8d3f44303ccf23c5ca942..cd1b1fe84a1f4145a50bd3ba44a5b9d7c68c11f3 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 85393954886e39ab7d659d99169dee7edf6f5e8f..a358d56913916cff5bdeddc883acf765aba20a30 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 06dbc0cf6bd15cdfea768e35f14333ff6b96abd2..aac3c1c2ca0779e1ca00f13a17a6d3fd986e82e0 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 ca2c9f7e5c8c0eda8e01380f9b5fd7e5569b2272..5747205dc0590730806b6e5a0bff56918f86dc26 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 b8b5f5b1cb2add548662c7bc8906f2c8863c7612..46b73a67f046d8bc53d8eaf4c29d0e5500821ff7 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 e539b3cb2cf5b8368f02029367eed46b92d138a5..406e284b2781734bdcdde8fb67bf3c99845057a9 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 b8e2c5714b3f3d6555578425ceef2fbf1999c80c..cc9cb9b9ce50084b2bb06281e90782e5c9df89c9 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 d464d192ffca90737a17fa1a0e8064ccbe62e156..af6b7b4ae6e2bb3fd4a6489735f0c7fda3ca8b4d 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 f0db66ded963e1cad1c76791e820d27983159283..5614c93585adb26bdbb0e87dc76904470d0a2751 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 0d42a1f4682c163c7f8c010016ba230e33a6d623..45d3589228f614f483049cbd0faa2a3c102af7f2 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 1e01b22efa00a75d9b7e220547dc82a514d11794..cee3b6edb8a2b669287a99296b232c942e17c651 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 870995c8e7a111b29725c696f7b8a7e62531c4c2..2f733eab9e8f4efca77ffada056b5a28167bb900 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 e9a045aab572b6749197bd27e2093387ad403181..cddb2b35e03e4ca2d1311a9d5c65d33f39a9a0e0 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 56169171f64ccf64611ceea23669cedf66342ec9..34d19af0ee94ac061e583979c4dc7ba9521fb3a8 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 0000000000000000000000000000000000000000..278357b4d68c5ec2cb0ed08de2979f0c75aeacb1 --- /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 c522c669e1eae0b0822f5ba7fb64ef117cf2ac15..84f31e88924a8fafd610a0e98f68077b778406ad 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 47983d3d7d4b93841c7d00e1bc7ed8c4ab89b7fa..74b9e3cad8134419b79993227992135b41cf5e93 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 1bb88564630c7e54900a5ad5c0ce8aa9be2c2b8f..1860b6f70d71506eb2b75e34d7b16f6e32b6c3b5 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 ab8c4caf24a480f2756b3370c9fb1edaca002a55..512a151a3c88b3c9756f725f832564419a0b2513 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 494885a1dd3f3d1d69a097730d8fc1a3ab40885f..7bcefd4176c94ac9da2e6a690c34a4a7b09cd98e 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 44e668a09c012adb52ec65046bec26210f282902..430269e03d9061f82bc98fa92ae6823251a33cf8 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 11644e4a2c8e16519e69ca7041f23c35262a17c5..cb04e557f8a6b2b3c01a26e0a32330bd3c04cd65 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 9b6c037bb57e6c6a766466a7a61787d5e04dc6ba..8a7375ebe38730a270ba74ea1f275543e100fffd 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 7396c7e3f2795dfdaabf3faa22cf6a0904c5bcc1..ec7de3f35709dec0e879dbfd42d3e14f957a70d4 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 551a5a64ef2f6e32347c32f28d59f54683ce9523..ede6c251fd9e18463590b04ff7ee72a725c5f536 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 62f6591d25a5dcf4b7b096f57d21aed59f1c6fd9..961efb1a50a43123a43d299296cbb30d305875c7 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 a631e7ce06aafbb1c7369135cbe42484b741c5b3..4685877f26b7ea0bb0d7266bfceb897afa08f809 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 0fd6fa143b816dff602231767ae57fe7b2e51cd1..68c4b48f17c18ae41562bc9a3f44122517bb10ac 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 039a07b1ef2a9b4a9229ddc59fb9c61a12e1cd9a..3ba7c48cd5742adcabbb94bc831364ee4c2f2ae2 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 268d1880232674137598cc8f32e6208d0c356c2a..90f5e159535c65d675c0a41cd4eb78396a249c6e 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 cd0bfa99585a178ecad9856ecc4e0fe8f9f0ccd7..1a39affe2e6606e0d9cf439a8eaff63b139d578d 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 df8d7d6e2b5f441b0b9201d413ed0d1324311354..86492699fc2d3ffe0324c9b05ff3f21da9078215 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 d3e05cc62d8c8fb2f0e3190f1de3a13640dc6338..5b5893abc930c0d2934ec6fa09472796f6d725ac 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 1d22b32b503100f337393356f7d7d3aeacf4d5b8..48e41e9304889fe1c1356ded114ffb6b08f299c7 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 13f42b130df5f48ad1211c8dbeb52b90ce5d06c9..13298f113f8f767f707374bffe612f37aa455624 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 0000000000000000000000000000000000000000..0270d5d6f8c6a5516cb1e294839a69882573385e --- /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 0000000000000000000000000000000000000000..dc7ec17e9c58249113282639cac8aa27f1c2b42a --- /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 0000000000000000000000000000000000000000..f68b714350f8a7b318978c7110586c8c58bdae4d --- /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 9655e44787517b928af7f7101e5d92ca0a6d794c..fb0f6c7b5a6bd3b4fb4f8cad64b4f7e900471bac 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 2b068ff93502f45ed68151b472ce9f7ca4826257..6747faa4d4313269cbf1649774e625cbfd1f26f5 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 6d3c55a008f0bdaf85fc14674f6a3f55f7d01f51..fa43e87b49e39be3091e81c27501bbe36704b1e7 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 11c8c6b1e8066bd7d84dfbee563a5982607d3486..4426beec6368fa34e17b60f3d114ca6a5b47e2e6 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 65812b7e2fdeeb2b579f941688d359b9cfe8860c..be0e59e6732dc52bbc8e0ec99fdf94200b41dde6 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 38d598f7780849e06ed14d8da0819b730a1c52a1..1da972ad7e3fd295053a4b419de74cb1bdf2c501 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 6bce6857ac8667ed80a197b674a0f0c55ebf4fce..7a67b6e550343e0762bf8a5539883391e01d2c3b 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 7776fd63b3c2656a130e47349c2c5d470c49d062..88692445ec308d2f45f5c001a92b08bad738b050 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 7a6bd1342ea278ea53d29f66d17ef4f31cd42ecf..1834fb54003a476aacf4b7c2a7339ff6d5e11ccd 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 6320c1d08273fa0b719f90e6d6ee95c4a256a8f4..80de3c31f912379a955de633584afde20196891a 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 e42173396024aab5f97d8dfb6cd83f79edd46b16..7f807da579ea0a8013c251123650fc5636e29505 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 0000000000000000000000000000000000000000..b0bf79cc510f4c5c22a1af8df09cb092df4f9c0a --- /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 a2d4cc0a44df9cb2a221750af922b2da3ae64ec8..24ccd8c4609535299f006fb661a9cf05d85b3282 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 27c3e13db4d12d05a8c8e9796b031d72c1232247..df08bfb1a50525ad29f4428643af471dc2fcf6b2 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 6c810e4c2bd017ac92e8ad1b2e62f1c3ebd2c31b..39e76e10c9c6792cab6411c72dc319cead3fcddb 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 c669eff7e1fa48e713067caa9a110caa9a5c26ed..d61355c52c204f51da086053120b6fa9653cc910 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 803b0c81ef0e411c1e7e1f6ef8d37e23c005f235..894ed6a729d5307af31a160f85abdba8029e8b97 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 eeb27784d3e8ee52eba471ff90fd954f662744f0..d32af39877b590810707e6ba749efe3ebf6d004b 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 855888b3159dd7ced1e1cd2c26beffa3e1085474..ca4a2e8215d6ea2ee46925490851ccf856530646 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 1271f5c313a68b3252c42387492e4e669d5fc19c..d1952c9635a14f85485bcae6837715c75e18f668 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 7cb1834141bf28e0d862ae5196ab4e7e207e793f..269680ca2c3f0ce5537998be967e2d7d8aa02e5a 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 bc3c2350da66aac3c1b38c596973dda144bd723c..cf9471780c09264cdac51f51f09c375859c1127b 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 f357e3c10c2cab4d9903aed0ae53573eded18e35..e1e5acbb5a80f6a9bb6b381976ba053db0a94b02 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 c14b9776473022b05a89e3e977e55f9c9fc171cc..ebc01b1d21e43c702dc571212d9bba4410bbaf8f 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 c7f98e38df707da6d3ede74e526baa53d0aea196..bb78a39d6c33c0744fc02c5aa24ea484ae516483 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 8744ab5f1223e251ac80086efd5a6a12a0cf6968..73ae9dbee18023376de4214899a8f3d721136871 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 6a4ff12545470fdce2f8d1b59a6d35bf0e6ca368..5a565436ede778f74ae895bfc139adc52900375d 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 487d1657985c4b0e318e5cacb699a8fb8cc85d60..7cc695215e617500373d1d7e3b400de72c580bd3 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 ffdac8735b108c137d21cc42cc88ee228de84974..e18689956d08e11b9d4a8d19049444bed59a176a 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 609b2fa9bd75989ec4e5154dcd95439407b49467..0a783785efb5354687c58a73a59dad3198581173 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 ad9f6802e6637441bb6f52726ad9b5ad3f30131c..4e31dd0018a2cdc5a3e07a54ac29902bfd0ed79f 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 d026add5d750ff13ad4f2a8b5aac10685c1ffde0..9c767d2222c818a39039bf5a13a07c29d322e059 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 52255c7429a1ec582c450b8525f4109a2ca28a46..2cb86adfd405423190d97c24b545ae11bc04795f 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 931e5a7543e40b73c9cf5a4c76d5037d5c8d053d..9c158c2b9ecae46bf74d3039f7eaccd4a468458f 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 0000000000000000000000000000000000000000..3b80487278a16a8f1f7b407908ea855f3f5def10 --- /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 c2581f3de179c68b450cc8c311ef8d9a63a8c4c4..0a51752312f37a994aeda4b736d693241143e46a 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 1a14d8b7c21bc7ace660c443bcd4ef7ce202a049..ab5fe25ac6b2ab270c59f328bd464ed148c2e0a0 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 416f641a8efa412078713cdc94d520d91b094096..fba36c91cb53b0184573d9df6884f5ee933ea71f 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 8627682d088d08ab2a646ce43bd6094ef3abfde1..027b22c91ac0baa0a5f7529007c00bf6f3e45289 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 2bccf3f3bd5c036b95116f0969e11d682dd5f01d..478aa400664677d1d898dfb78ea24db5800b7a0b 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 43dba38f5c747886010870f70d5b4da53b089b0e..05068767863df0a674b962cc1b8fab5db515a332 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 61acd1276a75999d99c223e4e462fb21c400c700..b40546e34b8365be4d055b17493e79935800c29f 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 d1bd7518663b72a34e7039db3f25774ae07736a1..01deea2350037c96bc26ede0753a6124fb31876e 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 4933e97202fcb949961159eebd6f8524a7d2bcae..513c7626c4e75f4dcae8d5f5428463c4e80b4b35 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 5ecb99b9892bc777115aacf5a3e036a5b8e4a270..d3c68e2a778ee342aae530370a0b61004cda85bf 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 b983c341e8cba6a6d2e57508e46de4110cd99c44..22b288b002f6e9476b9f2b4594dc4ac9d49e6069 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 73e97b496e4d4773b13a1f676a100568d3e39dd4..381d599865ee81c0bb00ea74a894fb57f3233823 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 49364753d13a8179652a8d52e955b078dcfe7f9b..fa9543a5eb06e1f45012e6752bfb9f852933b41a 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 c4a26104ba46e56100c33c0d01d173eec91fa710..c576e5d81f8cc19b69fcc01463dc3b76f9954a33 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 be60dabdf01029e0c4a5cbe92a850ccd558ecdd8..f8ab465ee42d5837bf5e2056ee07254860942f26 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 2c705193c15d437b161b764f4c83780d9b102312..e6b939dac0c3565332ac03c58d7bdec703ed1798 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 d2ada4c9466f157976bfeb9ab77027601f96f251..e5ea45b88aeee81c6601b0867100caedc733f444 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 5a6fc3a86beac3b322c49e6882a2334f6e3eba23..b9932a71023f7a344a385e5e23a162edc15b0ce9 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 978ab452d6eb59c66e1585e628e3e2bfce13ddf0..a621587ea0bb0ef94690a7fe96bbc441a1edaad5 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 6ece51e02cfd9e7673bb489e04cd2f67ca609540..6a919b62dfbb8a80edaff20fd98af6ac62aee07c 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 f6c85a6800ef0c2ef47b678c009d62be89cc12a2..4cf9af1fc39f731232d3831902556a69819e26e1 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 379ee37af83d491b6897ca6e368536696efd9b31..04a899bdd5dfb6b2a0945b1198164b17079ce3f4 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 cb351afaec94b3d90407a2263c3e4387d8199fbf..71c5632977654828af903c662fb900a122fd0cd3 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 b86e5d86e44c17936180c53d52d86bb9fdd44dba..c5806a5dee8da3063108527bd54c971ca245a327 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 2579f95c86202115c13dc78cfeb15316585c8600..4765945747de1efdac7463745a662382e1c126c5 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 36659e7080314690a3e7589bcbdcd614038512fc..2e7c139e389ef544ae1d67c0ef41ce9d01801a78 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 52255c7429a1ec582c450b8525f4109a2ca28a46..2cb86adfd405423190d97c24b545ae11bc04795f 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 53bb7a6ce0f621668b98897ed2ab74e5b33d5469..6f8c2365818a0abcdaf820db7d317730921685fd 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 a436e2344a4fd0b5fb18b88e570cc04b9c09770f..f21e5fc750de22b2f683f7fa128535f698fdfa17 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 8a031fb0d70dce9434a3a316843ab9682701ed66..3f5d44c763e819c6d4a2bebff5a63e88543a1482 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 5b7064eceaf14f388ebadc3c3f5f0bf59383c965..c874d73316a22fd085e320944a10c91e73413662 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 14c6931255a8550ea5fe7de0623d6ae7b7d030a6..df7dd24864c5d945e4c202f1178d006d418a61f7 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 ac2a7be02917b305c119818ad24c4da6cd473e8e..165fa9cfd9497bc0af710679602d84cc2db9ab3a 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 2c6a7891e98078c2fd8c4356c8b16e9b1ced6bdd..606d80d441b0cb130b1758bb44b042004d4c75af 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 0060b1f31d63884502ca5f28fdb28ba7d27f841b..327a3e247079f4db06c3e201dad4bc12172ae30f 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 be61d9b0b6db63d1999d11cfe1ab32fa5c8e6ee1..0142e901f5848d62514438bb2b5409b5691cae18 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 d6a62d447b88a580c0ba3d21c6464426b3f8e53b..9081706a2c56defdf26eb609a4f89ff8d2606b0b 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 76844ca92e983b09707186d0c8e6a7dc5b0c6622..2fc8a8bc3c64fab96dcb3408cc900bcb9b628b55 100644 --- a/apps/files_trashbin/lib/trash.php +++ b/apps/files_trashbin/lib/trash.php @@ -1,111 +1,134 @@ . - * - */ - -namespace OCA\Files_Trashbin; - +/** + * 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; + 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')); + + $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/'.$deleted.'.d'.$timestamp, $view); + $trashbinSize += self::copy_recursive($file_path, 'files_trashbin/files/'.$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 (?,?,?,?,?,?)"); + 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'); } - - // 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; + 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; + } $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); } } } - } + } + + // 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/'.$file)) { - $size += self::calculateSize(new \OC_Filesystemview('/'.$user.'/files_trashbin/'.$file)); + 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/'.$file); + $size += $view->filesize('/files_trashbin/files/'.$file); } - $view->unlink('/files_trashbin/'.$file); + $view->unlink('/files_trashbin/files/'.$file); $trashbinSize -= $size; - \OCP\Config::setAppValue('files_trashbin', 'size', $trashbinSize); - - return $size; + self::setTrashbinSize($user, $trashbinSize); + + return $size; } - - - /** + + /** + * 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\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 - */ + * @param max. available disk space for trashbin + */ private static function expire($availableSpace) { - + $user = \OCP\User::getUser(); - $view = new \OC_FilesystemView('/'.$user); + $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 c3e51b4becdfe4d5aad5e30a61c508453416000f..cb5edaa2c91e4718dbb678f3d8943ab9b0575ba9 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 0000000000000000000000000000000000000000..2801e04e9ad9d5fc1ad15d77cbe4f1fbf62064d7 --- /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 546b37ae1aa85dc31054d759f681ed6aca633a09..0000000000000000000000000000000000000000 --- 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 0155f8e830ff790b1ffe5ef09adea73248f85a74..44878da5e4d8ccabc2d4bd9a45a5ec5616fc54da 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 e6d5cb833c634c4e2972335825d1100492e7c96b..e4c0d46e55ffb2237c9e900aa77172886f6c8aa5 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 437a3fec0652c281c9ea351e1bbab926d6550180..719a7208fedb1effff25b7b8366812279952fa73 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 b9c54689813be409332a467055674047cf8dd0e5..a5b244174831654ac1277f419943c7e561337383 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 1f1f3100405941888a419eb9dcf8fff0c7496af4..b84445972d35eb2ac6efca53e5a037366fffef6a 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 6ecf12d0b00c50686c7a413e339db78a6e3c764b..6a1882c2bfddb954b77451753f671f4cabc45ef9 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 dffa4d79a06f72c21afa13fd361bb5041512aa1e..f3b0071a356113deb1855f60080875bc13bff700 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 fc900c47dc7e5b857f11170c34d05fda8de2e785..433d974c8cb041d24d11c6caf0324f407cd4afb9 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 22d4a2ad827235619e465c7712732c96797aab6f..087d800137e7a1f5bf10c089ac5db8122a436e85 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 93fcb9c99cf6f57157ce2a14d475fd16aac33c1c..447a3d2b85df8f4e0367eef94eada8119f1b6e8c 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 f62043dade2bcf46f3471aacdf597015e8c0f8b8..c34a8c1fd3ed3e67291c3d79f44a7b31b2cc0672 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 1cf2a63a1de0696a15847a10cc26e9fc84458711..c0b2f2a83f77bbdd8b16a993d6d174f83e902453 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 8b7ecf085fb6b20fb96c56d0836b664a49d6f0e1..6e1900b233b7a5ca016a93f1a9c710a2edc37108 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 608e171a4b12a99b7f5efc4c043e77787675b1eb..8c1a30f822aeba4dbba2b3217cdce06a10d2bdb2 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 dc604e2a9c8930bd6e3335e0bd744eb50ae284db..363693c913b86701f400256af6bef2289c1c7d77 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 4aa80c4f55e7d478898a9877aa8767109592648c..fa2a33f9dda11cef85b7f15bfa58a74d756c4604 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 d7f7a796639a079b3799c22277ed6bbac57e2b13..2a7f279af16ebe97f40838ec90b346496d915a4a 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 9b618fdd320ddfde7bf0b49010aa024c9a3a96ed..4ec6aa1bbb434d1a2f4aa95e8b7c3fc2fc6ce0fb 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 61e073d4e06953b7108ac830845cc23462601801..0dec7fc2580469145ed99fcade72ad5cf14dcaa0 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 6b2cf9ba6b5f141fd8b87e7447eb81f6e427aacd..76ad8fc97a6b8dff2f161e95fab4e2ce33efc17f 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 b822b223cc1fba2049dc848df2adbec4ba3412dd..586ef8c3a68efafd303c8dc4daa7db15b676e139 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 dcf28838158e2221d6f3b6566d971ae7c8b15014..9f7420157e1a683619a8eee153e88e5bb49bd19f 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 6c553327c42aca3414bdffb9850465b8737d405a..4662aa86432630bce00ac0c08bfafd00642d9044 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 ccb8287b71e9be068471d5db9332e2b5fd34ea66..d165a78c31ef2c7b51d222bc2f657d16c42bb037 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 3289f7f68d179e5bb696cb9be0a4440225f50237..bca00879993cd8b8d25ba51fb5ffe5df59e367af 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 16018765708033fcbf6b8ebeb30c19532b0d20a1..0c2dbd401c4eb1950686a7c5844ff1e6db2102d0 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 2203dc706b82565bcd4535c88b108d147791e2b0..bf8d40fa0f0b6fca378602ff349d4b40501bccef 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 d3ec233fe4130e90f7a181a397a3ceac7e720951..6a1882c2bfddb954b77451753f671f4cabc45ef9 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 fb1cfc3533c4ed30e2ef7a406af7052b9c888f52..9208852212180edef43fa67dedaf884a4dbacf31 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 ae3bfc4a842d4b40b3cf2e36c20954b695be9fba..68944e86760cec54b3c80094ea8e4acd5c409d39 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 9ce509c6534aca66d695abb21ad74fb190babbcd..f13b7931d4b7cfe0f38775578f4ce71e02e925a9 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 629809f95560b74cc13706bfb83115c6cc00fec3..93379547295fc4d6fc9c64167d5ccf5e2790e50e 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 221d24ce8d118c0677a730d5a10a7519b8670820..7377fbb5382e1ace08f0a9e2c5fca494e84e7f9d 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 8b46e93bb9782fecca915915b23aabb626a87de6..50e4af4d96490bbedccaa27af135cd2ddac3acaf 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 7f386c9edaa2d8a6d49755c776f34f414e73185f..b6ad6a1e9bb1f19615e8af948080d128afe34770 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 853644848f4f894dd43259081e70482d4332025c..46e2c0f8bcf3db3616af8d82a23ddf06c750b7bb 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 e9a4c4702e13b2d635ef060cf5469d57b0d958c4..745400d331c866257bfabed643675fa8d2e35ff7 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 49acda810792942ad0243edac376e8e921195ea2..e722d95497b290ba8568c3379669d1d7db6e1980 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 675cb841c789b9a01a803f86f1cd9e37b08a6ed3..f2499e7bf355fe4dae3b0bff6fb4caabc67e0ed5 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 14301ff0c04a39f35edfe677115e8394fac33c49..65d0d284a076f4fe67bcaf7bf2f0902f6c07d66a 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 dc02c605c44ce51877a807dd7ffa4572c47550a6..7891b20e92fd2a74e6a28c3cd18d00a1e3efd9db 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 f23381cb156311af5077e62398dd7dd799c57134..20611c61ec7a7b2ae9303279b6167a0798bd6534 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(); + //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') { + + // 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('/'.\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; - } + $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 f2873b8f7c2cfebeaf0b23e20e763f3d23fe455b..0000000000000000000000000000000000000000 --- 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 850ece89c98fc30277d22bbc785e57e8dd61da94..f7284439041e7762f50723fc87bbf5a7d77ae12b 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 bfca8366f5da50d78ce670fdcf9d088f35ca306f..0000000000000000000000000000000000000000 --- 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 f8038e31469c545fd91682c9d975bab39c833989..7ce1258a7967e7b8cd711f021b4f0fe4346b213d 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 dec87684c9e52d7d4a1d31a7a2c86935370fb826..89410b5ef07e821cae7046c55197c98bda73a409 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 53269edfb34b179d426da751810b74efb681d156..148a72cecbb4449d27a248719a1f1e3d70de5609 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 bc32d4ef4ccc32b3fd70fbb9ab58b7cfe5b162c9..2fcbf1902ac54b9c65479047b4457ff10c2ee0aa 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 e4d93c8d610789d4b4c12e5f8be7d4c8fc6a489b..e619108dd639e5f36f97f73ae82d8819bdbb20b0 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 02ceecaea0bd3492678ce14394050f3289b49335..efa5f8b4fe32d9f99eedc2c7231ce35661077568 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 5aa1aef0e0eb128608900370555b787b14a8173c..68d2efe38718dd00d1ed9bc8a4610c833f765e50 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 e4f27e25a7fab324d162cf5d6dfc1cab603a982d..abdecb164e8f29c1f4bd0487e556ba56743994f7 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 4c74f195cf44d5718bd2fba58f234cd0e1e1bd4a..c5d77026b9e9b317dc7b6a1bbc46ef67d1ef298a 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 a1da7d49cbea5ef2c8768ad22f06b730c482f796..6217a6d4821ab8b27d01d03938134e5951beec78 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 69faf5dc45d62cfa9ac99463eaddd429fb2e530d..bff7b0312c7cbdb8002cee8c6e35ec5e81198c1e 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 7c0940dc09c6466fc406a25d63eee02ac103ac06..96ec818043720609a18b29cc0732afe1422ca3fe 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 c0a444c0c7d1666d58eeaadd1c82c51d9d799855..1f0f92e7ac495ac08a4a4c7780443375de79eddf 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 7ab4d00e7566dc0db095635d0a784dd82262a9bc..5e9fd014c64f3a5875ea41d396007b1a078e0e67 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 36c1f7af11483e626e05e5094aa6e7767da4398c..deb6dbb5553a2e395c758588eaefb2eb8a0672c0 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 5c563b7b6f3cdcc987af135a07c74a44c12a551c..c9b0e282f1d26908fa3ab55e391f036f8083f1de 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 c7dfc125d7997f3c1d703a5773f27968e13aed70..a82a64ab32f1387660ebfb3b93c38cf19f6db002 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 c07892386d6a2f747c582afcbd0a8202ab8cca8f..5912789c85640cc78afcd098ec9ad1e52c8fd9c7 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 594529190d94cf28dbeea404d8461aa0e073a9dd..a2790fd1dec60f2a6e4079930e25590b93878d89 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 11ad6cc7a377ab93bc5ab2c3a11c163010e33c32..3ae7d2e639222326d4e24adcbbb9d434776845e4 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 0000000000000000000000000000000000000000..169926283e9a39b2a4de635e76e739143a1cdf3b --- /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 0000000000000000000000000000000000000000..ee8d3dd26fa873eab8252b207db2e52f80d080e4 --- /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 8aab71354b092f141150b5078b6b643ecf5df111..c4700245f24059f50b3be04e0bd8c061b40d3d5d 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 0eda263aa116bf7c8ec6dc6644518d798920b51e..7973c66cd10d8cc3d5dee001a2a04d787aa6d63f 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 ef3f9140ef75365d2312e498d67ed46c424bbf40..776aa445e4eebbf8f32d15ffffd9d553d7b2209b 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 dd4019fc35e0f73eb7eb3affedb0e540f40c1977..a728ea15fde20d9a9e366d70841a6a81f8b61261 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 bfe6656b3b688df9c4aff407441a8688a09e5b10..3092d061437e537618aa08824aab23c5eaadc819 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 c66530174a9f24e5e7c44e03cc59d52989b01276..0746e1e8929f33876af29823c6d528d77e626199 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 727765a15073abe0d5f6ce479ed21960d376680b..cb55762e64f6beeea256f7a145d1dc5fdeed53dd 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 702912f9c682fe479ee26d6128caafee87e52a0f..12ecc7b1633c15ea469f48cbd7d0d619d26814af 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 1bed9e246c924af9031d228ae725d191a4ecfb6c..7bcabb0448a3c8f81dab7e05e39fbae020dd3d62 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 643a7495890b89e6ef74ac4c75ef6d04e0e337e5..623d34c98e6a5f3a26b8a8b58b4187a5e95c07d9 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 0000000000000000000000000000000000000000..4c606a138081f80fed2752ffeaba5a345108481a --- /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 4aa8ae8e8a49fd1dea84d6f81f7821a13b621bbc..a8cfd45bf4d630f3cd48ce35da40c00c3e082eca 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 0bf2efe35afc387cc6437ea872c58c3e5f9521b3..6643428afe4082429ad92fc0b1d22eb10cae07f6 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', - - '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'); + 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' + ); 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 29ce998dae700c5b21edf2b6ed550152e6a82a7c..308da3ef724237c280083ad1f0811e60c7bb3c8e 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 b265a8339efa9aed93a5fd438b9462892d6587b1..094d11db3d5d55681d968f077da5573dfe78ba89 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 d5d2f648b38c100cd3d1acd5f25dd78e070e43d3..05497ae8a3375790a9bd2530f3f46bc338a0fc27 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 c6f1834e0131100b85203f0d5e20b2d5eb44f675..d3c2c298904305f72af82fc52ddf8e872987e6d7 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 7778c37c7949506d1402fc582c9554a778907e25..44a1947859805c5935b06e68d6cb53aa8ac8ccff 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 c4c131b7ef0205001588f76ffd6046bf13c21034..3cd227bddbefa4bbe7b1005f992d0ed54c64fd3e 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 f62f03577e8bdf682f4018bce195b0b44049009c..76b314e48aa4a440dc1f19f85558c27167fd8ffd 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 f893bddc71ce599a7d16c97609c703427e57a150..c86ff44e55cb398bb682fc943b011f42bcb82fee 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 8f67575fc0fd6ae8665f1f4800823fff606a5b3f..bd5d328e477cacf71815a0bd0ccddbc6691ec9c3 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 245a5101341d2a51e59b2cc0575b907f85eb3945..4a2f6d2403b5781c4a8bdc51a6cb4c61e27ba82f 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 245a5101341d2a51e59b2cc0575b907f85eb3945..66887df54b51295cea65e22c7de385efe8ae44ff 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 7eabb0d48cc545c67bd5199f0957853d9941b561..ae9cb7e4c921074524c6213ad533ad28d7a09fb5 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 45f4d81aecf844dbfb8ea11660db8d7437df14b0..ec6524ee4f79a9029b4441b465f1cee8270d6db5 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 053860db5473f73d9ad36fab0c5126ecb9058827..a511faef9c603b81cb3980900fff70e82d5053a6 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 2f394c41a3bdc8a044659817a223c5b647713ab6..ec61ceefd6cd27167c5ba1a472f68caac5c4d1e9 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 6704a00c5a2c5345debf862a51715af80fbd58f1..9201b48cb954af5849b0b19334a376b37486a444 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 e52a2e9b1e8292b8d90295b77858ddc465c9261f..c9c642077982b0671a39ba156f932e1176248b3c 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 20ab045c89243b09f433dac2900caba7acb57b17..8b20150d43248ae38ec263619a62719dfc8c09e2 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 e806d25982e2b9ad8731103584255d07484e1857..2d6849b4bb1361b1978906716ce0974fd7d1c643 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 c2e1ad92088b3c2ce915b80efd46e52e561b6218..0725e658965e1145c2ce524399417a13b609ad69 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 0000000000000000000000000000000000000000..ce7e1e6980298b86b6eb5bbf9008ea7dfb67699f 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 0000000000000000000000000000000000000000..abb1dc192d228813753b156c4e370059a3408767 --- /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 b0d7183caabd7e536b1b543c731f119aa78fdbac..14825f701146398259292881410727962c776ad8 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 35658631111caa6694338f4bff7dbac7189a88cf..e8d70fa8ce3387c7e8f7146f247c599f1c03bd2f 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 53590a2197bd73dd8987a77f59a2a87f9111b14f..f36faef2b8ad8c706943eafbed40748ca791e5a0 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 f899300bbca0e7750ba729ad7ac3fced18b2ce1d..396c61e01e22bdf981f039d22840b496673eee2d 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 abcd93689a08ec9bdbf0984927e8da06c043c7cd..b977d7e52e2446ea01201c5c7209ac3a05f12c9f 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 b4aaad9a45c9abbee2d47611a6963101b64a8023..c4eff0387d5888c638ba09473ba6d2369f7b56f0 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 e8b230c59cb66c6ce473c43cf2b7253e22129d75..ae8ecbf47672a874c0958d0d113a56162c2bd364 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 abcd93689a08ec9bdbf0984927e8da06c043c7cd..b977d7e52e2446ea01201c5c7209ac3a05f12c9f 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 b4aaad9a45c9abbee2d47611a6963101b64a8023..c4eff0387d5888c638ba09473ba6d2369f7b56f0 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 b836de8f3be81ab3cb2673e3db1c94d4a3966e5e..0000000000000000000000000000000000000000 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 ad2bf63ca37aa064d4f7c05c6e293bcafcb5e702..0000000000000000000000000000000000000000 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 e48f7a78c7d91cc0cd5c25c2ed082be598af4ee3..0000000000000000000000000000000000000000 --- 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 702f1d97e5b7bdf6da6a10eea3ebfda32e594be0..b0c90984e44bb4b8244339c62c609749f7db6db5 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 37fc0007479055e1324f465ee53f01cd6fd31a16..cf8eace5204242c4ddd230f1c268cd5f0dd327a6 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 9069175ed6fa58d542ee165fbb4fe3dbad42ef9e..0aaa44822876b339d4b47c73ad8f6145069b6d0e 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 6d5d65403fb104103c882a4ee11d081bfb34e2ec..1a94215c27bf71b4ffeb598e0911ca40b8626fc3 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 623c6e0f7e1c02a71a781bdf1341b426f5050f23..bc4223feb64735cffe364eb953b17d076e544cae 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 28dec97fd307a3d77095e792d2015d6428491245..cfbca2833c7a64aed507ada1cf1472b55acb81e5 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 3562785b3420ef01963ff39b74eccb20f5caa57c..b94721673a73c879156bf3f45b9e4d27524b5738 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 2656cac2f45be916b0be82d31c5e28208dea08b1..76812b2997969e28dc8bc3725b56ab2aaf7a9138 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 6d1c3954044c03f2dfc47ed26967195d0c0e7595..34f24da4df746eeb788a104936888776210a2c96 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 0000000000000000000000000000000000000000..ecf16e5d6a7efc9404a6c8cf94ed9e85f4ce5dda --- /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 d260241c4d6fab767d789b92ecd48c0f09f367db..3837ceb0f9233b129afe1baad37041e5b668a3eb 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 c18cf7259c5c2c51d128fe4eee186340d31eb238..e60f061ff3c120dce602053fd7ced913edbe272a 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 b099510d0d9eed511ae9ba5adf0c52e9a827e791..9a975ddcb8700f62ad9745bca86c1cd8fd3a09cc 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 54720f5ecb38ca5d28ce537e4c0fe97718008c63..62d12569337314cd7cc6b2920c387fd59423b91b 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 8c36254caf8e7e6bf3c3c3c63aea27ea912128e9..834af44b382b375a813ae6bf6eed93d746339614 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 10a57962f649ab01958fa69b2b1fd9bb34c0ce46..2420ee67df5493a89d1a486cc9e7c1c922140819 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 8fd9292ce610a7f5507921ca3c0774ca24f59dd7..194c28e7cfbea90996336cd57b12682df0c58076 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 75c378ceceb61fa6db5626a44b68dabbb033f643..1db5820bdf736824ff58afce5c391943eaec6907 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 697195e75149fec21ceecb792eed7cbf30365b76..0be3ef20fb5b3ce2953ffce8b4227b59483641f4 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 0000000000000000000000000000000000000000..b8deeb1e550a99e8582fe83fe1a0d4b70b0b5e70 --- /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 731a3534558fcc4c28c2cc2c01d14de085e9a61f..4cdada58d906443a4c2c19faf6607163794c5fdf 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 0000000000000000000000000000000000000000..97631d4df58bc0df15dc225769088b9747a15063 --- /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 8f548fe5be6728952b9c913c6460d6bc59afd3b9..4914ec66918ca8fac55f1633e104ab6cceb6e4a3 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 b2c2dcf989f535c440817cbe6d1b59962270c1c9..7e32dac57e41de2ed26c5b2f759f73a96f9a6cdb 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 f7ad09fbc7e9772fd9b6a34dc83afe4a07348d22..9863ca8154e80b85e80be36669fd038637e4345f 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 201b511647ccee8c9b651e82cf2c79e0186120c8..9d9ff0e7ebabeacc9294c87a0cef5cbdeea58cc1 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 a2f297fc224e18791a4587fa881414dad69de4ea..685a31d52edffa8b1153a089c2fe840702de00c6 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 0000000000000000000000000000000000000000..e2448c4d651789fd23ea55c4f978187f66f783d9 --- /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 3ef8eaf71aa78ae4fb9373fe4ae4a4468ce28601..fbcf4a87f22c876de23c7c7a92338851eca01036 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 55c070f3e0cff518cf157fdf68d46d899d6cc44e..dc9f0bc8ad380b891df236caf3ffc8830ebd6fca 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 2527816b662c13e65baa950e2dde498162aaea28..be19b66bf72baaf76e5f5aa138905622a4075b02 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 f16385466cb8fcc0bf4ddcc4c8a0c65fd2bea1cc..77eed5376d6ccc10961ad7693a885dc9ec843d9f 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 fbf0e64fdb6e570692667b39965ed87ea347504b..6e910fd2e829262ed03db8b6e9db481a7e3e404a 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 c111fd70fa92eb17d1597e83c54b20a00b8c4de5..ee17f0de8e1957c5b66335010ee163005a52409a 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 d0b7b5ee62afe254329e5c6c962e36259f6dadd9..ea155bdf0ba3532456f5a83e54eafeb624d23e08 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 4f05e008f99b0857536adb37af798ab86945ffa6..ac91357b350e1f53a1bcadf72bf5ebfeac6fdb43 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 62d6cf2ade5c57d135a0880fc6e514ce7206e68c..0000000000000000000000000000000000000000 --- 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 b3b7cfc4b8b0a73fc0e6652b307c7142027eba31..842686932c77f92947ea63b8c32a635027cc0539 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 2049bcb36da73c5daa904b036bd2e5748047da11..336df27ef1c93e00dd0978dae3ffa9893f066bda 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 69330aa9fceba0c0982c7f169fb9e994b9e3afe3..04161925436ec4720ff9f474042dd246bb65b619 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 2d00bdb5c8ec9874832ccce416c99396132fccb3..982efb412b6e1ca61e920eb6ac66b6252fe7abfa 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('/>'); ?> - +