diff options
240 files changed, 8844 insertions, 1115 deletions
diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php index 14ed43cbb3a..f1b713b5534 100644 --- a/apps/files/ajax/list.php +++ b/apps/files/ajax/list.php @@ -10,36 +10,38 @@ OCP\JSON::checkLoggedIn(); // Load the files $dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; + +if (!\OC\Files\Filesystem::is_dir($dir . '/')) { + header("HTTP/1.0 404 Not Found"); + exit(); +} + $doBreadcrumb = isset($_GET['breadcrumb']); $data = array(); +$baseUrl = OCP\Util::linkTo('files', 'index.php') . '?dir='; + +$permissions = \OCA\files\lib\Helper::getDirPermissions($dir); // Make breadcrumb if($doBreadcrumb) { - $breadcrumb = array(); - $pathtohere = "/"; - foreach( explode( "/", $dir ) as $i ) { - if( $i != "" ) { - $pathtohere .= "$i/"; - $breadcrumb[] = array( "dir" => $pathtohere, "name" => $i ); - } - } - - $breadcrumbNav = new OCP\Template( "files", "part.breadcrumb", "" ); - $breadcrumbNav->assign( "breadcrumb", $breadcrumb, false ); + $breadcrumb = \OCA\files\lib\Helper::makeBreadcrumb($dir); + + $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); + $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); + $breadcrumbNav->assign('baseURL', $baseUrl); $data['breadcrumb'] = $breadcrumbNav->fetchPage(); } // make filelist -$files = array(); -foreach( \OC\Files\Filesystem::getDirectoryContent( $dir ) as $i ) { - $i["date"] = OCP\Util::formatDate($i["mtime"] ); - $i['icon'] = \OCA\files\lib\Helper::determineIcon($i); - $files[] = $i; -} - -$list = new OCP\Template( "files", "part.list", "" ); -$list->assign( "files", $files, false ); -$data = array('files' => $list->fetchPage()); +$files = \OCA\files\lib\Helper::getFiles($dir); + +$list = new OCP\Template("files", "part.list", ""); +$list->assign('files', $files, false); +$list->assign('baseURL', $baseUrl, false); +$list->assign('downloadURL', OCP\Util::linkToRoute('download', array('file' => '/'))); +$list->assign('isPublic', false); +$data['files'] = $list->fetchPage(); +$data['permissions'] = $permissions; OCP\JSON::success(array('data' => $data)); diff --git a/apps/files/ajax/rawlist.php b/apps/files/ajax/rawlist.php index e9ae1f5305f..9ccd4cc299a 100644 --- a/apps/files/ajax/rawlist.php +++ b/apps/files/ajax/rawlist.php @@ -25,8 +25,10 @@ $files = array(); // If a type other than directory is requested first load them. if($mimetypes && !in_array('httpd/unix-directory', $mimetypes)) { foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, 'httpd/unix-directory' ) as $file ) { + $file['directory'] = $dir; + $file['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($file['mimetype']); $file["date"] = OCP\Util::formatDate($file["mtime"]); - $file['mimetype_icon'] = \mimetype_icon('dir'); + $file['mimetype_icon'] = \OCA\files\lib\Helper::determineIcon($file); $files[] = $file; } } @@ -34,23 +36,19 @@ if($mimetypes && !in_array('httpd/unix-directory', $mimetypes)) { if (is_array($mimetypes) && count($mimetypes)) { foreach ($mimetypes as $mimetype) { foreach( \OC\Files\Filesystem::getDirectoryContent( $dir, $mimetype ) as $file ) { + $file['directory'] = $dir; + $file['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($file['mimetype']); $file["date"] = OCP\Util::formatDate($file["mtime"]); - if ($file['type'] === "dir") { - $file['mimetype_icon'] = \mimetype_icon('dir'); - } else { - $file['mimetype_icon'] = \mimetype_icon($file['mimetype']); - } + $file['mimetype_icon'] = \OCA\files\lib\Helper::determineIcon($file); $files[] = $file; } } } else { foreach( \OC\Files\Filesystem::getDirectoryContent( $dir ) as $file ) { + $file['directory'] = $dir; + $file['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($file['mimetype']); $file["date"] = OCP\Util::formatDate($file["mtime"]); - if ($file['type'] === "dir") { - $file['mimetype_icon'] = \mimetype_icon('dir'); - } else { - $file['mimetype_icon'] = \mimetype_icon($file['mimetype']); - } + $file['mimetype_icon'] = \OCA\files\lib\Helper::determineIcon($file); $files[] = $file; } } diff --git a/apps/files/css/files.css b/apps/files/css/files.css index 8053649bd55..41d9808c56b 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -336,3 +336,25 @@ table.dragshadow td.size { text-align: center; margin-left: -200px; } +.mask { + z-index: 50; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: white; + background-repeat: no-repeat no-repeat; + background-position: 50%; + opacity: 0.7; + filter: alpha(opacity=70); + transition: opacity 100ms; + -moz-transition: opacity 100ms; + -o-transition: opacity 100ms; + -ms-transition: opacity 100ms; + -webkit-transition: opacity 100ms; +} +.mask.transparent{ + opacity: 0; +} + diff --git a/apps/files/index.php b/apps/files/index.php index 4443bf5fde0..d46d8e32eef 100644 --- a/apps/files/index.php +++ b/apps/files/index.php @@ -41,80 +41,58 @@ if (!\OC\Files\Filesystem::is_dir($dir . '/')) { exit(); } -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']); +$isIE8 = false; +preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches); +if (count($matches) > 0 && $matches[1] <= 8){ + $isIE8 = true; +} + +// if IE8 and "?dir=path" was specified, reformat the URL to use a hash like "#?dir=path" +if ($isIE8 && isset($_GET['dir'])){ + if ($dir === ''){ + $dir = '/'; } + header('Location: ' . OCP\Util::linkTo('files', 'index.php') . '#?dir=' . \OCP\Util::encodePath($dir)); + exit(); } +$ajaxLoad = false; $files = array(); $user = OC_User::getUser(); if (\OC\Files\Cache\Upgrade::needUpgrade($user)) { //dont load anything if we need to upgrade the cache - $content = array(); $needUpgrade = true; $freeSpace = 0; } else { - $content = \OC\Files\Filesystem::getDirectoryContent($dir); + if ($isIE8){ + // after the redirect above, the URL will have a format + // like "files#?dir=path" which means that no path was given + // (dir is not set). In that specific case, we don't return any + // files because the client will take care of switching the dir + // to the one from the hash, then ajax-load the initial file list + $files = array(); + $ajaxLoad = true; + } + else{ + $files = \OCA\files\lib\Helper::getFiles($dir); + } $freeSpace = \OC\Files\Filesystem::free_space($dir); $needUpgrade = false; } -foreach ($content as $i) { - $i['date'] = OCP\Util::formatDate($i['mtime']); - if ($i['type'] == 'file') { - $fileinfo = pathinfo($i['name']); - $i['basename'] = $fileinfo['filename']; - if (!empty($fileinfo['extension'])) { - $i['extension'] = '.' . $fileinfo['extension']; - } else { - $i['extension'] = ''; - } - } - $i['directory'] = $dir; - $i['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($i['mimetype']); - $i['icon'] = \OCA\files\lib\Helper::determineIcon($i); - $files[] = $i; -} - -usort($files, "fileCmp"); // Make breadcrumb -$breadcrumb = array(); -$pathtohere = ''; -foreach (explode('/', $dir) as $i) { - if ($i != '') { - $pathtohere .= '/' . $i; - $breadcrumb[] = array('dir' => $pathtohere, 'name' => $i); - } -} +$breadcrumb = \OCA\files\lib\Helper::makeBreadcrumb($dir); // make breadcrumb und filelist markup $list = new OCP\Template('files', 'part.list', ''); $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); $list->assign('isPublic', false); $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', ''); $breadcrumbNav->assign('breadcrumb', $breadcrumb); $breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir='); -$permissions = OCP\PERMISSION_READ; -if (\OC\Files\Filesystem::isCreatable($dir . '/')) { - $permissions |= OCP\PERMISSION_CREATE; -} -if (\OC\Files\Filesystem::isUpdatable($dir . '/')) { - $permissions |= OCP\PERMISSION_UPDATE; -} -if (\OC\Files\Filesystem::isDeletable($dir . '/')) { - $permissions |= OCP\PERMISSION_DELETE; -} -if (\OC\Files\Filesystem::isSharable($dir . '/')) { - $permissions |= OCP\PERMISSION_SHARE; -} +$permissions = \OCA\files\lib\Helper::getDirPermissions($dir); if ($needUpgrade) { OCP\Util::addscript('files', 'upgrade'); @@ -154,5 +132,7 @@ if ($needUpgrade) { $tmpl->assign('isPublic', false); $tmpl->assign('publicUploadEnabled', $publicUploadEnabled); $tmpl->assign("encryptedFiles", \OCP\Util::encryptedFiles()); + $tmpl->assign('disableSharing', false); + $tmpl->assign('ajaxLoad', $ajaxLoad); $tmpl->printPage(); } diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js index 097fe521aa6..330fe86f6b3 100644 --- a/apps/files/js/fileactions.js +++ b/apps/files/js/fileactions.js @@ -196,13 +196,12 @@ FileActions.register('all', 'Rename', OC.PERMISSION_UPDATE, function () { FileList.rename(filename); }); - FileActions.register('dir', 'Open', OC.PERMISSION_READ, '', function (filename) { - var dir = $('#dir').val(); + var dir = $('#dir').val() || '/'; if (dir !== '/') { dir = dir + '/'; } - window.location = OC.linkTo('files', 'index.php') + '?dir=' + encodeURIComponent(dir + filename); + FileList.changeDirectory(dir + filename); }); FileActions.setDefault('dir', 'Open'); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js index 29be5e0d362..b50d46c98d3 100644 --- a/apps/files/js/filelist.js +++ b/apps/files/js/filelist.js @@ -1,7 +1,28 @@ var FileList={ useUndo:true, + postProcessList: function(){ + $('#fileList tr').each(function(){ + //little hack to set unescape filenames in attribute + $(this).attr('data-file',decodeURIComponent($(this).attr('data-file'))); + }); + }, update:function(fileListHtml) { - $('#fileList').empty().html(fileListHtml); + var $fileList = $('#fileList'), + permissions = $('#permissions').val(), + isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; + $fileList.empty().html(fileListHtml); + $('#emptycontent').toggleClass('hidden', !isCreatable || $fileList.find('tr').length > 0); + $fileList.find('tr').each(function () { + FileActions.display($(this).children('td.filename')); + }); + $fileList.trigger(jQuery.Event("fileActionsReady")); + FileList.postProcessList(); + // "Files" might not be loaded in extending apps + if (window.Files){ + Files.setupDragAndDrop(); + } + FileList.updateFileSummary(); + $fileList.trigger(jQuery.Event("updated")); }, createRow:function(type, name, iconurl, linktarget, size, lastModified, permissions){ var td, simpleSize, basename, extension; @@ -134,20 +155,109 @@ var FileList={ FileActions.display(tr.find('td.filename')); return tr; }, - refresh:function(data) { - var result = jQuery.parseJSON(data.responseText); + /** + * @brief Changes the current directory and reload the file list. + * @param targetDir target directory (non URL encoded) + * @param changeUrl false if the URL must not be changed (defaults to true) + */ + changeDirectory: function(targetDir, changeUrl, force){ + var $dir = $('#dir'), + url, + currentDir = $dir.val() || '/'; + targetDir = targetDir || '/'; + if (!force && currentDir === targetDir){ + return; + } + FileList.setCurrentDir(targetDir, changeUrl); + FileList.reload(); + }, + linkTo: function(dir){ + return OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent(dir).replace(/%2F/g, '/'); + }, + setCurrentDir: function(targetDir, changeUrl){ + $('#dir').val(targetDir); + if (changeUrl !== false){ + if (window.history.pushState && changeUrl !== false){ + url = FileList.linkTo(targetDir); + window.history.pushState({dir: targetDir}, '', url); + } + // use URL hash for IE8 + else{ + window.location.hash = '?dir='+ encodeURIComponent(targetDir).replace(/%2F/g, '/'); + } + } + }, + /** + * @brief Reloads the file list using ajax call + */ + reload: function(){ + FileList.showMask(); + if (FileList._reloadCall){ + FileList._reloadCall.abort(); + } + FileList._reloadCall = $.ajax({ + url: OC.filePath('files','ajax','list.php'), + data: { + dir : $('#dir').val(), + breadcrumb: true + }, + error: function(result){ + FileList.reloadCallback(result); + }, + success: function(result) { + FileList.reloadCallback(result); + } + }); + }, + reloadCallback: function(result){ + var $controls = $('#controls'); + + delete FileList._reloadCall; + FileList.hideMask(); + + if (!result || result.status === 'error') { + OC.Notification.show(result.data.message); + return; + } + + if (result.status === 404){ + // go back home + FileList.changeDirectory('/'); + return; + } + + if (result.data.permissions){ + FileList.setDirectoryPermissions(result.data.permissions); + } + if(typeof(result.data.breadcrumb) != 'undefined'){ - updateBreadcrumb(result.data.breadcrumb); + $controls.find('.crumb').remove(); + $controls.prepend(result.data.breadcrumb); + + var width = $(window).width(); + Files.initBreadCrumbs(); + Files.resizeBreadcrumbs(width, true); + + // in case svg is not supported by the browser we need to execute the fallback mechanism + if(!SVGSupport()) { + replaceSVG(); + } } + FileList.update(result.data.files); - resetFileActionPanel(); + }, + setDirectoryPermissions: function(permissions){ + var isCreatable = (permissions & OC.PERMISSION_CREATE) !== 0; + $('#permissions').val(permissions); + $('.creatable').toggleClass('hidden', !isCreatable); + $('.notCreatable').toggleClass('hidden', isCreatable); }, remove:function(name){ $('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy'); $('tr').filterAttr('data-file',name).remove(); FileList.updateFileSummary(); if($('tr[data-file]').length==0){ - $('#emptycontent').show(); + $('#emptycontent').removeClass('hidden'); } }, insertElement:function(name,type,element){ @@ -177,7 +287,7 @@ var FileList={ }else{ $('#fileList').append(element); } - $('#emptycontent').hide(); + $('#emptycontent').addClass('hidden'); FileList.updateFileSummary(); }, loadingDone:function(name, id){ @@ -508,6 +618,31 @@ var FileList={ $connector.show(); } } + }, + showMask: function(){ + // in case one was shown before + var $mask = $('#content .mask'); + if ($mask.length){ + return; + } + + $mask = $('<div class="mask transparent"></div>'); + + $mask.css('background-image', 'url('+ OC.imagePath('core', 'loading.gif') + ')'); + $mask.css('background-repeat', 'no-repeat'); + $('#content').append($mask); + + // block UI, but only make visible in case loading takes longer + FileList._maskTimeout = window.setTimeout(function(){ + // reset opacity + $mask.removeClass('transparent'); + }, 250); + }, + hideMask: function(){ + var $mask = $('#content .mask').remove(); + if (FileList._maskTimeout){ + window.clearTimeout(FileList._maskTimeout); + } } }; @@ -629,8 +764,8 @@ $(document).ready(function(){ } // update folder size - var size = parseInt(data.context.data('size')); - size += parseInt(file.size) ; + var size = parseInt(data.context.data('size')); + size += parseInt(file.size); data.context.attr('data-size', size); data.context.find('td.filesize').text(humanFileSize(size)); @@ -710,5 +845,55 @@ $(document).ready(function(){ $(window).trigger('beforeunload'); }); + function parseHashQuery(){ + var hash = window.location.hash, + pos = hash.indexOf('?'), + query; + if (pos >= 0){ + return hash.substr(pos + 1); + } + return ''; + } + + function parseCurrentDirFromUrl(){ + var query = parseHashQuery(), + params, + dir = '/'; + // try and parse from URL hash first + if (query){ + params = OC.parseQueryString(query); + } + // else read from query attributes + if (!params){ + params = OC.parseQueryString(location.search); + } + return (params && params.dir) || '/'; + } + + // fallback to hashchange when no history support + if (!window.history.pushState){ + $(window).on('hashchange', function(){ + FileList.changeDirectory(parseCurrentDirFromUrl(), false); + }); + } + window.onpopstate = function(e){ + var targetDir; + if (e.state && e.state.dir){ + targetDir = e.state.dir; + } + else{ + // read from URL + targetDir = parseCurrentDirFromUrl(); + } + if (targetDir){ + FileList.changeDirectory(targetDir, false); + } + } + + if (parseInt($('#ajaxLoad').val(), 10) === 1){ + // need to initially switch the dir to the one from the hash (IE8) + FileList.changeDirectory(parseCurrentDirFromUrl(), false, true); + } + FileList.createFileSummary(); }); diff --git a/apps/files/js/files.js b/apps/files/js/files.js index d729077ea72..c2418cfa751 100644 --- a/apps/files/js/files.js +++ b/apps/files/js/files.js @@ -94,29 +94,106 @@ Files={ OC.Notification.show(t('files_encryption', 'Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files.')); return; } + }, + + setupDragAndDrop: function(){ + var $fileList = $('#fileList'); + + //drag/drop of files + $fileList.find('tr td.filename').each(function(i,e){ + if ($(e).parent().data('permissions') & OC.PERMISSION_DELETE) { + $(e).draggable(dragOptions); + } + }); + + $fileList.find('tr[data-type="dir"] td.filename').each(function(i,e){ + if ($(e).parent().data('permissions') & OC.PERMISSION_CREATE){ + $(e).droppable(folderDropOptions); + } + }); + }, + + lastWidth: 0, + + initBreadCrumbs: function () { + Files.lastWidth = 0; + Files.breadcrumbs = []; + + // initialize with some extra space + Files.breadcrumbsWidth = 64; + if ( document.getElementById("navigation") ) { + Files.breadcrumbsWidth += $('#navigation').get(0).offsetWidth; + } + Files.hiddenBreadcrumbs = 0; + + $.each($('.crumb'), function(index, breadcrumb) { + Files.breadcrumbs[index] = breadcrumb; + Files.breadcrumbsWidth += $(breadcrumb).get(0).offsetWidth; + }); + + $.each($('#controls .actions>div'), function(index, action) { + Files.breadcrumbsWidth += $(action).get(0).offsetWidth; + }); + + // event handlers for breadcrumb items + $('#controls .crumb a').on('click', onClickBreadcrumb); + }, + + resizeBreadcrumbs: function (width, firstRun) { + if (width != Files.lastWidth) { + if ((width < Files.lastWidth || firstRun) && width < Files.breadcrumbsWidth) { + if (Files.hiddenBreadcrumbs == 0) { + Files.breadcrumbsWidth -= $(Files.breadcrumbs[1]).get(0).offsetWidth; + $(Files.breadcrumbs[1]).find('a').hide(); + $(Files.breadcrumbs[1]).append('<span>...</span>'); + Files.breadcrumbsWidth += $(Files.breadcrumbs[1]).get(0).offsetWidth; + Files.hiddenBreadcrumbs = 2; + } + var i = Files.hiddenBreadcrumbs; + while (width < Files.breadcrumbsWidth && i > 1 && i < Files.breadcrumbs.length - 1) { + Files.breadcrumbsWidth -= $(Files.breadcrumbs[i]).get(0).offsetWidth; + $(Files.breadcrumbs[i]).hide(); + Files.hiddenBreadcrumbs = i; + i++ + } + } else if (width > Files.lastWidth && Files.hiddenBreadcrumbs > 0) { + var i = Files.hiddenBreadcrumbs; + while (width > Files.breadcrumbsWidth && i > 0) { + if (Files.hiddenBreadcrumbs == 1) { + Files.breadcrumbsWidth -= $(Files.breadcrumbs[1]).get(0).offsetWidth; + $(Files.breadcrumbs[1]).find('span').remove(); + $(Files.breadcrumbs[1]).find('a').show(); + Files.breadcrumbsWidth += $(Files.breadcrumbs[1]).get(0).offsetWidth; + } else { + $(Files.breadcrumbs[i]).show(); + Files.breadcrumbsWidth += $(Files.breadcrumbs[i]).get(0).offsetWidth; + if (Files.breadcrumbsWidth > width) { + Files.breadcrumbsWidth -= $(Files.breadcrumbs[i]).get(0).offsetWidth; + $(Files.breadcrumbs[i]).hide(); + break; + } + } + i--; + Files.hiddenBreadcrumbs = i; + } + } + Files.lastWidth = width; + } } }; $(document).ready(function() { + // FIXME: workaround for trashbin app + if (window.trashBinApp){ + return; + } Files.displayEncryptionWarning(); Files.bindKeyboardShortcuts(document, jQuery); - $('#fileList tr').each(function(){ - //little hack to set unescape filenames in attribute - $(this).attr('data-file',decodeURIComponent($(this).attr('data-file'))); - }); + + FileList.postProcessList(); + Files.setupDragAndDrop(); $('#file_action_panel').attr('activeAction', false); - //drag/drop of files - $('#fileList tr td.filename').each(function(i,e){ - if ($(e).parent().data('permissions') & OC.PERMISSION_DELETE) { - $(e).draggable(dragOptions); - } - }); - $('#fileList tr[data-type="dir"] td.filename').each(function(i,e){ - if ($(e).parent().data('permissions') & OC.PERMISSION_CREATE){ - $(e).droppable(folderDropOptions); - } - }); $('div.crumb:not(.last)').droppable(crumbDropOptions); $('ul#apps>li:first-child').data('dir',''); if($('div.crumb').length){ @@ -268,72 +345,15 @@ $(document).ready(function() { //do a background scan if needed scanFiles(); - var lastWidth = 0; - var breadcrumbs = []; - var breadcrumbsWidth = 0; - if ( document.getElementById("navigation") ) { - breadcrumbsWidth = $('#navigation').get(0).offsetWidth; - } - var hiddenBreadcrumbs = 0; - - $.each($('.crumb'), function(index, breadcrumb) { - breadcrumbs[index] = breadcrumb; - breadcrumbsWidth += $(breadcrumb).get(0).offsetWidth; - }); - - - $.each($('#controls .actions>div'), function(index, action) { - breadcrumbsWidth += $(action).get(0).offsetWidth; - }); - - function resizeBreadcrumbs(firstRun) { - var width = $(this).width(); - if (width != lastWidth) { - if ((width < lastWidth || firstRun) && width < breadcrumbsWidth) { - if (hiddenBreadcrumbs == 0) { - breadcrumbsWidth -= $(breadcrumbs[1]).get(0).offsetWidth; - $(breadcrumbs[1]).find('a').hide(); - $(breadcrumbs[1]).append('<span>...</span>'); - breadcrumbsWidth += $(breadcrumbs[1]).get(0).offsetWidth; - hiddenBreadcrumbs = 2; - } - var i = hiddenBreadcrumbs; - while (width < breadcrumbsWidth && i > 1 && i < breadcrumbs.length - 1) { - breadcrumbsWidth -= $(breadcrumbs[i]).get(0).offsetWidth; - $(breadcrumbs[i]).hide(); - hiddenBreadcrumbs = i; - i++ - } - } else if (width > lastWidth && hiddenBreadcrumbs > 0) { - var i = hiddenBreadcrumbs; - while (width > breadcrumbsWidth && i > 0) { - if (hiddenBreadcrumbs == 1) { - breadcrumbsWidth -= $(breadcrumbs[1]).get(0).offsetWidth; - $(breadcrumbs[1]).find('span').remove(); - $(breadcrumbs[1]).find('a').show(); - breadcrumbsWidth += $(breadcrumbs[1]).get(0).offsetWidth; - } else { - $(breadcrumbs[i]).show(); - breadcrumbsWidth += $(breadcrumbs[i]).get(0).offsetWidth; - if (breadcrumbsWidth > width) { - breadcrumbsWidth -= $(breadcrumbs[i]).get(0).offsetWidth; - $(breadcrumbs[i]).hide(); - break; - } - } - i--; - hiddenBreadcrumbs = i; - } - } - lastWidth = width; - } - } + Files.initBreadCrumbs(); $(window).resize(function() { - resizeBreadcrumbs(false); + var width = $(this).width(); + Files.resizeBreadcrumbs(width, false); }); - resizeBreadcrumbs(true); + var width = $(this).width(); + Files.resizeBreadcrumbs(width, true); // display storage warnings setTimeout ( "Files.displayStorageWarnings()", 100 ); @@ -415,10 +435,6 @@ function boolOperationFinished(data, callback) { } } -function updateBreadcrumb(breadcrumbHtml) { - $('p.nav').empty().html(breadcrumbHtml); -} - var createDragShadow = function(event){ //select dragged file var isDragSelected = $(event.target).parents('tr').find('td input:first').prop('checked'); @@ -681,3 +697,9 @@ function checkTrashStatus() { } }); } + +function onClickBreadcrumb(e){ + var $el = $(e.target).closest('.crumb'); + e.preventDefault(); + FileList.changeDirectory(decodeURIComponent($el.data('dir'))); +} diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php index 0530adc2ae2..83ed8e8688f 100644 --- a/apps/files/l10n/lt_LT.php +++ b/apps/files/l10n/lt_LT.php @@ -2,6 +2,8 @@ $TRANSLATIONS = array( "Could not move %s - File with this name already exists" => "Nepavyko perkelti %s - failas su tokiu pavadinimu jau egzistuoja", "Could not move %s" => "Nepavyko perkelti %s", +"Unable to set upload directory." => "Nepavyksta nustatyti įkėlimų katalogo.", +"Invalid Token" => "Netinkamas ženklas", "No file was uploaded. Unknown error" => "Failai nebuvo įkelti dėl nežinomos priežasties", "There is no error, the file uploaded with success" => "Failas įkeltas sėkmingai, be klaidų", "The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Įkeliamas failas yra didesnis nei leidžia upload_max_filesize php.ini faile:", @@ -31,19 +33,22 @@ $TRANSLATIONS = array( "cancel" => "atšaukti", "replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}", "undo" => "anuliuoti", -"_%n folder_::_%n folders_" => array("","",""), -"_%n file_::_%n files_" => array("","",""), -"_Uploading %n file_::_Uploading %n files_" => array("","",""), +"_%n folder_::_%n folders_" => array("%n aplankas","%n aplankai","%n aplankų"), +"_%n file_::_%n files_" => array("%n failas","%n failai","%n failų"), +"{dirs} and {files}" => "{dirs} ir {files}", +"_Uploading %n file_::_Uploading %n files_" => array("Įkeliamas %n failas","Įkeliami %n failai","Įkeliama %n failų"), "files uploading" => "įkeliami failai", "'.' is an invalid file name." => "'.' yra neleidžiamas failo pavadinime.", "File name cannot be empty." => "Failo pavadinimas negali būti tuščias.", "Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Neleistinas pavadinimas, '\\', '/', '<', '>', ':', '\"', '|', '?' ir '*' yra neleidžiami.", "Your storage is full, files can not be updated or synced anymore!" => "Jūsų visa vieta serveryje užimta", "Your storage is almost full ({usedSpacePercent}%)" => "Jūsų vieta serveryje beveik visa užimta ({usedSpacePercent}%)", +"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Šifravimas buvo išjungtas, bet Jūsų failai vis dar užšifruoti. Prašome eiti į asmeninius nustatymus ir iššifruoti savo failus.", "Your download is being prepared. This might take some time if the files are big." => "Jūsų atsisiuntimas yra paruošiamas. tai gali užtrukti jei atsisiunčiamas didelis failas.", "Name" => "Pavadinimas", "Size" => "Dydis", "Modified" => "Pakeista", +"%s could not be renamed" => "%s negali būti pervadintas", "Upload" => "Įkelti", "File handling" => "Failų tvarkymas", "Maximum upload size" => "Maksimalus įkeliamo failo dydis", diff --git a/apps/files/lib/helper.php b/apps/files/lib/helper.php index 9170c6e3fc0..3c13b8ea6e2 100644 --- a/apps/files/lib/helper.php +++ b/apps/files/lib/helper.php @@ -45,5 +45,92 @@ class Helper return \OC_Helper::mimetypeIcon($file['mimetype']); } + /** + * Comparator function to sort files alphabetically and have + * the directories appear first + * @param array $a file + * @param array $b file + * @return -1 if $a must come before $b, 1 otherwise + */ + public static 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']); + } + } + + /** + * Retrieves the contents of the given directory and + * returns it as a sorted array. + * @param string $dir path to the directory + * @return array of files + */ + public static function getFiles($dir) { + $content = \OC\Files\Filesystem::getDirectoryContent($dir); + $files = array(); + + foreach ($content as $i) { + $i['date'] = \OCP\Util::formatDate($i['mtime']); + if ($i['type'] === 'file') { + $fileinfo = pathinfo($i['name']); + $i['basename'] = $fileinfo['filename']; + if (!empty($fileinfo['extension'])) { + $i['extension'] = '.' . $fileinfo['extension']; + } else { + $i['extension'] = ''; + } + } + $i['directory'] = $dir; + $i['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($i['mimetype']); + $i['icon'] = \OCA\files\lib\Helper::determineIcon($i); + $files[] = $i; + } + + usort($files, array('\OCA\files\lib\Helper', 'fileCmp')); + + return $files; + } + /** + * Splits the given path into a breadcrumb structure. + * @param string $dir path to process + * @return array where each entry is a hash of the absolute + * directory path and its name + */ + public static function makeBreadcrumb($dir){ + $breadcrumb = array(); + $pathtohere = ''; + foreach (explode('/', $dir) as $i) { + if ($i !== '') { + $pathtohere .= '/' . $i; + $breadcrumb[] = array('dir' => $pathtohere, 'name' => $i); + } + } + return $breadcrumb; + } + + /** + * Returns the numeric permissions for the given directory. + * @param string $dir directory without trailing slash + * @return numeric permissions + */ + public static function getDirPermissions($dir){ + $permissions = \OCP\PERMISSION_READ; + if (\OC\Files\Filesystem::isCreatable($dir . '/')) { + $permissions |= \OCP\PERMISSION_CREATE; + } + if (\OC\Files\Filesystem::isUpdatable($dir . '/')) { + $permissions |= \OCP\PERMISSION_UPDATE; + } + if (\OC\Files\Filesystem::isDeletable($dir . '/')) { + $permissions |= \OCP\PERMISSION_DELETE; + } + if (\OC\Files\Filesystem::isSharable($dir . '/')) { + $permissions |= \OCP\PERMISSION_SHARE; + } + return $permissions; + } } diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index e481f89beb8..bd991c3fcb0 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -1,8 +1,7 @@ <!--[if IE 8]><style>input[type="checkbox"]{padding:0;}table td{position:static !important;}</style><![endif]--> <div id="controls"> <?php print_unescaped($_['breadcrumb']); ?> - <?php if ($_['isCreatable']):?> - <div class="actions <?php if (isset($_['files']) and count($_['files'])==0):?>emptyfolder<?php endif; ?>"> + <div class="actions creatable <?php if (!$_['isCreatable']):?>hidden<?php endif; ?> <?php if (isset($_['files']) and count($_['files'])==0):?>emptycontent<?php endif; ?>"> <div id="new" class="button"> <a><?php p($l->t('New'));?></a> <ul> @@ -30,7 +29,9 @@ <a href="#" class="svg"></a> </div> <?php if ($_['trash'] ): ?> - <input id="trash" type="button" value="<?php p($l->t('Deleted files'));?>" class="button" <?php $_['trashEmpty'] ? p('disabled') : '' ?>></input> + <div id="trash" class="button" <?php $_['trashEmpty'] ? p('disabled') : '' ?>> + <a><?php p($l->t('Deleted files'));?></a> + </div> <?php endif; ?> <div id="uploadprogresswrapper"> <div id="uploadprogressbar"></div> @@ -40,16 +41,15 @@ </div> </div> <div id="file_action_panel"></div> - <?php elseif( !$_['isPublic'] ):?> - <div class="actions"><input type="button" disabled value="<?php p($l->t('You don’t have write permissions here.'))?>"></div> - <input type="hidden" name="dir" value="<?php p($_['dir']) ?>" id="dir"> - <?php endif;?> + <div class="notCreatable notPublic <?php if ($_['isCreatable'] or $_['isPublic'] ):?>hidden<?php endif; ?>"> + <div class="actions"><input type="button" disabled value="<?php p($l->t('You don’t have write permissions here.'))?>"></div> + </div> <input type="hidden" name="permissions" value="<?php p($_['permissions']); ?>" id="permissions"> </div> -<?php if (isset($_['files']) and $_['isCreatable'] and count($_['files'])==0):?> - <div id="emptycontent"><?php p($l->t('Nothing in here. Upload something!'))?></div> -<?php endif; ?> +<div id="emptycontent" <?php if (!isset($_['files']) or !$_['isCreatable'] or count($_['files']) > 0 or !$_['ajaxLoad']):?>class="hidden"<?php endif; ?>><?php p($l->t('Nothing in here. Upload something!'))?></div> + +<input type="hidden" id="disableSharing" data-status="<?php p($_['disableSharing']); ?>"></input> <table id="filestable" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="36" data-preview-y="36"> <thead> @@ -74,7 +74,7 @@ <th id="headerDate"> <span id="modified"><?php p($l->t( 'Modified' )); ?></span> <?php if ($_['permissions'] & OCP\PERMISSION_DELETE): ?> -<!-- NOTE: Temporary fix to allow unsharing of files in root of Shared folder --> +<!-- NOTE: Temporary fix to allow unsharing of files in root of Shared folder --> <?php if ($_['dir'] == '/Shared'): ?> <span class="selectedActions"><a href="" class="delete-selected"> <?php p($l->t('Unshare'))?> @@ -112,6 +112,7 @@ </div> <!-- config hints for javascript --> +<input type="hidden" name="ajaxLoad" id="ajaxLoad" value="<?php p($_['ajaxLoad']); ?>" /> <input type="hidden" name="allowZipDownload" id="allowZipDownload" value="<?php p($_['allowZipDownload']); ?>" /> <input type="hidden" name="usedSpacePercent" id="usedSpacePercent" value="<?php p($_['usedSpacePercent']); ?>" /> <input type="hidden" name="encryptedFiles" id="encryptedFiles" value="<?php $_['encryptedFiles'] ? p('1') : p('0'); ?>" /> diff --git a/apps/files/templates/part.list.php b/apps/files/templates/part.list.php index 9e1750faddf..1e4d4d11c98 100644 --- a/apps/files/templates/part.list.php +++ b/apps/files/templates/part.list.php @@ -1,4 +1,6 @@ -<input type="hidden" id="disableSharing" data-status="<?php p($_['disableSharing']); ?>"> +<?php $totalfiles = 0; +$totaldirs = 0; +$totalsize = 0; ?> <?php foreach($_['files'] as $file): // the bigger the file, the darker the shade of grey; megabytes*2 $simple_size_color = intval(160-$file['size']/(1024*1024)*2); diff --git a/apps/files_encryption/l10n/lt_LT.php b/apps/files_encryption/l10n/lt_LT.php index 9fbf7b29604..4ededb716f4 100644 --- a/apps/files_encryption/l10n/lt_LT.php +++ b/apps/files_encryption/l10n/lt_LT.php @@ -6,12 +6,34 @@ $TRANSLATIONS = array( "Could not disable recovery key. Please check your recovery key password!" => "Neišėjo išjungti jūsų atkūrimo rakto. Prašome jį patikrinti!", "Password successfully changed." => "Slaptažodis sėkmingai pakeistas", "Could not change the password. Maybe the old password was not correct." => "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas senasis.", +"Private key password successfully updated." => "Privataus rakto slaptažodis buvo sėkmingai atnaujintas.", +"Could not update the private key password. Maybe the old password was not correct." => "Nepavyko atnaujinti privataus rakto slaptažodžio. Gali būti, kad buvo neteisingai suvestas senasis.", +"Your private key is not valid! Likely your password was changed outside the ownCloud system (e.g. your corporate directory). You can update your private key password in your personal settings to recover access to your encrypted files." => "Jūsų privatus raktas yra netinkamas! Panašu, kad Jūsų slaptažodis buvo pakeistas išorėje ownCloud sistemos (pvz. Jūsų organizacijos kataloge). Galite atnaujinti savo privataus rakto slaptažodį savo asmeniniuose nustatymuose, kad atkurti prieigą prie savo šifruotų failų.", +"Missing requirements." => "Trūkstami laukai.", +"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL together with the PHP extension is enabled and configured properly. For now, the encryption app has been disabled." => "Prašome įsitikinti, kad PHP 5.3.3 ar naujesnė yra įdiegta ir kad OpenSSL kartu su PHP plėtiniu yra šjungti ir teisingai sukonfigūruoti. Kol kas šifravimo programa bus išjungta.", +"Following users are not set up for encryption:" => "Sekantys naudotojai nenustatyti šifravimui:", "Saving..." => "Saugoma...", +"Your private key is not valid! Maybe the your password was changed from outside." => "Jūsų privatus raktas yra netinkamas! Galbūt Jūsų slaptažodis buvo pakeistas iš išorės?", +"You can unlock your private key in your " => "Galite atrakinti savo privatų raktą savo", +"personal settings" => "asmeniniai nustatymai", "Encryption" => "Šifravimas", +"Enable recovery key (allow to recover users files in case of password loss):" => "Įjunkite atkūrimo raktą, (leisti atkurti naudotojų failus praradus slaptažodį):", +"Recovery key password" => "Atkūrimo rakto slaptažodis", "Enabled" => "Įjungta", "Disabled" => "Išjungta", +"Change recovery key password:" => "Pakeisti atkūrimo rakto slaptažodį:", +"Old Recovery key password" => "Senas atkūrimo rakto slaptažodis", +"New Recovery key password" => "Naujas atkūrimo rakto slaptažodis", "Change Password" => "Pakeisti slaptažodį", -"File recovery settings updated" => "Failų atstatymo nustatymai pakeisti", +"Your private key password no longer match your log-in password:" => "Privatus rakto slaptažodis daugiau neatitinka Jūsų prisijungimo slaptažodžio:", +"Set your old private key password to your current log-in password." => "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį prisijungimo.", +" If you don't remember your old password you can ask your administrator to recover your files." => "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus.", +"Old log-in password" => "Senas prisijungimo slaptažodis", +"Current log-in password" => "Dabartinis prisijungimo slaptažodis", +"Update Private Key Password" => "Atnaujinti privataus rakto slaptažodį", +"Enable password recovery:" => "Įjungti slaptažodžio atkūrimą:", +"Enabling this option will allow you to reobtain access to your encrypted files in case of password loss" => "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį.", +"File recovery settings updated" => "Failų atkūrimo nustatymai pakeisti", "Could not update file recovery" => "Neišėjo atnaujinti failų atkūrimo" ); $PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"; diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 3be89a39fa0..03ed02f41ef 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -4,7 +4,7 @@ $(document).ready(function() { if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !disableSharing) { - $('#fileList').one('fileActionsReady',function(){ + $('#fileList').on('fileActionsReady',function(){ OC.Share.loadIcons('file'); }); diff --git a/apps/files_sharing/l10n/lt_LT.php b/apps/files_sharing/l10n/lt_LT.php index 5d0e58e2fb2..90ae6a39a07 100644 --- a/apps/files_sharing/l10n/lt_LT.php +++ b/apps/files_sharing/l10n/lt_LT.php @@ -1,7 +1,14 @@ <?php $TRANSLATIONS = array( +"The password is wrong. Try again." => "Netinka slaptažodis: Bandykite dar kartą.", "Password" => "Slaptažodis", "Submit" => "Išsaugoti", +"Sorry, this link doesn’t seem to work anymore." => "Atleiskite, panašu, kad nuoroda yra neveiksni.", +"Reasons might be:" => "Galimos priežastys:", +"the item was removed" => "elementas buvo pašalintas", +"the link expired" => "baigėsi nuorodos galiojimo laikas", +"sharing is disabled" => "dalinimasis yra išjungtas", +"For more info, please ask the person who sent this link." => "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą.", "%s shared the folder %s with you" => "%s pasidalino su jumis %s aplanku", "%s shared the file %s with you" => "%s pasidalino su jumis %s failu", "Download" => "Atsisiųsti", diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index ae3e27cab3f..6d3a07a9d0b 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -147,6 +147,7 @@ if (isset($path)) { $tmpl->assign('mimetype', \OC\Files\Filesystem::getMimeType($path)); $tmpl->assign('fileTarget', basename($linkItem['file_target'])); $tmpl->assign('dirToken', $linkItem['token']); + $tmpl->assign('disableSharing', true); $allowPublicUploadEnabled = (bool) ($linkItem['permissions'] & OCP\PERMISSION_CREATE); if (\OCP\App::isEnabled('files_encryption')) { $allowPublicUploadEnabled = false; @@ -206,7 +207,6 @@ if (isset($path)) { } $list = new OCP\Template('files', 'part.list', ''); $list->assign('files', $files); - $list->assign('disableSharing', true); $list->assign('baseURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&path='); $list->assign('downloadURL', OCP\Util::linkToPublic('files') . $urlLinkIdentifiers . '&download&path='); diff --git a/apps/files_trashbin/ajax/list.php b/apps/files_trashbin/ajax/list.php new file mode 100644 index 00000000000..e72e67b01d7 --- /dev/null +++ b/apps/files_trashbin/ajax/list.php @@ -0,0 +1,51 @@ +<?php + +// only need filesystem apps +$RUNTIME_APPTYPES=array('filesystem'); + +// Init owncloud + + +OCP\JSON::checkLoggedIn(); + +// Load the files +$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; +$doBreadcrumb = isset( $_GET['breadcrumb'] ) ? true : false; +$data = array(); + +// Make breadcrumb +if($doBreadcrumb) { + $breadcrumb = \OCA\files_trashbin\lib\Helper::makeBreadcrumb($dir); + + $breadcrumbNav = new OCP\Template('files_trashbin', 'part.breadcrumb', ''); + $breadcrumbNav->assign('breadcrumb', $breadcrumb, false); + $breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php') . '?dir='); + $breadcrumbNav->assign('home', OCP\Util::linkTo('files', 'index.php')); + + $data['breadcrumb'] = $breadcrumbNav->fetchPage(); +} + +// make filelist +$files = \OCA\files_trashbin\lib\Helper::getTrashFiles($dir); + +if ($files === null){ + header("HTTP/1.0 404 Not Found"); + exit(); +} + +$dirlisting = false; +if ($dir && $dir !== '/') { + $dirlisting = true; +} + +$encodedDir = \OCP\Util::encodePath($dir); +$list = new OCP\Template('files_trashbin', 'part.list', ''); +$list->assign('files', $files, false); +$list->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php'). '?dir='.$encodedDir); +$list->assign('downloadURL', OCP\Util::linkToRoute('download', array('file' => '/'))); +$list->assign('dirlisting', $dirlisting); +$list->assign('disableDownloadActions', true); +$data['files'] = $list->fetchPage(); + +OCP\JSON::success(array('data' => $data)); + diff --git a/apps/files_trashbin/index.php b/apps/files_trashbin/index.php index b7d0ef012f4..9f17448a757 100644 --- a/apps/files_trashbin/index.php +++ b/apps/files_trashbin/index.php @@ -10,93 +10,52 @@ OCP\Util::addScript('files_trashbin', 'disableDefaultActions'); OCP\Util::addScript('files', 'fileactions'); $tmpl = new OCP\Template('files_trashbin', 'index', 'user'); -$user = \OCP\User::getUser(); -$view = new OC_Filesystemview('/'.$user.'/files_trashbin/files'); - OCP\Util::addStyle('files', 'files'); OCP\Util::addScript('files', 'filelist'); +// filelist overrides +OCP\Util::addScript('files_trashbin', 'filelist'); +OCP\Util::addscript('files', 'files'); $dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : ''; -$result = array(); -if ($dir) { - $dirlisting = true; - $dirContent = $view->opendir($dir); - $i = 0; - if(is_resource($dirContent)) { - while(($entryName = readdir($dirContent)) !== false) { - if (!\OC\Files\Filesystem::isIgnoredDir($entryName)) { - $pos = strpos($dir.'/', '/', 1); - $tmp = substr($dir, 0, $pos); - $pos = strrpos($tmp, '.d'); - $timestamp = substr($tmp, $pos+2); - $result[] = array( - 'id' => $entryName, - 'timestamp' => $timestamp, - 'mime' => $view->getMimeType($dir.'/'.$entryName), - 'type' => $view->is_dir($dir.'/'.$entryName) ? 'dir' : 'file', - 'location' => $dir, - ); - } - } - closedir($dirContent); - } -} else { - $dirlisting = false; - $query = \OC_DB::prepare('SELECT `id`,`location`,`timestamp`,`type`,`mime` FROM `*PREFIX*files_trash` WHERE `user` = ?'); - $result = $query->execute(array($user))->fetchAll(); +$isIE8 = false; +preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches); +if (count($matches) > 0 && $matches[1] <= 8){ + $isIE8 = true; } -$files = array(); -foreach ($result as $r) { - $i = array(); - $i['name'] = $r['id']; - $i['date'] = OCP\Util::formatDate($r['timestamp']); - $i['timestamp'] = $r['timestamp']; - $i['mimetype'] = $r['mime']; - $i['type'] = $r['type']; - if ($i['type'] === 'file') { - $fileinfo = pathinfo($r['id']); - $i['basename'] = $fileinfo['filename']; - $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; - } - $i['directory'] = $r['location']; - if ($i['directory'] === '/') { - $i['directory'] = ''; +// if IE8 and "?dir=path" was specified, reformat the URL to use a hash like "#?dir=path" +if ($isIE8 && isset($_GET['dir'])){ + if ($dir === ''){ + $dir = '/'; } - $i['permissions'] = OCP\PERMISSION_READ; - $i['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($r['mime']); - $i['icon'] = \OCA\files\lib\Helper::determineIcon($i); - $files[] = $i; + header('Location: ' . OCP\Util::linkTo('files_trashbin', 'index.php') . '#?dir=' . \OCP\Util::encodePath($dir)); + exit(); } -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']); - } +$ajaxLoad = false; + +if (!$isIE8){ + $files = \OCA\files_trashbin\lib\Helper::getTrashFiles($dir); +} +else{ + $files = array(); + $ajaxLoad = true; } -usort($files, "fileCmp"); - -// Make breadcrumb -$pathtohere = ''; -$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); - } +// Redirect if directory does not exist +if ($files === null){ + header('Location: ' . OCP\Util::linkTo('files_trashbin', 'index.php')); + exit(); } +$dirlisting = false; +if ($dir && $dir !== '/') { + $dirlisting = true; +} + +$breadcrumb = \OCA\files_trashbin\lib\Helper::makeBreadcrumb($dir); + $breadcrumbNav = new OCP\Template('files_trashbin', 'part.breadcrumb', ''); $breadcrumbNav->assign('breadcrumb', $breadcrumb); $breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php') . '?dir='); @@ -108,7 +67,6 @@ $list->assign('files', $files); $encodedDir = \OCP\Util::encodePath($dir); $list->assign('baseURL', OCP\Util::linkTo('files_trashbin', 'index.php'). '?dir='.$encodedDir); $list->assign('downloadURL', OCP\Util::linkTo('files_trashbin', 'download.php') . '?file='.$encodedDir); -$list->assign('disableSharing', true); $list->assign('dirlisting', $dirlisting); $list->assign('disableDownloadActions', true); @@ -116,6 +74,8 @@ $tmpl->assign('dirlisting', $dirlisting); $tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage()); $tmpl->assign('fileList', $list->fetchPage()); $tmpl->assign('files', $files); -$tmpl->assign('dir', \OC\Files\Filesystem::normalizePath($view->getAbsolutePath())); +$tmpl->assign('dir', $dir); +$tmpl->assign('disableSharing', true); +$tmpl->assign('ajaxLoad', true); $tmpl->printPage(); diff --git a/apps/files_trashbin/js/filelist.js b/apps/files_trashbin/js/filelist.js new file mode 100644 index 00000000000..cd5a67ddfe0 --- /dev/null +++ b/apps/files_trashbin/js/filelist.js @@ -0,0 +1,24 @@ +// override reload with own ajax call +FileList.reload = function(){ + FileList.showMask(); + if (FileList._reloadCall){ + FileList._reloadCall.abort(); + } + $.ajax({ + url: OC.filePath('files_trashbin','ajax','list.php'), + data: { + dir : $('#dir').val(), + breadcrumb: true + }, + error: function(result) { + FileList.reloadCallback(result); + }, + success: function(result) { + FileList.reloadCallback(result); + } + }); +} + +FileList.linkTo = function(dir){ + return OC.linkTo('files_trashbin', 'index.php')+"?dir="+ encodeURIComponent(dir).replace(/%2F/g, '/'); +} diff --git a/apps/files_trashbin/js/trash.js b/apps/files_trashbin/js/trash.js index 40c0bdb3829..d73eadb6011 100644 --- a/apps/files_trashbin/js/trash.js +++ b/apps/files_trashbin/js/trash.js @@ -171,9 +171,15 @@ $(document).ready(function() { action(filename); } } + + // event handlers for breadcrumb items + $('#controls').delegate('.crumb:not(.home) a', 'click', onClickBreadcrumb); }); - FileActions.actions.dir = {}; + FileActions.actions.dir = { + // only keep 'Open' action for navigation + 'Open': FileActions.actions.dir.Open + }; }); function processSelection(){ @@ -246,3 +252,9 @@ function disableActions() { $(".action").css("display", "none"); $(":input:checkbox").css("display", "none"); } +function onClickBreadcrumb(e){ + var $el = $(e.target).closest('.crumb'); + e.preventDefault(); + FileList.changeDirectory(decodeURIComponent($el.data('dir'))); +} + diff --git a/apps/files_trashbin/l10n/lt_LT.php b/apps/files_trashbin/l10n/lt_LT.php index c4a12ff2175..0a51290f4d9 100644 --- a/apps/files_trashbin/l10n/lt_LT.php +++ b/apps/files_trashbin/l10n/lt_LT.php @@ -8,8 +8,9 @@ $TRANSLATIONS = array( "Delete permanently" => "Ištrinti negrįžtamai", "Name" => "Pavadinimas", "Deleted" => "Ištrinti", -"_%n folder_::_%n folders_" => array("","",""), -"_%n file_::_%n files_" => array("","",""), +"_%n folder_::_%n folders_" => array("","","%n aplankų"), +"_%n file_::_%n files_" => array("","","%n failų"), +"restored" => "atstatyta", "Nothing in here. Your trash bin is empty!" => "Nieko nėra. Jūsų šiukšliadėžė tuščia!", "Restore" => "Atstatyti", "Delete" => "Ištrinti", diff --git a/apps/files_trashbin/lib/helper.php b/apps/files_trashbin/lib/helper.php new file mode 100644 index 00000000000..098fc0b54b7 --- /dev/null +++ b/apps/files_trashbin/lib/helper.php @@ -0,0 +1,97 @@ +<?php + +namespace OCA\files_trashbin\lib; + +class Helper +{ + /** + * Retrieves the contents of a trash bin directory. + * @param string $dir path to the directory inside the trashbin + * or empty to retrieve the root of the trashbin + * @return array of files + */ + public static function getTrashFiles($dir){ + $result = array(); + $user = \OCP\User::getUser(); + + if ($dir && $dir !== '/') { + $view = new \OC_Filesystemview('/'.$user.'/files_trashbin/files'); + $dirContent = $view->opendir($dir); + if ($dirContent === false){ + return null; + } + if(is_resource($dirContent)){ + while(($entryName = readdir($dirContent)) !== false) { + if (!\OC\Files\Filesystem::isIgnoredDir($entryName)) { + $pos = strpos($dir.'/', '/', 1); + $tmp = substr($dir, 0, $pos); + $pos = strrpos($tmp, '.d'); + $timestamp = substr($tmp, $pos+2); + $result[] = array( + 'id' => $entryName, + 'timestamp' => $timestamp, + 'mime' => $view->getMimeType($dir.'/'.$entryName), + 'type' => $view->is_dir($dir.'/'.$entryName) ? 'dir' : 'file', + 'location' => $dir, + ); + } + } + closedir($dirContent); + } + } else { + $query = \OC_DB::prepare('SELECT `id`,`location`,`timestamp`,`type`,`mime` FROM `*PREFIX*files_trash` WHERE `user` = ?'); + $result = $query->execute(array($user))->fetchAll(); + } + + $files = array(); + foreach ($result as $r) { + $i = array(); + $i['name'] = $r['id']; + $i['date'] = \OCP\Util::formatDate($r['timestamp']); + $i['timestamp'] = $r['timestamp']; + $i['mimetype'] = $r['mime']; + $i['type'] = $r['type']; + if ($i['type'] === 'file') { + $fileinfo = pathinfo($r['id']); + $i['basename'] = $fileinfo['filename']; + $i['extension'] = isset($fileinfo['extension']) ? ('.'.$fileinfo['extension']) : ''; + } + $i['directory'] = $r['location']; + if ($i['directory'] === '/') { + $i['directory'] = ''; + } + $i['permissions'] = \OCP\PERMISSION_READ; + $i['isPreviewAvailable'] = \OCP\Preview::isMimeSupported($r['mime']); + $i['icon'] = \OCA\files\lib\Helper::determineIcon($i); + $files[] = $i; + } + + usort($files, array('\OCA\files\lib\Helper', 'fileCmp')); + + return $files; + } + + /** + * Splits the given path into a breadcrumb structure. + * @param string $dir path to process + * @return array where each entry is a hash of the absolute + * directory path and its name + */ + public static function makeBreadcrumb($dir){ + // Make breadcrumb + $pathtohere = ''; + $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); + } + } + return $breadcrumb; + } +} diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php index 88c32b1f3eb..82ba0608834 100644 --- a/apps/files_trashbin/templates/index.php +++ b/apps/files_trashbin/templates/index.php @@ -5,10 +5,14 @@ </div> <div id='notification'></div> -<?php if (isset($_['files']) && count($_['files']) === 0 && $_['dirlisting'] === false):?> +<?php if (isset($_['files']) && count($_['files']) === 0 && $_['dirlisting'] === false && !$_['ajaxLoad']):?> <div id="emptycontent"><?php p($l->t('Nothing in here. Your trash bin is empty!'))?></div> <?php endif; ?> +<input type="hidden" name="ajaxLoad" id="ajaxLoad" value="<?php p($_['ajaxLoad']); ?>" /> +<input type="hidden" id="disableSharing" data-status="<?php p($_['disableSharing']); ?>"></input> +<input type="hidden" name="dir" value="<?php p($_['dir']) ?>" id="dir"> + <table id="filestable"> <thead> <tr> diff --git a/apps/files_trashbin/templates/part.breadcrumb.php b/apps/files_trashbin/templates/part.breadcrumb.php index 8ecab58e5c8..4acc298adbe 100644 --- a/apps/files_trashbin/templates/part.breadcrumb.php +++ b/apps/files_trashbin/templates/part.breadcrumb.php @@ -1,11 +1,11 @@ -<div class="crumb"> +<div class="crumb home"> <a href="<?php print_unescaped($_['home']); ?>"> <img src="<?php print_unescaped(OCP\image_path('core', 'places/home.svg'));?>" class="svg" /> </a> </div> <?php if(count($_["breadcrumb"])):?> <div class="crumb svg" - data-dir='<?php print_unescaped($_['baseURL']); ?>'> + data-dir='/'> <a href="<?php p($_['baseURL']); ?>"><?php p($l->t("Deleted Files")); ?></a> </div> <?php endif;?> diff --git a/apps/files_trashbin/templates/part.list.php b/apps/files_trashbin/templates/part.list.php index f7cc6b01bbb..78709d986ae 100644 --- a/apps/files_trashbin/templates/part.list.php +++ b/apps/files_trashbin/templates/part.list.php @@ -1,4 +1,3 @@ -<input type="hidden" id="disableSharing" data-status="<?php p($_['disableSharing']); ?>"> <?php foreach($_['files'] as $file): $relative_deleted_date = OCP\relative_modified_date($file['timestamp']); // the older the file, the brighter the shade of grey; days*14 @@ -12,7 +11,7 @@ data-permissions='<?php p($file['permissions']); ?>' <?php if ( $_['dirlisting'] ): ?> id="<?php p($file['directory'].'/'.$file['name']);?>" - data-file="<?php p($file['directory'].'/'.$file['name']);?>" + data-file="<?php p($name);?>" data-timestamp='' data-dirlisting=1 <?php else: ?> diff --git a/apps/files_versions/l10n/lt_LT.php b/apps/files_versions/l10n/lt_LT.php index 4e1af5fcc29..3afcfbe3b5f 100644 --- a/apps/files_versions/l10n/lt_LT.php +++ b/apps/files_versions/l10n/lt_LT.php @@ -2,6 +2,9 @@ $TRANSLATIONS = array( "Could not revert: %s" => "Nepavyko atstatyti: %s", "Versions" => "Versijos", +"Failed to revert {file} to revision {timestamp}." => "Nepavyko atstatyti {file} į būseną {timestamp}.", +"More versions..." => "Daugiau versijų...", +"No other versions available" => "Nėra daugiau versijų", "Restore" => "Atstatyti" ); $PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"; diff --git a/apps/user_ldap/l10n/es_AR.php b/apps/user_ldap/l10n/es_AR.php index b31f41e3dfb..2436df8de77 100644 --- a/apps/user_ldap/l10n/es_AR.php +++ b/apps/user_ldap/l10n/es_AR.php @@ -75,8 +75,10 @@ $TRANSLATIONS = array( "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. To achieve a similar behavior as before ownCloud 5 enter the user display name attribute in the following field. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users." => "Por defecto, el nombre de usuario interno es creado a partir del atributo UUID. Esto asegura que el nombre de usuario es único y no es necesaria una conversión de caracteres. El nombre de usuario interno sólo se pueden usar estos caracteres: [ a-zA-Z0-9_.@- ]. El resto de caracteres son sustituidos por su correspondiente en ASCII o simplemente omitidos. En caso colisiones, se agregará o incrementará un número. El nombre de usuario interno es usado para identificar un usuario. Es también el nombre predeterminado para el directorio personal del usuario en ownCloud. También es parte de las URLs remotas, por ejemplo, para los servicios *DAV. Con esta opción, se puede cambiar el comportamiento por defecto. Para conseguir un comportamiento similar a versiones anteriores a ownCloud 5, ingresá el atributo del nombre mostrado en el campo siguiente. Dejalo vacío para el comportamiento por defecto. Los cambios solo tendrán efecto en los nuevos usuarios LDAP mapeados (agregados).", "Internal Username Attribute:" => "Atributo Nombre Interno de usuario:", "Override UUID detection" => "Sobrescribir la detección UUID", +"By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." => "Por defecto, el atributo UUID es detectado automáticamente. Este atributo es usado para identificar de manera certera usuarios y grupos LDAP. Además, el nombre de usuario interno será creado en base al UUID, si no fue especificado otro comportamiento más arriba. Podés sobrescribir la configuración y pasar un atributo de tu elección. Tenés que asegurarte que el atributo de tu elección sea accesible por los usuarios y grupos y que sea único. Dejalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto sólo en los nuevos usuarios y grupos de LDAP mapeados (agregados).", "UUID Attribute:" => "Atributo UUID:", "Username-LDAP User Mapping" => "Asignación del Nombre de usuario de un usuario LDAP", +"Usernames are used to store and assign (meta) data. In order to precisely identify and recognize users, each LDAP user will have a internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." => "Los usuarios son usados para almacenar y asignar datos (metadatos). Con el fin de identificar de forma precisa y reconocer usuarios, a cada usuario de LDAP se será asignado un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es dejado en caché para reducir la interacción entre el LDAP, pero no es usado para la identificación. Si el DN cambia, los cambios van a ser aplicados. El nombre de usuario interno es usado en todos los lugares. Vaciar los mapeos, deja restos por todas partes. Vaciar los mapeos, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, solamente en fase de desarrollo o experimental.", "Clear Username-LDAP User Mapping" => "Borrar la asignación de los Nombres de usuario de los usuarios LDAP", "Clear Groupname-LDAP Group Mapping" => "Borrar la asignación de los Nombres de grupo de los grupos de LDAP", "Test Configuration" => "Probar configuración", diff --git a/apps/user_ldap/l10n/lt_LT.php b/apps/user_ldap/l10n/lt_LT.php index 7e8b389af7f..2c3b938fcfe 100644 --- a/apps/user_ldap/l10n/lt_LT.php +++ b/apps/user_ldap/l10n/lt_LT.php @@ -2,6 +2,7 @@ $TRANSLATIONS = array( "Deletion failed" => "Ištrinti nepavyko", "Error" => "Klaida", +"Host" => "Mazgas", "Password" => "Slaptažodis", "Group Filter" => "Grupės filtras", "Port" => "Prievadas", diff --git a/apps/user_webdavauth/l10n/lt_LT.php b/apps/user_webdavauth/l10n/lt_LT.php index 90fc2d5ac3e..41a7fa9502d 100644 --- a/apps/user_webdavauth/l10n/lt_LT.php +++ b/apps/user_webdavauth/l10n/lt_LT.php @@ -1,5 +1,7 @@ <?php $TRANSLATIONS = array( -"WebDAV Authentication" => "WebDAV autorizavimas" +"WebDAV Authentication" => "WebDAV autentikacija", +"Address: " => "Adresas:", +"The user credentials will be sent to this address. This plugin checks the response and will interpret the HTTP statuscodes 401 and 403 as invalid credentials, and all other responses as valid credentials." => "Naudotojo duomenys bus nusiųsti šiuo adresu. Šis įskiepis patikrins gautą atsakymą ir interpretuos HTTP būsenos kodą 401 ir 403 kaip negaliojančius duomenis, ir visus kitus gautus atsakymus kaip galiojančius duomenis. " ); $PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"; diff --git a/config/config.sample.php b/config/config.sample.php index 0afad880c17..29085af4716 100644 --- a/config/config.sample.php +++ b/config/config.sample.php @@ -212,6 +212,9 @@ $CONFIG = array( /* cl parameters for libreoffice / openoffice */ 'preview_office_cl_parameters' => '', +/* whether avatars should be enabled */ +'enable_avatars' => true, + // Extra SSL options to be used for configuration 'openssl' => array( //'config' => '/absolute/location/of/openssl.cnf', diff --git a/core/avatar/controller.php b/core/avatar/controller.php new file mode 100644 index 00000000000..9f7c0517c4a --- /dev/null +++ b/core/avatar/controller.php @@ -0,0 +1,158 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Core\Avatar; + +class Controller { + public static function getAvatar($args) { + \OC_JSON::checkLoggedIn(); + \OC_JSON::callCheck(); + + $user = stripslashes($args['user']); + $size = (int)$args['size']; + if ($size > 2048) { + $size = 2048; + } + // Undefined size + elseif ($size === 0) { + $size = 64; + } + + $avatar = new \OC_Avatar($user); + $image = $avatar->get($size); + + \OC_Response::disableCaching(); + \OC_Response::setLastModifiedHeader(time()); + if ($image instanceof \OC_Image) { + \OC_Response::setETagHeader(crc32($image->data())); + $image->show(); + } else { + // Signalizes $.avatar() to display a defaultavatar + \OC_JSON::success(); + } + } + + public static function postAvatar($args) { + \OC_JSON::checkLoggedIn(); + \OC_JSON::callCheck(); + + $user = \OC_User::getUser(); + + if (isset($_POST['path'])) { + $path = stripslashes($_POST['path']); + $view = new \OC\Files\View('/'.$user.'/files'); + $newAvatar = $view->file_get_contents($path); + } elseif (!empty($_FILES)) { + $files = $_FILES['files']; + if ( + $files['error'][0] === 0 && + is_uploaded_file($files['tmp_name'][0]) && + !\OC\Files\Filesystem::isFileBlacklisted($files['tmp_name'][0]) + ) { + $newAvatar = file_get_contents($files['tmp_name'][0]); + unlink($files['tmp_name'][0]); + } + } else { + $l = new \OC_L10n('core'); + \OC_JSON::error(array("data" => array("message" => $l->t("No image or file provided")) )); + return; + } + + try { + $avatar = new \OC_Avatar($user); + $avatar->set($newAvatar); + \OC_JSON::success(); + } catch (\OC\NotSquareException $e) { + $image = new \OC_Image($newAvatar); + + if ($image->valid()) { + \OC_Cache::set('tmpavatar', $image->data(), 7200); + \OC_JSON::error(array("data" => "notsquare")); + } else { + $l = new \OC_L10n('core'); + + $mimeType = $image->mimeType(); + if ($mimeType !== 'image/jpeg' && $mimeType !== 'image/png') { + \OC_JSON::error(array("data" => array("message" => $l->t("Unknown filetype")) )); + } + + if (!$image->valid()) { + \OC_JSON::error(array("data" => array("message" => $l->t("Invalid image")) )); + } + } + } catch (\Exception $e) { + \OC_JSON::error(array("data" => array("message" => $e->getMessage()) )); + } + } + + public static function deleteAvatar($args) { + \OC_JSON::checkLoggedIn(); + \OC_JSON::callCheck(); + + $user = \OC_User::getUser(); + + try { + $avatar = new \OC_Avatar($user); + $avatar->remove(); + \OC_JSON::success(); + } catch (\Exception $e) { + \OC_JSON::error(array("data" => array("message" => $e->getMessage()) )); + } + } + + public static function getTmpAvatar($args) { + \OC_JSON::checkLoggedIn(); + \OC_JSON::callCheck(); + + $tmpavatar = \OC_Cache::get('tmpavatar'); + if (is_null($tmpavatar)) { + $l = new \OC_L10n('core'); + \OC_JSON::error(array("data" => array("message" => $l->t("No temporary profile picture available, try again")) )); + return; + } + + $image = new \OC_Image($tmpavatar); + \OC_Response::disableCaching(); + \OC_Response::setLastModifiedHeader(time()); + \OC_Response::setETagHeader(crc32($image->data())); + $image->show(); + } + + public static function postCroppedAvatar($args) { + \OC_JSON::checkLoggedIn(); + \OC_JSON::callCheck(); + + $user = \OC_User::getUser(); + if (isset($_POST['crop'])) { + $crop = $_POST['crop']; + } else { + $l = new \OC_L10n('core'); + \OC_JSON::error(array("data" => array("message" => $l->t("No crop data provided")) )); + return; + } + + $tmpavatar = \OC_Cache::get('tmpavatar'); + if (is_null($tmpavatar)) { + $l = new \OC_L10n('core'); + \OC_JSON::error(array("data" => array("message" => $l->t("No temporary profile picture available, try again")) )); + return; + } + + $image = new \OC_Image($tmpavatar); + $image->crop($crop['x'], $crop['y'], $crop['w'], $crop['h']); + try { + $avatar = new \OC_Avatar($user); + $avatar->set($image->data()); + // Clean up + \OC_Cache::remove('tmpavatar'); + \OC_JSON::success(); + } catch (\Exception $e) { + \OC_JSON::error(array("data" => array("message" => $e->getMessage()) )); + } + } +} diff --git a/core/css/apps.css b/core/css/apps.css index 5de146feb1f..de63495e50e 100644 --- a/core/css/apps.css +++ b/core/css/apps.css @@ -50,8 +50,8 @@ #app-navigation li > a { display: block; width: 100%; - height: 44px; - padding: 12px; + line-height: 44px; + padding: 0 12px; overflow: hidden; -moz-box-sizing: border-box; box-sizing: border-box; white-space: nowrap; diff --git a/core/css/styles.css b/core/css/styles.css index bf78af15af5..dcdeda8a9c9 100644 --- a/core/css/styles.css +++ b/core/css/styles.css @@ -40,6 +40,11 @@ body { background:#fefefe; font:normal .8em/1.6em "Helvetica Neue",Helvetica,Ari .header-right { float:right; vertical-align:middle; padding:0.5em; } .header-right > * { vertical-align:middle; } +#header .avatardiv { + text-shadow: none; + float: left; + display: inline-block; +} /* INPUTS */ input[type="text"], input[type="password"], input[type="search"], input[type="number"], input[type="email"], input[type="url"], @@ -583,8 +588,18 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } /* USER MENU */ -#settings { float:right; margin-top:7px; color:#bbb; text-shadow:0 -1px 0 #000; } -#expand { padding:15px; cursor:pointer; font-weight:bold; } +#settings { + float: right; + margin-top: 7px; + margin-left: 10px; + color: #bbb; + text-shadow: 0 -1px 0 #000; +} +#expand { + padding: 15px 15px 15px 5px; + cursor: pointer; + font-weight: bold; +} #expand:hover, #expand:focus, #expand:active { color:#fff; } #expand img { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; filter:alpha(opacity=70); opacity:.7; margin-bottom:-2px; } #expand:hover img, #expand:focus img, #expand:active img { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } @@ -624,6 +639,7 @@ label.infield { cursor:text !important; top:1.05em; left:.85em; } .hidden { display:none; } .bold { font-weight:bold; } .center { text-align:center; } +.inlineblock { display: inline-block; } #notification-container { position: fixed; top: 0px; width: 100%; text-align: center; z-index: 101; line-height: 1.2;} #notification, #update-notification { z-index:101; background-color:#fc4; border:0; padding:0 .7em .3em; display:none; position: relative; top:0; -moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em; -moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; } diff --git a/core/js/avatar.js b/core/js/avatar.js new file mode 100644 index 00000000000..410182f01bf --- /dev/null +++ b/core/js/avatar.js @@ -0,0 +1,9 @@ +$(document).ready(function(){ + $('#header .avatardiv').avatar(OC.currentUser, 32); + // Personal settings + $('#avatar .avatardiv').avatar(OC.currentUser, 128); + // User settings + $.each($('td.avatar .avatardiv'), function(i, element) { + $(element).avatar($(element).parent().parent().data('uid'), 32); + }); +}); diff --git a/core/js/jquery.avatar.js b/core/js/jquery.avatar.js new file mode 100644 index 00000000000..f1382fd7d2d --- /dev/null +++ b/core/js/jquery.avatar.js @@ -0,0 +1,83 @@ +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +/** + * This plugin inserts the right avatar for the user, depending on, whether a + * custom avatar is uploaded - which it uses then - or not, and display a + * placeholder with the first letter of the users name instead. + * For this it queries the core_avatar_get route, thus this plugin is fit very + * tightly for owncloud, and it may not work anywhere else. + * + * You may use this on any <div></div> + * Here I'm using <div class="avatardiv"></div> as an example. + * + * There are 4 ways to call this: + * + * 1. $('.avatardiv').avatar('jdoe', 128); + * This will make the div to jdoe's fitting avatar, with a size of 128px. + * + * 2. $('.avatardiv').avatar('jdoe'); + * This will make the div to jdoe's fitting avatar. If the div aready has a + * height, it will be used for the avatars size. Otherwise this plugin will + * search for 'size' DOM data, to use for avatar size. If neither are available + * it will default to 64px. + * + * 3. $('.avatardiv').avatar(); + * This will search the DOM for 'user' data, to use as the username. If there + * is no username available it will default to a placeholder with the value of + * "x". The size will be determined the same way, as the second example. + * + * 4. $('.avatardiv').avatar('jdoe', 128, true); + * This will behave like the first example, except it will also append random + * hashes to the custom avatar images, to force image reloading in IE8. + */ + +(function ($) { + $.fn.avatar = function(user, size, ie8fix) { + if (typeof(size) === 'undefined') { + if (this.height() > 0) { + size = this.height(); + } else if (this.data('size') > 0) { + size = this.data('size'); + } else { + size = 64; + } + } + + this.height(size); + this.width(size); + + if (typeof(user) === 'undefined') { + if (typeof(this.data('user')) !== 'undefined') { + user = this.data('user'); + } else { + this.placeholder('x'); + return; + } + } + + // sanitize + user = user.replace(/\//g,''); + + var $div = this; + + OC.Router.registerLoadedCallback(function() { + var url = OC.Router.generate('core_avatar_get', {user: user, size: size})+'?requesttoken='+oc_requesttoken; + $.get(url, function(result) { + if (typeof(result) === 'object') { + $div.placeholder(user); + } else { + if (ie8fix === true) { + $div.html('<img src="'+url+'#'+Math.floor(Math.random()*1000)+'">'); + } else { + $div.html('<img src="'+url+'">'); + } + } + }); + }); + }; +}(jQuery)); diff --git a/core/js/js.js b/core/js/js.js index 1999ff73d23..c09f80369f9 100644 --- a/core/js/js.js +++ b/core/js/js.js @@ -322,6 +322,38 @@ var OC={ return date.getDate()+'.'+(date.getMonth()+1)+'.'+date.getFullYear()+', '+date.getHours()+':'+date.getMinutes(); }, /** + * Parses a URL query string into a JS map + * @param queryString query string in the format param1=1234¶m2=abcde¶m3=xyz + * @return map containing key/values matching the URL parameters + */ + parseQueryString:function(queryString){ + var parts, + components, + result = {}, + key, + value; + if (!queryString){ + return null; + } + if (queryString[0] === '?'){ + queryString = queryString.substr(1); + } + parts = queryString.split('&'); + for (var i = 0; i < parts.length; i++){ + components = parts[i].split('='); + if (!components.length){ + continue; + } + key = decodeURIComponent(components[0]); + if (!key){ + continue; + } + value = components[1]; + result[key] = value && decodeURIComponent(value); + } + return result; + }, + /** * Opens a popup with the setting for an app. * @param appid String. The ID of the app e.g. 'calendar', 'contacts' or 'files'. * @param loadJS boolean or String. If true 'js/settings.js' is loaded. If it's a string diff --git a/core/js/oc-dialogs.js b/core/js/oc-dialogs.js index 61b58d00fa6..8e8a477772b 100644 --- a/core/js/oc-dialogs.js +++ b/core/js/oc-dialogs.js @@ -139,8 +139,12 @@ var OCdialogs = { } }); }) - .fail(function() { - alert(t('core', 'Error loading file picker template')); + .fail(function(status, error) { + // If the method is called while navigating away + // from the page, it is probably not needed ;) + if(status !== 0) { + alert(t('core', 'Error loading file picker template: {error}', {error: error})); + } }); }, /** @@ -206,8 +210,14 @@ var OCdialogs = { }); OCdialogs.dialogs_counter++; }) - .fail(function() { - alert(t('core', 'Error loading file picker template')); + .fail(function(status, error) { + // If the method is called while navigating away from + // the page, we still want to deliver the message. + if(status === 0) { + alert(title + ': ' + content); + } else { + alert(t('core', 'Error loading message template: {error}', {error: error})); + } }); }, _getFilePickerTemplate: function() { @@ -219,8 +229,8 @@ var OCdialogs = { self.$listTmpl = self.$filePickerTemplate.find('.filelist li:first-child').detach(); defer.resolve(self.$filePickerTemplate); }) - .fail(function() { - defer.reject(); + .fail(function(jqXHR, textStatus, errorThrown) { + defer.reject(jqXHR.status, errorThrown); }); } else { defer.resolve(this.$filePickerTemplate); @@ -235,8 +245,8 @@ var OCdialogs = { self.$messageTemplate = $(tmpl); defer.resolve(self.$messageTemplate); }) - .fail(function() { - defer.reject(); + .fail(function(jqXHR, textStatus, errorThrown) { + defer.reject(jqXHR.status, errorThrown); }); } else { defer.resolve(this.$messageTemplate); @@ -292,11 +302,7 @@ var OCdialogs = { filename: entry.name, date: OC.mtime2date(entry.mtime) }); - if (entry.mimetype === "httpd/unix-directory") { - $li.find('img').attr('src', OC.imagePath('core', 'filetypes/folder.png')); - } else { - $li.find('img').attr('src', OC.Router.generate('core_ajax_preview', {x:32, y:32, file:escapeHTML(dir+'/'+entry.name)}) ); - } + $li.find('img').attr('src', entry.mimetype_icon); self.$filelist.append($li); }); diff --git a/core/js/share.js b/core/js/share.js index 27c16f38b92..5d34faf8a5d 100644 --- a/core/js/share.js +++ b/core/js/share.js @@ -233,6 +233,7 @@ OC.Share={ // } else { $.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getShareWith', search: search.term, itemShares: OC.Share.itemShares }, function(result) { if (result.status == 'success' && result.data.length > 0) { + $( "#shareWith" ).autocomplete( "option", "autoFocus", true ); response(result.data); } else { // Suggest sharing via email if valid email address @@ -240,6 +241,7 @@ OC.Share={ // if (pattern.test(search.term)) { // response([{label: t('core', 'Share via email:')+' '+search.term, value: {shareType: OC.Share.SHARE_TYPE_EMAIL, shareWith: search.term}}]); // } else { + $( "#shareWith" ).autocomplete( "option", "autoFocus", false ); response([t('core', 'No people found')]); // } } @@ -423,7 +425,7 @@ OC.Share={ dateFormat : 'dd-mm-yy' }); } -} +}; $(document).ready(function() { @@ -512,7 +514,7 @@ $(document).ready(function() { $(document).on('change', '#dropdown .permissions', function() { if ($(this).attr('name') == 'edit') { - var li = $(this).parent().parent() + var li = $(this).parent().parent(); var checkboxes = $('.permissions', li); var checked = $(this).is(':checked'); // Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck diff --git a/core/l10n/km.php b/core/l10n/km.php new file mode 100644 index 00000000000..556cca20dac --- /dev/null +++ b/core/l10n/km.php @@ -0,0 +1,8 @@ +<?php +$TRANSLATIONS = array( +"_%n minute ago_::_%n minutes ago_" => array(""), +"_%n hour ago_::_%n hours ago_" => array(""), +"_%n day ago_::_%n days ago_" => array(""), +"_%n month ago_::_%n months ago_" => array("") +); +$PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/core/l10n/lt_LT.php b/core/l10n/lt_LT.php index 7b0c3ed4f80..4c089b3e1b6 100644 --- a/core/l10n/lt_LT.php +++ b/core/l10n/lt_LT.php @@ -2,6 +2,12 @@ $TRANSLATIONS = array( "%s shared »%s« with you" => "%s pasidalino »%s« su tavimi", "group" => "grupė", +"Turned on maintenance mode" => "Įjungta priežiūros veiksena", +"Turned off maintenance mode" => "Išjungta priežiūros veiksena", +"Updated database" => "Atnaujinta duomenų bazė", +"Updating filecache, this may take really long..." => "Atnaujinama failų talpykla, tai gali užtrukti labai ilgai...", +"Updated filecache" => "Atnaujinta failų talpykla", +"... %d%% done ..." => "... %d%% atlikta ...", "Category type not provided." => "Kategorija nenurodyta.", "No category to add?" => "Nepridėsite jokios kategorijos?", "This category already exists: %s" => "Ši kategorija jau egzistuoja: %s", @@ -35,7 +41,7 @@ $TRANSLATIONS = array( "_%n hour ago_::_%n hours ago_" => array("prieš %n valandą","prieš %n valandų","prieš %n valandų"), "today" => "šiandien", "yesterday" => "vakar", -"_%n day ago_::_%n days ago_" => array("","",""), +"_%n day ago_::_%n days ago_" => array("prieš %n dieną","prieš %n dienas","prieš %n dienų"), "last month" => "praeitą mėnesį", "_%n month ago_::_%n months ago_" => array("prieš %n mėnesį","prieš %n mėnesius","prieš %n mėnesių"), "months ago" => "prieš mėnesį", @@ -61,6 +67,7 @@ $TRANSLATIONS = array( "Share with link" => "Dalintis nuoroda", "Password protect" => "Apsaugotas slaptažodžiu", "Password" => "Slaptažodis", +"Allow Public Upload" => "Leisti viešą įkėlimą", "Email link to person" => "Nusiųsti nuorodą paštu", "Send" => "Siųsti", "Set expiration date" => "Nustatykite galiojimo laiką", @@ -89,6 +96,7 @@ $TRANSLATIONS = array( "Request failed!<br>Did you make sure your email/username was right?" => "Klaida!<br>Ar tikrai jūsų el paštas/vartotojo vardas buvo teisingi?", "You will receive a link to reset your password via Email." => "Elektroniniu paštu gausite nuorodą, su kuria galėsite iš naujo nustatyti slaptažodį.", "Username" => "Prisijungimo vardas", +"Your files are encrypted. If you haven't enabled the recovery key, there will be no way to get your data back after your password is reset. If you are not sure what to do, please contact your administrator before you continue. Do you really want to continue?" => "Jūsų failai yra užšifruoti. Jei neįjungėte atstatymo rakto, nebus galimybės atstatyti duomenų po slaptažodžio atstatymo. Jei nesate tikri ką daryti, prašome susisiekti su administratoriumi prie tęsiant. Ar tikrai tęsti?", "Yes, I really want to reset my password now" => "Taip, aš tikrai noriu atnaujinti slaptažodį", "Request reset" => "Prašyti nustatymo iš najo", "Your password was reset" => "Jūsų slaptažodis buvo nustatytas iš naujo", @@ -102,13 +110,16 @@ $TRANSLATIONS = array( "Help" => "Pagalba", "Access forbidden" => "Priėjimas draudžiamas", "Cloud not found" => "Negalima rasti", +"Hey there,\n\njust letting you know that %s shared %s with you.\nView it: %s\n\nCheers!" => "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėkite: %s\n\nLinkėjimai!", "Edit categories" => "Redaguoti kategorijas", "Add" => "Pridėti", "Security Warning" => "Saugumo pranešimas", "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" => "Jūsų PHP versija yra pažeidžiama prieš NULL Byte ataką (CVE-2006-7243)", +"Please update your PHP installation to use %s securely." => "Prašome atnaujinti savo PHP, kad saugiai naudoti %s.", "No secure random number generator is available, please enable the PHP OpenSSL extension." => "Saugaus atsitiktinių skaičių generatoriaus nėra, prašome įjungti PHP OpenSSL modulį.", "Without a secure random number generator an attacker may be able to predict password reset tokens and take over your account." => "Be saugaus atsitiktinių skaičių generatoriaus, piktavaliai gali atspėti Jūsų slaptažodį ir pasisavinti paskyrą.", "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." => "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess failas neveikia.", +"For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\">documentation</a>." => "Kad gauti informaciją apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome skaityti <a href=\"%s\" target=\"_blank\">dokumentaciją</a>.", "Create an <strong>admin account</strong>" => "Sukurti <strong>administratoriaus paskyrą</strong>", "Advanced" => "Išplėstiniai", "Data folder" => "Duomenų katalogas", @@ -129,6 +140,7 @@ $TRANSLATIONS = array( "remember" => "prisiminti", "Log in" => "Prisijungti", "Alternative Logins" => "Alternatyvūs prisijungimai", +"Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a href=\"%s\">View it!</a><br><br>Cheers!" => "Labas,<br><br>tik informuojame, kad %s pasidalino su Jumis »%s«.<br><a href=\"%s\">Peržiūrėk!</a><br><br>Linkėjimai!", "Updating ownCloud to version %s, this may take a while." => "Atnaujinama ownCloud į %s versiją. tai gali šiek tiek užtrukti." ); $PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"; diff --git a/core/l10n/pt_PT.php b/core/l10n/pt_PT.php index 7f4e34cb555..4198ec91294 100644 --- a/core/l10n/pt_PT.php +++ b/core/l10n/pt_PT.php @@ -5,6 +5,8 @@ $TRANSLATIONS = array( "Turned on maintenance mode" => "Activado o modo de manutenção", "Turned off maintenance mode" => "Desactivado o modo de manutenção", "Updated database" => "Base de dados actualizada", +"Updating filecache, this may take really long..." => "A actualizar o cache dos ficheiros, poderá demorar algum tempo...", +"Updated filecache" => "Actualizado o cache dos ficheiros", "... %d%% done ..." => "... %d%% feito ...", "Category type not provided." => "Tipo de categoria não fornecido", "No category to add?" => "Nenhuma categoria para adicionar?", @@ -88,6 +90,7 @@ $TRANSLATIONS = array( "Email sent" => "E-mail enviado", "The update was unsuccessful. Please report this issue to the <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>." => "A actualização falhou. Por favor reporte este incidente seguindo este link <a href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud community</a>.", "The update was successful. Redirecting you to ownCloud now." => "A actualização foi concluída com sucesso. Vai ser redireccionado para o ownCloud agora.", +"%s password reset" => "%s reposição da password", "Use the following link to reset your password: {link}" => "Use o seguinte endereço para repor a sua password: {link}", "The link to reset your password has been sent to your email.<br>If you do not receive it within a reasonable amount of time, check your spam/junk folders.<br>If it is not there ask your local administrator ." => "O link para fazer reset à sua password foi enviado para o seu e-mail. <br> Se não o recebeu dentro um espaço de tempo aceitável, por favor verifique a sua pasta de SPAM.<br> Se não o encontrar, por favor contacte o seu administrador.", "Request failed!<br>Did you make sure your email/username was right?" => "O pedido falhou! <br> Tem a certeza que introduziu o seu email/username correcto?", diff --git a/core/routes.php b/core/routes.php index d8c2d03236f..57e25c0f1f7 100644 --- a/core/routes.php +++ b/core/routes.php @@ -57,6 +57,23 @@ $this->create('core_lostpassword_reset_password', '/lostpassword/reset/{token}/{ ->post() ->action('OC\Core\LostPassword\Controller', 'resetPassword'); +// Avatar routes +$this->create('core_avatar_get_tmp', '/avatar/tmp') + ->get() + ->action('OC\Core\Avatar\Controller', 'getTmpAvatar'); +$this->create('core_avatar_get', '/avatar/{user}/{size}') + ->get() + ->action('OC\Core\Avatar\Controller', 'getAvatar'); +$this->create('core_avatar_post', '/avatar/') + ->post() + ->action('OC\Core\Avatar\Controller', 'postAvatar'); +$this->create('core_avatar_delete', '/avatar/') + ->delete() + ->action('OC\Core\Avatar\Controller', 'deleteAvatar'); +$this->create('core_avatar_post_cropped', '/avatar/cropped') + ->post() + ->action('OC\Core\Avatar\Controller', 'postCroppedAvatar'); + // Not specifically routed $this->create('app_css', '/apps/{app}/{file}') ->requirements(array('file' => '.*.css')) diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 1e0f4a75c3c..71bec11d219 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -49,6 +49,9 @@ <span id="expand" tabindex="0" role="link"> <span id="expandDisplayName"><?php p(trim($_['user_displayname']) != '' ? $_['user_displayname'] : $_['user_uid']) ?></span> <img class="svg" src="<?php print_unescaped(image_path('', 'actions/caret.svg')); ?>" /> + <?php if ($_['enableAvatars']): ?> + <div class="avatardiv"></div> + <?php endif; ?> </span> <div id="expanddiv"> <?php foreach($_['settingsnavigation'] as $entry):?> diff --git a/l10n/ar/files.po b/l10n/ar/files.po index 39c537e3a5d..565d98c14c1 100644 --- a/l10n/ar/files.po +++ b/l10n/ar/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-09-01 13:30+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: ibrahim_9090 <ibrahim9090@gmail.com>\n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ar/files_sharing.po b/l10n/ar/files_sharing.po index 7f7187cc9a9..df2684b93db 100644 --- a/l10n/ar/files_sharing.po +++ b/l10n/ar/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Arabic (http://www.transifex.com/projects/p/owncloud/language/ar/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files.po b/l10n/bg_BG/files.po index 3d91bd55b82..69c221b386c 100644 --- a/l10n/bg_BG/files.po +++ b/l10n/bg_BG/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bg_BG/files_sharing.po b/l10n/bg_BG/files_sharing.po index a2c0ad5b1cf..20f297f9cdc 100644 --- a/l10n/bg_BG/files_sharing.po +++ b/l10n/bg_BG/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bulgarian (Bulgaria) (http://www.transifex.com/projects/p/owncloud/language/bg_BG/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/bn_BD/files.po b/l10n/bn_BD/files.po index de8d7478780..e2785070c36 100644 --- a/l10n/bn_BD/files.po +++ b/l10n/bn_BD/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "URL ফাঁকা রাখা যাবে না।" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "সমস্যা" @@ -127,57 +127,57 @@ msgstr "" msgid "Rename" msgstr "পূনঃনামকরণ" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "মুলতুবি" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "{new_name} টি বিদ্যমান" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "প্রতিস্থাপন" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "নাম সুপারিশ করুন" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "বাতিল" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "{new_name} কে {old_name} নামে প্রতিস্থাপন করা হয়েছে" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "ক্রিয়া প্রত্যাহার" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -215,15 +215,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "রাম" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "আকার" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "পরিবর্তিত" @@ -300,33 +300,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "এখানে কিছুই নেই। কিছু আপলোড করুন !" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "ডাউনলোড" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "ভাগাভাগি বাতিল " -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "মুছে" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "আপলোডের আকারটি অনেক বড়" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "আপনি এই সার্ভারে আপলোড করার জন্য অনুমোদিত ফাইলের সর্বোচ্চ আকারের চেয়ে বৃহদাকার ফাইল আপলোড করার চেষ্টা করছেন " -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "ফাইলগুলো স্ক্যান করা হচ্ছে, দয়া করে অপেক্ষা করুন।" -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "বর্তমান স্ক্যানিং" diff --git a/l10n/bn_BD/files_sharing.po b/l10n/bn_BD/files_sharing.po index 1b5320391c2..f44908ae2c1 100644 --- a/l10n/bn_BD/files_sharing.po +++ b/l10n/bn_BD/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Bengali (Bangladesh) (http://www.transifex.com/projects/p/owncloud/language/bn_BD/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files.po b/l10n/ca/files.po index 9dc1d5ffcc6..ca6a5240892 100644 --- a/l10n/ca/files.po +++ b/l10n/ca/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-05 07:36-0400\n" -"PO-Revision-Date: 2013-09-05 07:40+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ca/files_sharing.po b/l10n/ca/files_sharing.po index 167cc378c2a..4e4d3419bae 100644 --- a/l10n/ca/files_sharing.po +++ b/l10n/ca/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: rogerc\n" "Language-Team: Catalan (http://www.transifex.com/projects/p/owncloud/language/ca/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files.po b/l10n/cs_CZ/files.po index 503fc964125..92e790b8785 100644 --- a/l10n/cs_CZ/files.po +++ b/l10n/cs_CZ/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 08:10+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: pstast <petr@stastny.eu>\n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cs_CZ/files_sharing.po b/l10n/cs_CZ/files_sharing.po index bf3385990f8..5b180f5c559 100644 --- a/l10n/cs_CZ/files_sharing.po +++ b/l10n/cs_CZ/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: pstast <petr@stastny.eu>\n" "Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/owncloud/language/cs_CZ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files.po b/l10n/cy_GB/files.po index 7507b666b09..aa667889430 100644 --- a/l10n/cy_GB/files.po +++ b/l10n/cy_GB/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/cy_GB/files_sharing.po b/l10n/cy_GB/files_sharing.po index 7da44b1cba3..11970a0b139 100644 --- a/l10n/cy_GB/files_sharing.po +++ b/l10n/cy_GB/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Welsh (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/cy_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files.po b/l10n/da/files.po index fb180ee25be..81e48316bec 100644 --- a/l10n/da/files.po +++ b/l10n/da/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 17:27+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Sappe\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/da/files_sharing.po b/l10n/da/files_sharing.po index 5af73cd665e..d5bee700f16 100644 --- a/l10n/da/files_sharing.po +++ b/l10n/da/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Sappe\n" "Language-Team: Danish (http://www.transifex.com/projects/p/owncloud/language/da/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files.po b/l10n/de/files.po index 21a1d8cafb2..3e0c024b6cb 100644 --- a/l10n/de/files.po +++ b/l10n/de/files.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 18:00+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Mario Siegmann <mario_siegmann@web.de>\n" "Language-Team: German <translations@owncloud.org>\n" "MIME-Version: 1.0\n" diff --git a/l10n/de/files_sharing.po b/l10n/de/files_sharing.po index 188630a91ce..ad1e84807ea 100644 --- a/l10n/de/files_sharing.po +++ b/l10n/de/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Mario Siegmann <mario_siegmann@web.de>\n" "Language-Team: German <translations@owncloud.org>\n" "MIME-Version: 1.0\n" diff --git a/l10n/de_CH/files.po b/l10n/de_CH/files.po index 95d27fc4a67..bd65b087c35 100644 --- a/l10n/de_CH/files.po +++ b/l10n/de_CH/files.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/owncloud/language/de_CH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de_CH/files_sharing.po b/l10n/de_CH/files_sharing.po index c6ac0547088..8616c16eb64 100644 --- a/l10n/de_CH/files_sharing.po +++ b/l10n/de_CH/files_sharing.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: FlorianScholz <work@bgstyle.de>\n" "Language-Team: German (Switzerland) (http://www.transifex.com/projects/p/owncloud/language/de_CH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files.po b/l10n/de_DE/files.po index cf3e5f3eb62..e236b674b77 100644 --- a/l10n/de_DE/files.po +++ b/l10n/de_DE/files.po @@ -16,8 +16,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 18:00+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Mario Siegmann <mario_siegmann@web.de>\n" "Language-Team: German (Germany) <translations@owncloud.org>\n" "MIME-Version: 1.0\n" diff --git a/l10n/de_DE/files_sharing.po b/l10n/de_DE/files_sharing.po index 9d306a5899b..efed1ad727a 100644 --- a/l10n/de_DE/files_sharing.po +++ b/l10n/de_DE/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Mario Siegmann <mario_siegmann@web.de>\n" "Language-Team: German (Germany) <translations@owncloud.org>\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files.po b/l10n/el/files.po index bd017bcd8e7..24da73a436f 100644 --- a/l10n/el/files.po +++ b/l10n/el/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/el/files_sharing.po b/l10n/el/files_sharing.po index 4435befcebf..7185b97f854 100644 --- a/l10n/el/files_sharing.po +++ b/l10n/el/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Efstathios Iosifidis <iefstathios@gmail.com>\n" "Language-Team: Greek (http://www.transifex.com/projects/p/owncloud/language/el/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en_GB/files.po b/l10n/en_GB/files.po index f7d558ebe2a..ee07f5bbe41 100644 --- a/l10n/en_GB/files.po +++ b/l10n/en_GB/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:40+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: mnestis <transifex@mnestis.net>\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/en_GB/files_sharing.po b/l10n/en_GB/files_sharing.po index e77bb9c6100..99cac4331f6 100644 --- a/l10n/en_GB/files_sharing.po +++ b/l10n/en_GB/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: mnestis <transifex@mnestis.net>\n" "Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/owncloud/language/en_GB/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files.po b/l10n/eo/files.po index 3db69832bef..74589468882 100644 --- a/l10n/eo/files.po +++ b/l10n/eo/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eo/files_sharing.po b/l10n/eo/files_sharing.po index 3da45d867e4..cc9cb10772a 100644 --- a/l10n/eo/files_sharing.po +++ b/l10n/eo/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Esperanto (http://www.transifex.com/projects/p/owncloud/language/eo/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files.po b/l10n/es/files.po index 5f5825ab799..e68841cb875 100644 --- a/l10n/es/files.po +++ b/l10n/es/files.po @@ -13,8 +13,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-05 07:36-0400\n" -"PO-Revision-Date: 2013-09-03 18:10+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-13 23:50+0000\n" "Last-Translator: Korrosivo <yo@rubendelcampo.es>\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es/files_sharing.po b/l10n/es/files_sharing.po index 7fa3515a060..26442ede404 100644 --- a/l10n/es/files_sharing.po +++ b/l10n/es/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-13 23:50+0000\n" "Last-Translator: Korrosivo <yo@rubendelcampo.es>\n" "Language-Team: Spanish (http://www.transifex.com/projects/p/owncloud/language/es/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files.po b/l10n/es_AR/files.po index 511d60fc104..68680594d18 100644 --- a/l10n/es_AR/files.po +++ b/l10n/es_AR/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-10 10:41-0400\n" -"PO-Revision-Date: 2013-09-10 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: cnngimenez\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/files_sharing.po b/l10n/es_AR/files_sharing.po index 376086d3b93..cea65819e72 100644 --- a/l10n/es_AR/files_sharing.po +++ b/l10n/es_AR/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" -"PO-Revision-Date: 2013-09-11 10:30+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: cjtess <claudio.tessone@gmail.com>\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/es_AR/user_ldap.po b/l10n/es_AR/user_ldap.po index 8d69c7a8a99..fbe5fabbcf3 100644 --- a/l10n/es_AR/user_ldap.po +++ b/l10n/es_AR/user_ldap.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" -"PO-Revision-Date: 2013-09-11 10:48+0000\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-11 11:00+0000\n" "Last-Translator: cjtess <claudio.tessone@gmail.com>\n" "Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/owncloud/language/es_AR/)\n" "MIME-Version: 1.0\n" @@ -366,7 +366,7 @@ msgid "" "You must make sure that the attribute of your choice can be fetched for both" " users and groups and it is unique. Leave it empty for default behavior. " "Changes will have effect only on newly mapped (added) LDAP users and groups." -msgstr "" +msgstr "Por defecto, el atributo UUID es detectado automáticamente. Este atributo es usado para identificar de manera certera usuarios y grupos LDAP. Además, el nombre de usuario interno será creado en base al UUID, si no fue especificado otro comportamiento más arriba. Podés sobrescribir la configuración y pasar un atributo de tu elección. Tenés que asegurarte que el atributo de tu elección sea accesible por los usuarios y grupos y que sea único. Dejalo en blanco para usar el comportamiento por defecto. Los cambios tendrán efecto sólo en los nuevos usuarios y grupos de LDAP mapeados (agregados)." #: templates/settings.php:103 msgid "UUID Attribute:" @@ -388,7 +388,7 @@ msgid "" " is not configuration sensitive, it affects all LDAP configurations! Never " "clear the mappings in a production environment, only in a testing or " "experimental stage." -msgstr "" +msgstr "Los usuarios son usados para almacenar y asignar datos (metadatos). Con el fin de identificar de forma precisa y reconocer usuarios, a cada usuario de LDAP se será asignado un nombre de usuario interno. Esto requiere un mapeo entre el nombre de usuario y el usuario del LDAP. El nombre de usuario creado es mapeado respecto al UUID del usuario en el LDAP. De forma adicional, el DN es dejado en caché para reducir la interacción entre el LDAP, pero no es usado para la identificación. Si el DN cambia, los cambios van a ser aplicados. El nombre de usuario interno es usado en todos los lugares. Vaciar los mapeos, deja restos por todas partes. Vaciar los mapeos, no es sensible a configuración, ¡afecta a todas las configuraciones del LDAP! Nunca limpies los mapeos en un entorno de producción, solamente en fase de desarrollo o experimental." #: templates/settings.php:106 msgid "Clear Username-LDAP User Mapping" diff --git a/l10n/et_EE/files.po b/l10n/et_EE/files.po index de1769914cc..943c2186c0c 100644 --- a/l10n/et_EE/files.po +++ b/l10n/et_EE/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-05 07:36-0400\n" -"PO-Revision-Date: 2013-09-04 05:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: pisike.sipelgas <pisike.sipelgas@gmail.com>\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/et_EE/files_sharing.po b/l10n/et_EE/files_sharing.po index 73328253ec5..438e1fb60a3 100644 --- a/l10n/et_EE/files_sharing.po +++ b/l10n/et_EE/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: pisike.sipelgas <pisike.sipelgas@gmail.com>\n" "Language-Team: Estonian (Estonia) (http://www.transifex.com/projects/p/owncloud/language/et_EE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files.po b/l10n/eu/files.po index 4456f2df9e3..d48f767a56a 100644 --- a/l10n/eu/files.po +++ b/l10n/eu/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/eu/files_sharing.po b/l10n/eu/files_sharing.po index 433b86d0b54..ce629410a61 100644 --- a/l10n/eu/files_sharing.po +++ b/l10n/eu/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: asieriko <asieriko@gmail.com>\n" "Language-Team: Basque (http://www.transifex.com/projects/p/owncloud/language/eu/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files.po b/l10n/fa/files.po index 1db2606ef50..4c7fbe5528e 100644 --- a/l10n/fa/files.po +++ b/l10n/fa/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fa/files_sharing.po b/l10n/fa/files_sharing.po index b14ebbf89df..14a3c4edfa7 100644 --- a/l10n/fa/files_sharing.po +++ b/l10n/fa/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Persian (http://www.transifex.com/projects/p/owncloud/language/fa/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files.po b/l10n/fi_FI/files.po index 2c0837f88bc..34fe35c6ce9 100644 --- a/l10n/fi_FI/files.po +++ b/l10n/fi_FI/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 17:20+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fi_FI/files_sharing.po b/l10n/fi_FI/files_sharing.po index 31b531d8cf1..a2ffb0fc827 100644 --- a/l10n/fi_FI/files_sharing.po +++ b/l10n/fi_FI/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Jiri Grönroos <jiri.gronroos@iki.fi>\n" "Language-Team: Finnish (Finland) (http://www.transifex.com/projects/p/owncloud/language/fi_FI/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files.po b/l10n/fr/files.po index f02613e51df..f3e3767ce8b 100644 --- a/l10n/fr/files.po +++ b/l10n/fr/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:39-0400\n" -"PO-Revision-Date: 2013-09-06 15:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: ogre_sympathique <ogre.sympathique@speed.1s.fr>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/fr/files_sharing.po b/l10n/fr/files_sharing.po index 581738c45f6..c9b74a2e271 100644 --- a/l10n/fr/files_sharing.po +++ b/l10n/fr/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Christophe Lherieau <skimpax@gmail.com>\n" "Language-Team: French (http://www.transifex.com/projects/p/owncloud/language/fr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files.po b/l10n/gl/files.po index 3a9323639d0..f1ef8190bbc 100644 --- a/l10n/gl/files.po +++ b/l10n/gl/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-05 07:36-0400\n" -"PO-Revision-Date: 2013-09-03 12:20+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: mbouzada <mbouzada@gmail.com>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/gl/files_sharing.po b/l10n/gl/files_sharing.po index 1d3d82f4111..bd0b79c5d8b 100644 --- a/l10n/gl/files_sharing.po +++ b/l10n/gl/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: mbouzada <mbouzada@gmail.com>\n" "Language-Team: Galician (http://www.transifex.com/projects/p/owncloud/language/gl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files.po b/l10n/he/files.po index dd480450974..653e107a6e2 100644 --- a/l10n/he/files.po +++ b/l10n/he/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/he/files_sharing.po b/l10n/he/files_sharing.po index c7274f6691f..c181aa3c1ee 100644 --- a/l10n/he/files_sharing.po +++ b/l10n/he/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hebrew (http://www.transifex.com/projects/p/owncloud/language/he/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hr/files.po b/l10n/hr/files.po index b576a0b7cb1..fad167ba7b8 100644 --- a/l10n/hr/files.po +++ b/l10n/hr/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Greška" @@ -127,60 +127,60 @@ msgstr "" msgid "Rename" msgstr "Promjeni ime" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "U tijeku" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "zamjeni" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "predloži ime" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "odustani" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "vrati" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "datoteke se učitavaju" @@ -218,15 +218,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Ime" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Veličina" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Zadnja promjena" @@ -303,33 +303,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Nema ničega u ovoj mapi. Pošalji nešto!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Preuzimanje" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "Makni djeljenje" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Obriši" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Prijenos je preobiman" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Datoteke koje pokušavate prenijeti prelaze maksimalnu veličinu za prijenos datoteka na ovom poslužitelju." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Datoteke se skeniraju, molimo pričekajte." -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Trenutno skeniranje" diff --git a/l10n/hr/files_sharing.po b/l10n/hr/files_sharing.po index 5d9fd41cb78..308e9e98755 100644 --- a/l10n/hr/files_sharing.po +++ b/l10n/hr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Croatian (http://www.transifex.com/projects/p/owncloud/language/hr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files.po b/l10n/hu_HU/files.po index 402bd723361..7843881e215 100644 --- a/l10n/hu_HU/files.po +++ b/l10n/hu_HU/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/hu_HU/files_sharing.po b/l10n/hu_HU/files_sharing.po index 9e79db98f68..ae03dc98f23 100644 --- a/l10n/hu_HU/files_sharing.po +++ b/l10n/hu_HU/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Laszlo Tornoci <torlasz@gmail.com>\n" "Language-Team: Hungarian (Hungary) (http://www.transifex.com/projects/p/owncloud/language/hu_HU/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ia/files.po b/l10n/ia/files.po index 97ce4fab714..391f76c987c 100644 --- a/l10n/ia/files.po +++ b/l10n/ia/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Error" @@ -127,57 +127,57 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -215,15 +215,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Nomine" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Dimension" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Modificate" @@ -300,33 +300,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Nihil hic. Incarga alcun cosa!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Discargar" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Deler" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Incargamento troppo longe" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "" diff --git a/l10n/ia/files_sharing.po b/l10n/ia/files_sharing.po index 279865aadcc..83dfe3acf59 100644 --- a/l10n/ia/files_sharing.po +++ b/l10n/ia/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Interlingua (http://www.transifex.com/projects/p/owncloud/language/ia/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/id/files.po b/l10n/id/files.po index 5d512ec38db..2ce822890c6 100644 --- a/l10n/id/files.po +++ b/l10n/id/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "URL tidak boleh kosong" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Galat" @@ -127,54 +127,54 @@ msgstr "Hapus secara permanen" msgid "Rename" msgstr "Ubah nama" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "Menunggu" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "{new_name} sudah ada" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "ganti" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "sarankan nama" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "batalkan" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "mengganti {new_name} dengan {old_name}" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "urungkan" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "berkas diunggah" @@ -212,15 +212,15 @@ msgid "" "big." msgstr "Unduhan Anda sedang disiapkan. Prosesnya dapat berlangsung agak lama jika ukuran berkasnya besar." -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Nama" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Ukuran" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Dimodifikasi" @@ -297,33 +297,33 @@ msgstr "Anda tidak memiliki izin menulis di sini." msgid "Nothing in here. Upload something!" msgstr "Tidak ada apa-apa di sini. Unggah sesuatu!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Unduh" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "Batalkan berbagi" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Hapus" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Yang diunggah terlalu besar" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Berkas yang dicoba untuk diunggah melebihi ukuran maksimum pengunggahan berkas di server ini." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Berkas sedang dipindai, silakan tunggu." -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Yang sedang dipindai" diff --git a/l10n/id/files_sharing.po b/l10n/id/files_sharing.po index e33e3ae08f7..4c5ff880016 100644 --- a/l10n/id/files_sharing.po +++ b/l10n/id/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Indonesian (http://www.transifex.com/projects/p/owncloud/language/id/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/is/files.po b/l10n/is/files.po index 10e1d535f40..b5561e49004 100644 --- a/l10n/is/files.po +++ b/l10n/is/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "Vefslóð má ekki vera tóm." msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Villa" @@ -127,57 +127,57 @@ msgstr "" msgid "Rename" msgstr "Endurskýra" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "Bíður" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "{new_name} er þegar til" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "yfirskrifa" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "stinga upp á nafni" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "hætta við" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "yfirskrifaði {new_name} með {old_name}" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "afturkalla" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -215,15 +215,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Nafn" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Stærð" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Breytt" @@ -300,33 +300,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Ekkert hér. Settu eitthvað inn!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Niðurhal" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "Hætta deilingu" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Eyða" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Innsend skrá er of stór" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Skrárnar sem þú ert að senda inn eru stærri en hámarks innsendingarstærð á þessum netþjóni." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Verið er að skima skrár, vinsamlegast hinkraðu." -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Er að skima" diff --git a/l10n/is/files_sharing.po b/l10n/is/files_sharing.po index 836b3e5bb60..bfd1462e056 100644 --- a/l10n/is/files_sharing.po +++ b/l10n/is/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Icelandic (http://www.transifex.com/projects/p/owncloud/language/is/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files.po b/l10n/it/files.po index 58b33501e9e..b97ed259366 100644 --- a/l10n/it/files.po +++ b/l10n/it/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-09-01 15:54+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Vincenzo Reale <vinx.reale@gmail.com>\n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/it/files_sharing.po b/l10n/it/files_sharing.po index 33452f2b84e..01ae61c6aea 100644 --- a/l10n/it/files_sharing.po +++ b/l10n/it/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Vincenzo Reale <vinx.reale@gmail.com>\n" "Language-Team: Italian (http://www.transifex.com/projects/p/owncloud/language/it/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files.po b/l10n/ja_JP/files.po index 249beb05f61..bcb42ff87e3 100644 --- a/l10n/ja_JP/files.po +++ b/l10n/ja_JP/files.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 00:40+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: tt yn <tetuyano+transi@gmail.com>\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ja_JP/files_sharing.po b/l10n/ja_JP/files_sharing.po index 0fea02f11c3..71e37cb9fda 100644 --- a/l10n/ja_JP/files_sharing.po +++ b/l10n/ja_JP/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: tt yn <tetuyano+transi@gmail.com>\n" "Language-Team: Japanese (Japan) (http://www.transifex.com/projects/p/owncloud/language/ja_JP/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files.po b/l10n/ka_GE/files.po index 36a1787cd34..56fff63712a 100644 --- a/l10n/ka_GE/files.po +++ b/l10n/ka_GE/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ka_GE/files_sharing.po b/l10n/ka_GE/files_sharing.po index febee9664fc..c53f2326209 100644 --- a/l10n/ka_GE/files_sharing.po +++ b/l10n/ka_GE/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Georgian (Georgia) (http://www.transifex.com/projects/p/owncloud/language/ka_GE/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/km/core.po b/l10n/km/core.po new file mode 100644 index 00000000000..d989389afcf --- /dev/null +++ b/l10n/km/core.po @@ -0,0 +1,643 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/share.php:97 +#, php-format +msgid "%s shared »%s« with you" +msgstr "" + +#: ajax/share.php:227 +msgid "group" +msgstr "" + +#: ajax/update.php:11 +msgid "Turned on maintenance mode" +msgstr "" + +#: ajax/update.php:14 +msgid "Turned off maintenance mode" +msgstr "" + +#: ajax/update.php:17 +msgid "Updated database" +msgstr "" + +#: ajax/update.php:20 +msgid "Updating filecache, this may take really long..." +msgstr "" + +#: ajax/update.php:23 +msgid "Updated filecache" +msgstr "" + +#: ajax/update.php:26 +#, php-format +msgid "... %d%% done ..." +msgstr "" + +#: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 +msgid "Category type not provided." +msgstr "" + +#: ajax/vcategories/add.php:30 +msgid "No category to add?" +msgstr "" + +#: ajax/vcategories/add.php:37 +#, php-format +msgid "This category already exists: %s" +msgstr "" + +#: ajax/vcategories/addToFavorites.php:26 ajax/vcategories/delete.php:27 +#: ajax/vcategories/favorites.php:24 +#: ajax/vcategories/removeFromFavorites.php:26 +msgid "Object type not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:30 +#: ajax/vcategories/removeFromFavorites.php:30 +#, php-format +msgid "%s ID not provided." +msgstr "" + +#: ajax/vcategories/addToFavorites.php:35 +#, php-format +msgid "Error adding %s to favorites." +msgstr "" + +#: ajax/vcategories/delete.php:35 js/oc-vcategories.js:136 +msgid "No categories selected for deletion." +msgstr "" + +#: ajax/vcategories/removeFromFavorites.php:35 +#, php-format +msgid "Error removing %s from favorites." +msgstr "" + +#: js/config.php:32 +msgid "Sunday" +msgstr "" + +#: js/config.php:33 +msgid "Monday" +msgstr "" + +#: js/config.php:34 +msgid "Tuesday" +msgstr "" + +#: js/config.php:35 +msgid "Wednesday" +msgstr "" + +#: js/config.php:36 +msgid "Thursday" +msgstr "" + +#: js/config.php:37 +msgid "Friday" +msgstr "" + +#: js/config.php:38 +msgid "Saturday" +msgstr "" + +#: js/config.php:43 +msgid "January" +msgstr "" + +#: js/config.php:44 +msgid "February" +msgstr "" + +#: js/config.php:45 +msgid "March" +msgstr "" + +#: js/config.php:46 +msgid "April" +msgstr "" + +#: js/config.php:47 +msgid "May" +msgstr "" + +#: js/config.php:48 +msgid "June" +msgstr "" + +#: js/config.php:49 +msgid "July" +msgstr "" + +#: js/config.php:50 +msgid "August" +msgstr "" + +#: js/config.php:51 +msgid "September" +msgstr "" + +#: js/config.php:52 +msgid "October" +msgstr "" + +#: js/config.php:53 +msgid "November" +msgstr "" + +#: js/config.php:54 +msgid "December" +msgstr "" + +#: js/js.js:355 +msgid "Settings" +msgstr "" + +#: js/js.js:821 +msgid "seconds ago" +msgstr "" + +#: js/js.js:822 +msgid "%n minute ago" +msgid_plural "%n minutes ago" +msgstr[0] "" + +#: js/js.js:823 +msgid "%n hour ago" +msgid_plural "%n hours ago" +msgstr[0] "" + +#: js/js.js:824 +msgid "today" +msgstr "" + +#: js/js.js:825 +msgid "yesterday" +msgstr "" + +#: js/js.js:826 +msgid "%n day ago" +msgid_plural "%n days ago" +msgstr[0] "" + +#: js/js.js:827 +msgid "last month" +msgstr "" + +#: js/js.js:828 +msgid "%n month ago" +msgid_plural "%n months ago" +msgstr[0] "" + +#: js/js.js:829 +msgid "months ago" +msgstr "" + +#: js/js.js:830 +msgid "last year" +msgstr "" + +#: js/js.js:831 +msgid "years ago" +msgstr "" + +#: js/oc-dialogs.js:123 +msgid "Choose" +msgstr "" + +#: js/oc-dialogs.js:143 js/oc-dialogs.js:210 +msgid "Error loading file picker template" +msgstr "" + +#: js/oc-dialogs.js:168 +msgid "Yes" +msgstr "" + +#: js/oc-dialogs.js:178 +msgid "No" +msgstr "" + +#: js/oc-dialogs.js:195 +msgid "Ok" +msgstr "" + +#: js/oc-vcategories.js:5 js/oc-vcategories.js:85 js/oc-vcategories.js:102 +#: js/oc-vcategories.js:117 js/oc-vcategories.js:132 js/oc-vcategories.js:162 +msgid "The object type is not specified." +msgstr "" + +#: js/oc-vcategories.js:14 js/oc-vcategories.js:80 js/oc-vcategories.js:95 +#: js/oc-vcategories.js:110 js/oc-vcategories.js:125 js/oc-vcategories.js:136 +#: js/oc-vcategories.js:172 js/oc-vcategories.js:189 js/oc-vcategories.js:195 +#: js/oc-vcategories.js:199 js/share.js:129 js/share.js:142 js/share.js:149 +#: js/share.js:643 js/share.js:655 +msgid "Error" +msgstr "" + +#: js/oc-vcategories.js:179 +msgid "The app name is not specified." +msgstr "" + +#: js/oc-vcategories.js:194 +msgid "The required file {file} is not installed!" +msgstr "" + +#: js/share.js:30 js/share.js:45 js/share.js:87 +msgid "Shared" +msgstr "" + +#: js/share.js:90 +msgid "Share" +msgstr "" + +#: js/share.js:131 js/share.js:683 +msgid "Error while sharing" +msgstr "" + +#: js/share.js:142 +msgid "Error while unsharing" +msgstr "" + +#: js/share.js:149 +msgid "Error while changing permissions" +msgstr "" + +#: js/share.js:158 +msgid "Shared with you and the group {group} by {owner}" +msgstr "" + +#: js/share.js:160 +msgid "Shared with you by {owner}" +msgstr "" + +#: js/share.js:183 +msgid "Share with" +msgstr "" + +#: js/share.js:188 +msgid "Share with link" +msgstr "" + +#: js/share.js:191 +msgid "Password protect" +msgstr "" + +#: js/share.js:193 templates/installation.php:57 templates/login.php:26 +msgid "Password" +msgstr "" + +#: js/share.js:198 +msgid "Allow Public Upload" +msgstr "" + +#: js/share.js:202 +msgid "Email link to person" +msgstr "" + +#: js/share.js:203 +msgid "Send" +msgstr "" + +#: js/share.js:208 +msgid "Set expiration date" +msgstr "" + +#: js/share.js:209 +msgid "Expiration date" +msgstr "" + +#: js/share.js:241 +msgid "Share via email:" +msgstr "" + +#: js/share.js:243 +msgid "No people found" +msgstr "" + +#: js/share.js:281 +msgid "Resharing is not allowed" +msgstr "" + +#: js/share.js:317 +msgid "Shared in {item} with {user}" +msgstr "" + +#: js/share.js:338 +msgid "Unshare" +msgstr "" + +#: js/share.js:350 +msgid "can edit" +msgstr "" + +#: js/share.js:352 +msgid "access control" +msgstr "" + +#: js/share.js:355 +msgid "create" +msgstr "" + +#: js/share.js:358 +msgid "update" +msgstr "" + +#: js/share.js:361 +msgid "delete" +msgstr "" + +#: js/share.js:364 +msgid "share" +msgstr "" + +#: js/share.js:398 js/share.js:630 +msgid "Password protected" +msgstr "" + +#: js/share.js:643 +msgid "Error unsetting expiration date" +msgstr "" + +#: js/share.js:655 +msgid "Error setting expiration date" +msgstr "" + +#: js/share.js:670 +msgid "Sending ..." +msgstr "" + +#: js/share.js:681 +msgid "Email sent" +msgstr "" + +#: js/update.js:17 +msgid "" +"The update was unsuccessful. Please report this issue to the <a " +"href=\"https://github.com/owncloud/core/issues\" target=\"_blank\">ownCloud " +"community</a>." +msgstr "" + +#: js/update.js:21 +msgid "The update was successful. Redirecting you to ownCloud now." +msgstr "" + +#: lostpassword/controller.php:62 +#, php-format +msgid "%s password reset" +msgstr "" + +#: lostpassword/templates/email.php:2 +msgid "Use the following link to reset your password: {link}" +msgstr "" + +#: lostpassword/templates/lostpassword.php:4 +msgid "" +"The link to reset your password has been sent to your email.<br>If you do " +"not receive it within a reasonable amount of time, check your spam/junk " +"folders.<br>If it is not there ask your local administrator ." +msgstr "" + +#: lostpassword/templates/lostpassword.php:12 +msgid "Request failed!<br>Did you make sure your email/username was right?" +msgstr "" + +#: lostpassword/templates/lostpassword.php:15 +msgid "You will receive a link to reset your password via Email." +msgstr "" + +#: lostpassword/templates/lostpassword.php:18 templates/installation.php:51 +#: templates/login.php:19 +msgid "Username" +msgstr "" + +#: lostpassword/templates/lostpassword.php:22 +msgid "" +"Your files are encrypted. If you haven't enabled the recovery key, there " +"will be no way to get your data back after your password is reset. If you " +"are not sure what to do, please contact your administrator before you " +"continue. Do you really want to continue?" +msgstr "" + +#: lostpassword/templates/lostpassword.php:24 +msgid "Yes, I really want to reset my password now" +msgstr "" + +#: lostpassword/templates/lostpassword.php:27 +msgid "Request reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:4 +msgid "Your password was reset" +msgstr "" + +#: lostpassword/templates/resetpassword.php:5 +msgid "To login page" +msgstr "" + +#: lostpassword/templates/resetpassword.php:8 +msgid "New password" +msgstr "" + +#: lostpassword/templates/resetpassword.php:11 +msgid "Reset password" +msgstr "" + +#: strings.php:5 +msgid "Personal" +msgstr "" + +#: strings.php:6 +msgid "Users" +msgstr "" + +#: strings.php:7 templates/layout.user.php:105 +msgid "Apps" +msgstr "" + +#: strings.php:8 +msgid "Admin" +msgstr "" + +#: strings.php:9 +msgid "Help" +msgstr "" + +#: templates/403.php:12 +msgid "Access forbidden" +msgstr "" + +#: templates/404.php:15 +msgid "Cloud not found" +msgstr "" + +#: templates/altmail.php:2 +#, php-format +msgid "" +"Hey there,\n" +"\n" +"just letting you know that %s shared %s with you.\n" +"View it: %s\n" +"\n" +"Cheers!" +msgstr "" + +#: templates/edit_categories_dialog.php:4 +msgid "Edit categories" +msgstr "" + +#: templates/edit_categories_dialog.php:16 +msgid "Add" +msgstr "" + +#: templates/installation.php:24 templates/installation.php:31 +#: templates/installation.php:38 +msgid "Security Warning" +msgstr "" + +#: templates/installation.php:25 +msgid "Your PHP version is vulnerable to the NULL Byte attack (CVE-2006-7243)" +msgstr "" + +#: templates/installation.php:26 +#, php-format +msgid "Please update your PHP installation to use %s securely." +msgstr "" + +#: templates/installation.php:32 +msgid "" +"No secure random number generator is available, please enable the PHP " +"OpenSSL extension." +msgstr "" + +#: templates/installation.php:33 +msgid "" +"Without a secure random number generator an attacker may be able to predict " +"password reset tokens and take over your account." +msgstr "" + +#: templates/installation.php:39 +msgid "" +"Your data directory and files are probably accessible from the internet " +"because the .htaccess file does not work." +msgstr "" + +#: templates/installation.php:41 +#, php-format +msgid "" +"For information how to properly configure your server, please see the <a " +"href=\"%s\" target=\"_blank\">documentation</a>." +msgstr "" + +#: templates/installation.php:47 +msgid "Create an <strong>admin account</strong>" +msgstr "" + +#: templates/installation.php:65 +msgid "Advanced" +msgstr "" + +#: templates/installation.php:67 +msgid "Data folder" +msgstr "" + +#: templates/installation.php:77 +msgid "Configure the database" +msgstr "" + +#: templates/installation.php:82 templates/installation.php:94 +#: templates/installation.php:105 templates/installation.php:116 +#: templates/installation.php:128 +msgid "will be used" +msgstr "" + +#: templates/installation.php:140 +msgid "Database user" +msgstr "" + +#: templates/installation.php:147 +msgid "Database password" +msgstr "" + +#: templates/installation.php:152 +msgid "Database name" +msgstr "" + +#: templates/installation.php:160 +msgid "Database tablespace" +msgstr "" + +#: templates/installation.php:167 +msgid "Database host" +msgstr "" + +#: templates/installation.php:175 +msgid "Finish setup" +msgstr "" + +#: templates/layout.user.php:41 +#, php-format +msgid "%s is available. Get more information on how to update." +msgstr "" + +#: templates/layout.user.php:66 +msgid "Log out" +msgstr "" + +#: templates/login.php:9 +msgid "Automatic logon rejected!" +msgstr "" + +#: templates/login.php:10 +msgid "" +"If you did not change your password recently, your account may be " +"compromised!" +msgstr "" + +#: templates/login.php:12 +msgid "Please change your password to secure your account again." +msgstr "" + +#: templates/login.php:32 +msgid "Lost your password?" +msgstr "" + +#: templates/login.php:37 +msgid "remember" +msgstr "" + +#: templates/login.php:39 +msgid "Log in" +msgstr "" + +#: templates/login.php:45 +msgid "Alternative Logins" +msgstr "" + +#: templates/mail.php:15 +#, php-format +msgid "" +"Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a " +"href=\"%s\">View it!</a><br><br>Cheers!" +msgstr "" + +#: templates/update.php:3 +#, php-format +msgid "Updating ownCloud to version %s, this may take a while." +msgstr "" diff --git a/l10n/km/files.po b/l10n/km/files.po new file mode 100644 index 00000000000..286dded35fb --- /dev/null +++ b/l10n/km/files.po @@ -0,0 +1,332 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/move.php:17 +#, php-format +msgid "Could not move %s - File with this name already exists" +msgstr "" + +#: ajax/move.php:27 ajax/move.php:30 +#, php-format +msgid "Could not move %s" +msgstr "" + +#: ajax/upload.php:16 ajax/upload.php:45 +msgid "Unable to set upload directory." +msgstr "" + +#: ajax/upload.php:22 +msgid "Invalid Token" +msgstr "" + +#: ajax/upload.php:59 +msgid "No file was uploaded. Unknown error" +msgstr "" + +#: ajax/upload.php:66 +msgid "There is no error, the file uploaded with success" +msgstr "" + +#: ajax/upload.php:67 +msgid "" +"The uploaded file exceeds the upload_max_filesize directive in php.ini: " +msgstr "" + +#: ajax/upload.php:69 +msgid "" +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in " +"the HTML form" +msgstr "" + +#: ajax/upload.php:70 +msgid "The uploaded file was only partially uploaded" +msgstr "" + +#: ajax/upload.php:71 +msgid "No file was uploaded" +msgstr "" + +#: ajax/upload.php:72 +msgid "Missing a temporary folder" +msgstr "" + +#: ajax/upload.php:73 +msgid "Failed to write to disk" +msgstr "" + +#: ajax/upload.php:91 +msgid "Not enough storage available" +msgstr "" + +#: ajax/upload.php:109 +msgid "Upload failed" +msgstr "" + +#: ajax/upload.php:127 +msgid "Invalid directory." +msgstr "" + +#: appinfo/app.php:12 +msgid "Files" +msgstr "" + +#: js/file-upload.js:11 +msgid "Unable to upload your file as it is a directory or has 0 bytes" +msgstr "" + +#: js/file-upload.js:24 +msgid "Not enough space available" +msgstr "" + +#: js/file-upload.js:64 +msgid "Upload cancelled." +msgstr "" + +#: js/file-upload.js:165 +msgid "" +"File upload is in progress. Leaving the page now will cancel the upload." +msgstr "" + +#: js/file-upload.js:239 +msgid "URL cannot be empty." +msgstr "" + +#: js/file-upload.js:244 lib/app.php:53 +msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" +msgstr "" + +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 +msgid "Error" +msgstr "" + +#: js/fileactions.js:116 +msgid "Share" +msgstr "" + +#: js/fileactions.js:126 +msgid "Delete permanently" +msgstr "" + +#: js/fileactions.js:192 +msgid "Rename" +msgstr "" + +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 +msgid "Pending" +msgstr "" + +#: js/filelist.js:307 js/filelist.js:309 +msgid "{new_name} already exists" +msgstr "" + +#: js/filelist.js:307 js/filelist.js:309 +msgid "replace" +msgstr "" + +#: js/filelist.js:307 +msgid "suggest name" +msgstr "" + +#: js/filelist.js:307 js/filelist.js:309 +msgid "cancel" +msgstr "" + +#: js/filelist.js:354 +msgid "replaced {new_name} with {old_name}" +msgstr "" + +#: js/filelist.js:354 +msgid "undo" +msgstr "" + +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 +msgid "%n folder" +msgid_plural "%n folders" +msgstr[0] "" + +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 +msgid "%n file" +msgid_plural "%n files" +msgstr[0] "" + +#: js/filelist.js:432 +msgid "{dirs} and {files}" +msgstr "" + +#: js/filelist.js:563 +msgid "Uploading %n file" +msgid_plural "Uploading %n files" +msgstr[0] "" + +#: js/filelist.js:628 +msgid "files uploading" +msgstr "" + +#: js/files.js:52 +msgid "'.' is an invalid file name." +msgstr "" + +#: js/files.js:56 +msgid "File name cannot be empty." +msgstr "" + +#: js/files.js:64 +msgid "" +"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not " +"allowed." +msgstr "" + +#: js/files.js:78 +msgid "Your storage is full, files can not be updated or synced anymore!" +msgstr "" + +#: js/files.js:82 +msgid "Your storage is almost full ({usedSpacePercent}%)" +msgstr "" + +#: js/files.js:94 +msgid "" +"Encryption was disabled but your files are still encrypted. Please go to " +"your personal settings to decrypt your files." +msgstr "" + +#: js/files.js:245 +msgid "" +"Your download is being prepared. This might take some time if the files are " +"big." +msgstr "" + +#: js/files.js:563 templates/index.php:69 +msgid "Name" +msgstr "" + +#: js/files.js:564 templates/index.php:81 +msgid "Size" +msgstr "" + +#: js/files.js:565 templates/index.php:83 +msgid "Modified" +msgstr "" + +#: lib/app.php:73 +#, php-format +msgid "%s could not be renamed" +msgstr "" + +#: lib/helper.php:11 templates/index.php:18 +msgid "Upload" +msgstr "" + +#: templates/admin.php:5 +msgid "File handling" +msgstr "" + +#: templates/admin.php:7 +msgid "Maximum upload size" +msgstr "" + +#: templates/admin.php:10 +msgid "max. possible: " +msgstr "" + +#: templates/admin.php:15 +msgid "Needed for multi-file and folder downloads." +msgstr "" + +#: templates/admin.php:17 +msgid "Enable ZIP-download" +msgstr "" + +#: templates/admin.php:20 +msgid "0 is unlimited" +msgstr "" + +#: templates/admin.php:22 +msgid "Maximum input size for ZIP files" +msgstr "" + +#: templates/admin.php:26 +msgid "Save" +msgstr "" + +#: templates/index.php:7 +msgid "New" +msgstr "" + +#: templates/index.php:10 +msgid "Text file" +msgstr "" + +#: templates/index.php:12 +msgid "Folder" +msgstr "" + +#: templates/index.php:14 +msgid "From link" +msgstr "" + +#: templates/index.php:41 +msgid "Deleted files" +msgstr "" + +#: templates/index.php:46 +msgid "Cancel upload" +msgstr "" + +#: templates/index.php:52 +msgid "You don’t have write permissions here." +msgstr "" + +#: templates/index.php:59 +msgid "Nothing in here. Upload something!" +msgstr "" + +#: templates/index.php:75 +msgid "Download" +msgstr "" + +#: templates/index.php:88 templates/index.php:89 +msgid "Unshare" +msgstr "" + +#: templates/index.php:94 templates/index.php:95 +msgid "Delete" +msgstr "" + +#: templates/index.php:108 +msgid "Upload too large" +msgstr "" + +#: templates/index.php:110 +msgid "" +"The files you are trying to upload exceed the maximum size for file uploads " +"on this server." +msgstr "" + +#: templates/index.php:115 +msgid "Files are being scanned, please wait." +msgstr "" + +#: templates/index.php:118 +msgid "Current scanning" +msgstr "" + +#: templates/upgrade.php:2 +msgid "Upgrading filesystem cache..." +msgstr "" diff --git a/l10n/km/files_encryption.po b/l10n/km/files_encryption.po new file mode 100644 index 00000000000..95e07fb9557 --- /dev/null +++ b/l10n/km/files_encryption.po @@ -0,0 +1,176 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/adminrecovery.php:29 +msgid "Recovery key successfully enabled" +msgstr "" + +#: ajax/adminrecovery.php:34 +msgid "" +"Could not enable recovery key. Please check your recovery key password!" +msgstr "" + +#: ajax/adminrecovery.php:48 +msgid "Recovery key successfully disabled" +msgstr "" + +#: ajax/adminrecovery.php:53 +msgid "" +"Could not disable recovery key. Please check your recovery key password!" +msgstr "" + +#: ajax/changeRecoveryPassword.php:49 +msgid "Password successfully changed." +msgstr "" + +#: ajax/changeRecoveryPassword.php:51 +msgid "Could not change the password. Maybe the old password was not correct." +msgstr "" + +#: ajax/updatePrivateKeyPassword.php:51 +msgid "Private key password successfully updated." +msgstr "" + +#: ajax/updatePrivateKeyPassword.php:53 +msgid "" +"Could not update the private key password. Maybe the old password was not " +"correct." +msgstr "" + +#: files/error.php:7 +msgid "" +"Your private key is not valid! Likely your password was changed outside the " +"ownCloud system (e.g. your corporate directory). You can update your private" +" key password in your personal settings to recover access to your encrypted " +"files." +msgstr "" + +#: hooks/hooks.php:51 +msgid "Missing requirements." +msgstr "" + +#: hooks/hooks.php:52 +msgid "" +"Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL " +"together with the PHP extension is enabled and configured properly. For now," +" the encryption app has been disabled." +msgstr "" + +#: hooks/hooks.php:250 +msgid "Following users are not set up for encryption:" +msgstr "" + +#: js/settings-admin.js:11 +msgid "Saving..." +msgstr "" + +#: templates/invalid_private_key.php:5 +msgid "" +"Your private key is not valid! Maybe the your password was changed from " +"outside." +msgstr "" + +#: templates/invalid_private_key.php:7 +msgid "You can unlock your private key in your " +msgstr "" + +#: templates/invalid_private_key.php:7 +msgid "personal settings" +msgstr "" + +#: templates/settings-admin.php:5 templates/settings-personal.php:4 +msgid "Encryption" +msgstr "" + +#: templates/settings-admin.php:10 +msgid "" +"Enable recovery key (allow to recover users files in case of password loss):" +msgstr "" + +#: templates/settings-admin.php:14 +msgid "Recovery key password" +msgstr "" + +#: templates/settings-admin.php:21 templates/settings-personal.php:54 +msgid "Enabled" +msgstr "" + +#: templates/settings-admin.php:29 templates/settings-personal.php:62 +msgid "Disabled" +msgstr "" + +#: templates/settings-admin.php:34 +msgid "Change recovery key password:" +msgstr "" + +#: templates/settings-admin.php:41 +msgid "Old Recovery key password" +msgstr "" + +#: templates/settings-admin.php:48 +msgid "New Recovery key password" +msgstr "" + +#: templates/settings-admin.php:53 +msgid "Change Password" +msgstr "" + +#: templates/settings-personal.php:11 +msgid "Your private key password no longer match your log-in password:" +msgstr "" + +#: templates/settings-personal.php:14 +msgid "Set your old private key password to your current log-in password." +msgstr "" + +#: templates/settings-personal.php:16 +msgid "" +" If you don't remember your old password you can ask your administrator to " +"recover your files." +msgstr "" + +#: templates/settings-personal.php:24 +msgid "Old log-in password" +msgstr "" + +#: templates/settings-personal.php:30 +msgid "Current log-in password" +msgstr "" + +#: templates/settings-personal.php:35 +msgid "Update Private Key Password" +msgstr "" + +#: templates/settings-personal.php:45 +msgid "Enable password recovery:" +msgstr "" + +#: templates/settings-personal.php:47 +msgid "" +"Enabling this option will allow you to reobtain access to your encrypted " +"files in case of password loss" +msgstr "" + +#: templates/settings-personal.php:63 +msgid "File recovery settings updated" +msgstr "" + +#: templates/settings-personal.php:64 +msgid "Could not update file recovery" +msgstr "" diff --git a/l10n/km/files_external.po b/l10n/km/files_external.po new file mode 100644 index 00000000000..bca243c4597 --- /dev/null +++ b/l10n/km/files_external.po @@ -0,0 +1,123 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: js/dropbox.js:7 js/dropbox.js:28 js/google.js:8 js/google.js:39 +msgid "Access granted" +msgstr "" + +#: js/dropbox.js:30 js/dropbox.js:96 js/dropbox.js:102 +msgid "Error configuring Dropbox storage" +msgstr "" + +#: js/dropbox.js:65 js/google.js:86 +msgid "Grant access" +msgstr "" + +#: js/dropbox.js:101 +msgid "Please provide a valid Dropbox app key and secret." +msgstr "" + +#: js/google.js:42 js/google.js:121 +msgid "Error configuring Google Drive storage" +msgstr "" + +#: lib/config.php:453 +msgid "" +"<b>Warning:</b> \"smbclient\" is not installed. Mounting of CIFS/SMB shares " +"is not possible. Please ask your system administrator to install it." +msgstr "" + +#: lib/config.php:457 +msgid "" +"<b>Warning:</b> 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." +msgstr "" + +#: lib/config.php:460 +msgid "" +"<b>Warning:</b> The Curl support in PHP is not enabled or installed. " +"Mounting of ownCloud / WebDAV or GoogleDrive is not possible. Please ask " +"your system administrator to install it." +msgstr "" + +#: templates/settings.php:3 +msgid "External Storage" +msgstr "" + +#: templates/settings.php:9 templates/settings.php:28 +msgid "Folder name" +msgstr "" + +#: templates/settings.php:10 +msgid "External storage" +msgstr "" + +#: templates/settings.php:11 +msgid "Configuration" +msgstr "" + +#: templates/settings.php:12 +msgid "Options" +msgstr "" + +#: templates/settings.php:13 +msgid "Applicable" +msgstr "" + +#: templates/settings.php:33 +msgid "Add storage" +msgstr "" + +#: templates/settings.php:90 +msgid "None set" +msgstr "" + +#: templates/settings.php:91 +msgid "All Users" +msgstr "" + +#: templates/settings.php:92 +msgid "Groups" +msgstr "" + +#: templates/settings.php:100 +msgid "Users" +msgstr "" + +#: templates/settings.php:113 templates/settings.php:114 +#: templates/settings.php:149 templates/settings.php:150 +msgid "Delete" +msgstr "" + +#: templates/settings.php:129 +msgid "Enable User External Storage" +msgstr "" + +#: templates/settings.php:130 +msgid "Allow users to mount their own external storage" +msgstr "" + +#: templates/settings.php:141 +msgid "SSL root certificates" +msgstr "" + +#: templates/settings.php:159 +msgid "Import Root Certificate" +msgstr "" diff --git a/l10n/km/files_sharing.po b/l10n/km/files_sharing.po new file mode 100644 index 00000000000..f12cf3ccbe1 --- /dev/null +++ b/l10n/km/files_sharing.po @@ -0,0 +1,80 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/authenticate.php:4 +msgid "The password is wrong. Try again." +msgstr "" + +#: templates/authenticate.php:7 +msgid "Password" +msgstr "" + +#: templates/authenticate.php:9 +msgid "Submit" +msgstr "" + +#: templates/part.404.php:3 +msgid "Sorry, this link doesn’t seem to work anymore." +msgstr "" + +#: templates/part.404.php:4 +msgid "Reasons might be:" +msgstr "" + +#: templates/part.404.php:6 +msgid "the item was removed" +msgstr "" + +#: templates/part.404.php:7 +msgid "the link expired" +msgstr "" + +#: templates/part.404.php:8 +msgid "sharing is disabled" +msgstr "" + +#: templates/part.404.php:10 +msgid "For more info, please ask the person who sent this link." +msgstr "" + +#: templates/public.php:15 +#, php-format +msgid "%s shared the folder %s with you" +msgstr "" + +#: templates/public.php:18 +#, php-format +msgid "%s shared the file %s with you" +msgstr "" + +#: templates/public.php:26 templates/public.php:92 +msgid "Download" +msgstr "" + +#: templates/public.php:43 templates/public.php:46 +msgid "Upload" +msgstr "" + +#: templates/public.php:56 +msgid "Cancel upload" +msgstr "" + +#: templates/public.php:89 +msgid "No preview available for" +msgstr "" diff --git a/l10n/km/files_trashbin.po b/l10n/km/files_trashbin.po new file mode 100644 index 00000000000..f3aa613a53e --- /dev/null +++ b/l10n/km/files_trashbin.po @@ -0,0 +1,82 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/delete.php:42 +#, php-format +msgid "Couldn't delete %s permanently" +msgstr "" + +#: ajax/undelete.php:42 +#, php-format +msgid "Couldn't restore %s" +msgstr "" + +#: js/trash.js:7 js/trash.js:102 +msgid "perform restore operation" +msgstr "" + +#: js/trash.js:20 js/trash.js:49 js/trash.js:120 js/trash.js:148 +msgid "Error" +msgstr "" + +#: js/trash.js:37 +msgid "delete file permanently" +msgstr "" + +#: js/trash.js:129 +msgid "Delete permanently" +msgstr "" + +#: js/trash.js:184 templates/index.php:17 +msgid "Name" +msgstr "" + +#: js/trash.js:185 templates/index.php:27 +msgid "Deleted" +msgstr "" + +#: js/trash.js:193 +msgid "%n folder" +msgid_plural "%n folders" +msgstr[0] "" + +#: js/trash.js:199 +msgid "%n file" +msgid_plural "%n files" +msgstr[0] "" + +#: lib/trash.php:814 lib/trash.php:816 +msgid "restored" +msgstr "" + +#: templates/index.php:9 +msgid "Nothing in here. Your trash bin is empty!" +msgstr "" + +#: templates/index.php:20 templates/index.php:22 +msgid "Restore" +msgstr "" + +#: templates/index.php:30 templates/index.php:31 +msgid "Delete" +msgstr "" + +#: templates/part.breadcrumb.php:9 +msgid "Deleted Files" +msgstr "" diff --git a/l10n/km/files_versions.po b/l10n/km/files_versions.po new file mode 100644 index 00000000000..f9b37bb0cc3 --- /dev/null +++ b/l10n/km/files_versions.po @@ -0,0 +1,43 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/rollbackVersion.php:13 +#, php-format +msgid "Could not revert: %s" +msgstr "" + +#: js/versions.js:7 +msgid "Versions" +msgstr "" + +#: js/versions.js:53 +msgid "Failed to revert {file} to revision {timestamp}." +msgstr "" + +#: js/versions.js:79 +msgid "More versions..." +msgstr "" + +#: js/versions.js:116 +msgid "No other versions available" +msgstr "" + +#: js/versions.js:145 +msgid "Restore" +msgstr "" diff --git a/l10n/km/lib.po b/l10n/km/lib.po new file mode 100644 index 00000000000..a5ed3a8ca32 --- /dev/null +++ b/l10n/km/lib.po @@ -0,0 +1,318 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: app.php:239 +#, php-format +msgid "" +"App \"%s\" can't be installed because it is not compatible with this version" +" of ownCloud." +msgstr "" + +#: app.php:250 +msgid "No app name specified" +msgstr "" + +#: app.php:361 +msgid "Help" +msgstr "" + +#: app.php:374 +msgid "Personal" +msgstr "" + +#: app.php:385 +msgid "Settings" +msgstr "" + +#: app.php:397 +msgid "Users" +msgstr "" + +#: app.php:410 +msgid "Admin" +msgstr "" + +#: app.php:839 +#, php-format +msgid "Failed to upgrade \"%s\"." +msgstr "" + +#: defaults.php:35 +msgid "web services under your control" +msgstr "" + +#: files.php:66 files.php:98 +#, php-format +msgid "cannot open \"%s\"" +msgstr "" + +#: files.php:226 +msgid "ZIP download is turned off." +msgstr "" + +#: files.php:227 +msgid "Files need to be downloaded one by one." +msgstr "" + +#: files.php:228 files.php:256 +msgid "Back to Files" +msgstr "" + +#: files.php:253 +msgid "Selected files too large to generate zip file." +msgstr "" + +#: files.php:254 +msgid "" +"Download the files in smaller chunks, seperately or kindly ask your " +"administrator." +msgstr "" + +#: installer.php:63 +msgid "No source specified when installing app" +msgstr "" + +#: installer.php:70 +msgid "No href specified when installing app from http" +msgstr "" + +#: installer.php:75 +msgid "No path specified when installing app from local file" +msgstr "" + +#: installer.php:89 +#, php-format +msgid "Archives of type %s are not supported" +msgstr "" + +#: installer.php:103 +msgid "Failed to open archive when installing app" +msgstr "" + +#: installer.php:125 +msgid "App does not provide an info.xml file" +msgstr "" + +#: installer.php:131 +msgid "App can't be installed because of not allowed code in the App" +msgstr "" + +#: installer.php:140 +msgid "" +"App can't be installed because it is not compatible with this version of " +"ownCloud" +msgstr "" + +#: installer.php:146 +msgid "" +"App can't be installed because it contains the <shipped>true</shipped> tag " +"which is not allowed for non shipped apps" +msgstr "" + +#: installer.php:152 +msgid "" +"App can't be installed because the version in info.xml/version is not the " +"same as the version reported from the app store" +msgstr "" + +#: installer.php:162 +msgid "App directory already exists" +msgstr "" + +#: installer.php:175 +#, php-format +msgid "Can't create app folder. Please fix permissions. %s" +msgstr "" + +#: json.php:28 +msgid "Application is not enabled" +msgstr "" + +#: json.php:39 json.php:62 json.php:73 +msgid "Authentication error" +msgstr "" + +#: json.php:51 +msgid "Token expired. Please reload page." +msgstr "" + +#: search/provider/file.php:17 search/provider/file.php:35 +msgid "Files" +msgstr "" + +#: search/provider/file.php:26 search/provider/file.php:33 +msgid "Text" +msgstr "" + +#: search/provider/file.php:29 +msgid "Images" +msgstr "" + +#: setup/abstractdatabase.php:22 +#, php-format +msgid "%s enter the database username." +msgstr "" + +#: setup/abstractdatabase.php:25 +#, php-format +msgid "%s enter the database name." +msgstr "" + +#: setup/abstractdatabase.php:28 +#, php-format +msgid "%s you may not use dots in the database name" +msgstr "" + +#: setup/mssql.php:20 +#, php-format +msgid "MS SQL username and/or password not valid: %s" +msgstr "" + +#: setup/mssql.php:21 setup/mysql.php:13 setup/oci.php:114 +#: setup/postgresql.php:24 setup/postgresql.php:70 +msgid "You need to enter either an existing account or the administrator." +msgstr "" + +#: setup/mysql.php:12 +msgid "MySQL username and/or password not valid" +msgstr "" + +#: setup/mysql.php:67 setup/oci.php:54 setup/oci.php:121 setup/oci.php:147 +#: setup/oci.php:154 setup/oci.php:165 setup/oci.php:172 setup/oci.php:181 +#: setup/oci.php:189 setup/oci.php:198 setup/oci.php:204 +#: setup/postgresql.php:89 setup/postgresql.php:98 setup/postgresql.php:115 +#: setup/postgresql.php:125 setup/postgresql.php:134 +#, php-format +msgid "DB Error: \"%s\"" +msgstr "" + +#: setup/mysql.php:68 setup/oci.php:55 setup/oci.php:122 setup/oci.php:148 +#: setup/oci.php:155 setup/oci.php:166 setup/oci.php:182 setup/oci.php:190 +#: setup/oci.php:199 setup/postgresql.php:90 setup/postgresql.php:99 +#: setup/postgresql.php:116 setup/postgresql.php:126 setup/postgresql.php:135 +#, php-format +msgid "Offending command was: \"%s\"" +msgstr "" + +#: setup/mysql.php:85 +#, php-format +msgid "MySQL user '%s'@'localhost' exists already." +msgstr "" + +#: setup/mysql.php:86 +msgid "Drop this user from MySQL" +msgstr "" + +#: setup/mysql.php:91 +#, php-format +msgid "MySQL user '%s'@'%%' already exists" +msgstr "" + +#: setup/mysql.php:92 +msgid "Drop this user from MySQL." +msgstr "" + +#: setup/oci.php:34 +msgid "Oracle connection could not be established" +msgstr "" + +#: setup/oci.php:41 setup/oci.php:113 +msgid "Oracle username and/or password not valid" +msgstr "" + +#: setup/oci.php:173 setup/oci.php:205 +#, php-format +msgid "Offending command was: \"%s\", name: %s, password: %s" +msgstr "" + +#: setup/postgresql.php:23 setup/postgresql.php:69 +msgid "PostgreSQL username and/or password not valid" +msgstr "" + +#: setup.php:28 +msgid "Set an admin username." +msgstr "" + +#: setup.php:31 +msgid "Set an admin password." +msgstr "" + +#: setup.php:184 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: setup.php:185 +#, php-format +msgid "Please double check the <a href='%s'>installation guides</a>." +msgstr "" + +#: template/functions.php:96 +msgid "seconds ago" +msgstr "" + +#: template/functions.php:97 +msgid "%n minute ago" +msgid_plural "%n minutes ago" +msgstr[0] "" + +#: template/functions.php:98 +msgid "%n hour ago" +msgid_plural "%n hours ago" +msgstr[0] "" + +#: template/functions.php:99 +msgid "today" +msgstr "" + +#: template/functions.php:100 +msgid "yesterday" +msgstr "" + +#: template/functions.php:101 +msgid "%n day go" +msgid_plural "%n days ago" +msgstr[0] "" + +#: template/functions.php:102 +msgid "last month" +msgstr "" + +#: template/functions.php:103 +msgid "%n month ago" +msgid_plural "%n months ago" +msgstr[0] "" + +#: template/functions.php:104 +msgid "last year" +msgstr "" + +#: template/functions.php:105 +msgid "years ago" +msgstr "" + +#: template.php:297 +msgid "Caused by:" +msgstr "" + +#: vcategories.php:188 vcategories.php:249 +#, php-format +msgid "Could not find category \"%s\"" +msgstr "" diff --git a/l10n/km/settings.po b/l10n/km/settings.po new file mode 100644 index 00000000000..e0c2cf04ddb --- /dev/null +++ b/l10n/km/settings.po @@ -0,0 +1,540 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/apps/ocs.php:20 +msgid "Unable to load list from App Store" +msgstr "" + +#: ajax/changedisplayname.php:25 ajax/removeuser.php:15 ajax/setquota.php:17 +#: ajax/togglegroups.php:20 +msgid "Authentication error" +msgstr "" + +#: ajax/changedisplayname.php:31 +msgid "Your display name has been changed." +msgstr "" + +#: ajax/changedisplayname.php:34 +msgid "Unable to change display name" +msgstr "" + +#: ajax/creategroup.php:10 +msgid "Group already exists" +msgstr "" + +#: ajax/creategroup.php:19 +msgid "Unable to add group" +msgstr "" + +#: ajax/lostpassword.php:12 +msgid "Email saved" +msgstr "" + +#: ajax/lostpassword.php:14 +msgid "Invalid email" +msgstr "" + +#: ajax/removegroup.php:13 +msgid "Unable to delete group" +msgstr "" + +#: ajax/removeuser.php:25 +msgid "Unable to delete user" +msgstr "" + +#: ajax/setlanguage.php:15 +msgid "Language changed" +msgstr "" + +#: ajax/setlanguage.php:17 ajax/setlanguage.php:20 +msgid "Invalid request" +msgstr "" + +#: ajax/togglegroups.php:12 +msgid "Admins can't remove themself from the admin group" +msgstr "" + +#: ajax/togglegroups.php:30 +#, php-format +msgid "Unable to add user to group %s" +msgstr "" + +#: ajax/togglegroups.php:36 +#, php-format +msgid "Unable to remove user from group %s" +msgstr "" + +#: ajax/updateapp.php:14 +msgid "Couldn't update app." +msgstr "" + +#: js/apps.js:43 +msgid "Update to {appversion}" +msgstr "" + +#: js/apps.js:49 js/apps.js:82 js/apps.js:108 +msgid "Disable" +msgstr "" + +#: js/apps.js:49 js/apps.js:89 js/apps.js:102 js/apps.js:117 +msgid "Enable" +msgstr "" + +#: js/apps.js:71 +msgid "Please wait...." +msgstr "" + +#: js/apps.js:79 js/apps.js:80 js/apps.js:100 +msgid "Error while disabling app" +msgstr "" + +#: js/apps.js:99 js/apps.js:112 js/apps.js:113 +msgid "Error while enabling app" +msgstr "" + +#: js/apps.js:123 +msgid "Updating...." +msgstr "" + +#: js/apps.js:126 +msgid "Error while updating app" +msgstr "" + +#: js/apps.js:126 +msgid "Error" +msgstr "" + +#: js/apps.js:127 templates/apps.php:43 +msgid "Update" +msgstr "" + +#: js/apps.js:130 +msgid "Updated" +msgstr "" + +#: js/personal.js:150 +msgid "Decrypting files... Please wait, this can take some time." +msgstr "" + +#: js/personal.js:172 +msgid "Saving..." +msgstr "" + +#: js/users.js:47 +msgid "deleted" +msgstr "" + +#: js/users.js:47 +msgid "undo" +msgstr "" + +#: js/users.js:79 +msgid "Unable to remove user" +msgstr "" + +#: js/users.js:92 templates/users.php:26 templates/users.php:87 +#: templates/users.php:112 +msgid "Groups" +msgstr "" + +#: js/users.js:97 templates/users.php:89 templates/users.php:124 +msgid "Group Admin" +msgstr "" + +#: js/users.js:120 templates/users.php:164 +msgid "Delete" +msgstr "" + +#: js/users.js:277 +msgid "add group" +msgstr "" + +#: js/users.js:436 +msgid "A valid username must be provided" +msgstr "" + +#: js/users.js:437 js/users.js:443 js/users.js:458 +msgid "Error creating user" +msgstr "" + +#: js/users.js:442 +msgid "A valid password must be provided" +msgstr "" + +#: personal.php:40 personal.php:41 +msgid "__language_name__" +msgstr "" + +#: templates/admin.php:15 +msgid "Security Warning" +msgstr "" + +#: templates/admin.php:18 +msgid "" +"Your data directory and your files are probably accessible from the " +"internet. The .htaccess file is not working. We strongly suggest that you " +"configure your webserver in a way that the data directory is no longer " +"accessible or you move the data directory outside the webserver document " +"root." +msgstr "" + +#: templates/admin.php:29 +msgid "Setup Warning" +msgstr "" + +#: templates/admin.php:32 +msgid "" +"Your web server is not yet properly setup to allow files synchronization " +"because the WebDAV interface seems to be broken." +msgstr "" + +#: templates/admin.php:33 +#, php-format +msgid "Please double check the <a href=\"%s\">installation guides</a>." +msgstr "" + +#: templates/admin.php:44 +msgid "Module 'fileinfo' missing" +msgstr "" + +#: templates/admin.php:47 +msgid "" +"The PHP module 'fileinfo' is missing. We strongly recommend to enable this " +"module to get best results with mime-type detection." +msgstr "" + +#: templates/admin.php:58 +msgid "Locale not working" +msgstr "" + +#: templates/admin.php:63 +#, php-format +msgid "" +"System locale can't be set to %s. This means that there might be problems " +"with certain characters in file names. We strongly suggest to install the " +"required packages on your system to support %s." +msgstr "" + +#: templates/admin.php:75 +msgid "Internet connection not working" +msgstr "" + +#: templates/admin.php:78 +msgid "" +"This server has no working internet connection. This means that some of the " +"features like mounting of external storage, notifications about updates or " +"installation of 3rd party apps don´t work. Accessing files from remote and " +"sending of notification emails might also not work. We suggest to enable " +"internet connection for this server if you want to have all features." +msgstr "" + +#: templates/admin.php:92 +msgid "Cron" +msgstr "" + +#: templates/admin.php:99 +msgid "Execute one task with each page loaded" +msgstr "" + +#: templates/admin.php:107 +msgid "" +"cron.php is registered at a webcron service to call cron.php once a minute " +"over http." +msgstr "" + +#: templates/admin.php:115 +msgid "Use systems cron service to call the cron.php file once a minute." +msgstr "" + +#: templates/admin.php:120 +msgid "Sharing" +msgstr "" + +#: templates/admin.php:126 +msgid "Enable Share API" +msgstr "" + +#: templates/admin.php:127 +msgid "Allow apps to use the Share API" +msgstr "" + +#: templates/admin.php:134 +msgid "Allow links" +msgstr "" + +#: templates/admin.php:135 +msgid "Allow users to share items to the public with links" +msgstr "" + +#: templates/admin.php:143 +msgid "Allow public uploads" +msgstr "" + +#: templates/admin.php:144 +msgid "" +"Allow users to enable others to upload into their publicly shared folders" +msgstr "" + +#: templates/admin.php:152 +msgid "Allow resharing" +msgstr "" + +#: templates/admin.php:153 +msgid "Allow users to share items shared with them again" +msgstr "" + +#: templates/admin.php:160 +msgid "Allow users to share with anyone" +msgstr "" + +#: templates/admin.php:163 +msgid "Allow users to only share with users in their groups" +msgstr "" + +#: templates/admin.php:170 +msgid "Security" +msgstr "" + +#: templates/admin.php:183 +msgid "Enforce HTTPS" +msgstr "" + +#: templates/admin.php:185 +#, php-format +msgid "Forces the clients to connect to %s via an encrypted connection." +msgstr "" + +#: templates/admin.php:191 +#, php-format +msgid "" +"Please connect to your %s via HTTPS to enable or disable the SSL " +"enforcement." +msgstr "" + +#: templates/admin.php:203 +msgid "Log" +msgstr "" + +#: templates/admin.php:204 +msgid "Log level" +msgstr "" + +#: templates/admin.php:235 +msgid "More" +msgstr "" + +#: templates/admin.php:236 +msgid "Less" +msgstr "" + +#: templates/admin.php:242 templates/personal.php:140 +msgid "Version" +msgstr "" + +#: templates/admin.php:246 templates/personal.php:143 +msgid "" +"Developed by the <a href=\"http://ownCloud.org/contact\" " +"target=\"_blank\">ownCloud community</a>, the <a " +"href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is " +"licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" " +"target=\"_blank\"><abbr title=\"Affero General Public " +"License\">AGPL</abbr></a>." +msgstr "" + +#: templates/apps.php:13 +msgid "Add your App" +msgstr "" + +#: templates/apps.php:28 +msgid "More Apps" +msgstr "" + +#: templates/apps.php:33 +msgid "Select an App" +msgstr "" + +#: templates/apps.php:39 +msgid "See application page at apps.owncloud.com" +msgstr "" + +#: templates/apps.php:41 +msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" +msgstr "" + +#: templates/help.php:4 +msgid "User Documentation" +msgstr "" + +#: templates/help.php:6 +msgid "Administrator Documentation" +msgstr "" + +#: templates/help.php:9 +msgid "Online Documentation" +msgstr "" + +#: templates/help.php:11 +msgid "Forum" +msgstr "" + +#: templates/help.php:14 +msgid "Bugtracker" +msgstr "" + +#: templates/help.php:17 +msgid "Commercial Support" +msgstr "" + +#: templates/personal.php:8 +msgid "Get the apps to sync your files" +msgstr "" + +#: templates/personal.php:19 +msgid "Show First Run Wizard again" +msgstr "" + +#: templates/personal.php:27 +#, php-format +msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" +msgstr "" + +#: templates/personal.php:39 templates/users.php:23 templates/users.php:86 +msgid "Password" +msgstr "" + +#: templates/personal.php:40 +msgid "Your password was changed" +msgstr "" + +#: templates/personal.php:41 +msgid "Unable to change your password" +msgstr "" + +#: templates/personal.php:42 +msgid "Current password" +msgstr "" + +#: templates/personal.php:44 +msgid "New password" +msgstr "" + +#: templates/personal.php:46 +msgid "Change password" +msgstr "" + +#: templates/personal.php:58 templates/users.php:85 +msgid "Display Name" +msgstr "" + +#: templates/personal.php:73 +msgid "Email" +msgstr "" + +#: templates/personal.php:75 +msgid "Your email address" +msgstr "" + +#: templates/personal.php:76 +msgid "Fill in an email address to enable password recovery" +msgstr "" + +#: templates/personal.php:85 templates/personal.php:86 +msgid "Language" +msgstr "" + +#: templates/personal.php:98 +msgid "Help translate" +msgstr "" + +#: templates/personal.php:104 +msgid "WebDAV" +msgstr "" + +#: templates/personal.php:106 +#, php-format +msgid "" +"Use this address to <a href=\"%s/server/5.0/user_manual/files/files.html\" " +"target=\"_blank\">access your Files via WebDAV</a>" +msgstr "" + +#: templates/personal.php:117 +msgid "Encryption" +msgstr "" + +#: templates/personal.php:119 +msgid "The encryption app is no longer enabled, decrypt all your file" +msgstr "" + +#: templates/personal.php:125 +msgid "Log-in password" +msgstr "" + +#: templates/personal.php:130 +msgid "Decrypt all Files" +msgstr "" + +#: templates/users.php:21 +msgid "Login Name" +msgstr "" + +#: templates/users.php:30 +msgid "Create" +msgstr "" + +#: templates/users.php:36 +msgid "Admin Recovery Password" +msgstr "" + +#: templates/users.php:37 templates/users.php:38 +msgid "" +"Enter the recovery password in order to recover the users files during " +"password change" +msgstr "" + +#: templates/users.php:42 +msgid "Default Storage" +msgstr "" + +#: templates/users.php:48 templates/users.php:142 +msgid "Unlimited" +msgstr "" + +#: templates/users.php:66 templates/users.php:157 +msgid "Other" +msgstr "" + +#: templates/users.php:84 +msgid "Username" +msgstr "" + +#: templates/users.php:91 +msgid "Storage" +msgstr "" + +#: templates/users.php:102 +msgid "change display name" +msgstr "" + +#: templates/users.php:106 +msgid "set new password" +msgstr "" + +#: templates/users.php:137 +msgid "Default" +msgstr "" diff --git a/l10n/km/user_ldap.po b/l10n/km/user_ldap.po new file mode 100644 index 00000000000..c6be8c9e68f --- /dev/null +++ b/l10n/km/user_ldap.po @@ -0,0 +1,406 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ajax/clearMappings.php:34 +msgid "Failed to clear the mappings." +msgstr "" + +#: ajax/deleteConfiguration.php:34 +msgid "Failed to delete the server configuration" +msgstr "" + +#: ajax/testConfiguration.php:36 +msgid "The configuration is valid and the connection could be established!" +msgstr "" + +#: ajax/testConfiguration.php:39 +msgid "" +"The configuration is valid, but the Bind failed. Please check the server " +"settings and credentials." +msgstr "" + +#: ajax/testConfiguration.php:43 +msgid "" +"The configuration is invalid. Please look in the ownCloud log for further " +"details." +msgstr "" + +#: js/settings.js:66 +msgid "Deletion failed" +msgstr "" + +#: js/settings.js:82 +msgid "Take over settings from recent server configuration?" +msgstr "" + +#: js/settings.js:83 +msgid "Keep settings?" +msgstr "" + +#: js/settings.js:97 +msgid "Cannot add server configuration" +msgstr "" + +#: js/settings.js:111 +msgid "mappings cleared" +msgstr "" + +#: js/settings.js:112 +msgid "Success" +msgstr "" + +#: js/settings.js:117 +msgid "Error" +msgstr "" + +#: js/settings.js:141 +msgid "Connection test succeeded" +msgstr "" + +#: js/settings.js:146 +msgid "Connection test failed" +msgstr "" + +#: js/settings.js:156 +msgid "Do you really want to delete the current Server Configuration?" +msgstr "" + +#: js/settings.js:157 +msgid "Confirm Deletion" +msgstr "" + +#: templates/settings.php:9 +msgid "" +"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may" +" experience unexpected behavior. Please ask your system administrator to " +"disable one of them." +msgstr "" + +#: templates/settings.php:12 +msgid "" +"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not " +"work. Please ask your system administrator to install it." +msgstr "" + +#: templates/settings.php:16 +msgid "Server configuration" +msgstr "" + +#: templates/settings.php:32 +msgid "Add Server Configuration" +msgstr "" + +#: templates/settings.php:37 +msgid "Host" +msgstr "" + +#: templates/settings.php:39 +msgid "" +"You can omit the protocol, except you require SSL. Then start with ldaps://" +msgstr "" + +#: templates/settings.php:40 +msgid "Base DN" +msgstr "" + +#: templates/settings.php:41 +msgid "One Base DN per line" +msgstr "" + +#: templates/settings.php:42 +msgid "You can specify Base DN for users and groups in the Advanced tab" +msgstr "" + +#: templates/settings.php:44 +msgid "User DN" +msgstr "" + +#: templates/settings.php:46 +msgid "" +"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." +msgstr "" + +#: templates/settings.php:47 +msgid "Password" +msgstr "" + +#: templates/settings.php:50 +msgid "For anonymous access, leave DN and Password empty." +msgstr "" + +#: templates/settings.php:51 +msgid "User Login Filter" +msgstr "" + +#: templates/settings.php:54 +#, php-format +msgid "" +"Defines the filter to apply, when login is attempted. %%uid replaces the " +"username in the login action. Example: \"uid=%%uid\"" +msgstr "" + +#: templates/settings.php:55 +msgid "User List Filter" +msgstr "" + +#: templates/settings.php:58 +msgid "" +"Defines the filter to apply, when retrieving users (no placeholders). " +"Example: \"objectClass=person\"" +msgstr "" + +#: templates/settings.php:59 +msgid "Group Filter" +msgstr "" + +#: templates/settings.php:62 +msgid "" +"Defines the filter to apply, when retrieving groups (no placeholders). " +"Example: \"objectClass=posixGroup\"" +msgstr "" + +#: templates/settings.php:66 +msgid "Connection Settings" +msgstr "" + +#: templates/settings.php:68 +msgid "Configuration Active" +msgstr "" + +#: templates/settings.php:68 +msgid "When unchecked, this configuration will be skipped." +msgstr "" + +#: templates/settings.php:69 +msgid "Port" +msgstr "" + +#: templates/settings.php:70 +msgid "Backup (Replica) Host" +msgstr "" + +#: templates/settings.php:70 +msgid "" +"Give an optional backup host. It must be a replica of the main LDAP/AD " +"server." +msgstr "" + +#: templates/settings.php:71 +msgid "Backup (Replica) Port" +msgstr "" + +#: templates/settings.php:72 +msgid "Disable Main Server" +msgstr "" + +#: templates/settings.php:72 +msgid "Only connect to the replica server." +msgstr "" + +#: templates/settings.php:73 +msgid "Use TLS" +msgstr "" + +#: templates/settings.php:73 +msgid "Do not use it additionally for LDAPS connections, it will fail." +msgstr "" + +#: templates/settings.php:74 +msgid "Case insensitve LDAP server (Windows)" +msgstr "" + +#: templates/settings.php:75 +msgid "Turn off SSL certificate validation." +msgstr "" + +#: templates/settings.php:75 +#, php-format +msgid "" +"Not recommended, use it for testing only! If connection only works with this" +" option, import the LDAP server's SSL certificate in your %s server." +msgstr "" + +#: templates/settings.php:76 +msgid "Cache Time-To-Live" +msgstr "" + +#: templates/settings.php:76 +msgid "in seconds. A change empties the cache." +msgstr "" + +#: templates/settings.php:78 +msgid "Directory Settings" +msgstr "" + +#: templates/settings.php:80 +msgid "User Display Name Field" +msgstr "" + +#: templates/settings.php:80 +msgid "The LDAP attribute to use to generate the user's display name." +msgstr "" + +#: templates/settings.php:81 +msgid "Base User Tree" +msgstr "" + +#: templates/settings.php:81 +msgid "One User Base DN per line" +msgstr "" + +#: templates/settings.php:82 +msgid "User Search Attributes" +msgstr "" + +#: templates/settings.php:82 templates/settings.php:85 +msgid "Optional; one attribute per line" +msgstr "" + +#: templates/settings.php:83 +msgid "Group Display Name Field" +msgstr "" + +#: templates/settings.php:83 +msgid "The LDAP attribute to use to generate the groups's display name." +msgstr "" + +#: templates/settings.php:84 +msgid "Base Group Tree" +msgstr "" + +#: templates/settings.php:84 +msgid "One Group Base DN per line" +msgstr "" + +#: templates/settings.php:85 +msgid "Group Search Attributes" +msgstr "" + +#: templates/settings.php:86 +msgid "Group-Member association" +msgstr "" + +#: templates/settings.php:88 +msgid "Special Attributes" +msgstr "" + +#: templates/settings.php:90 +msgid "Quota Field" +msgstr "" + +#: templates/settings.php:91 +msgid "Quota Default" +msgstr "" + +#: templates/settings.php:91 +msgid "in bytes" +msgstr "" + +#: templates/settings.php:92 +msgid "Email Field" +msgstr "" + +#: templates/settings.php:93 +msgid "User Home Folder Naming Rule" +msgstr "" + +#: templates/settings.php:93 +msgid "" +"Leave empty for user name (default). Otherwise, specify an LDAP/AD " +"attribute." +msgstr "" + +#: templates/settings.php:98 +msgid "Internal Username" +msgstr "" + +#: templates/settings.php:99 +msgid "" +"By default the internal username will be created from the UUID attribute. It" +" makes sure that the username is unique and characters do not need to be " +"converted. The internal username has the restriction that only these " +"characters are allowed: [ a-zA-Z0-9_.@- ]. Other characters are replaced " +"with their ASCII correspondence or simply omitted. On collisions a number " +"will be added/increased. The internal username is used to identify a user " +"internally. It is also the default name for the user home folder. It is also" +" a part of remote URLs, for instance for all *DAV services. With this " +"setting, the default behavior can be overridden. To achieve a similar " +"behavior as before ownCloud 5 enter the user display name attribute in the " +"following field. Leave it empty for default behavior. Changes will have " +"effect only on newly mapped (added) LDAP users." +msgstr "" + +#: templates/settings.php:100 +msgid "Internal Username Attribute:" +msgstr "" + +#: templates/settings.php:101 +msgid "Override UUID detection" +msgstr "" + +#: templates/settings.php:102 +msgid "" +"By default, the UUID attribute is automatically detected. The UUID attribute" +" is used to doubtlessly identify LDAP users and groups. Also, the internal " +"username will be created based on the UUID, if not specified otherwise " +"above. You can override the setting and pass an attribute of your choice. " +"You must make sure that the attribute of your choice can be fetched for both" +" users and groups and it is unique. Leave it empty for default behavior. " +"Changes will have effect only on newly mapped (added) LDAP users and groups." +msgstr "" + +#: templates/settings.php:103 +msgid "UUID Attribute:" +msgstr "" + +#: templates/settings.php:104 +msgid "Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:105 +msgid "" +"Usernames are used to store and assign (meta) data. In order to precisely " +"identify and recognize users, each LDAP user will have a internal username. " +"This requires a mapping from username to LDAP user. The created username is " +"mapped to the UUID of the LDAP user. Additionally the DN is cached as well " +"to reduce LDAP interaction, but it is not used for identification. If the DN" +" changes, the changes will be found. The internal username is used all over." +" Clearing the mappings will have leftovers everywhere. Clearing the mappings" +" is not configuration sensitive, it affects all LDAP configurations! Never " +"clear the mappings in a production environment, only in a testing or " +"experimental stage." +msgstr "" + +#: templates/settings.php:106 +msgid "Clear Username-LDAP User Mapping" +msgstr "" + +#: templates/settings.php:106 +msgid "Clear Groupname-LDAP Group Mapping" +msgstr "" + +#: templates/settings.php:108 +msgid "Test Configuration" +msgstr "" + +#: templates/settings.php:108 +msgid "Help" +msgstr "" diff --git a/l10n/km/user_webdavauth.po b/l10n/km/user_webdavauth.po new file mode 100644 index 00000000000..1b1ffbc4311 --- /dev/null +++ b/l10n/km/user_webdavauth.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# +# Translators: +msgid "" +msgstr "" +"Project-Id-Version: ownCloud\n" +"Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 11:11+0000\n" +"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"Language-Team: Khmer (http://www.transifex.com/projects/p/owncloud/language/km/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: km\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: templates/settings.php:3 +msgid "WebDAV Authentication" +msgstr "" + +#: templates/settings.php:4 +msgid "Address: " +msgstr "" + +#: templates/settings.php:7 +msgid "" +"The user credentials will be sent to this address. This plugin checks the " +"response and will interpret the HTTP statuscodes 401 and 403 as invalid " +"credentials, and all other responses as valid credentials." +msgstr "" diff --git a/l10n/ko/files.po b/l10n/ko/files.po index f97b6b2dd26..1ab0e4053ab 100644 --- a/l10n/ko/files.po +++ b/l10n/ko/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ko/files_sharing.po b/l10n/ko/files_sharing.po index fcbb87f743c..434e19ca27a 100644 --- a/l10n/ko/files_sharing.po +++ b/l10n/ko/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Korean (http://www.transifex.com/projects/p/owncloud/language/ko/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files.po b/l10n/ku_IQ/files.po index 65a43a82d90..99b5793ea0d 100644 --- a/l10n/ku_IQ/files.po +++ b/l10n/ku_IQ/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-11 06:47-0400\n" -"PO-Revision-Date: 2013-09-10 18:00+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ku_IQ/files_sharing.po b/l10n/ku_IQ/files_sharing.po index 1171bd5e1ae..d1abf7c6c82 100644 --- a/l10n/ku_IQ/files_sharing.po +++ b/l10n/ku_IQ/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Kurdish (Iraq) (http://www.transifex.com/projects/p/owncloud/language/ku_IQ/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lb/files.po b/l10n/lb/files.po index 02542786a65..94e9d242643 100644 --- a/l10n/lb/files.po +++ b/l10n/lb/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Fehler" @@ -127,57 +127,57 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "ersetzen" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "ofbriechen" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "réckgängeg man" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -215,15 +215,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Numm" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Gréisst" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Geännert" @@ -300,33 +300,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Hei ass näischt. Lued eppes rop!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Download" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "Net méi deelen" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Läschen" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Upload ze grouss" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Fichieren gi gescannt, war weg." -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Momentane Scan" diff --git a/l10n/lb/files_sharing.po b/l10n/lb/files_sharing.po index 29fcd6c34e9..3fba12cda24 100644 --- a/l10n/lb/files_sharing.po +++ b/l10n/lb/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Luxembourgish (http://www.transifex.com/projects/p/owncloud/language/lb/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lt_LT/core.po b/l10n/lt_LT/core.po index e8292e89ce8..8887099c7a2 100644 --- a/l10n/lt_LT/core.po +++ b/l10n/lt_LT/core.po @@ -3,6 +3,7 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 # mambuta <vspyshkin@gmail.com>, 2013 # Roman Deniobe <rms200x@gmail.com>, 2013 # fizikiukas <fizikiukas@gmail.com>, 2013 @@ -10,9 +11,9 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:50+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-13 07:00+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -31,28 +32,28 @@ msgstr "grupė" #: ajax/update.php:11 msgid "Turned on maintenance mode" -msgstr "" +msgstr "Įjungta priežiūros veiksena" #: ajax/update.php:14 msgid "Turned off maintenance mode" -msgstr "" +msgstr "Išjungta priežiūros veiksena" #: ajax/update.php:17 msgid "Updated database" -msgstr "" +msgstr "Atnaujinta duomenų bazė" #: ajax/update.php:20 msgid "Updating filecache, this may take really long..." -msgstr "" +msgstr "Atnaujinama failų talpykla, tai gali užtrukti labai ilgai..." #: ajax/update.php:23 msgid "Updated filecache" -msgstr "" +msgstr "Atnaujinta failų talpykla" #: ajax/update.php:26 #, php-format msgid "... %d%% done ..." -msgstr "" +msgstr "... %d%% atlikta ..." #: ajax/vcategories/add.php:26 ajax/vcategories/edit.php:25 msgid "Category type not provided." @@ -202,9 +203,9 @@ msgstr "vakar" #: js/js.js:826 msgid "%n day ago" msgid_plural "%n days ago" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "prieš %n dieną" +msgstr[1] "prieš %n dienas" +msgstr[2] "prieš %n dienų" #: js/js.js:827 msgid "last month" @@ -316,7 +317,7 @@ msgstr "Slaptažodis" #: js/share.js:198 msgid "Allow Public Upload" -msgstr "" +msgstr "Leisti viešą įkėlimą" #: js/share.js:202 msgid "Email link to person" @@ -444,7 +445,7 @@ msgid "" "will be no way to get your data back after your password is reset. If you " "are not sure what to do, please contact your administrator before you " "continue. Do you really want to continue?" -msgstr "" +msgstr "Jūsų failai yra užšifruoti. Jei neįjungėte atstatymo rakto, nebus galimybės atstatyti duomenų po slaptažodžio atstatymo. Jei nesate tikri ką daryti, prašome susisiekti su administratoriumi prie tęsiant. Ar tikrai tęsti?" #: lostpassword/templates/lostpassword.php:24 msgid "Yes, I really want to reset my password now" @@ -507,7 +508,7 @@ msgid "" "View it: %s\n" "\n" "Cheers!" -msgstr "" +msgstr "Labas,\n\nInformuojame, kad %s pasidalino su Jumis %s.\nPažiūrėkite: %s\n\nLinkėjimai!" #: templates/edit_categories_dialog.php:4 msgid "Edit categories" @@ -529,7 +530,7 @@ msgstr "Jūsų PHP versija yra pažeidžiama prieš NULL Byte ataką (CVE-2006-7 #: templates/installation.php:26 #, php-format msgid "Please update your PHP installation to use %s securely." -msgstr "" +msgstr "Prašome atnaujinti savo PHP, kad saugiai naudoti %s." #: templates/installation.php:32 msgid "" @@ -554,7 +555,7 @@ msgstr "Jūsų failai yra tikriausiai prieinami per internetą nes .htaccess fai msgid "" "For information how to properly configure your server, please see the <a " "href=\"%s\" target=\"_blank\">documentation</a>." -msgstr "" +msgstr "Kad gauti informaciją apie tai kaip tinkamai sukonfigūruoti savo serverį, prašome skaityti <a href=\"%s\" target=\"_blank\">dokumentaciją</a>." #: templates/installation.php:47 msgid "Create an <strong>admin account</strong>" @@ -646,7 +647,7 @@ msgstr "Alternatyvūs prisijungimai" msgid "" "Hey there,<br><br>just letting you know that %s shared »%s« with you.<br><a " "href=\"%s\">View it!</a><br><br>Cheers!" -msgstr "" +msgstr "Labas,<br><br>tik informuojame, kad %s pasidalino su Jumis »%s«.<br><a href=\"%s\">Peržiūrėk!</a><br><br>Linkėjimai!" #: templates/update.php:3 #, php-format diff --git a/l10n/lt_LT/files.po b/l10n/lt_LT/files.po index af72860fc58..13c09972ea5 100644 --- a/l10n/lt_LT/files.po +++ b/l10n/lt_LT/files.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 # fizikiukas <fizikiukas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -30,11 +31,11 @@ msgstr "Nepavyko perkelti %s" #: ajax/upload.php:16 ajax/upload.php:45 msgid "Unable to set upload directory." -msgstr "" +msgstr "Nepavyksta nustatyti įkėlimų katalogo." #: ajax/upload.php:22 msgid "Invalid Token" -msgstr "" +msgstr "Netinkamas ženklas" #: ajax/upload.php:59 msgid "No file was uploaded. Unknown error" @@ -159,27 +160,27 @@ msgstr "anuliuoti" #: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%n aplankas" +msgstr[1] "%n aplankai" +msgstr[2] "%n aplankų" #: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%n failas" +msgstr[1] "%n failai" +msgstr[2] "%n failų" #: js/filelist.js:432 msgid "{dirs} and {files}" -msgstr "" +msgstr "{dirs} ir {files}" #: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Įkeliamas %n failas" +msgstr[1] "Įkeliami %n failai" +msgstr[2] "Įkeliama %n failų" #: js/filelist.js:628 msgid "files uploading" @@ -211,7 +212,7 @@ msgstr "Jūsų vieta serveryje beveik visa užimta ({usedSpacePercent}%)" msgid "" "Encryption was disabled but your files are still encrypted. Please go to " "your personal settings to decrypt your files." -msgstr "" +msgstr "Šifravimas buvo išjungtas, bet Jūsų failai vis dar užšifruoti. Prašome eiti į asmeninius nustatymus ir iššifruoti savo failus." #: js/files.js:245 msgid "" @@ -234,7 +235,7 @@ msgstr "Pakeista" #: lib/app.php:73 #, php-format msgid "%s could not be renamed" -msgstr "" +msgstr "%s negali būti pervadintas" #: lib/helper.php:11 templates/index.php:18 msgid "Upload" diff --git a/l10n/lt_LT/files_encryption.po b/l10n/lt_LT/files_encryption.po index b8b075046ac..b37c78e711c 100644 --- a/l10n/lt_LT/files_encryption.po +++ b/l10n/lt_LT/files_encryption.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 # fizikiukas <fizikiukas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-21 08:10-0400\n" -"PO-Revision-Date: 2013-08-19 19:20+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-13 08:20+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -46,13 +47,13 @@ msgstr "Slaptažodis nebuvo pakeistas. Gali būti, kad buvo neteisingai suvestas #: ajax/updatePrivateKeyPassword.php:51 msgid "Private key password successfully updated." -msgstr "" +msgstr "Privataus rakto slaptažodis buvo sėkmingai atnaujintas." #: ajax/updatePrivateKeyPassword.php:53 msgid "" "Could not update the private key password. Maybe the old password was not " "correct." -msgstr "" +msgstr "Nepavyko atnaujinti privataus rakto slaptažodžio. Gali būti, kad buvo neteisingai suvestas senasis." #: files/error.php:7 msgid "" @@ -60,22 +61,22 @@ msgid "" "ownCloud system (e.g. your corporate directory). You can update your private" " key password in your personal settings to recover access to your encrypted " "files." -msgstr "" +msgstr "Jūsų privatus raktas yra netinkamas! Panašu, kad Jūsų slaptažodis buvo pakeistas išorėje ownCloud sistemos (pvz. Jūsų organizacijos kataloge). Galite atnaujinti savo privataus rakto slaptažodį savo asmeniniuose nustatymuose, kad atkurti prieigą prie savo šifruotų failų." -#: hooks/hooks.php:41 +#: hooks/hooks.php:51 msgid "Missing requirements." -msgstr "" +msgstr "Trūkstami laukai." -#: hooks/hooks.php:42 +#: hooks/hooks.php:52 msgid "" "Please make sure that PHP 5.3.3 or newer is installed and that OpenSSL " "together with the PHP extension is enabled and configured properly. For now," " the encryption app has been disabled." -msgstr "" +msgstr "Prašome įsitikinti, kad PHP 5.3.3 ar naujesnė yra įdiegta ir kad OpenSSL kartu su PHP plėtiniu yra šjungti ir teisingai sukonfigūruoti. Kol kas šifravimo programa bus išjungta." -#: hooks/hooks.php:249 +#: hooks/hooks.php:250 msgid "Following users are not set up for encryption:" -msgstr "" +msgstr "Sekantys naudotojai nenustatyti šifravimui:" #: js/settings-admin.js:11 msgid "Saving..." @@ -85,15 +86,15 @@ msgstr "Saugoma..." msgid "" "Your private key is not valid! Maybe the your password was changed from " "outside." -msgstr "" +msgstr "Jūsų privatus raktas yra netinkamas! Galbūt Jūsų slaptažodis buvo pakeistas iš išorės?" #: templates/invalid_private_key.php:7 msgid "You can unlock your private key in your " -msgstr "" +msgstr "Galite atrakinti savo privatų raktą savo" #: templates/invalid_private_key.php:7 msgid "personal settings" -msgstr "" +msgstr "asmeniniai nustatymai" #: templates/settings-admin.php:5 templates/settings-personal.php:4 msgid "Encryption" @@ -102,11 +103,11 @@ msgstr "Šifravimas" #: templates/settings-admin.php:10 msgid "" "Enable recovery key (allow to recover users files in case of password loss):" -msgstr "" +msgstr "Įjunkite atkūrimo raktą, (leisti atkurti naudotojų failus praradus slaptažodį):" #: templates/settings-admin.php:14 msgid "Recovery key password" -msgstr "" +msgstr "Atkūrimo rakto slaptažodis" #: templates/settings-admin.php:21 templates/settings-personal.php:54 msgid "Enabled" @@ -118,15 +119,15 @@ msgstr "Išjungta" #: templates/settings-admin.php:34 msgid "Change recovery key password:" -msgstr "" +msgstr "Pakeisti atkūrimo rakto slaptažodį:" #: templates/settings-admin.php:41 msgid "Old Recovery key password" -msgstr "" +msgstr "Senas atkūrimo rakto slaptažodis" #: templates/settings-admin.php:48 msgid "New Recovery key password" -msgstr "" +msgstr "Naujas atkūrimo rakto slaptažodis" #: templates/settings-admin.php:53 msgid "Change Password" @@ -134,43 +135,43 @@ msgstr "Pakeisti slaptažodį" #: templates/settings-personal.php:11 msgid "Your private key password no longer match your log-in password:" -msgstr "" +msgstr "Privatus rakto slaptažodis daugiau neatitinka Jūsų prisijungimo slaptažodžio:" #: templates/settings-personal.php:14 msgid "Set your old private key password to your current log-in password." -msgstr "" +msgstr "Nustatyti Jūsų privataus rakto slaptažodį į Jūsų dabartinį prisijungimo." #: templates/settings-personal.php:16 msgid "" " If you don't remember your old password you can ask your administrator to " "recover your files." -msgstr "" +msgstr "Jei nepamenate savo seno slaptažodžio, galite paprašyti administratoriaus atkurti Jūsų failus." #: templates/settings-personal.php:24 msgid "Old log-in password" -msgstr "" +msgstr "Senas prisijungimo slaptažodis" #: templates/settings-personal.php:30 msgid "Current log-in password" -msgstr "" +msgstr "Dabartinis prisijungimo slaptažodis" #: templates/settings-personal.php:35 msgid "Update Private Key Password" -msgstr "" +msgstr "Atnaujinti privataus rakto slaptažodį" #: templates/settings-personal.php:45 msgid "Enable password recovery:" -msgstr "" +msgstr "Įjungti slaptažodžio atkūrimą:" #: templates/settings-personal.php:47 msgid "" "Enabling this option will allow you to reobtain access to your encrypted " "files in case of password loss" -msgstr "" +msgstr "Įjungus šią funkciją jums bus suteiktas pakartotinis priėjimas prie Jūsų šifruotų failų pamiršus slaptažodį." #: templates/settings-personal.php:63 msgid "File recovery settings updated" -msgstr "Failų atstatymo nustatymai pakeisti" +msgstr "Failų atkūrimo nustatymai pakeisti" #: templates/settings-personal.php:64 msgid "Could not update file recovery" diff --git a/l10n/lt_LT/files_sharing.po b/l10n/lt_LT/files_sharing.po index 217b1dcfb16..1ce65e7a066 100644 --- a/l10n/lt_LT/files_sharing.po +++ b/l10n/lt_LT/files_sharing.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 # fizikiukas <fizikiukas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,7 +21,7 @@ msgstr "" #: templates/authenticate.php:4 msgid "The password is wrong. Try again." -msgstr "" +msgstr "Netinka slaptažodis: Bandykite dar kartą." #: templates/authenticate.php:7 msgid "Password" @@ -32,27 +33,27 @@ msgstr "Išsaugoti" #: templates/part.404.php:3 msgid "Sorry, this link doesn’t seem to work anymore." -msgstr "" +msgstr "Atleiskite, panašu, kad nuoroda yra neveiksni." #: templates/part.404.php:4 msgid "Reasons might be:" -msgstr "" +msgstr "Galimos priežastys:" #: templates/part.404.php:6 msgid "the item was removed" -msgstr "" +msgstr "elementas buvo pašalintas" #: templates/part.404.php:7 msgid "the link expired" -msgstr "" +msgstr "baigėsi nuorodos galiojimo laikas" #: templates/part.404.php:8 msgid "sharing is disabled" -msgstr "" +msgstr "dalinimasis yra išjungtas" #: templates/part.404.php:10 msgid "For more info, please ask the person who sent this link." -msgstr "" +msgstr "Dėl tikslesnės informacijos susisiekite su asmeniu atsiuntusiu nuorodą." #: templates/public.php:15 #, php-format diff --git a/l10n/lt_LT/files_trashbin.po b/l10n/lt_LT/files_trashbin.po index febfc2f1b01..5e630911f65 100644 --- a/l10n/lt_LT/files_trashbin.po +++ b/l10n/lt_LT/files_trashbin.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 # fizikiukas <fizikiukas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-15 04:47-0400\n" -"PO-Revision-Date: 2013-08-15 08:48+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-12 20:30+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,47 +29,47 @@ msgstr "Nepavyko negrįžtamai ištrinti %s" msgid "Couldn't restore %s" msgstr "Nepavyko atkurti %s" -#: js/trash.js:7 js/trash.js:100 +#: js/trash.js:7 js/trash.js:102 msgid "perform restore operation" msgstr "atkurti" -#: js/trash.js:20 js/trash.js:48 js/trash.js:118 js/trash.js:146 +#: js/trash.js:20 js/trash.js:49 js/trash.js:120 js/trash.js:148 msgid "Error" msgstr "Klaida" -#: js/trash.js:36 +#: js/trash.js:37 msgid "delete file permanently" msgstr "failą ištrinti negrįžtamai" -#: js/trash.js:127 +#: js/trash.js:129 msgid "Delete permanently" msgstr "Ištrinti negrįžtamai" -#: js/trash.js:182 templates/index.php:17 +#: js/trash.js:184 templates/index.php:17 msgid "Name" msgstr "Pavadinimas" -#: js/trash.js:183 templates/index.php:27 +#: js/trash.js:185 templates/index.php:27 msgid "Deleted" msgstr "Ištrinti" -#: js/trash.js:191 +#: js/trash.js:193 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -msgstr[2] "" +msgstr[2] "%n aplankų" -#: js/trash.js:197 +#: js/trash.js:199 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -msgstr[2] "" +msgstr[2] "%n failų" -#: lib/trash.php:819 lib/trash.php:821 +#: lib/trash.php:814 lib/trash.php:816 msgid "restored" -msgstr "" +msgstr "atstatyta" #: templates/index.php:9 msgid "Nothing in here. Your trash bin is empty!" diff --git a/l10n/lt_LT/files_versions.po b/l10n/lt_LT/files_versions.po index d3d119b1c3f..e7bf83a2ed4 100644 --- a/l10n/lt_LT/files_versions.po +++ b/l10n/lt_LT/files_versions.po @@ -3,13 +3,14 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-07-28 01:56-0400\n" -"PO-Revision-Date: 2013-07-27 06:10+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 20:00+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -28,16 +29,16 @@ msgstr "Versijos" #: js/versions.js:53 msgid "Failed to revert {file} to revision {timestamp}." -msgstr "" +msgstr "Nepavyko atstatyti {file} į būseną {timestamp}." #: js/versions.js:79 msgid "More versions..." -msgstr "" +msgstr "Daugiau versijų..." #: js/versions.js:116 msgid "No other versions available" -msgstr "" +msgstr "Nėra daugiau versijų" -#: js/versions.js:149 +#: js/versions.js:145 msgid "Restore" msgstr "Atstatyti" diff --git a/l10n/lt_LT/lib.po b/l10n/lt_LT/lib.po index 21df78c7b6a..357eeebae9a 100644 --- a/l10n/lt_LT/lib.po +++ b/l10n/lt_LT/lib.po @@ -4,13 +4,15 @@ # # Translators: # fizikiukas <fizikiukas@gmail.com>, 2013 +# Liudas <liudas@aksioma.lt>, 2013 +# fizikiukas <fizikiukas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-27 11:18-0400\n" -"PO-Revision-Date: 2013-08-26 20:00+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-13 07:00+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -23,11 +25,11 @@ msgstr "" msgid "" "App \"%s\" can't be installed because it is not compatible with this version" " of ownCloud." -msgstr "" +msgstr "Programa „%s“ negali būti įdiegta, nes yra nesuderinama su šia ownCloud versija." #: app.php:250 msgid "No app name specified" -msgstr "" +msgstr "Nenurodytas programos pavadinimas" #: app.php:361 msgid "Help" @@ -49,10 +51,10 @@ msgstr "Vartotojai" msgid "Admin" msgstr "Administravimas" -#: app.php:837 +#: app.php:839 #, php-format msgid "Failed to upgrade \"%s\"." -msgstr "" +msgstr "Nepavyko pakelti „%s“ versijos." #: defaults.php:35 msgid "web services under your control" @@ -61,7 +63,7 @@ msgstr "jūsų valdomos web paslaugos" #: files.php:66 files.php:98 #, php-format msgid "cannot open \"%s\"" -msgstr "" +msgstr "nepavyksta atverti „%s“" #: files.php:226 msgid "ZIP download is turned off." @@ -83,63 +85,63 @@ msgstr "Pasirinkti failai per dideli archyvavimui į ZIP." msgid "" "Download the files in smaller chunks, seperately or kindly ask your " "administrator." -msgstr "" +msgstr "Atsisiųskite failus mažesnėmis dalimis atskirai, arba mandagiai prašykite savo administratoriaus." #: installer.php:63 msgid "No source specified when installing app" -msgstr "" +msgstr "Nenurodytas šaltinis diegiant programą" #: installer.php:70 msgid "No href specified when installing app from http" -msgstr "" +msgstr "Nenurodytas href diegiant programą iš http" #: installer.php:75 msgid "No path specified when installing app from local file" -msgstr "" +msgstr "Nenurodytas kelias diegiant programą iš vietinio failo" #: installer.php:89 #, php-format msgid "Archives of type %s are not supported" -msgstr "" +msgstr "%s tipo archyvai nepalaikomi" #: installer.php:103 msgid "Failed to open archive when installing app" -msgstr "" +msgstr "Nepavyko atverti archyvo diegiant programą" -#: installer.php:123 +#: installer.php:125 msgid "App does not provide an info.xml file" -msgstr "" +msgstr "Programa nepateikia info.xml failo" -#: installer.php:129 +#: installer.php:131 msgid "App can't be installed because of not allowed code in the App" -msgstr "" +msgstr "Programa negali būti įdiegta, nes turi neleistiną kodą" -#: installer.php:138 +#: installer.php:140 msgid "" "App can't be installed because it is not compatible with this version of " "ownCloud" -msgstr "" +msgstr "Programa negali būti įdiegta, nes yra nesuderinama su šia ownCloud versija" -#: installer.php:144 +#: installer.php:146 msgid "" "App can't be installed because it contains the <shipped>true</shipped> tag " "which is not allowed for non shipped apps" -msgstr "" +msgstr "Programa negali būti įdiegta, nes turi <shipped>true</shipped> žymę, kuri yra neleistina ne kartu platinamoms programoms" -#: installer.php:150 +#: installer.php:152 msgid "" "App can't be installed because the version in info.xml/version is not the " "same as the version reported from the app store" -msgstr "" +msgstr "Programa negali būti įdiegta, nes versija pateikta info.xml/version nesutampa su versija deklaruota programų saugykloje" -#: installer.php:160 +#: installer.php:162 msgid "App directory already exists" -msgstr "" +msgstr "Programos aplankas jau egzistuoja" -#: installer.php:173 +#: installer.php:175 #, php-format msgid "Can't create app folder. Please fix permissions. %s" -msgstr "" +msgstr "Nepavyksta sukurti aplanko. Prašome pataisyti leidimus. %s" #: json.php:28 msgid "Application is not enabled" @@ -168,31 +170,31 @@ msgstr "Paveikslėliai" #: setup/abstractdatabase.php:22 #, php-format msgid "%s enter the database username." -msgstr "" +msgstr "%s įrašykite duombazės naudotojo vardą." #: setup/abstractdatabase.php:25 #, php-format msgid "%s enter the database name." -msgstr "" +msgstr "%s įrašykite duombazės pavadinimą." #: setup/abstractdatabase.php:28 #, php-format msgid "%s you may not use dots in the database name" -msgstr "" +msgstr "%s negalite naudoti taškų duombazės pavadinime" #: setup/mssql.php:20 #, php-format msgid "MS SQL username and/or password not valid: %s" -msgstr "" +msgstr "MS SQL naudotojo vardas ir/arba slaptažodis netinka: %s" #: setup/mssql.php:21 setup/mysql.php:13 setup/oci.php:114 #: setup/postgresql.php:24 setup/postgresql.php:70 msgid "You need to enter either an existing account or the administrator." -msgstr "" +msgstr "Turite prisijungti su egzistuojančia paskyra arba su administratoriumi." #: setup/mysql.php:12 msgid "MySQL username and/or password not valid" -msgstr "" +msgstr "Neteisingas MySQL naudotojo vardas ir/arba slaptažodis" #: setup/mysql.php:67 setup/oci.php:54 setup/oci.php:121 setup/oci.php:147 #: setup/oci.php:154 setup/oci.php:165 setup/oci.php:172 setup/oci.php:181 @@ -201,7 +203,7 @@ msgstr "" #: setup/postgresql.php:125 setup/postgresql.php:134 #, php-format msgid "DB Error: \"%s\"" -msgstr "" +msgstr "DB klaida: \"%s\"" #: setup/mysql.php:68 setup/oci.php:55 setup/oci.php:122 setup/oci.php:148 #: setup/oci.php:155 setup/oci.php:166 setup/oci.php:182 setup/oci.php:190 @@ -209,119 +211,119 @@ msgstr "" #: setup/postgresql.php:116 setup/postgresql.php:126 setup/postgresql.php:135 #, php-format msgid "Offending command was: \"%s\"" -msgstr "" +msgstr "Vykdyta komanda buvo: \"%s\"" #: setup/mysql.php:85 #, php-format msgid "MySQL user '%s'@'localhost' exists already." -msgstr "" +msgstr "MySQL naudotojas '%s'@'localhost' jau egzistuoja." #: setup/mysql.php:86 msgid "Drop this user from MySQL" -msgstr "" +msgstr "Pašalinti šį naudotoją iš MySQL" #: setup/mysql.php:91 #, php-format msgid "MySQL user '%s'@'%%' already exists" -msgstr "" +msgstr "MySQL naudotojas '%s'@'%%' jau egzistuoja" #: setup/mysql.php:92 msgid "Drop this user from MySQL." -msgstr "" +msgstr "Pašalinti šį naudotoją iš MySQL." #: setup/oci.php:34 msgid "Oracle connection could not be established" -msgstr "" +msgstr "Nepavyko sukurti Oracle ryšio" #: setup/oci.php:41 setup/oci.php:113 msgid "Oracle username and/or password not valid" -msgstr "" +msgstr "Neteisingas Oracle naudotojo vardas ir/arba slaptažodis" #: setup/oci.php:173 setup/oci.php:205 #, php-format msgid "Offending command was: \"%s\", name: %s, password: %s" -msgstr "" +msgstr "Vykdyta komanda buvo: \"%s\", name: %s, password: %s" #: setup/postgresql.php:23 setup/postgresql.php:69 msgid "PostgreSQL username and/or password not valid" -msgstr "" +msgstr "Neteisingas PostgreSQL naudotojo vardas ir/arba slaptažodis" #: setup.php:28 msgid "Set an admin username." -msgstr "" +msgstr "Nustatyti administratoriaus naudotojo vardą." #: setup.php:31 msgid "Set an admin password." -msgstr "" +msgstr "Nustatyti administratoriaus slaptažodį." #: setup.php:184 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." -msgstr "" +msgstr "Jūsų serveris nėra tvarkingai nustatytas leisti failų sinchronizaciją, nes WebDAV sąsaja panašu, kad yra sugadinta." #: setup.php:185 #, php-format msgid "Please double check the <a href='%s'>installation guides</a>." -msgstr "" +msgstr "Prašome pažiūrėkite dar kartą <a href='%s'>diegimo instrukcijas</a>." -#: template/functions.php:80 +#: template/functions.php:96 msgid "seconds ago" msgstr "prieš sekundę" -#: template/functions.php:81 +#: template/functions.php:97 msgid "%n minute ago" msgid_plural "%n minutes ago" -msgstr[0] "" -msgstr[1] "" -msgstr[2] " prieš %n minučių" +msgstr[0] "prieš %n min." +msgstr[1] "Prieš % minutes" +msgstr[2] "Prieš %n minučių" -#: template/functions.php:82 +#: template/functions.php:98 msgid "%n hour ago" msgid_plural "%n hours ago" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "prieš %n valandų" +msgstr[0] "Prieš %n valandą" +msgstr[1] "Prieš %n valandas" +msgstr[2] "Prieš %n valandų" -#: template/functions.php:83 +#: template/functions.php:99 msgid "today" msgstr "šiandien" -#: template/functions.php:84 +#: template/functions.php:100 msgid "yesterday" msgstr "vakar" -#: template/functions.php:85 +#: template/functions.php:101 msgid "%n day go" msgid_plural "%n days ago" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Prieš %n dieną" +msgstr[1] "Prieš %n dienas" +msgstr[2] "Prieš %n dienų" -#: template/functions.php:86 +#: template/functions.php:102 msgid "last month" msgstr "praeitą mėnesį" -#: template/functions.php:87 +#: template/functions.php:103 msgid "%n month ago" msgid_plural "%n months ago" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "prieš %n mėnesių" +msgstr[0] "Prieš %n mėnesį" +msgstr[1] "Prieš %n mėnesius" +msgstr[2] "Prieš %n mėnesių" -#: template/functions.php:88 +#: template/functions.php:104 msgid "last year" msgstr "praeitais metais" -#: template/functions.php:89 +#: template/functions.php:105 msgid "years ago" msgstr "prieš metus" #: template.php:297 msgid "Caused by:" -msgstr "" +msgstr "Iššaukė:" #: vcategories.php:188 vcategories.php:249 #, php-format msgid "Could not find category \"%s\"" -msgstr "" +msgstr "Nepavyko rasti kategorijos „%s“" diff --git a/l10n/lt_LT/settings.po b/l10n/lt_LT/settings.po index b60503e50a5..b8622c5d7bb 100644 --- a/l10n/lt_LT/settings.po +++ b/l10n/lt_LT/settings.po @@ -4,13 +4,16 @@ # # Translators: # fizikiukas <fizikiukas@gmail.com>, 2013 +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 +# Liudas <liudas@aksioma.lt>, 2013 +# fizikiukas <fizikiukas@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-13 07:50+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -29,11 +32,11 @@ msgstr "Autentikacijos klaida" #: ajax/changedisplayname.php:31 msgid "Your display name has been changed." -msgstr "" +msgstr "Jūsų rodomas vardas buvo pakeistas." #: ajax/changedisplayname.php:34 msgid "Unable to change display name" -msgstr "" +msgstr "Nepavyksta pakeisti rodomą vardą" #: ajax/creategroup.php:10 msgid "Group already exists" @@ -69,7 +72,7 @@ msgstr "Klaidinga užklausa" #: ajax/togglegroups.php:12 msgid "Admins can't remove themself from the admin group" -msgstr "" +msgstr "Administratoriai negali pašalinti savęs iš administratorių grupės" #: ajax/togglegroups.php:30 #, php-format @@ -103,11 +106,11 @@ msgstr "Prašome palaukti..." #: js/apps.js:79 js/apps.js:80 js/apps.js:100 msgid "Error while disabling app" -msgstr "" +msgstr "Klaida išjungiant programą" #: js/apps.js:99 js/apps.js:112 js/apps.js:113 msgid "Error while enabling app" -msgstr "" +msgstr "Klaida įjungiant programą" #: js/apps.js:123 msgid "Updating...." @@ -131,7 +134,7 @@ msgstr "Atnaujinta" #: js/personal.js:150 msgid "Decrypting files... Please wait, this can take some time." -msgstr "" +msgstr "Iššifruojami failai... Prašome palaukti, tai gali užtrukti." #: js/personal.js:172 msgid "Saving..." @@ -156,7 +159,7 @@ msgstr "Grupės" #: js/users.js:97 templates/users.php:89 templates/users.php:124 msgid "Group Admin" -msgstr "" +msgstr "Grupės administratorius" #: js/users.js:120 templates/users.php:164 msgid "Delete" @@ -193,22 +196,22 @@ msgid "" "configure your webserver in a way that the data directory is no longer " "accessible or you move the data directory outside the webserver document " "root." -msgstr "" +msgstr "Jūsų duomenų katalogas ir Jūsų failai turbūt yra pasiekiami per internetą. Failas .htaccess neveikia. Mes labai rekomenduojame sukonfigūruoti serverį taip, kad katalogas nebūtų daugiau pasiekiamas, arba iškelkite duomenis kitur iš webserverio šakninio aplanko." #: templates/admin.php:29 msgid "Setup Warning" -msgstr "" +msgstr "Nustatyti perspėjimą" #: templates/admin.php:32 msgid "" "Your web server is not yet properly setup to allow files synchronization " "because the WebDAV interface seems to be broken." -msgstr "" +msgstr "Jūsų serveris nėra tvarkingai nustatytas leisti failų sinchronizaciją, nes WebDAV sąsaja panašu, kad yra sugadinta." #: templates/admin.php:33 #, php-format msgid "Please double check the <a href=\"%s\">installation guides</a>." -msgstr "" +msgstr "Prašome pažiūrėkite dar kartą <a href=\"%s\">diegimo instrukcijas</a>." #: templates/admin.php:44 msgid "Module 'fileinfo' missing" @@ -218,11 +221,11 @@ msgstr "Trūksta 'fileinfo' modulio" msgid "" "The PHP module 'fileinfo' is missing. We strongly recommend to enable this " "module to get best results with mime-type detection." -msgstr "" +msgstr "Trūksta PHP modulio „fileinfo“. Labai rekomenduojame įjungti šį modulį, kad gauti geriausius rezultatus nustatant mime-tipą." #: templates/admin.php:58 msgid "Locale not working" -msgstr "" +msgstr "Lokalė neveikia" #: templates/admin.php:63 #, php-format @@ -230,11 +233,11 @@ msgid "" "System locale can't be set to %s. This means that there might be problems " "with certain characters in file names. We strongly suggest to install the " "required packages on your system to support %s." -msgstr "" +msgstr "Negalima nustatyti sistemos lokalės į %s. Tai reiškia, kad gali būti problemų su tam tikrais simboliais failų pavadinimuose. Labai rekomenduojame įdiegti reikalingus paketus Jūsų sistemoje, kad palaikyti %s." #: templates/admin.php:75 msgid "Internet connection not working" -msgstr "" +msgstr "Nėra interneto ryšio" #: templates/admin.php:78 msgid "" @@ -243,7 +246,7 @@ msgid "" "installation of 3rd party apps don´t work. Accessing files from remote and " "sending of notification emails might also not work. We suggest to enable " "internet connection for this server if you want to have all features." -msgstr "" +msgstr "Šis serveris neturi veikiančio ryšio. Tai reiškia, kas kai kurios funkcijos kaip išorinės saugyklos prijungimas, perspėjimai apie atnaujinimus ar trečių šalių programų įdiegimas neveikia. Failų pasiekimas iš kitur ir pranešimų siuntimas el. paštu gali taip pat neveikti. Rekomenduojame įjungti interneto ryšį šiame serveryje, jei norite naudoti visas funkcijas." #: templates/admin.php:92 msgid "Cron" @@ -251,17 +254,17 @@ msgstr "Cron" #: templates/admin.php:99 msgid "Execute one task with each page loaded" -msgstr "" +msgstr "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu" #: templates/admin.php:107 msgid "" "cron.php is registered at a webcron service to call cron.php once a minute " "over http." -msgstr "" +msgstr "cron.php yra registruotas tinklapio suplanuotų užduočių paslaugose, kad iškviesti cron.php kartą per minutę per http." #: templates/admin.php:115 msgid "Use systems cron service to call the cron.php file once a minute." -msgstr "" +msgstr "Naudoti sistemos planuotų užduočių paslaugą, kad iškvieti cron.php kartą per minutę." #: templates/admin.php:120 msgid "Sharing" @@ -269,11 +272,11 @@ msgstr "Dalijimasis" #: templates/admin.php:126 msgid "Enable Share API" -msgstr "" +msgstr "Įjungti Share API" #: templates/admin.php:127 msgid "Allow apps to use the Share API" -msgstr "" +msgstr "Leidžia programoms naudoti Share API" #: templates/admin.php:134 msgid "Allow links" @@ -281,16 +284,16 @@ msgstr "Lesti nuorodas" #: templates/admin.php:135 msgid "Allow users to share items to the public with links" -msgstr "" +msgstr "Leisti naudotojams viešai dalintis elementais su nuorodomis" #: templates/admin.php:143 msgid "Allow public uploads" -msgstr "" +msgstr "Leisti viešus įkėlimus" #: templates/admin.php:144 msgid "" "Allow users to enable others to upload into their publicly shared folders" -msgstr "" +msgstr "Leisti naudotojams įgalinti kitus įkelti į savo viešai dalinamus aplankus" #: templates/admin.php:152 msgid "Allow resharing" @@ -298,15 +301,15 @@ msgstr "Leisti dalintis" #: templates/admin.php:153 msgid "Allow users to share items shared with them again" -msgstr "" +msgstr "Leisti naudotojams toliau dalintis elementais pasidalintais su jais" #: templates/admin.php:160 msgid "Allow users to share with anyone" -msgstr "" +msgstr "Leisti naudotojams dalintis su bet kuo" #: templates/admin.php:163 msgid "Allow users to only share with users in their groups" -msgstr "" +msgstr "Leisti naudotojams dalintis tik su naudotojais savo grupėje" #: templates/admin.php:170 msgid "Security" @@ -314,19 +317,19 @@ msgstr "Saugumas" #: templates/admin.php:183 msgid "Enforce HTTPS" -msgstr "" +msgstr "Reikalauti HTTPS" #: templates/admin.php:185 #, php-format msgid "Forces the clients to connect to %s via an encrypted connection." -msgstr "" +msgstr "Verčia klientus jungtis prie %s per šifruotą ryšį." #: templates/admin.php:191 #, php-format msgid "" "Please connect to your %s via HTTPS to enable or disable the SSL " "enforcement." -msgstr "" +msgstr "Prašome prisijungti prie savo %s per HTTPS, kad įjungti ar išjungti SSL reikalavimą." #: templates/admin.php:203 msgid "Log" @@ -356,7 +359,7 @@ msgid "" "licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" " "target=\"_blank\"><abbr title=\"Affero General Public " "License\">AGPL</abbr></a>." -msgstr "" +msgstr "Sukurta <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud bendruomenės</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">pirminis kodas</a> platinamas pagal <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." #: templates/apps.php:13 msgid "Add your App" @@ -372,7 +375,7 @@ msgstr "Pasirinkite programą" #: templates/apps.php:39 msgid "See application page at apps.owncloud.com" -msgstr "" +msgstr "Žiūrėti programos puslapį svetainėje apps.owncloud.com" #: templates/apps.php:41 msgid "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" @@ -380,15 +383,15 @@ msgstr "<span class=\"licence\"></span>- autorius<span class=\"author\"></span>" #: templates/help.php:4 msgid "User Documentation" -msgstr "" +msgstr "Naudotojo dokumentacija" #: templates/help.php:6 msgid "Administrator Documentation" -msgstr "" +msgstr "Administratoriaus dokumentacija" #: templates/help.php:9 msgid "Online Documentation" -msgstr "" +msgstr "Dokumentacija tinkle" #: templates/help.php:11 msgid "Forum" @@ -400,7 +403,7 @@ msgstr "Klaidų sekimas" #: templates/help.php:17 msgid "Commercial Support" -msgstr "" +msgstr "Komercinis palaikymas" #: templates/personal.php:8 msgid "Get the apps to sync your files" @@ -408,12 +411,12 @@ msgstr "Atsisiųskite programėlių, kad sinchronizuotumėte savo failus" #: templates/personal.php:19 msgid "Show First Run Wizard again" -msgstr "" +msgstr "Rodyti pirmo karto vedlį dar kartą" #: templates/personal.php:27 #, php-format msgid "You have used <strong>%s</strong> of the available <strong>%s</strong>" -msgstr "" +msgstr "Jūs naudojate <strong>%s</strong> iš galimų <strong>%s</strong>" #: templates/personal.php:39 templates/users.php:23 templates/users.php:86 msgid "Password" @@ -441,7 +444,7 @@ msgstr "Pakeisti slaptažodį" #: templates/personal.php:58 templates/users.php:85 msgid "Display Name" -msgstr "" +msgstr "Rodyti vardą" #: templates/personal.php:73 msgid "Email" @@ -472,7 +475,7 @@ msgstr "WebDAV" msgid "" "Use this address to <a href=\"%s/server/5.0/user_manual/files/files.html\" " "target=\"_blank\">access your Files via WebDAV</a>" -msgstr "" +msgstr "Naudokite šį adresą, kad <a href=\"%s/server/5.0/user_manual/files/files.html\" target=\"_blank\">pasiekti savo failus per WebDAV</a>" #: templates/personal.php:117 msgid "Encryption" @@ -480,15 +483,15 @@ msgstr "Šifravimas" #: templates/personal.php:119 msgid "The encryption app is no longer enabled, decrypt all your file" -msgstr "" +msgstr "Šifravimo programa nebėra įjungta, iššifruokite visus savo failus" #: templates/personal.php:125 msgid "Log-in password" -msgstr "" +msgstr "Prisijungimo slaptažodis" #: templates/personal.php:130 msgid "Decrypt all Files" -msgstr "" +msgstr "Iššifruoti visus failus" #: templates/users.php:21 msgid "Login Name" @@ -500,17 +503,17 @@ msgstr "Sukurti" #: templates/users.php:36 msgid "Admin Recovery Password" -msgstr "" +msgstr "Administracinis atkūrimo slaptažodis" #: templates/users.php:37 templates/users.php:38 msgid "" "Enter the recovery password in order to recover the users files during " "password change" -msgstr "" +msgstr "Įveskite atkūrimo slaptažodį, kad atkurti naudotojo failus keičiant slaptažodį" #: templates/users.php:42 msgid "Default Storage" -msgstr "" +msgstr "Numatytas saugojimas" #: templates/users.php:48 templates/users.php:142 msgid "Unlimited" @@ -526,11 +529,11 @@ msgstr "Prisijungimo vardas" #: templates/users.php:91 msgid "Storage" -msgstr "" +msgstr "Saugojimas" #: templates/users.php:102 msgid "change display name" -msgstr "" +msgstr "keisti rodomą vardą" #: templates/users.php:106 msgid "set new password" diff --git a/l10n/lt_LT/user_ldap.po b/l10n/lt_LT/user_ldap.po index a9962fc3311..5baac49ff31 100644 --- a/l10n/lt_LT/user_ldap.po +++ b/l10n/lt_LT/user_ldap.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-12 21:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" @@ -108,7 +108,7 @@ msgstr "" #: templates/settings.php:37 msgid "Host" -msgstr "" +msgstr "Mazgas" #: templates/settings.php:39 msgid "" diff --git a/l10n/lt_LT/user_webdavauth.po b/l10n/lt_LT/user_webdavauth.po index 72eda2b521b..fae87f29dda 100644 --- a/l10n/lt_LT/user_webdavauth.po +++ b/l10n/lt_LT/user_webdavauth.po @@ -3,14 +3,15 @@ # This file is distributed under the same license as the PACKAGE package. # # Translators: +# Liudas Ališauskas <liudas.alisauskas@gmail.com>, 2013 # Min2liz <min2lizz@gmail.com>, 2013 msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-07-27 01:56-0400\n" -"PO-Revision-Date: 2013-07-27 05:57+0000\n" -"Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-13 08:20+0000\n" +"Last-Translator: Liudas Ališauskas <liudas.alisauskas@gmail.com>\n" "Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/projects/p/owncloud/language/lt_LT/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -20,15 +21,15 @@ msgstr "" #: templates/settings.php:3 msgid "WebDAV Authentication" -msgstr "WebDAV autorizavimas" +msgstr "WebDAV autentikacija" #: templates/settings.php:4 msgid "Address: " -msgstr "" +msgstr "Adresas:" #: templates/settings.php:7 msgid "" "The user credentials will be sent to this address. This plugin checks the " "response and will interpret the HTTP statuscodes 401 and 403 as invalid " "credentials, and all other responses as valid credentials." -msgstr "" +msgstr "Naudotojo duomenys bus nusiųsti šiuo adresu. Šis įskiepis patikrins gautą atsakymą ir interpretuos HTTP būsenos kodą 401 ir 403 kaip negaliojančius duomenis, ir visus kitus gautus atsakymus kaip galiojančius duomenis. " diff --git a/l10n/lv/files.po b/l10n/lv/files.po index ac1b1e7ab6b..c173b6e331c 100644 --- a/l10n/lv/files.po +++ b/l10n/lv/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/lv/files_sharing.po b/l10n/lv/files_sharing.po index 8c5c1f01416..036cfaf9607 100644 --- a/l10n/lv/files_sharing.po +++ b/l10n/lv/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Latvian (http://www.transifex.com/projects/p/owncloud/language/lv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/mk/files.po b/l10n/mk/files.po index 19942eb2ca5..3d0602225b0 100644 --- a/l10n/mk/files.po +++ b/l10n/mk/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "Адресата неможе да биде празна." msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Грешка" @@ -127,57 +127,57 @@ msgstr "" msgid "Rename" msgstr "Преименувај" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "Чека" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "{new_name} веќе постои" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "замени" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "предложи име" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "откажи" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "заменета {new_name} со {old_name}" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "врати" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -215,15 +215,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Име" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Големина" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Променето" @@ -300,33 +300,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Тука нема ништо. Снимете нешто!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Преземи" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "Не споделувај" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Избриши" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Фајлот кој се вчитува е преголем" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Датотеките кои се обидувате да ги подигнете ја надминуваат максималната големина за подигнување датотеки на овој сервер." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Се скенираат датотеки, ве молам почекајте." -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Моментално скенирам" diff --git a/l10n/mk/files_sharing.po b/l10n/mk/files_sharing.po index 0ae038b02ec..97b8547bc77 100644 --- a/l10n/mk/files_sharing.po +++ b/l10n/mk/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Macedonian (http://www.transifex.com/projects/p/owncloud/language/mk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ms_MY/files.po b/l10n/ms_MY/files.po index ce739248765..27f7519e9d3 100644 --- a/l10n/ms_MY/files.po +++ b/l10n/ms_MY/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Ralat" @@ -127,54 +127,54 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "Dalam proses" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "ganti" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "Batal" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -212,15 +212,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Nama" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Saiz" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Dimodifikasi" @@ -297,33 +297,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Tiada apa-apa di sini. Muat naik sesuatu!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Muat turun" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Padam" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Muatnaik terlalu besar" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Fail sedang diimbas, harap bersabar." -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Imbasan semasa" diff --git a/l10n/ms_MY/files_sharing.po b/l10n/ms_MY/files_sharing.po index 936e15a9ccf..67cf9aabfb3 100644 --- a/l10n/ms_MY/files_sharing.po +++ b/l10n/ms_MY/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Malay (Malaysia) (http://www.transifex.com/projects/p/owncloud/language/ms_MY/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files.po b/l10n/nb_NO/files.po index 21093f1c7e0..318d4d445a5 100644 --- a/l10n/nb_NO/files.po +++ b/l10n/nb_NO/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nb_NO/files_sharing.po b/l10n/nb_NO/files_sharing.po index 60ad1adffc2..02cbd3e982f 100644 --- a/l10n/nb_NO/files_sharing.po +++ b/l10n/nb_NO/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/projects/p/owncloud/language/nb_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files.po b/l10n/nl/files.po index ab4c2589429..e8546df4ad2 100644 --- a/l10n/nl/files.po +++ b/l10n/nl/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:39-0400\n" -"PO-Revision-Date: 2013-09-06 20:20+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: kwillems <kwillems@zonnet.nl>\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nl/files_sharing.po b/l10n/nl/files_sharing.po index fd82bdc9534..1acf14b3297 100644 --- a/l10n/nl/files_sharing.po +++ b/l10n/nl/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Len <lenny@weijl.org>\n" "Language-Team: Dutch (http://www.transifex.com/projects/p/owncloud/language/nl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files.po b/l10n/nn_NO/files.po index 4962e70e005..049246c47e1 100644 --- a/l10n/nn_NO/files.po +++ b/l10n/nn_NO/files.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:39-0400\n" -"PO-Revision-Date: 2013-09-06 10:20+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: unhammer <unhammer+dill@mm.st>\n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/nn_NO/files_sharing.po b/l10n/nn_NO/files_sharing.po index 30895eb8668..4b5c1c4d3ae 100644 --- a/l10n/nn_NO/files_sharing.po +++ b/l10n/nn_NO/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-10 10:41-0400\n" -"PO-Revision-Date: 2013-09-09 07:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: unhammer <unhammer+dill@mm.st>\n" "Language-Team: Norwegian Nynorsk (Norway) (http://www.transifex.com/projects/p/owncloud/language/nn_NO/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/oc/files.po b/l10n/oc/files.po index d33b8a7f8a8..1630f022556 100644 --- a/l10n/oc/files.po +++ b/l10n/oc/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "Error" @@ -127,57 +127,57 @@ msgstr "" msgid "Rename" msgstr "Torna nomenar" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "Al esperar" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "remplaça" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "nom prepausat" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "anulla" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "defar" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "fichièrs al amontcargar" @@ -215,15 +215,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Nom" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Talha" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Modificat" @@ -300,33 +300,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Pas res dedins. Amontcarga qualquaren" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Avalcarga" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "Pas partejador" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Escafa" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Amontcargament tròp gròs" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Los fichièrs que sias a amontcargar son tròp pesucs per la talha maxi pel servidor." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "Los fiichièrs son a èsser explorats, " -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "Exploracion en cors" diff --git a/l10n/oc/files_sharing.po b/l10n/oc/files_sharing.po index f41c123348c..a94307e4bfd 100644 --- a/l10n/oc/files_sharing.po +++ b/l10n/oc/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Occitan (post 1500) (http://www.transifex.com/projects/p/owncloud/language/oc/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files.po b/l10n/pl/files.po index df1d1d20470..780faa39bcc 100644 --- a/l10n/pl/files.po +++ b/l10n/pl/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-05 07:36-0400\n" -"PO-Revision-Date: 2013-09-05 09:20+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Cyryl Sochacki <cyrylsochacki@gmail.com>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pl/files_sharing.po b/l10n/pl/files_sharing.po index 7e1eb8ec3b6..0598448aa83 100644 --- a/l10n/pl/files_sharing.po +++ b/l10n/pl/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:40+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Cyryl Sochacki <cyrylsochacki@gmail.com>\n" "Language-Team: Polish (http://www.transifex.com/projects/p/owncloud/language/pl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files.po b/l10n/pt_BR/files.po index 258f0d4461c..b38bee5e902 100644 --- a/l10n/pt_BR/files.po +++ b/l10n/pt_BR/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-10 10:41-0400\n" -"PO-Revision-Date: 2013-09-10 13:30+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_BR/files_sharing.po b/l10n/pt_BR/files_sharing.po index 186e192e9a2..0c110ef8250 100644 --- a/l10n/pt_BR/files_sharing.po +++ b/l10n/pt_BR/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Flávio Veras <flaviove@gmail.com>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/owncloud/language/pt_BR/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/core.po b/l10n/pt_PT/core.po index 0af6cd62e19..3d908fc0d56 100644 --- a/l10n/pt_PT/core.po +++ b/l10n/pt_PT/core.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-10 10:41-0400\n" -"PO-Revision-Date: 2013-09-10 08:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" +"PO-Revision-Date: 2013-09-13 12:50+0000\n" "Last-Translator: Helder Meneses <helder.meneses@gmail.com>\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" @@ -44,11 +44,11 @@ msgstr "Base de dados actualizada" #: ajax/update.php:20 msgid "Updating filecache, this may take really long..." -msgstr "" +msgstr "A actualizar o cache dos ficheiros, poderá demorar algum tempo..." #: ajax/update.php:23 msgid "Updated filecache" -msgstr "" +msgstr "Actualizado o cache dos ficheiros" #: ajax/update.php:26 #, php-format @@ -409,7 +409,7 @@ msgstr "A actualização foi concluída com sucesso. Vai ser redireccionado para #: lostpassword/controller.php:62 #, php-format msgid "%s password reset" -msgstr "" +msgstr "%s reposição da password" #: lostpassword/templates/email.php:2 msgid "Use the following link to reset your password: {link}" diff --git a/l10n/pt_PT/files.po b/l10n/pt_PT/files.po index 21d8f249a2b..7bd460d366b 100644 --- a/l10n/pt_PT/files.po +++ b/l10n/pt_PT/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 14:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Helder Meneses <helder.meneses@gmail.com>\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/pt_PT/files_sharing.po b/l10n/pt_PT/files_sharing.po index ad35a566339..7db55d8e767 100644 --- a/l10n/pt_PT/files_sharing.po +++ b/l10n/pt_PT/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Helder Meneses <helder.meneses@gmail.com>\n" "Language-Team: Portuguese (Portugal) (http://www.transifex.com/projects/p/owncloud/language/pt_PT/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files.po b/l10n/ro/files.po index 009d23f4d8b..0ac14ca3c91 100644 --- a/l10n/ro/files.po +++ b/l10n/ro/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-11 06:47-0400\n" -"PO-Revision-Date: 2013-09-10 14:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: inaina <ina.c.ina@gmail.com>\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ro/files_sharing.po b/l10n/ro/files_sharing.po index 2904f399a43..e0a966d6e0f 100644 --- a/l10n/ro/files_sharing.po +++ b/l10n/ro/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Romanian (http://www.transifex.com/projects/p/owncloud/language/ro/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files.po b/l10n/ru/files.po index a97a10cc9ad..2db89c27daa 100644 --- a/l10n/ru/files.po +++ b/l10n/ru/files.po @@ -12,8 +12,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ru/files_sharing.po b/l10n/ru/files_sharing.po index 4692762ac92..13ded27e566 100644 --- a/l10n/ru/files_sharing.po +++ b/l10n/ru/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Den4md <denstarr@mail.md>\n" "Language-Team: Russian (http://www.transifex.com/projects/p/owncloud/language/ru/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files.po b/l10n/si_LK/files.po index ea7a70653c1..00c7fd92b17 100644 --- a/l10n/si_LK/files.po +++ b/l10n/si_LK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/si_LK/files_sharing.po b/l10n/si_LK/files_sharing.po index d64ece397ac..c09a00ba707 100644 --- a/l10n/si_LK/files_sharing.po +++ b/l10n/si_LK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Sinhala (Sri Lanka) (http://www.transifex.com/projects/p/owncloud/language/si_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files.po b/l10n/sk_SK/files.po index 0ec318ec279..13b2c321e86 100644 --- a/l10n/sk_SK/files.po +++ b/l10n/sk_SK/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sk_SK/files_sharing.po b/l10n/sk_SK/files_sharing.po index 8cefa0e8452..8d7b07737fe 100644 --- a/l10n/sk_SK/files_sharing.po +++ b/l10n/sk_SK/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: mhh <marian.hvolka@stuba.sk>\n" "Language-Team: Slovak (Slovakia) (http://www.transifex.com/projects/p/owncloud/language/sk_SK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files.po b/l10n/sl/files.po index 79716d1228f..6b461d6107b 100644 --- a/l10n/sl/files.po +++ b/l10n/sl/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sl/files_sharing.po b/l10n/sl/files_sharing.po index 8032c31afc2..b038230f56a 100644 --- a/l10n/sl/files_sharing.po +++ b/l10n/sl/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Slovenian (http://www.transifex.com/projects/p/owncloud/language/sl/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files.po b/l10n/sq/files.po index 949da8324ff..3bf0e4962c0 100644 --- a/l10n/sq/files.po +++ b/l10n/sq/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-10 10:41-0400\n" -"PO-Revision-Date: 2013-09-09 23:10+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Odeen <rapid_odeen@zoho.com>\n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sq/files_sharing.po b/l10n/sq/files_sharing.po index f9206290886..e1a91f7789c 100644 --- a/l10n/sq/files_sharing.po +++ b/l10n/sq/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-10 10:41-0400\n" -"PO-Revision-Date: 2013-09-09 23:40+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Odeen <rapid_odeen@zoho.com>\n" "Language-Team: Albanian (http://www.transifex.com/projects/p/owncloud/language/sq/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files.po b/l10n/sr/files.po index 5e4429bcc04..31dda625a60 100644 --- a/l10n/sr/files.po +++ b/l10n/sr/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr/files_sharing.po b/l10n/sr/files_sharing.po index 1e1a3f4e98f..db4a7eeb22e 100644 --- a/l10n/sr/files_sharing.po +++ b/l10n/sr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (http://www.transifex.com/projects/p/owncloud/language/sr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sr@latin/files.po b/l10n/sr@latin/files.po index 429c1a1d2f6..c1b281b797f 100644 --- a/l10n/sr@latin/files.po +++ b/l10n/sr@latin/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "" @@ -127,60 +127,60 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -218,15 +218,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "Ime" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "Veličina" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "Zadnja izmena" @@ -303,33 +303,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "Ovde nema ničeg. Pošaljite nešto!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "Preuzmi" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "Obriši" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "Pošiljka je prevelika" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "Fajlovi koje želite da pošaljete prevazilaze ograničenje maksimalne veličine pošiljke na ovom serveru." -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "" diff --git a/l10n/sr@latin/files_sharing.po b/l10n/sr@latin/files_sharing.po index 00ac03d66b5..875bfffa7f3 100644 --- a/l10n/sr@latin/files_sharing.po +++ b/l10n/sr@latin/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/owncloud/language/sr@latin/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files.po b/l10n/sv/files.po index 2e311fca6d7..6b498778cf9 100644 --- a/l10n/sv/files.po +++ b/l10n/sv/files.po @@ -11,8 +11,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-31 16:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: Magnus Höglund <magnus@linux.com>\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/sv/files_sharing.po b/l10n/sv/files_sharing.po index 908a393131d..2716b5f204c 100644 --- a/l10n/sv/files_sharing.po +++ b/l10n/sv/files_sharing.po @@ -9,8 +9,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: Magnus Höglund <magnus@linux.com>\n" "Language-Team: Swedish (http://www.transifex.com/projects/p/owncloud/language/sv/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files.po b/l10n/ta_LK/files.po index 392dfada7d8..cb81b1d0b54 100644 --- a/l10n/ta_LK/files.po +++ b/l10n/ta_LK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ta_LK/files_sharing.po b/l10n/ta_LK/files_sharing.po index b38e26a728c..73a4ffdeae2 100644 --- a/l10n/ta_LK/files_sharing.po +++ b/l10n/ta_LK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Tamil (Sri-Lanka) (http://www.transifex.com/projects/p/owncloud/language/ta_LK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot index d5b1ea189bf..daf2ab164c5 100644 --- a/l10n/templates/core.pot +++ b/l10n/templates/core.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot index 6fae04c74e9..589bc8778d7 100644 --- a/l10n/templates/files.pot +++ b/l10n/templates/files.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:47-0400\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_encryption.pot b/l10n/templates/files_encryption.pot index 5eca0032ab1..afb9805c52f 100644 --- a/l10n/templates/files_encryption.pot +++ b/l10n/templates/files_encryption.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:47-0400\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_external.pot b/l10n/templates/files_external.pot index a369531068c..befc1ea150d 100644 --- a/l10n/templates/files_external.pot +++ b/l10n/templates/files_external.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:47-0400\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_sharing.pot b/l10n/templates/files_sharing.pot index 7c4c4ece848..132e5ad3b1d 100644 --- a/l10n/templates/files_sharing.pot +++ b/l10n/templates/files_sharing.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_trashbin.pot b/l10n/templates/files_trashbin.pot index 2ac258974d0..73ddb5682f1 100644 --- a/l10n/templates/files_trashbin.pot +++ b/l10n/templates/files_trashbin.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/files_versions.pot b/l10n/templates/files_versions.pot index c7e4db14518..af6b2b14495 100644 --- a/l10n/templates/files_versions.pot +++ b/l10n/templates/files_versions.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/lib.pot b/l10n/templates/lib.pot index ccc2744b837..12b5037ea44 100644 --- a/l10n/templates/lib.pot +++ b/l10n/templates/lib.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -49,7 +49,7 @@ msgstr "" msgid "Admin" msgstr "" -#: app.php:837 +#: app.php:839 #, php-format msgid "Failed to upgrade \"%s\"." msgstr "" @@ -106,37 +106,37 @@ msgstr "" msgid "Failed to open archive when installing app" msgstr "" -#: installer.php:123 +#: installer.php:125 msgid "App does not provide an info.xml file" msgstr "" -#: installer.php:129 +#: installer.php:131 msgid "App can't be installed because of not allowed code in the App" msgstr "" -#: installer.php:138 +#: installer.php:140 msgid "" "App can't be installed because it is not compatible with this version of " "ownCloud" msgstr "" -#: installer.php:144 +#: installer.php:146 msgid "" "App can't be installed because it contains the <shipped>true</shipped> tag " "which is not allowed for non shipped apps" msgstr "" -#: installer.php:150 +#: installer.php:152 msgid "" "App can't be installed because the version in info.xml/version is not the " "same as the version reported from the app store" msgstr "" -#: installer.php:160 +#: installer.php:162 msgid "App directory already exists" msgstr "" -#: installer.php:173 +#: installer.php:175 #, php-format msgid "Can't create app folder. Please fix permissions. %s" msgstr "" diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot index 0aa498898ee..bd59afab225 100644 --- a/l10n/templates/settings.pot +++ b/l10n/templates/settings.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_ldap.pot b/l10n/templates/user_ldap.pot index e9e02a20cdf..bcf45412cff 100644 --- a/l10n/templates/user_ldap.pot +++ b/l10n/templates/user_ldap.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/templates/user_webdavauth.pot b/l10n/templates/user_webdavauth.pot index 9ba2922286c..e4e6e90a9e2 100644 --- a/l10n/templates/user_webdavauth.pot +++ b/l10n/templates/user_webdavauth.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud Core 5.0.0\n" "Report-Msgid-Bugs-To: translations@owncloud.org\n" -"POT-Creation-Date: 2013-09-11 06:48-0400\n" +"POT-Creation-Date: 2013-09-13 21:47-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" diff --git a/l10n/th_TH/files.po b/l10n/th_TH/files.po index beceaab6f50..2bb54ad25e0 100644 --- a/l10n/th_TH/files.po +++ b/l10n/th_TH/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/th_TH/files_sharing.po b/l10n/th_TH/files_sharing.po index b9a165c4814..467e3de3d83 100644 --- a/l10n/th_TH/files_sharing.po +++ b/l10n/th_TH/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Thai (Thailand) (http://www.transifex.com/projects/p/owncloud/language/th_TH/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files.po b/l10n/tr/files.po index 5fe275702b0..e4878d5cdee 100644 --- a/l10n/tr/files.po +++ b/l10n/tr/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/tr/files_sharing.po b/l10n/tr/files_sharing.po index ce183ac93d5..eea57d4dbd1 100644 --- a/l10n/tr/files_sharing.po +++ b/l10n/tr/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Turkish (http://www.transifex.com/projects/p/owncloud/language/tr/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/ug/files.po b/l10n/ug/files.po index 2872d4e43e4..3eabab5235b 100644 --- a/l10n/ug/files.po +++ b/l10n/ug/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Uighur <uqkun@outlook.com>\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "خاتالىق" @@ -127,54 +127,54 @@ msgstr "مەڭگۈلۈك ئۆچۈر" msgid "Rename" msgstr "ئات ئۆزگەرت" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "كۈتۈۋاتىدۇ" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "{new_name} مەۋجۇت" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "ئالماشتۇر" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "تەۋسىيە ئات" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "ۋاز كەچ" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "يېنىۋال" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "ھۆججەت يۈكلىنىۋاتىدۇ" @@ -212,15 +212,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "ئاتى" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "چوڭلۇقى" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "ئۆزگەرتكەن" @@ -297,33 +297,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "بۇ جايدا ھېچنېمە يوق. Upload something!" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "چۈشۈر" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "ھەمبەھىرلىمە" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "ئۆچۈر" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "يۈكلەندىغىنى بەك چوڭ" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "" diff --git a/l10n/ug/files_sharing.po b/l10n/ug/files_sharing.po index 7f92bdfcdd4..b1dd5be9643 100644 --- a/l10n/ug/files_sharing.po +++ b/l10n/ug/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Uighur <uqkun@outlook.com>\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files.po b/l10n/uk/files.po index 497990ded39..13cbcf24616 100644 --- a/l10n/uk/files.po +++ b/l10n/uk/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-08 21:36-0400\n" -"PO-Revision-Date: 2013-09-08 12:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: zubr139 <zubr139@ukr.net>\n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/uk/files_sharing.po b/l10n/uk/files_sharing.po index 668895e8dc0..c12dc78801e 100644 --- a/l10n/uk/files_sharing.po +++ b/l10n/uk/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Ukrainian (http://www.transifex.com/projects/p/owncloud/language/uk/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files.po b/l10n/vi/files.po index bba27b3142c..ffc9063f5d7 100644 --- a/l10n/vi/files.po +++ b/l10n/vi/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/vi/files_sharing.po b/l10n/vi/files_sharing.po index 16c04e7896b..f370ab63c63 100644 --- a/l10n/vi/files_sharing.po +++ b/l10n/vi/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Vietnamese (http://www.transifex.com/projects/p/owncloud/language/vi/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files.po b/l10n/zh_CN/files.po index a61fb2a34d3..e68d22da13a 100644 --- a/l10n/zh_CN/files.po +++ b/l10n/zh_CN/files.po @@ -10,8 +10,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-08-30 13:50+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_CN/files_sharing.po b/l10n/zh_CN/files_sharing.po index 94343f21828..5887baf02b7 100644 --- a/l10n/zh_CN/files_sharing.po +++ b/l10n/zh_CN/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: waterone <suiy02@gmail.com>\n" "Language-Team: Chinese (China) (http://www.transifex.com/projects/p/owncloud/language/zh_CN/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_HK/files.po b/l10n/zh_HK/files.po index 32b94a8ffc9..ef901a270fc 100644 --- a/l10n/zh_HK/files.po +++ b/l10n/zh_HK/files.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-08-30 09:31-0400\n" -"PO-Revision-Date: 2013-08-30 13:34+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" @@ -111,7 +111,7 @@ msgstr "" msgid "Invalid folder name. Usage of 'Shared' is reserved by ownCloud" msgstr "" -#: js/file-upload.js:275 js/file-upload.js:291 js/files.js:511 js/files.js:549 +#: js/file-upload.js:276 js/file-upload.js:292 js/files.js:512 js/files.js:550 msgid "Error" msgstr "錯誤" @@ -127,54 +127,54 @@ msgstr "" msgid "Rename" msgstr "" -#: js/filelist.js:49 js/filelist.js:52 js/filelist.js:573 +#: js/filelist.js:50 js/filelist.js:53 js/filelist.js:575 msgid "Pending" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "{new_name} already exists" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "replace" msgstr "" -#: js/filelist.js:305 +#: js/filelist.js:307 msgid "suggest name" msgstr "" -#: js/filelist.js:305 js/filelist.js:307 +#: js/filelist.js:307 js/filelist.js:309 msgid "cancel" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "replaced {new_name} with {old_name}" msgstr "" -#: js/filelist.js:352 +#: js/filelist.js:354 msgid "undo" msgstr "" -#: js/filelist.js:422 js/filelist.js:488 js/files.js:580 +#: js/filelist.js:424 js/filelist.js:490 js/files.js:581 msgid "%n folder" msgid_plural "%n folders" msgstr[0] "" -#: js/filelist.js:423 js/filelist.js:489 js/files.js:586 +#: js/filelist.js:425 js/filelist.js:491 js/files.js:587 msgid "%n file" msgid_plural "%n files" msgstr[0] "" -#: js/filelist.js:430 +#: js/filelist.js:432 msgid "{dirs} and {files}" msgstr "" -#: js/filelist.js:561 +#: js/filelist.js:563 msgid "Uploading %n file" msgid_plural "Uploading %n files" msgstr[0] "" -#: js/filelist.js:626 +#: js/filelist.js:628 msgid "files uploading" msgstr "" @@ -212,15 +212,15 @@ msgid "" "big." msgstr "" -#: js/files.js:562 templates/index.php:67 +#: js/files.js:563 templates/index.php:69 msgid "Name" msgstr "名稱" -#: js/files.js:563 templates/index.php:78 +#: js/files.js:564 templates/index.php:81 msgid "Size" msgstr "" -#: js/files.js:564 templates/index.php:80 +#: js/files.js:565 templates/index.php:83 msgid "Modified" msgstr "" @@ -297,33 +297,33 @@ msgstr "" msgid "Nothing in here. Upload something!" msgstr "" -#: templates/index.php:73 +#: templates/index.php:75 msgid "Download" msgstr "下載" -#: templates/index.php:85 templates/index.php:86 +#: templates/index.php:88 templates/index.php:89 msgid "Unshare" msgstr "取消分享" -#: templates/index.php:91 templates/index.php:92 +#: templates/index.php:94 templates/index.php:95 msgid "Delete" msgstr "刪除" -#: templates/index.php:105 +#: templates/index.php:108 msgid "Upload too large" msgstr "" -#: templates/index.php:107 +#: templates/index.php:110 msgid "" "The files you are trying to upload exceed the maximum size for file uploads " "on this server." msgstr "" -#: templates/index.php:112 +#: templates/index.php:115 msgid "Files are being scanned, please wait." msgstr "" -#: templates/index.php:115 +#: templates/index.php:118 msgid "Current scanning" msgstr "" diff --git a/l10n/zh_HK/files_sharing.po b/l10n/zh_HK/files_sharing.po index f48a313ec7d..51163c90a96 100644 --- a/l10n/zh_HK/files_sharing.po +++ b/l10n/zh_HK/files_sharing.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: I Robot <owncloud-bot@tmit.eu>\n" "Language-Team: Chinese (Hong Kong) (http://www.transifex.com/projects/p/owncloud/language/zh_HK/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files.po b/l10n/zh_TW/files.po index 260d80d6bf5..cc65168506e 100644 --- a/l10n/zh_TW/files.po +++ b/l10n/zh_TW/files.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-01 13:27-0400\n" -"PO-Revision-Date: 2013-09-01 13:20+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:00+0000\n" "Last-Translator: pellaeon <nfsmwlin@gmail.com>\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/l10n/zh_TW/files_sharing.po b/l10n/zh_TW/files_sharing.po index 0b8ed355248..c59207bb90f 100644 --- a/l10n/zh_TW/files_sharing.po +++ b/l10n/zh_TW/files_sharing.po @@ -8,8 +8,8 @@ msgid "" msgstr "" "Project-Id-Version: ownCloud\n" "Report-Msgid-Bugs-To: http://bugs.owncloud.org/\n" -"POT-Creation-Date: 2013-09-07 04:40-0400\n" -"PO-Revision-Date: 2013-09-05 11:51+0000\n" +"POT-Creation-Date: 2013-09-13 21:46-0400\n" +"PO-Revision-Date: 2013-09-14 00:01+0000\n" "Last-Translator: pellaeon <nfsmwlin@gmail.com>\n" "Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/owncloud/language/zh_TW/)\n" "MIME-Version: 1.0\n" diff --git a/lib/avatar.php b/lib/avatar.php new file mode 100644 index 00000000000..f20980c364b --- /dev/null +++ b/lib/avatar.php @@ -0,0 +1,89 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +/** + * This class gets and sets users avatars. + */ + +class OC_Avatar { + + private $view; + + /** + * @brief constructor + * @param $user string user to do avatar-management with + */ + public function __construct ($user) { + $this->view = new \OC\Files\View('/'.$user); + } + + /** + * @brief get the users avatar + * @param $size integer size in px of the avatar, defaults to 64 + * @return boolean|\OC_Image containing the avatar or false if there's no image + */ + public function get ($size = 64) { + if ($this->view->file_exists('avatar.jpg')) { + $ext = 'jpg'; + } elseif ($this->view->file_exists('avatar.png')) { + $ext = 'png'; + } else { + return false; + } + + $avatar = new OC_Image(); + $avatar->loadFromData($this->view->file_get_contents('avatar.'.$ext)); + $avatar->resize($size); + return $avatar; + } + + /** + * @brief sets the users avatar + * @param $data mixed imagedata or path to set a new avatar + * @throws Exception if the provided file is not a jpg or png image + * @throws Exception if the provided image is not valid + * @throws \OC\NotSquareException if the image is not square + * @return void + */ + public function set ($data) { + if (\OC_App::isEnabled('files_encryption')) { + $l = \OC_L10N::get('lib'); + throw new \Exception($l->t("Custom profile pictures don't work with encryption yet")); + } + + $img = new OC_Image($data); + $type = substr($img->mimeType(), -3); + if ($type === 'peg') { $type = 'jpg'; } + if ($type !== 'jpg' && $type !== 'png') { + $l = \OC_L10N::get('lib'); + throw new \Exception($l->t("Unknown filetype")); + } + + if (!$img->valid()) { + $l = \OC_L10N::get('lib'); + throw new \Exception($l->t("Invalid image")); + } + + if (!($img->height() === $img->width())) { + throw new \OC\NotSquareException(); + } + + $this->view->unlink('avatar.jpg'); + $this->view->unlink('avatar.png'); + $this->view->file_put_contents('avatar.'.$type, $data); + } + + /** + * @brief remove the users avatar + * @return void + */ + public function remove () { + $this->view->unlink('avatar.jpg'); + $this->view->unlink('avatar.png'); + } +} diff --git a/lib/base.php b/lib/base.php index ea5adbadc9d..d3d570e3f37 100644 --- a/lib/base.php +++ b/lib/base.php @@ -266,6 +266,14 @@ class OC { OC_Util::addScript('router'); OC_Util::addScript("oc-requesttoken"); + // avatars + if (\OC_Config::getValue('enable_avatars', true) === true) { + \OC_Util::addScript('placeholder'); + \OC_Util::addScript('3rdparty', 'md5/md5.min'); + \OC_Util::addScript('jquery.avatar'); + \OC_Util::addScript('avatar'); + } + OC_Util::addStyle("styles"); OC_Util::addStyle("apps"); OC_Util::addStyle("fixes"); diff --git a/lib/files/node/file.php b/lib/files/node/file.php new file mode 100644 index 00000000000..75d5e0166b6 --- /dev/null +++ b/lib/files/node/file.php @@ -0,0 +1,155 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Node; + +use OCP\Files\NotPermittedException; + +class File extends Node implements \OCP\Files\File { + /** + * @return string + * @throws \OCP\Files\NotPermittedException + */ + public function getContent() { + if ($this->checkPermissions(\OCP\PERMISSION_READ)) { + /** + * @var \OC\Files\Storage\Storage $storage; + */ + return $this->view->file_get_contents($this->path); + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $data + * @throws \OCP\Files\NotPermittedException + */ + public function putContent($data) { + if ($this->checkPermissions(\OCP\PERMISSION_UPDATE)) { + $this->sendHooks(array('preWrite')); + $this->view->file_put_contents($this->path, $data); + $this->sendHooks(array('postWrite')); + } else { + throw new NotPermittedException(); + } + } + + /** + * @return string + */ + public function getMimeType() { + return $this->view->getMimeType($this->path); + } + + /** + * @param string $mode + * @return resource + * @throws \OCP\Files\NotPermittedException + */ + public function fopen($mode) { + $preHooks = array(); + $postHooks = array(); + $requiredPermissions = \OCP\PERMISSION_READ; + switch ($mode) { + case 'r+': + case 'rb+': + case 'w+': + case 'wb+': + case 'x+': + case 'xb+': + case 'a+': + case 'ab+': + case 'w': + case 'wb': + case 'x': + case 'xb': + case 'a': + case 'ab': + $preHooks[] = 'preWrite'; + $postHooks[] = 'postWrite'; + $requiredPermissions |= \OCP\PERMISSION_UPDATE; + break; + } + + if ($this->checkPermissions($requiredPermissions)) { + $this->sendHooks($preHooks); + $result = $this->view->fopen($this->path, $mode); + $this->sendHooks($postHooks); + return $result; + } else { + throw new NotPermittedException(); + } + } + + public function delete() { + if ($this->checkPermissions(\OCP\PERMISSION_DELETE)) { + $this->sendHooks(array('preDelete')); + $this->view->unlink($this->path); + $nonExisting = new NonExistingFile($this->root, $this->view, $this->path); + $this->root->emit('\OC\Files', 'postDelete', array($nonExisting)); + $this->exists = false; + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function copy($targetPath) { + $targetPath = $this->normalizePath($targetPath); + $parent = $this->root->get(dirname($targetPath)); + if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) { + $nonExisting = new NonExistingFile($this->root, $this->view, $targetPath); + $this->root->emit('\OC\Files', 'preCopy', array($this, $nonExisting)); + $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); + $this->view->copy($this->path, $targetPath); + $targetNode = $this->root->get($targetPath); + $this->root->emit('\OC\Files', 'postCopy', array($this, $targetNode)); + $this->root->emit('\OC\Files', 'postWrite', array($targetNode)); + return $targetNode; + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function move($targetPath) { + $targetPath = $this->normalizePath($targetPath); + $parent = $this->root->get(dirname($targetPath)); + if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) { + $nonExisting = new NonExistingFile($this->root, $this->view, $targetPath); + $this->root->emit('\OC\Files', 'preRename', array($this, $nonExisting)); + $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); + $this->view->rename($this->path, $targetPath); + $targetNode = $this->root->get($targetPath); + $this->root->emit('\OC\Files', 'postRename', array($this, $targetNode)); + $this->root->emit('\OC\Files', 'postWrite', array($targetNode)); + $this->path = $targetPath; + return $targetNode; + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $type + * @param bool $raw + * @return string + */ + public function hash($type, $raw = false) { + return $this->view->hash($type, $this->path, $raw); + } +} diff --git a/lib/files/node/folder.php b/lib/files/node/folder.php new file mode 100644 index 00000000000..923f53821b2 --- /dev/null +++ b/lib/files/node/folder.php @@ -0,0 +1,382 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Node; + +use OC\Files\Cache\Cache; +use OC\Files\Cache\Scanner; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; + +class Folder extends Node implements \OCP\Files\Folder { + /** + * @param string $path path relative to the folder + * @return string + * @throws \OCP\Files\NotPermittedException + */ + public function getFullPath($path) { + if (!$this->isValidPath($path)) { + throw new NotPermittedException(); + } + return $this->path . $this->normalizePath($path); + } + + /** + * @param string $path + * @throws \OCP\Files\NotFoundException + * @return string + */ + public function getRelativePath($path) { + if ($this->path === '' or $this->path === '/') { + return $this->normalizePath($path); + } + if (strpos($path, $this->path) !== 0) { + throw new NotFoundException(); + } else { + $path = substr($path, strlen($this->path)); + if (strlen($path) === 0) { + return '/'; + } else { + return $this->normalizePath($path); + } + } + } + + /** + * check if a node is a (grand-)child of the folder + * + * @param \OC\Files\Node\Node $node + * @return bool + */ + public function isSubNode($node) { + return strpos($node->getPath(), $this->path . '/') === 0; + } + + /** + * get the content of this directory + * + * @throws \OCP\Files\NotFoundException + * @return Node[] + */ + public function getDirectoryListing() { + $result = array(); + + /** + * @var \OC\Files\Storage\Storage $storage + */ + list($storage, $internalPath) = $this->view->resolvePath($this->path); + if ($storage) { + $cache = $storage->getCache($internalPath); + $permissionsCache = $storage->getPermissionsCache($internalPath); + + //trigger cache update check + $this->view->getFileInfo($this->path); + + $files = $cache->getFolderContents($internalPath); + $permissions = $permissionsCache->getDirectoryPermissions($this->getId(), $this->root->getUser()->getUID()); + } else { + $files = array(); + } + + //add a folder for any mountpoint in this directory and add the sizes of other mountpoints to the folders + $mounts = $this->root->getMountsIn($this->path); + $dirLength = strlen($this->path); + foreach ($mounts as $mount) { + $subStorage = $mount->getStorage(); + if ($subStorage) { + $subCache = $subStorage->getCache(''); + + if ($subCache->getStatus('') === Cache::NOT_FOUND) { + $subScanner = $subStorage->getScanner(''); + $subScanner->scanFile(''); + } + + $rootEntry = $subCache->get(''); + if ($rootEntry) { + $relativePath = trim(substr($mount->getMountPoint(), $dirLength), '/'); + if ($pos = strpos($relativePath, '/')) { + //mountpoint inside subfolder add size to the correct folder + $entryName = substr($relativePath, 0, $pos); + foreach ($files as &$entry) { + if ($entry['name'] === $entryName) { + if ($rootEntry['size'] >= 0) { + $entry['size'] += $rootEntry['size']; + } else { + $entry['size'] = -1; + } + } + } + } else { //mountpoint in this folder, add an entry for it + $rootEntry['name'] = $relativePath; + $rootEntry['storageObject'] = $subStorage; + + //remove any existing entry with the same name + foreach ($files as $i => $file) { + if ($file['name'] === $rootEntry['name']) { + $files[$i] = null; + break; + } + } + $files[] = $rootEntry; + } + } + } + } + + foreach ($files as $file) { + if ($file) { + if (isset($permissions[$file['fileid']])) { + $file['permissions'] = $permissions[$file['fileid']]; + } + $node = $this->createNode($this->path . '/' . $file['name'], $file); + $result[] = $node; + } + } + + return $result; + } + + /** + * @param string $path + * @param array $info + * @return File|Folder + */ + protected function createNode($path, $info = array()) { + if (!isset($info['mimetype'])) { + $isDir = $this->view->is_dir($path); + } else { + $isDir = $info['mimetype'] === 'httpd/unix-directory'; + } + if ($isDir) { + return new Folder($this->root, $this->view, $path); + } else { + return new File($this->root, $this->view, $path); + } + } + + /** + * Get the node at $path + * + * @param string $path + * @return \OC\Files\Node\Node + * @throws \OCP\Files\NotFoundException + */ + public function get($path) { + return $this->root->get($this->getFullPath($path)); + } + + /** + * @param string $path + * @return bool + */ + public function nodeExists($path) { + try { + $this->get($path); + return true; + } catch (NotFoundException $e) { + return false; + } + } + + /** + * @param string $path + * @return \OC\Files\Node\Folder + * @throws \OCP\Files\NotPermittedException + */ + public function newFolder($path) { + if ($this->checkPermissions(\OCP\PERMISSION_CREATE)) { + $fullPath = $this->getFullPath($path); + $nonExisting = new NonExistingFolder($this->root, $this->view, $fullPath); + $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); + $this->root->emit('\OC\Files', 'preCreate', array($nonExisting)); + $this->view->mkdir($fullPath); + $node = new Folder($this->root, $this->view, $fullPath); + $this->root->emit('\OC\Files', 'postWrite', array($node)); + $this->root->emit('\OC\Files', 'postCreate', array($node)); + return $node; + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $path + * @return \OC\Files\Node\File + * @throws \OCP\Files\NotPermittedException + */ + public function newFile($path) { + if ($this->checkPermissions(\OCP\PERMISSION_CREATE)) { + $fullPath = $this->getFullPath($path); + $nonExisting = new NonExistingFile($this->root, $this->view, $fullPath); + $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); + $this->root->emit('\OC\Files', 'preCreate', array($nonExisting)); + $this->view->touch($fullPath); + $node = new File($this->root, $this->view, $fullPath); + $this->root->emit('\OC\Files', 'postWrite', array($node)); + $this->root->emit('\OC\Files', 'postCreate', array($node)); + return $node; + } else { + throw new NotPermittedException(); + } + } + + /** + * search for files with the name matching $query + * + * @param string $query + * @return \OC\Files\Node\Node[] + */ + public function search($query) { + return $this->searchCommon('%' . $query . '%', 'search'); + } + + /** + * search for files by mimetype + * + * @param string $mimetype + * @return Node[] + */ + public function searchByMime($mimetype) { + return $this->searchCommon($mimetype, 'searchByMime'); + } + + /** + * @param string $query + * @param string $method + * @return \OC\Files\Node\Node[] + */ + private function searchCommon($query, $method) { + $files = array(); + $rootLength = strlen($this->path); + /** + * @var \OC\Files\Storage\Storage $storage + */ + list($storage, $internalPath) = $this->view->resolvePath($this->path); + $internalRootLength = strlen($internalPath); + + $cache = $storage->getCache(''); + + $results = $cache->$method($query); + foreach ($results as $result) { + if ($internalRootLength === 0 or substr($result['path'], 0, $internalRootLength) === $internalPath) { + $result['internalPath'] = $result['path']; + $result['path'] = substr($result['path'], $internalRootLength); + $result['storage'] = $storage; + $files[] = $result; + } + } + + $mounts = $this->root->getMountsIn($this->path); + foreach ($mounts as $mount) { + $storage = $mount->getStorage(); + if ($storage) { + $cache = $storage->getCache(''); + + $relativeMountPoint = substr($mount->getMountPoint(), $rootLength); + $results = $cache->$method($query); + foreach ($results as $result) { + $result['internalPath'] = $result['path']; + $result['path'] = $relativeMountPoint . $result['path']; + $result['storage'] = $storage; + $files[] = $result; + } + } + } + + $result = array(); + foreach ($files as $file) { + $result[] = $this->createNode($this->normalizePath($this->path . '/' . $file['path']), $file); + } + + return $result; + } + + /** + * @param $id + * @return \OC\Files\Node\Node[] + */ + public function getById($id) { + $nodes = $this->root->getById($id); + $result = array(); + foreach ($nodes as $node) { + $pathPart = substr($node->getPath(), 0, strlen($this->getPath()) + 1); + if ($this->path === '/' or $pathPart === $this->getPath() . '/') { + $result[] = $node; + } + } + return $result; + } + + public function getFreeSpace() { + return $this->view->free_space($this->path); + } + + /** + * @return bool + */ + public function isCreatable() { + return $this->checkPermissions(\OCP\PERMISSION_CREATE); + } + + public function delete() { + if ($this->checkPermissions(\OCP\PERMISSION_DELETE)) { + $this->sendHooks(array('preDelete')); + $this->view->rmdir($this->path); + $nonExisting = new NonExistingFolder($this->root, $this->view, $this->path); + $this->root->emit('\OC\Files', 'postDelete', array($nonExisting)); + $this->exists = false; + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function copy($targetPath) { + $targetPath = $this->normalizePath($targetPath); + $parent = $this->root->get(dirname($targetPath)); + if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) { + $nonExisting = new NonExistingFolder($this->root, $this->view, $targetPath); + $this->root->emit('\OC\Files', 'preCopy', array($this, $nonExisting)); + $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); + $this->view->copy($this->path, $targetPath); + $targetNode = $this->root->get($targetPath); + $this->root->emit('\OC\Files', 'postCopy', array($this, $targetNode)); + $this->root->emit('\OC\Files', 'postWrite', array($targetNode)); + return $targetNode; + } else { + throw new NotPermittedException(); + } + } + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function move($targetPath) { + $targetPath = $this->normalizePath($targetPath); + $parent = $this->root->get(dirname($targetPath)); + if ($parent instanceof Folder and $this->isValidPath($targetPath) and $parent->isCreatable()) { + $nonExisting = new NonExistingFolder($this->root, $this->view, $targetPath); + $this->root->emit('\OC\Files', 'preRename', array($this, $nonExisting)); + $this->root->emit('\OC\Files', 'preWrite', array($nonExisting)); + $this->view->rename($this->path, $targetPath); + $targetNode = $this->root->get($targetPath); + $this->root->emit('\OC\Files', 'postRename', array($this, $targetNode)); + $this->root->emit('\OC\Files', 'postWrite', array($targetNode)); + $this->path = $targetPath; + return $targetNode; + } else { + throw new NotPermittedException(); + } + } +} diff --git a/lib/files/node/node.php b/lib/files/node/node.php new file mode 100644 index 00000000000..063e2424a64 --- /dev/null +++ b/lib/files/node/node.php @@ -0,0 +1,245 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Node; + +use OC\Files\Cache\Cache; +use OC\Files\Cache\Scanner; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; + +class Node implements \OCP\Files\Node { + /** + * @var \OC\Files\View $view + */ + protected $view; + + /** + * @var \OC\Files\Node\Root $root + */ + protected $root; + + /** + * @var string $path + */ + protected $path; + + /** + * @param \OC\Files\View $view + * @param \OC\Files\Node\Root Root $root + * @param string $path + */ + public function __construct($root, $view, $path) { + $this->view = $view; + $this->root = $root; + $this->path = $path; + } + + /** + * @param string[] $hooks + */ + protected function sendHooks($hooks) { + foreach ($hooks as $hook) { + $this->root->emit('\OC\Files', $hook, array($this)); + } + } + + /** + * @param int $permissions + * @return bool + */ + protected function checkPermissions($permissions) { + return ($this->getPermissions() & $permissions) === $permissions; + } + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function move($targetPath) { + return; + } + + public function delete() { + return; + } + + /** + * @param string $targetPath + * @return \OC\Files\Node\Node + */ + public function copy($targetPath) { + return; + } + + /** + * @param int $mtime + * @throws \OCP\Files\NotPermittedException + */ + public function touch($mtime = null) { + if ($this->checkPermissions(\OCP\PERMISSION_UPDATE)) { + $this->sendHooks(array('preTouch')); + $this->view->touch($this->path, $mtime); + $this->sendHooks(array('postTouch')); + } else { + throw new NotPermittedException(); + } + } + + /** + * @return \OC\Files\Storage\Storage + * @throws \OCP\Files\NotFoundException + */ + public function getStorage() { + list($storage,) = $this->view->resolvePath($this->path); + return $storage; + } + + /** + * @return string + */ + public function getPath() { + return $this->path; + } + + /** + * @return string + */ + public function getInternalPath() { + list(, $internalPath) = $this->view->resolvePath($this->path); + return $internalPath; + } + + /** + * @return int + */ + public function getId() { + $info = $this->view->getFileInfo($this->path); + return $info['fileid']; + } + + /** + * @return array + */ + public function stat() { + return $this->view->stat($this->path); + } + + /** + * @return int + */ + public function getMTime() { + return $this->view->filemtime($this->path); + } + + /** + * @return int + */ + public function getSize() { + return $this->view->filesize($this->path); + } + + /** + * @return string + */ + public function getEtag() { + $info = $this->view->getFileInfo($this->path); + return $info['etag']; + } + + /** + * @return int + */ + public function getPermissions() { + $info = $this->view->getFileInfo($this->path); + return $info['permissions']; + } + + /** + * @return bool + */ + public function isReadable() { + return $this->checkPermissions(\OCP\PERMISSION_READ); + } + + /** + * @return bool + */ + public function isUpdateable() { + return $this->checkPermissions(\OCP\PERMISSION_UPDATE); + } + + /** + * @return bool + */ + public function isDeletable() { + return $this->checkPermissions(\OCP\PERMISSION_DELETE); + } + + /** + * @return bool + */ + public function isShareable() { + return $this->checkPermissions(\OCP\PERMISSION_SHARE); + } + + /** + * @return Node + */ + public function getParent() { + return $this->root->get(dirname($this->path)); + } + + /** + * @return string + */ + public function getName() { + return basename($this->path); + } + + /** + * @param string $path + * @return string + */ + protected function normalizePath($path) { + if ($path === '' or $path === '/') { + return '/'; + } + //no windows style slashes + $path = str_replace('\\', '/', $path); + //add leading slash + if ($path[0] !== '/') { + $path = '/' . $path; + } + //remove duplicate slashes + while (strpos($path, '//') !== false) { + $path = str_replace('//', '/', $path); + } + //remove trailing slash + $path = rtrim($path, '/'); + + return $path; + } + + /** + * check if the requested path is valid + * + * @param string $path + * @return bool + */ + public function isValidPath($path) { + if (!$path || $path[0] !== '/') { + $path = '/' . $path; + } + if (strstr($path, '/../') || strrchr($path, '/') === '/..') { + return false; + } + return true; + } +} diff --git a/lib/files/node/nonexistingfile.php b/lib/files/node/nonexistingfile.php new file mode 100644 index 00000000000..d45076f7fee --- /dev/null +++ b/lib/files/node/nonexistingfile.php @@ -0,0 +1,89 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Node; + +use OCP\Files\NotFoundException; + +class NonExistingFile extends File { + /** + * @param string $newPath + * @throws \OCP\Files\NotFoundException + */ + public function rename($newPath) { + throw new NotFoundException(); + } + + public function delete() { + throw new NotFoundException(); + } + + public function copy($newPath) { + throw new NotFoundException(); + } + + public function touch($mtime = null) { + throw new NotFoundException(); + } + + public function getId() { + throw new NotFoundException(); + } + + public function stat() { + throw new NotFoundException(); + } + + public function getMTime() { + throw new NotFoundException(); + } + + public function getSize() { + throw new NotFoundException(); + } + + public function getEtag() { + throw new NotFoundException(); + } + + public function getPermissions() { + throw new NotFoundException(); + } + + public function isReadable() { + throw new NotFoundException(); + } + + public function isUpdateable() { + throw new NotFoundException(); + } + + public function isDeletable() { + throw new NotFoundException(); + } + + public function isShareable() { + throw new NotFoundException(); + } + + public function getContent() { + throw new NotFoundException(); + } + + public function putContent($data) { + throw new NotFoundException(); + } + + public function getMimeType() { + throw new NotFoundException(); + } + + public function fopen($mode) { + throw new NotFoundException(); + } +} diff --git a/lib/files/node/nonexistingfolder.php b/lib/files/node/nonexistingfolder.php new file mode 100644 index 00000000000..0346cbf1e21 --- /dev/null +++ b/lib/files/node/nonexistingfolder.php @@ -0,0 +1,113 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Node; + +use OCP\Files\NotFoundException; + +class NonExistingFolder extends Folder { + /** + * @param string $newPath + * @throws \OCP\Files\NotFoundException + */ + public function rename($newPath) { + throw new NotFoundException(); + } + + public function delete() { + throw new NotFoundException(); + } + + public function copy($newPath) { + throw new NotFoundException(); + } + + public function touch($mtime = null) { + throw new NotFoundException(); + } + + public function getId() { + throw new NotFoundException(); + } + + public function stat() { + throw new NotFoundException(); + } + + public function getMTime() { + throw new NotFoundException(); + } + + public function getSize() { + throw new NotFoundException(); + } + + public function getEtag() { + throw new NotFoundException(); + } + + public function getPermissions() { + throw new NotFoundException(); + } + + public function isReadable() { + throw new NotFoundException(); + } + + public function isUpdateable() { + throw new NotFoundException(); + } + + public function isDeletable() { + throw new NotFoundException(); + } + + public function isShareable() { + throw new NotFoundException(); + } + + public function get($path) { + throw new NotFoundException(); + } + + public function getDirectoryListing() { + throw new NotFoundException(); + } + + public function nodeExists($path) { + return false; + } + + public function newFolder($path) { + throw new NotFoundException(); + } + + public function newFile($path) { + throw new NotFoundException(); + } + + public function search($pattern) { + throw new NotFoundException(); + } + + public function searchByMime($mime) { + throw new NotFoundException(); + } + + public function getById($id) { + throw new NotFoundException(); + } + + public function getFreeSpace() { + throw new NotFoundException(); + } + + public function isCreatable() { + throw new NotFoundException(); + } +} diff --git a/lib/files/node/root.php b/lib/files/node/root.php new file mode 100644 index 00000000000..e3d58476e9c --- /dev/null +++ b/lib/files/node/root.php @@ -0,0 +1,337 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC\Files\Node; + +use OC\Files\Cache\Cache; +use OC\Files\Cache\Scanner; +use OC\Files\Mount\Manager; +use OC\Files\Mount\Mount; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; +use OC\Hooks\Emitter; +use OC\Hooks\PublicEmitter; + +/** + * Class Root + * + * Hooks available in scope \OC\Files + * - preWrite(\OCP\Files\Node $node) + * - postWrite(\OCP\Files\Node $node) + * - preCreate(\OCP\Files\Node $node) + * - postCreate(\OCP\Files\Node $node) + * - preDelete(\OCP\Files\Node $node) + * - postDelete(\OCP\Files\Node $node) + * - preTouch(\OC\FilesP\Node $node, int $mtime) + * - postTouch(\OCP\Files\Node $node) + * - preCopy(\OCP\Files\Node $source, \OCP\Files\Node $target) + * - postCopy(\OCP\Files\Node $source, \OCP\Files\Node $target) + * - preRename(\OCP\Files\Node $source, \OCP\Files\Node $target) + * - postRename(\OCP\Files\Node $source, \OCP\Files\Node $target) + * + * @package OC\Files\Node + */ +class Root extends Folder implements Emitter { + + /** + * @var \OC\Files\Mount\Manager $mountManager + */ + private $mountManager; + + /** + * @var \OC\Hooks\PublicEmitter + */ + private $emitter; + + /** + * @var \OC\User\User $user + */ + private $user; + + /** + * @param \OC\Files\Mount\Manager $manager + * @param \OC\Files\View $view + * @param \OC\User\User $user + */ + public function __construct($manager, $view, $user) { + parent::__construct($this, $view, ''); + $this->mountManager = $manager; + $this->user = $user; + $this->emitter = new PublicEmitter(); + } + + /** + * Get the user for which the filesystem is setup + * + * @return \OC\User\User + */ + public function getUser() { + return $this->user; + } + + /** + * @param string $scope + * @param string $method + * @param callable $callback + */ + public function listen($scope, $method, $callback) { + $this->emitter->listen($scope, $method, $callback); + } + + /** + * @param string $scope optional + * @param string $method optional + * @param callable $callback optional + */ + public function removeListener($scope = null, $method = null, $callback = null) { + $this->emitter->removeListener($scope, $method, $callback); + } + + /** + * @param string $scope + * @param string $method + * @param array $arguments + */ + public function emit($scope, $method, $arguments = array()) { + $this->emitter->emit($scope, $method, $arguments); + } + + /** + * @param \OC\Files\Storage\Storage $storage + * @param string $mountPoint + * @param array $arguments + */ + public function mount($storage, $mountPoint, $arguments = array()) { + $mount = new Mount($storage, $mountPoint, $arguments); + $this->mountManager->addMount($mount); + } + + /** + * @param string $mountPoint + * @return \OC\Files\Mount\Mount + */ + public function getMount($mountPoint) { + return $this->mountManager->find($mountPoint); + } + + /** + * @param string $mountPoint + * @return \OC\Files\Mount\Mount[] + */ + public function getMountsIn($mountPoint) { + return $this->mountManager->findIn($mountPoint); + } + + /** + * @param string $storageId + * @return \OC\Files\Mount\Mount[] + */ + public function getMountByStorageId($storageId) { + return $this->mountManager->findByStorageId($storageId); + } + + /** + * @param int $numericId + * @return Mount[] + */ + public function getMountByNumericStorageId($numericId) { + return $this->mountManager->findByNumericId($numericId); + } + + /** + * @param \OC\Files\Mount\Mount $mount + */ + public function unMount($mount) { + $this->mountManager->remove($mount); + } + + /** + * @param string $path + * @throws \OCP\Files\NotFoundException + * @throws \OCP\Files\NotPermittedException + * @return Node + */ + public function get($path) { + $path = $this->normalizePath($path); + if ($this->isValidPath($path)) { + $fullPath = $this->getFullPath($path); + if ($this->view->file_exists($fullPath)) { + return $this->createNode($fullPath); + } else { + throw new NotFoundException(); + } + } else { + throw new NotPermittedException(); + } + } + + /** + * search file by id + * + * An array is returned because in the case where a single storage is mounted in different places the same file + * can exist in different places + * + * @param int $id + * @throws \OCP\Files\NotFoundException + * @return Node[] + */ + public function getById($id) { + $result = Cache::getById($id); + if (is_null($result)) { + throw new NotFoundException(); + } else { + list($storageId, $internalPath) = $result; + $nodes = array(); + $mounts = $this->mountManager->findByStorageId($storageId); + foreach ($mounts as $mount) { + $nodes[] = $this->get($mount->getMountPoint() . $internalPath); + } + return $nodes; + } + + } + + //most operations cant be done on the root + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function rename($targetPath) { + throw new NotPermittedException(); + } + + public function delete() { + throw new NotPermittedException(); + } + + /** + * @param string $targetPath + * @throws \OCP\Files\NotPermittedException + * @return \OC\Files\Node\Node + */ + public function copy($targetPath) { + throw new NotPermittedException(); + } + + /** + * @param int $mtime + * @throws \OCP\Files\NotPermittedException + */ + public function touch($mtime = null) { + throw new NotPermittedException(); + } + + /** + * @return \OC\Files\Storage\Storage + * @throws \OCP\Files\NotFoundException + */ + public function getStorage() { + throw new NotFoundException(); + } + + /** + * @return string + */ + public function getPath() { + return '/'; + } + + /** + * @return string + */ + public function getInternalPath() { + return ''; + } + + /** + * @return int + */ + public function getId() { + return null; + } + + /** + * @return array + */ + public function stat() { + return null; + } + + /** + * @return int + */ + public function getMTime() { + return null; + } + + /** + * @return int + */ + public function getSize() { + return null; + } + + /** + * @return string + */ + public function getEtag() { + return null; + } + + /** + * @return int + */ + public function getPermissions() { + return \OCP\PERMISSION_CREATE; + } + + /** + * @return bool + */ + public function isReadable() { + return false; + } + + /** + * @return bool + */ + public function isUpdateable() { + return false; + } + + /** + * @return bool + */ + public function isDeletable() { + return false; + } + + /** + * @return bool + */ + public function isShareable() { + return false; + } + + /** + * @return Node + * @throws \OCP\Files\NotFoundException + */ + public function getParent() { + throw new NotFoundException(); + } + + /** + * @return string + */ + public function getName() { + return ''; + } +} diff --git a/lib/files/storage/storage.php b/lib/files/storage/storage.php index c96caebf4af..b673bb9a32d 100644 --- a/lib/files/storage/storage.php +++ b/lib/files/storage/storage.php @@ -13,7 +13,7 @@ namespace OC\Files\Storage; * * All paths passed to the storage are relative to the storage and should NOT have a leading slash. */ -interface Storage { +interface Storage extends \OCP\Files\Storage { /** * $parameters is a free form array with the configuration options needed to construct the storage * diff --git a/lib/files/utils/scanner.php b/lib/files/utils/scanner.php index f0dc41ffad3..2cad7dd77bd 100644 --- a/lib/files/utils/scanner.php +++ b/lib/files/utils/scanner.php @@ -72,6 +72,9 @@ class Scanner extends PublicEmitter { public function backgroundScan($dir) { $mounts = $this->getMounts($dir); foreach ($mounts as $mount) { + if (is_null($mount->getStorage())) { + continue; + } $scanner = $mount->getStorage()->getScanner(); $this->attachListener($mount); $scanner->backgroundScan(); @@ -81,6 +84,9 @@ class Scanner extends PublicEmitter { public function scan($dir) { $mounts = $this->getMounts($dir); foreach ($mounts as $mount) { + if (is_null($mount->getStorage())) { + continue; + } $scanner = $mount->getStorage()->getScanner(); $this->attachListener($mount); $scanner->scan('', \OC\Files\Cache\Scanner::SCAN_RECURSIVE, \OC\Files\Cache\Scanner::REUSE_ETAG); diff --git a/lib/files/view.php b/lib/files/view.php index 6d58bcd9918..968b755a661 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -30,7 +30,7 @@ class View { private $internal_path_cache = array(); private $storage_cache = array(); - public function __construct($root) { + public function __construct($root = '') { $this->fakeRoot = $root; } diff --git a/lib/helper.php b/lib/helper.php index 29660b9e1f1..66e7acb407a 100644 --- a/lib/helper.php +++ b/lib/helper.php @@ -282,7 +282,6 @@ class OC_Helper { */ public static function humanFileSize($bytes) { if ($bytes < 0) { - $l = OC_L10N::get('lib'); return "?"; } if ($bytes < 1024) { @@ -296,10 +295,17 @@ class OC_Helper { if ($bytes < 1024) { return "$bytes MB"; } + $bytes = round($bytes / 1024, 1); + if ($bytes < 1024) { + return "$bytes GB"; + } + $bytes = round($bytes / 1024, 1); + if ($bytes < 1024) { + return "$bytes TB"; + } - // Wow, heavy duty for owncloud $bytes = round($bytes / 1024, 1); - return "$bytes GB"; + return "$bytes PB"; } /** diff --git a/lib/installer.php b/lib/installer.php index 607e6da7265..e082c7eeee9 100644 --- a/lib/installer.php +++ b/lib/installer.php @@ -428,6 +428,7 @@ class OC_Installer{ 'OC_API::', 'OC_App::', 'OC_AppConfig::', + 'OC_Avatar', 'OC_BackgroundJob::', 'OC_Config::', 'OC_DB::', diff --git a/lib/l10n/km.php b/lib/l10n/km.php new file mode 100644 index 00000000000..e7b09649a24 --- /dev/null +++ b/lib/l10n/km.php @@ -0,0 +1,8 @@ +<?php +$TRANSLATIONS = array( +"_%n minute ago_::_%n minutes ago_" => array(""), +"_%n hour ago_::_%n hours ago_" => array(""), +"_%n day go_::_%n days ago_" => array(""), +"_%n month ago_::_%n months ago_" => array("") +); +$PLURAL_FORMS = "nplurals=1; plural=0;"; diff --git a/lib/l10n/lt_LT.php b/lib/l10n/lt_LT.php index 242b0a23106..1fd9b9ea634 100644 --- a/lib/l10n/lt_LT.php +++ b/lib/l10n/lt_LT.php @@ -1,30 +1,69 @@ <?php $TRANSLATIONS = array( +"App \"%s\" can't be installed because it is not compatible with this version of ownCloud." => "Programa „%s“ negali būti įdiegta, nes yra nesuderinama su šia ownCloud versija.", +"No app name specified" => "Nenurodytas programos pavadinimas", "Help" => "Pagalba", "Personal" => "Asmeniniai", "Settings" => "Nustatymai", "Users" => "Vartotojai", "Admin" => "Administravimas", +"Failed to upgrade \"%s\"." => "Nepavyko pakelti „%s“ versijos.", "web services under your control" => "jūsų valdomos web paslaugos", +"cannot open \"%s\"" => "nepavyksta atverti „%s“", "ZIP download is turned off." => "ZIP atsisiuntimo galimybė yra išjungta.", "Files need to be downloaded one by one." => "Failai turi būti parsiunčiami vienas po kito.", "Back to Files" => "Atgal į Failus", "Selected files too large to generate zip file." => "Pasirinkti failai per dideli archyvavimui į ZIP.", +"Download the files in smaller chunks, seperately or kindly ask your administrator." => "Atsisiųskite failus mažesnėmis dalimis atskirai, arba mandagiai prašykite savo administratoriaus.", +"No source specified when installing app" => "Nenurodytas šaltinis diegiant programą", +"No href specified when installing app from http" => "Nenurodytas href diegiant programą iš http", +"No path specified when installing app from local file" => "Nenurodytas kelias diegiant programą iš vietinio failo", +"Archives of type %s are not supported" => "%s tipo archyvai nepalaikomi", +"Failed to open archive when installing app" => "Nepavyko atverti archyvo diegiant programą", +"App does not provide an info.xml file" => "Programa nepateikia info.xml failo", +"App can't be installed because of not allowed code in the App" => "Programa negali būti įdiegta, nes turi neleistiną kodą", +"App can't be installed because it is not compatible with this version of ownCloud" => "Programa negali būti įdiegta, nes yra nesuderinama su šia ownCloud versija", +"App can't be installed because it contains the <shipped>true</shipped> tag which is not allowed for non shipped apps" => "Programa negali būti įdiegta, nes turi <shipped>true</shipped> žymę, kuri yra neleistina ne kartu platinamoms programoms", +"App can't be installed because the version in info.xml/version is not the same as the version reported from the app store" => "Programa negali būti įdiegta, nes versija pateikta info.xml/version nesutampa su versija deklaruota programų saugykloje", +"App directory already exists" => "Programos aplankas jau egzistuoja", +"Can't create app folder. Please fix permissions. %s" => "Nepavyksta sukurti aplanko. Prašome pataisyti leidimus. %s", "Application is not enabled" => "Programa neįjungta", "Authentication error" => "Autentikacijos klaida", "Token expired. Please reload page." => "Sesija baigėsi. Prašome perkrauti puslapį.", "Files" => "Failai", "Text" => "Žinučių", "Images" => "Paveikslėliai", +"%s enter the database username." => "%s įrašykite duombazės naudotojo vardą.", +"%s enter the database name." => "%s įrašykite duombazės pavadinimą.", +"%s you may not use dots in the database name" => "%s negalite naudoti taškų duombazės pavadinime", +"MS SQL username and/or password not valid: %s" => "MS SQL naudotojo vardas ir/arba slaptažodis netinka: %s", +"You need to enter either an existing account or the administrator." => "Turite prisijungti su egzistuojančia paskyra arba su administratoriumi.", +"MySQL username and/or password not valid" => "Neteisingas MySQL naudotojo vardas ir/arba slaptažodis", +"DB Error: \"%s\"" => "DB klaida: \"%s\"", +"Offending command was: \"%s\"" => "Vykdyta komanda buvo: \"%s\"", +"MySQL user '%s'@'localhost' exists already." => "MySQL naudotojas '%s'@'localhost' jau egzistuoja.", +"Drop this user from MySQL" => "Pašalinti šį naudotoją iš MySQL", +"MySQL user '%s'@'%%' already exists" => "MySQL naudotojas '%s'@'%%' jau egzistuoja", +"Drop this user from MySQL." => "Pašalinti šį naudotoją iš MySQL.", +"Oracle connection could not be established" => "Nepavyko sukurti Oracle ryšio", +"Oracle username and/or password not valid" => "Neteisingas Oracle naudotojo vardas ir/arba slaptažodis", +"Offending command was: \"%s\", name: %s, password: %s" => "Vykdyta komanda buvo: \"%s\", name: %s, password: %s", +"PostgreSQL username and/or password not valid" => "Neteisingas PostgreSQL naudotojo vardas ir/arba slaptažodis", +"Set an admin username." => "Nustatyti administratoriaus naudotojo vardą.", +"Set an admin password." => "Nustatyti administratoriaus slaptažodį.", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Jūsų serveris nėra tvarkingai nustatytas leisti failų sinchronizaciją, nes WebDAV sąsaja panašu, kad yra sugadinta.", +"Please double check the <a href='%s'>installation guides</a>." => "Prašome pažiūrėkite dar kartą <a href='%s'>diegimo instrukcijas</a>.", "seconds ago" => "prieš sekundę", -"_%n minute ago_::_%n minutes ago_" => array("",""," prieš %n minučių"), -"_%n hour ago_::_%n hours ago_" => array("","","prieš %n valandų"), +"_%n minute ago_::_%n minutes ago_" => array("prieš %n min.","Prieš % minutes","Prieš %n minučių"), +"_%n hour ago_::_%n hours ago_" => array("Prieš %n valandą","Prieš %n valandas","Prieš %n valandų"), "today" => "šiandien", "yesterday" => "vakar", -"_%n day go_::_%n days ago_" => array("","",""), +"_%n day go_::_%n days ago_" => array("Prieš %n dieną","Prieš %n dienas","Prieš %n dienų"), "last month" => "praeitą mėnesį", -"_%n month ago_::_%n months ago_" => array("","","prieš %n mėnesių"), +"_%n month ago_::_%n months ago_" => array("Prieš %n mėnesį","Prieš %n mėnesius","Prieš %n mėnesių"), "last year" => "praeitais metais", -"years ago" => "prieš metus" +"years ago" => "prieš metus", +"Caused by:" => "Iššaukė:", +"Could not find category \"%s\"" => "Nepavyko rasti kategorijos „%s“" ); $PLURAL_FORMS = "nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%100<10 || n%100>=20) ? 1 : 2);"; diff --git a/lib/notsquareexception.php b/lib/notsquareexception.php new file mode 100644 index 00000000000..03dba8fb25f --- /dev/null +++ b/lib/notsquareexception.php @@ -0,0 +1,12 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OC; + +class NotSquareException extends \Exception { +} diff --git a/lib/public/db.php b/lib/public/db.php index 932e79d9ef1..9512cca2d19 100644 --- a/lib/public/db.php +++ b/lib/public/db.php @@ -102,4 +102,15 @@ class DB { public static function isError($result) { return(\OC_DB::isError($result)); } + + /** + * returns the error code and message as a string for logging + * works with DoctrineException + * @param mixed $error + * @return string + */ + public static function getErrorMessage($error) { + return(\OC_DB::getErrorMessage($error)); + } + } diff --git a/lib/public/files/alreadyexistsexception.php b/lib/public/files/alreadyexistsexception.php new file mode 100644 index 00000000000..32947c7a5c3 --- /dev/null +++ b/lib/public/files/alreadyexistsexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class AlreadyExistsException extends \Exception {} diff --git a/lib/public/files/file.php b/lib/public/files/file.php new file mode 100644 index 00000000000..916b2edd6c4 --- /dev/null +++ b/lib/public/files/file.php @@ -0,0 +1,53 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +interface File extends Node { + /** + * Get the content of the file as string + * + * @return string + * @throws \OCP\Files\NotPermittedException + */ + public function getContent(); + + /** + * Write to the file from string data + * + * @param string $data + * @throws \OCP\Files\NotPermittedException + */ + public function putContent($data); + + /** + * Get the mimetype of the file + * + * @return string + */ + public function getMimeType(); + + /** + * Open the file as stream, resulting resource can be operated as stream like the result from php's own fopen + * + * @param string $mode + * @return resource + * @throws \OCP\Files\NotPermittedException + */ + public function fopen($mode); + + /** + * Compute the hash of the file + * Type of hash is set with $type and can be anything supported by php's hash_file + * + * @param string $type + * @param bool $raw + * @return string + */ + public function hash($type, $raw = false); +} diff --git a/lib/public/files/folder.php b/lib/public/files/folder.php new file mode 100644 index 00000000000..da7f20fd366 --- /dev/null +++ b/lib/public/files/folder.php @@ -0,0 +1,119 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +interface Folder extends Node { + /** + * Get the full path of an item in the folder within owncloud's filesystem + * + * @param string $path relative path of an item in the folder + * @return string + * @throws \OCP\Files\NotPermittedException + */ + public function getFullPath($path); + + /** + * Get the path of an item in the folder relative to the folder + * + * @param string $path absolute path of an item in the folder + * @throws \OCP\Files\NotFoundException + * @return string + */ + public function getRelativePath($path); + + /** + * check if a node is a (grand-)child of the folder + * + * @param \OCP\Files\Node $node + * @return bool + */ + public function isSubNode($node); + + /** + * get the content of this directory + * + * @throws \OCP\Files\NotFoundException + * @return \OCP\Files\Node[] + */ + public function getDirectoryListing(); + + /** + * Get the node at $path + * + * @param string $path relative path of the file or folder + * @return \OCP\Files\Node + * @throws \OCP\Files\NotFoundException + */ + public function get($path); + + /** + * Check if a file or folder exists in the folder + * + * @param string $path relative path of the file or folder + * @return bool + */ + public function nodeExists($path); + + /** + * Create a new folder + * + * @param string $path relative path of the new folder + * @return \OCP\Files\Folder + * @throws \OCP\Files\NotPermittedException + */ + public function newFolder($path); + + /** + * Create a new file + * + * @param string $path relative path of the new file + * @return \OCP\Files\File + * @throws \OCP\Files\NotPermittedException + */ + public function newFile($path); + + /** + * search for files with the name matching $query + * + * @param string $query + * @return \OCP\Files\Node[] + */ + public function search($query); + + /** + * search for files by mimetype + * $mimetype can either be a full mimetype (image/png) or a wildcard mimetype (image) + * + * @param string $mimetype + * @return \OCP\Files\Node[] + */ + public function searchByMime($mimetype); + + /** + * get a file or folder inside the folder by it's internal id + * + * @param int $id + * @return \OCP\Files\Node[] + */ + public function getById($id); + + /** + * Get the amount of free space inside the folder + * + * @return int + */ + public function getFreeSpace(); + + /** + * Check if new files or folders can be created within the folder + * + * @return bool + */ + public function isCreatable(); +} diff --git a/lib/public/files/node.php b/lib/public/files/node.php new file mode 100644 index 00000000000..b3ddf6de621 --- /dev/null +++ b/lib/public/files/node.php @@ -0,0 +1,159 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +interface Node { + /** + * Move the file or folder to a new location + * + * @param string $targetPath the absolute target path + * @throws \OCP\Files\NotPermittedException + * @return \OCP\Files\Node + */ + public function move($targetPath); + + /** + * Delete the file or folder + */ + public function delete(); + + /** + * Cope the file or folder to a new location + * + * @param string $targetPath the absolute target path + * @return \OCP\Files\Node + */ + public function copy($targetPath); + + /** + * Change the modified date of the file or folder + * If $mtime is omitted the current time will be used + * + * @param int $mtime (optional) modified date as unix timestamp + * @throws \OCP\Files\NotPermittedException + */ + public function touch($mtime = null); + + /** + * Get the storage backend the file or folder is stored on + * + * @return \OCP\Files\Storage + * @throws \OCP\Files\NotFoundException + */ + public function getStorage(); + + /** + * Get the full path of the file or folder + * + * @return string + */ + public function getPath(); + + /** + * Get the path of the file or folder relative to the mountpoint of it's storage + * + * @return string + */ + public function getInternalPath(); + + /** + * Get the internal file id for the file or folder + * + * @return int + */ + public function getId(); + + /** + * Get metadata of the file or folder + * The returned array contains the following values: + * - mtime + * - size + * + * @return array + */ + public function stat(); + + /** + * Get the modified date of the file or folder as unix timestamp + * + * @return int + */ + public function getMTime(); + + /** + * Get the size of the file or folder in bytes + * + * @return int + */ + public function getSize(); + + /** + * Get the Etag of the file or folder + * The Etag is an string id used to detect changes to a file or folder, + * every time the file or folder is changed the Etag will change to + * + * @return string + */ + public function getEtag(); + + + /** + * Get the permissions of the file or folder as a combination of one or more of the following constants: + * - \OCP\PERMISSION_READ + * - \OCP\PERMISSION_UPDATE + * - \OCP\PERMISSION_CREATE + * - \OCP\PERMISSION_DELETE + * - \OCP\PERMISSION_SHARE + * + * @return int + */ + public function getPermissions(); + + /** + * Check if the file or folder is readable + * + * @return bool + */ + public function isReadable(); + + /** + * Check if the file or folder is writable + * + * @return bool + */ + public function isUpdateable(); + + /** + * Check if the file or folder is deletable + * + * @return bool + */ + public function isDeletable(); + + /** + * Check if the file or folder is shareable + * + * @return bool + */ + public function isShareable(); + + /** + * Get the parent folder of the file or folder + * + * @return Folder + */ + public function getParent(); + + /** + * Get the filename of the file or folder + * + * @return string + */ + public function getName(); +} diff --git a/lib/public/files/notenoughspaceexception.php b/lib/public/files/notenoughspaceexception.php new file mode 100644 index 00000000000..e51806666ad --- /dev/null +++ b/lib/public/files/notenoughspaceexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class NotEnoughSpaceException extends \Exception {} diff --git a/lib/public/files/notfoundexception.php b/lib/public/files/notfoundexception.php new file mode 100644 index 00000000000..1ff426a40c6 --- /dev/null +++ b/lib/public/files/notfoundexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class NotFoundException extends \Exception {} diff --git a/lib/public/files/notpermittedexception.php b/lib/public/files/notpermittedexception.php new file mode 100644 index 00000000000..0509de7e829 --- /dev/null +++ b/lib/public/files/notpermittedexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class NotPermittedException extends \Exception {} diff --git a/lib/public/files/storage.php b/lib/public/files/storage.php new file mode 100644 index 00000000000..f32f2073483 --- /dev/null +++ b/lib/public/files/storage.php @@ -0,0 +1,297 @@ +<?php +/** + * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +/** + * Provide a common interface to all different storage options + * + * All paths passed to the storage are relative to the storage and should NOT have a leading slash. + */ +interface Storage { + /** + * $parameters is a free form array with the configuration options needed to construct the storage + * + * @param array $parameters + */ + public function __construct($parameters); + + /** + * Get the identifier for the storage, + * the returned id should be the same for every storage object that is created with the same parameters + * and two storage objects with the same id should refer to two storages that display the same files. + * + * @return string + */ + public function getId(); + + /** + * see http://php.net/manual/en/function.mkdir.php + * + * @param string $path + * @return bool + */ + public function mkdir($path); + + /** + * see http://php.net/manual/en/function.rmdir.php + * + * @param string $path + * @return bool + */ + public function rmdir($path); + + /** + * see http://php.net/manual/en/function.opendir.php + * + * @param string $path + * @return resource + */ + public function opendir($path); + + /** + * see http://php.net/manual/en/function.is_dir.php + * + * @param string $path + * @return bool + */ + public function is_dir($path); + + /** + * see http://php.net/manual/en/function.is_file.php + * + * @param string $path + * @return bool + */ + public function is_file($path); + + /** + * see http://php.net/manual/en/function.stat.php + * only the following keys are required in the result: size and mtime + * + * @param string $path + * @return array + */ + public function stat($path); + + /** + * see http://php.net/manual/en/function.filetype.php + * + * @param string $path + * @return bool + */ + public function filetype($path); + + /** + * see http://php.net/manual/en/function.filesize.php + * The result for filesize when called on a folder is required to be 0 + * + * @param string $path + * @return int + */ + public function filesize($path); + + /** + * check if a file can be created in $path + * + * @param string $path + * @return bool + */ + public function isCreatable($path); + + /** + * check if a file can be read + * + * @param string $path + * @return bool + */ + public function isReadable($path); + + /** + * check if a file can be written to + * + * @param string $path + * @return bool + */ + public function isUpdatable($path); + + /** + * check if a file can be deleted + * + * @param string $path + * @return bool + */ + public function isDeletable($path); + + /** + * check if a file can be shared + * + * @param string $path + * @return bool + */ + public function isSharable($path); + + /** + * get the full permissions of a path. + * Should return a combination of the PERMISSION_ constants defined in lib/public/constants.php + * + * @param string $path + * @return int + */ + public function getPermissions($path); + + /** + * see http://php.net/manual/en/function.file_exists.php + * + * @param string $path + * @return bool + */ + public function file_exists($path); + + /** + * see http://php.net/manual/en/function.filemtime.php + * + * @param string $path + * @return int + */ + public function filemtime($path); + + /** + * see http://php.net/manual/en/function.file_get_contents.php + * + * @param string $path + * @return string + */ + public function file_get_contents($path); + + /** + * see http://php.net/manual/en/function.file_put_contents.php + * + * @param string $path + * @param string $data + * @return bool + */ + public function file_put_contents($path, $data); + + /** + * see http://php.net/manual/en/function.unlink.php + * + * @param string $path + * @return bool + */ + public function unlink($path); + + /** + * see http://php.net/manual/en/function.rename.php + * + * @param string $path1 + * @param string $path2 + * @return bool + */ + public function rename($path1, $path2); + + /** + * see http://php.net/manual/en/function.copy.php + * + * @param string $path1 + * @param string $path2 + * @return bool + */ + public function copy($path1, $path2); + + /** + * see http://php.net/manual/en/function.fopen.php + * + * @param string $path + * @param string $mode + * @return resource + */ + public function fopen($path, $mode); + + /** + * get the mimetype for a file or folder + * The mimetype for a folder is required to be "httpd/unix-directory" + * + * @param string $path + * @return string + */ + public function getMimeType($path); + + /** + * see http://php.net/manual/en/function.hash-file.php + * + * @param string $type + * @param string $path + * @param bool $raw + * @return string + */ + public function hash($type, $path, $raw = false); + + /** + * see http://php.net/manual/en/function.free_space.php + * + * @param string $path + * @return int + */ + public function free_space($path); + + /** + * search for occurrences of $query in file names + * + * @param string $query + * @return array + */ + public function search($query); + + /** + * see http://php.net/manual/en/function.touch.php + * If the backend does not support the operation, false should be returned + * + * @param string $path + * @param int $mtime + * @return bool + */ + public function touch($path, $mtime = null); + + /** + * get the path to a local version of the file. + * The local version of the file can be temporary and doesn't have to be persistent across requests + * + * @param string $path + * @return string + */ + public function getLocalFile($path); + + /** + * get the path to a local version of the folder. + * The local version of the folder can be temporary and doesn't have to be persistent across requests + * + * @param string $path + * @return string + */ + public function getLocalFolder($path); + /** + * check if a file or folder has been updated since $time + * + * @param string $path + * @param int $time + * @return bool + * + * hasUpdated for folders should return at least true if a file inside the folder is add, removed or renamed. + * returning true for other changes in the folder is optional + */ + public function hasUpdated($path, $time); + + /** + * get the ETag for a file or folder + * + * @param string $path + * @return string + */ + public function getETag($path); +} diff --git a/lib/templatelayout.php b/lib/templatelayout.php index 0b868a39e49..625f3424a04 100644 --- a/lib/templatelayout.php +++ b/lib/templatelayout.php @@ -46,6 +46,7 @@ class OC_TemplateLayout extends OC_Template { $user_displayname = OC_User::getDisplayName(); $this->assign( 'user_displayname', $user_displayname ); $this->assign( 'user_uid', OC_User::getUser() ); + $this->assign('enableAvatars', \OC_Config::getValue('enable_avatars', true)); } else if ($renderas == 'guest' || $renderas == 'error') { parent::__construct('core', 'layout.guest'); } else { diff --git a/settings/css/settings.css b/settings/css/settings.css index d5ffe448482..57a43180a43 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -21,6 +21,10 @@ input#openid, input#webdav { width:20em; } input#identity { width:20em; } #email { width: 17em; } +#avatar .warning { + width: 350px; +} + .msg.success{ color:#fff; background-color:#0f0; padding:3px; text-shadow:1px 1px #000; } .msg.error{ color:#fff; background-color:#f00; padding:3px; text-shadow:1px 1px #000; } diff --git a/settings/js/personal.js b/settings/js/personal.js index 77826c82de1..fab32b83b64 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -44,6 +44,78 @@ function changeDisplayName(){ } } +function updateAvatar () { + $headerdiv = $('#header .avatardiv'); + $displaydiv = $('#displayavatar .avatardiv'); + + $headerdiv.css({'background-color': ''}); + $headerdiv.avatar(OC.currentUser, 32, true); + $displaydiv.css({'background-color': ''}); + $displaydiv.avatar(OC.currentUser, 128, true); +} + +function showAvatarCropper() { + $cropper = $('#cropper'); + $cropper.prepend("<img>"); + $cropperImage = $('#cropper img'); + + $cropperImage.attr('src', OC.Router.generate('core_avatar_get_tmp')+'?requesttoken='+oc_requesttoken+'#'+Math.floor(Math.random()*1000)); + + // Looks weird, but on('load', ...) doesn't work in IE8 + $cropperImage.ready(function(){ + $('#displayavatar').hide(); + $cropper.show(); + + $cropperImage.Jcrop({ + onChange: saveCoords, + onSelect: saveCoords, + aspectRatio: 1, + boxHeight: 500, + boxWidth: 500, + setSelect: [0, 0, 300, 300] + }); + }); +} + +function sendCropData() { + cleanCropper(); + + var cropperdata = $('#cropper').data(); + var data = { + x: cropperdata.x, + y: cropperdata.y, + w: cropperdata.w, + h: cropperdata.h + }; + $.post(OC.Router.generate('core_avatar_post_cropped'), {crop: data}, avatarResponseHandler); +} + +function saveCoords(c) { + $('#cropper').data(c); +} + +function cleanCropper() { + $cropper = $('#cropper'); + $('#displayavatar').show(); + $cropper.hide(); + $('.jcrop-holder').remove(); + $('#cropper img').removeData('Jcrop').removeAttr('style').removeAttr('src'); + $('#cropper img').remove(); +} + +function avatarResponseHandler(data) { + $warning = $('#avatar .warning'); + $warning.hide(); + if (data.status === "success") { + updateAvatar(); + } else if (data.data === "notsquare") { + showAvatarCropper(); + } else { + $warning.show(); + $warning.text(data.data.message); + } +} + $(document).ready(function(){ $("#passwordbutton").click( function(){ if ($('#pass1').val() !== '' && $('#pass2').val() !== '') { @@ -128,6 +200,46 @@ $(document).ready(function(){ } }); + var uploadparms = { + done: function(e, data) { + avatarResponseHandler(data.result); + } + }; + + $('#uploadavatarbutton').click(function(){ + $('#uploadavatar').click(); + }); + + $('#uploadavatar').fileupload(uploadparms); + + $('#selectavatar').click(function(){ + OC.dialogs.filepicker( + t('settings', "Select a profile picture"), + function(path){ + $.post(OC.Router.generate('core_avatar_post'), {path: path}, avatarResponseHandler); + }, + false, + ["image/png", "image/jpeg"] + ); + }); + + $('#removeavatar').click(function(){ + $.ajax({ + type: 'DELETE', + url: OC.Router.generate('core_avatar_delete'), + success: function(msg) { + updateAvatar(); + } + }); + }); + + $('#abortcropperbutton').click(function(){ + cleanCropper(); + }); + + $('#sendcropperbutton').click(function(){ + sendCropData(); + }); } ); OC.Encryption = { diff --git a/settings/js/users.js b/settings/js/users.js index ab08d7099c6..01a845367e2 100644 --- a/settings/js/users.js +++ b/settings/js/users.js @@ -91,13 +91,13 @@ var UserList = { tr.find('td.displayName > span').text(displayname); var groupsSelect = $('<select multiple="multiple" class="groupsselect" data-placehoder="Groups" title="' + t('settings', 'Groups') + '"></select>') .attr('data-username', username) - .attr('data-user-groups', [groups]); + .data('user-groups', groups); tr.find('td.groups').empty(); if (tr.find('td.subadmins').length > 0) { var subadminSelect = $('<select multiple="multiple" class="subadminsselect" data-placehoder="subadmins" title="' + t('settings', 'Group Admin') + '">') .attr('data-username', username) - .attr('data-user-groups', [groups]) - .attr('data-subadmin', [subadmin]); + .data('user-groups', groups) + .data('subadmin', subadmin); tr.find('td.subadmins').empty(); } $.each(this.availableGroups, function (i, group) { diff --git a/settings/l10n/lt_LT.php b/settings/l10n/lt_LT.php index da0fb8f56b5..31c9e2be59f 100644 --- a/settings/l10n/lt_LT.php +++ b/settings/l10n/lt_LT.php @@ -2,6 +2,8 @@ $TRANSLATIONS = array( "Unable to load list from App Store" => "Neįmanoma įkelti sąrašo iš Programų Katalogo", "Authentication error" => "Autentikacijos klaida", +"Your display name has been changed." => "Jūsų rodomas vardas buvo pakeistas.", +"Unable to change display name" => "Nepavyksta pakeisti rodomą vardą", "Group already exists" => "Grupė jau egzistuoja", "Unable to add group" => "Nepavyko pridėti grupės", "Email saved" => "El. paštas išsaugotas", @@ -10,6 +12,7 @@ $TRANSLATIONS = array( "Unable to delete user" => "Nepavyko ištrinti vartotojo", "Language changed" => "Kalba pakeista", "Invalid request" => "Klaidinga užklausa", +"Admins can't remove themself from the admin group" => "Administratoriai negali pašalinti savęs iš administratorių grupės", "Unable to add user to group %s" => "Nepavyko pridėti vartotojo prie grupės %s", "Unable to remove user from group %s" => "Nepavyko ištrinti vartotojo iš grupės %s", "Couldn't update app." => "Nepavyko atnaujinti programos.", @@ -17,16 +20,20 @@ $TRANSLATIONS = array( "Disable" => "Išjungti", "Enable" => "Įjungti", "Please wait...." => "Prašome palaukti...", +"Error while disabling app" => "Klaida išjungiant programą", +"Error while enabling app" => "Klaida įjungiant programą", "Updating...." => "Atnaujinama...", "Error while updating app" => "Įvyko klaida atnaujinant programą", "Error" => "Klaida", "Update" => "Atnaujinti", "Updated" => "Atnaujinta", +"Decrypting files... Please wait, this can take some time." => "Iššifruojami failai... Prašome palaukti, tai gali užtrukti.", "Saving..." => "Saugoma...", "deleted" => "ištrinta", "undo" => "anuliuoti", "Unable to remove user" => "Nepavyko ištrinti vartotojo", "Groups" => "Grupės", +"Group Admin" => "Grupės administratorius", "Delete" => "Ištrinti", "add group" => "pridėti grupę", "A valid username must be provided" => "Vartotojo vardas turi būti tinkamas", @@ -34,42 +41,83 @@ $TRANSLATIONS = array( "A valid password must be provided" => "Slaptažodis turi būti tinkamas", "__language_name__" => "Kalba", "Security Warning" => "Saugumo pranešimas", +"Your data directory and your files are probably accessible from the internet. The .htaccess file is not working. We strongly suggest that you configure your webserver in a way that the data directory is no longer accessible or you move the data directory outside the webserver document root." => "Jūsų duomenų katalogas ir Jūsų failai turbūt yra pasiekiami per internetą. Failas .htaccess neveikia. Mes labai rekomenduojame sukonfigūruoti serverį taip, kad katalogas nebūtų daugiau pasiekiamas, arba iškelkite duomenis kitur iš webserverio šakninio aplanko.", +"Setup Warning" => "Nustatyti perspėjimą", +"Your web server is not yet properly setup to allow files synchronization because the WebDAV interface seems to be broken." => "Jūsų serveris nėra tvarkingai nustatytas leisti failų sinchronizaciją, nes WebDAV sąsaja panašu, kad yra sugadinta.", +"Please double check the <a href=\"%s\">installation guides</a>." => "Prašome pažiūrėkite dar kartą <a href=\"%s\">diegimo instrukcijas</a>.", "Module 'fileinfo' missing" => "Trūksta 'fileinfo' modulio", +"The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." => "Trūksta PHP modulio „fileinfo“. Labai rekomenduojame įjungti šį modulį, kad gauti geriausius rezultatus nustatant mime-tipą.", +"Locale not working" => "Lokalė neveikia", +"System locale can't be set to %s. This means that there might be problems with certain characters in file names. We strongly suggest to install the required packages on your system to support %s." => "Negalima nustatyti sistemos lokalės į %s. Tai reiškia, kad gali būti problemų su tam tikrais simboliais failų pavadinimuose. Labai rekomenduojame įdiegti reikalingus paketus Jūsų sistemoje, kad palaikyti %s.", +"Internet connection not working" => "Nėra interneto ryšio", +"This server has no working internet connection. This means that some of the features like mounting of external storage, notifications about updates or installation of 3rd party apps don´t work. Accessing files from remote and sending of notification emails might also not work. We suggest to enable internet connection for this server if you want to have all features." => "Šis serveris neturi veikiančio ryšio. Tai reiškia, kas kai kurios funkcijos kaip išorinės saugyklos prijungimas, perspėjimai apie atnaujinimus ar trečių šalių programų įdiegimas neveikia. Failų pasiekimas iš kitur ir pranešimų siuntimas el. paštu gali taip pat neveikti. Rekomenduojame įjungti interneto ryšį šiame serveryje, jei norite naudoti visas funkcijas.", "Cron" => "Cron", +"Execute one task with each page loaded" => "Įvykdyti vieną užduotį su kiekvieno puslapio įkėlimu", +"cron.php is registered at a webcron service to call cron.php once a minute over http." => "cron.php yra registruotas tinklapio suplanuotų užduočių paslaugose, kad iškviesti cron.php kartą per minutę per http.", +"Use systems cron service to call the cron.php file once a minute." => "Naudoti sistemos planuotų užduočių paslaugą, kad iškvieti cron.php kartą per minutę.", "Sharing" => "Dalijimasis", +"Enable Share API" => "Įjungti Share API", +"Allow apps to use the Share API" => "Leidžia programoms naudoti Share API", "Allow links" => "Lesti nuorodas", +"Allow users to share items to the public with links" => "Leisti naudotojams viešai dalintis elementais su nuorodomis", +"Allow public uploads" => "Leisti viešus įkėlimus", +"Allow users to enable others to upload into their publicly shared folders" => "Leisti naudotojams įgalinti kitus įkelti į savo viešai dalinamus aplankus", "Allow resharing" => "Leisti dalintis", +"Allow users to share items shared with them again" => "Leisti naudotojams toliau dalintis elementais pasidalintais su jais", +"Allow users to share with anyone" => "Leisti naudotojams dalintis su bet kuo", +"Allow users to only share with users in their groups" => "Leisti naudotojams dalintis tik su naudotojais savo grupėje", "Security" => "Saugumas", +"Enforce HTTPS" => "Reikalauti HTTPS", +"Forces the clients to connect to %s via an encrypted connection." => "Verčia klientus jungtis prie %s per šifruotą ryšį.", +"Please connect to your %s via HTTPS to enable or disable the SSL enforcement." => "Prašome prisijungti prie savo %s per HTTPS, kad įjungti ar išjungti SSL reikalavimą.", "Log" => "Žurnalas", "Log level" => "Žurnalo išsamumas", "More" => "Daugiau", "Less" => "Mažiau", "Version" => "Versija", +"Developed by the <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud community</a>, the <a href=\"https://github.com/owncloud\" target=\"_blank\">source code</a> is licensed under the <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>." => "Sukurta <a href=\"http://ownCloud.org/contact\" target=\"_blank\">ownCloud bendruomenės</a>, <a href=\"https://github.com/owncloud\" target=\"_blank\">pirminis kodas</a> platinamas pagal <a href=\"http://www.gnu.org/licenses/agpl-3.0.html\" target=\"_blank\"><abbr title=\"Affero General Public License\">AGPL</abbr></a>.", "Add your App" => "Pridėti programėlę", "More Apps" => "Daugiau aplikacijų", "Select an App" => "Pasirinkite programą", +"See application page at apps.owncloud.com" => "Žiūrėti programos puslapį svetainėje apps.owncloud.com", "<span class=\"licence\"></span>-licensed by <span class=\"author\"></span>" => "<span class=\"licence\"></span>- autorius<span class=\"author\"></span>", +"User Documentation" => "Naudotojo dokumentacija", +"Administrator Documentation" => "Administratoriaus dokumentacija", +"Online Documentation" => "Dokumentacija tinkle", "Forum" => "Forumas", "Bugtracker" => "Klaidų sekimas", +"Commercial Support" => "Komercinis palaikymas", "Get the apps to sync your files" => "Atsisiųskite programėlių, kad sinchronizuotumėte savo failus", +"Show First Run Wizard again" => "Rodyti pirmo karto vedlį dar kartą", +"You have used <strong>%s</strong> of the available <strong>%s</strong>" => "Jūs naudojate <strong>%s</strong> iš galimų <strong>%s</strong>", "Password" => "Slaptažodis", "Your password was changed" => "Jūsų slaptažodis buvo pakeistas", "Unable to change your password" => "Neįmanoma pakeisti slaptažodžio", "Current password" => "Dabartinis slaptažodis", "New password" => "Naujas slaptažodis", "Change password" => "Pakeisti slaptažodį", +"Display Name" => "Rodyti vardą", "Email" => "El. Paštas", "Your email address" => "Jūsų el. pašto adresas", "Fill in an email address to enable password recovery" => "Pamiršto slaptažodžio atkūrimui įveskite savo el. pašto adresą", "Language" => "Kalba", "Help translate" => "Padėkite išversti", "WebDAV" => "WebDAV", +"Use this address to <a href=\"%s/server/5.0/user_manual/files/files.html\" target=\"_blank\">access your Files via WebDAV</a>" => "Naudokite šį adresą, kad <a href=\"%s/server/5.0/user_manual/files/files.html\" target=\"_blank\">pasiekti savo failus per WebDAV</a>", "Encryption" => "Šifravimas", +"The encryption app is no longer enabled, decrypt all your file" => "Šifravimo programa nebėra įjungta, iššifruokite visus savo failus", +"Log-in password" => "Prisijungimo slaptažodis", +"Decrypt all Files" => "Iššifruoti visus failus", "Login Name" => "Vartotojo vardas", "Create" => "Sukurti", +"Admin Recovery Password" => "Administracinis atkūrimo slaptažodis", +"Enter the recovery password in order to recover the users files during password change" => "Įveskite atkūrimo slaptažodį, kad atkurti naudotojo failus keičiant slaptažodį", +"Default Storage" => "Numatytas saugojimas", "Unlimited" => "Neribota", "Other" => "Kita", "Username" => "Prisijungimo vardas", +"Storage" => "Saugojimas", +"change display name" => "keisti rodomą vardą", "set new password" => "nustatyti naują slaptažodį", "Default" => "Numatytasis" ); diff --git a/settings/personal.php b/settings/personal.php index 112eaa3c748..670e18e20ef 100644 --- a/settings/personal.php +++ b/settings/personal.php @@ -15,6 +15,11 @@ OC_Util::addScript( 'settings', 'personal' ); OC_Util::addStyle( 'settings', 'settings' ); OC_Util::addScript( '3rdparty', 'chosen/chosen.jquery.min' ); OC_Util::addStyle( '3rdparty', 'chosen' ); +\OC_Util::addScript('files', 'jquery.fileupload'); +if (\OC_Config::getValue('enable_avatars', true) === true) { + \OC_Util::addScript('3rdparty/Jcrop', 'jquery.Jcrop.min'); + \OC_Util::addStyle('3rdparty/Jcrop', 'jquery.Jcrop.min'); +} OC_App::setActiveNavigationEntry( 'personal' ); $storageInfo=OC_Helper::getStorageInfo('/'); @@ -84,6 +89,7 @@ $tmpl->assign('passwordChangeSupported', OC_User::canUserChangePassword(OC_User: $tmpl->assign('displayNameChangeSupported', OC_User::canUserChangeDisplayName(OC_User::getUser())); $tmpl->assign('displayName', OC_User::getDisplayName()); $tmpl->assign('enableDecryptAll' , $enableDecryptAll); +$tmpl->assign('enableAvatars', \OC_Config::getValue('enable_avatars', true)); $forms=OC_App::getForms('personal'); $tmpl->assign('forms', array()); diff --git a/settings/templates/personal.php b/settings/templates/personal.php index 63e1258b958..d2ca8154f16 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -80,6 +80,27 @@ if($_['passwordChangeSupported']) { } ?> +<?php if ($_['enableAvatars']): ?> +<form id="avatar" method="post" action="<?php p(\OC_Helper::linkToRoute('core_avatar_post')); ?>"> + <fieldset class="personalblock"> + <legend><strong><?php p($l->t('Profile picture')); ?></strong></legend> + <div id="displayavatar"> + <div class="avatardiv"></div><br> + <div class="warning hidden"></div> + <div class="inlineblock button" id="uploadavatarbutton"><?php p($l->t('Upload new')); ?></div> + <input type="file" class="hidden" name="files[]" id="uploadavatar"> + <div class="inlineblock button" id="selectavatar"><?php p($l->t('Select new from Files')); ?></div> + <div class="inlineblock button" id="removeavatar"><?php p($l->t('Remove image')); ?></div><br> + <?php p($l->t('Either png or jpg. Ideally square but you will be able to crop it.')); ?> + </div> + <div id="cropper" class="hidden"> + <div class="inlineblock button" id="abortcropperbutton"><?php p($l->t('Abort')); ?></div> + <div class="inlineblock button primary" id="sendcropperbutton"><?php p($l->t('Choose as profile image')); ?></div> + </div> + </fieldset> +</form> +<?php endif; ?> + <form> <fieldset class="personalblock"> <legend><strong><?php p($l->t('Language'));?></strong></legend> diff --git a/settings/templates/users.php b/settings/templates/users.php index 22450fdf25f..747d052a7bd 100644 --- a/settings/templates/users.php +++ b/settings/templates/users.php @@ -81,6 +81,9 @@ $_['subadmingroups'] = array_flip($items); <table class="hascontrols" data-groups="<?php p(json_encode($allGroups));?>"> <thead> <tr> + <?php if ($_['enableAvatars']): ?> + <th id='headerAvatar'></th> + <?php endif; ?> <th id='headerName'><?php p($l->t('Username'))?></th> <th id="headerDisplayName"><?php p($l->t( 'Display Name' )); ?></th> <th id="headerPassword"><?php p($l->t( 'Password' )); ?></th> @@ -96,6 +99,9 @@ $_['subadmingroups'] = array_flip($items); <?php foreach($_["users"] as $user): ?> <tr data-uid="<?php p($user["name"]) ?>" data-displayName="<?php p($user["displayName"]) ?>"> + <?php if ($_['enableAvatars']): ?> + <td class="avatar"><div class="avatardiv"></div></td> + <?php endif; ?> <td class="name"><?php p($user["name"]); ?></td> <td class="displayName"><span><?php p($user["displayName"]); ?></span> <img class="svg action" src="<?php p(image_path('core', 'actions/rename.svg'))?>" diff --git a/settings/users.php b/settings/users.php index 213d1eecfda..2f1c63a0b59 100644 --- a/settings/users.php +++ b/settings/users.php @@ -81,4 +81,5 @@ $tmpl->assign( 'quota_preset', $quotaPreset); $tmpl->assign( 'default_quota', $defaultQuota); $tmpl->assign( 'defaultQuotaIsUserDefined', $defaultQuotaIsUserDefined); $tmpl->assign( 'recoveryAdminEnabled', $recoveryAdminEnabled); +$tmpl->assign('enableAvatars', \OC_Config::getValue('enable_avatars', true)); $tmpl->printPage(); diff --git a/tests/data/testavatar.png b/tests/data/testavatar.png Binary files differnew file mode 100644 index 00000000000..24770fb634f --- /dev/null +++ b/tests/data/testavatar.png diff --git a/tests/lib/avatar.php b/tests/lib/avatar.php new file mode 100644 index 00000000000..1c5195f8eb1 --- /dev/null +++ b/tests/lib/avatar.php @@ -0,0 +1,26 @@ +<?php +/** + * Copyright (c) 2013 Christopher Schäpers <christopher@schaepers.it> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +class Test_Avatar extends PHPUnit_Framework_TestCase { + + public function testAvatar() { + $this->markTestSkipped("Setting custom avatars with encryption doesn't work yet"); + + $avatar = new \OC_Avatar(\OC_User::getUser()); + + $this->assertEquals(false, $avatar->get()); + + $expected = new OC_Image(\OC::$SERVERROOT.'/tests/data/testavatar.png'); + $avatar->set($expected->data()); + $expected->resize(64); + $this->assertEquals($expected->data(), $avatar->get()->data()); + + $avatar->remove(); + $this->assertEquals(false, $avatar->get()); + } +} diff --git a/tests/lib/files/node/file.php b/tests/lib/files/node/file.php new file mode 100644 index 00000000000..76938a0dcc8 --- /dev/null +++ b/tests/lib/files/node/file.php @@ -0,0 +1,664 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Node; + +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; +use OC\Files\View; + +class File extends \PHPUnit_Framework_TestCase { + private $user; + + public function setUp() { + $this->user = new \OC\User\User('', new \OC_User_Dummy); + } + + public function testDelete() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->exactly(2)) + ->method('emit') + ->will($this->returnValue(true)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $view->expects($this->once()) + ->method('unlink') + ->with('/bar/foo') + ->will($this->returnValue(true)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->delete(); + } + + public function testDeleteHooks() { + $test = $this; + $hooksRun = 0; + /** + * @param \OC\Files\Node\File $node + */ + $preListener = function ($node) use (&$test, &$hooksRun) { + $test->assertInstanceOf('\OC\Files\Node\File', $node); + $test->assertEquals('foo', $node->getInternalPath()); + $test->assertEquals('/bar/foo', $node->getPath()); + $test->assertEquals(1, $node->getId()); + $hooksRun++; + }; + + /** + * @param \OC\Files\Node\File $node + */ + $postListener = function ($node) use (&$test, &$hooksRun) { + $test->assertInstanceOf('\OC\Files\Node\NonExistingFile', $node); + $test->assertEquals('foo', $node->getInternalPath()); + $test->assertEquals('/bar/foo', $node->getPath()); + $hooksRun++; + }; + + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + $root->listen('\OC\Files', 'preDelete', $preListener); + $root->listen('\OC\Files', 'postDelete', $postListener); + + $view->expects($this->any()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 1))); + + $view->expects($this->once()) + ->method('unlink') + ->with('/bar/foo') + ->will($this->returnValue(true)); + + $view->expects($this->any()) + ->method('resolvePath') + ->with('/bar/foo') + ->will($this->returnValue(array(null, 'foo'))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->delete(); + $this->assertEquals(2, $hooksRun); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testDeleteNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->delete(); + } + + public function testGetContent() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $hook = function ($file) { + throw new \Exception('Hooks are not supposed to be called'); + }; + + $root->listen('\OC\Files', 'preWrite', $hook); + $root->listen('\OC\Files', 'postWrite', $hook); + + $view->expects($this->once()) + ->method('file_get_contents') + ->with('/bar/foo') + ->will($this->returnValue('bar')); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals('bar', $node->getContent()); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testGetContentNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => 0))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->getContent(); + } + + public function testPutContent() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $view->expects($this->once()) + ->method('file_put_contents') + ->with('/bar/foo', 'bar') + ->will($this->returnValue(true)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->putContent('bar'); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testPutContentNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->putContent('bar'); + } + + public function testGetMimeType() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->once()) + ->method('getMimeType') + ->with('/bar/foo') + ->will($this->returnValue('text/plain')); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals('text/plain', $node->getMimeType()); + } + + public function testFOpenRead() { + $stream = fopen('php://memory', 'w+'); + fwrite($stream, 'bar'); + rewind($stream); + + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $hook = function ($file) { + throw new \Exception('Hooks are not supposed to be called'); + }; + + $root->listen('\OC\Files', 'preWrite', $hook); + $root->listen('\OC\Files', 'postWrite', $hook); + + $view->expects($this->once()) + ->method('fopen') + ->with('/bar/foo', 'r') + ->will($this->returnValue($stream)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $fh = $node->fopen('r'); + $this->assertEquals($stream, $fh); + $this->assertEquals('bar', fread($fh, 3)); + } + + public function testFOpenWrite() { + $stream = fopen('php://memory', 'w+'); + + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, new $view, $this->user); + + $hooksCalled = 0; + $hook = function ($file) use (&$hooksCalled) { + $hooksCalled++; + }; + + $root->listen('\OC\Files', 'preWrite', $hook); + $root->listen('\OC\Files', 'postWrite', $hook); + + $view->expects($this->once()) + ->method('fopen') + ->with('/bar/foo', 'w') + ->will($this->returnValue($stream)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $fh = $node->fopen('w'); + $this->assertEquals($stream, $fh); + fwrite($fh, 'bar'); + rewind($fh); + $this->assertEquals('bar', fread($stream, 3)); + $this->assertEquals(2, $hooksCalled); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testFOpenReadNotPermitted() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $hook = function ($file) { + throw new \Exception('Hooks are not supposed to be called'); + }; + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => 0))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->fopen('r'); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testFOpenReadWriteNoReadPermissions() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $hook = function () { + throw new \Exception('Hooks are not supposed to be called'); + }; + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_UPDATE))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->fopen('w'); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testFOpenReadWriteNoWritePermissions() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, new $view, $this->user); + + $hook = function () { + throw new \Exception('Hooks are not supposed to be called'); + }; + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $node->fopen('w'); + } + + public function testCopySameStorage() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->any()) + ->method('copy') + ->with('/bar/foo', '/bar/asd'); + + $view->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 3))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); + $newNode = new \OC\Files\Node\File($root, $view, '/bar/asd'); + + $root->expects($this->exactly(2)) + ->method('get') + ->will($this->returnValueMap(array( + array('/bar/asd', $newNode), + array('/bar', $parentNode) + ))); + + $target = $node->copy('/bar/asd'); + $this->assertInstanceOf('\OC\Files\Node\File', $target); + $this->assertEquals(3, $target->getId()); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testCopyNotPermitted() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + /** + * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + + $root->expects($this->never()) + ->method('getMount'); + + $storage->expects($this->never()) + ->method('copy'); + + $view->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ, 'fileid' => 3))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); + + $root->expects($this->once()) + ->method('get') + ->will($this->returnValueMap(array( + array('/bar', $parentNode) + ))); + + $node->copy('/bar/asd'); + } + + /** + * @expectedException \OCP\Files\NotFoundException + */ + public function testCopyNoParent() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->never()) + ->method('copy'); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + + $root->expects($this->once()) + ->method('get') + ->with('/bar/asd') + ->will($this->throwException(new NotFoundException())); + + $node->copy('/bar/asd/foo'); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testCopyParentIsFile() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->never()) + ->method('copy'); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\File($root, $view, '/bar'); + + $root->expects($this->once()) + ->method('get') + ->will($this->returnValueMap(array( + array('/bar', $parentNode) + ))); + + $node->copy('/bar/asd'); + } + + public function testMoveSameStorage() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->any()) + ->method('rename') + ->with('/bar/foo', '/bar/asd'); + + $view->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 1))); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); + + $root->expects($this->any()) + ->method('get') + ->will($this->returnValueMap(array(array('/bar', $parentNode), array('/bar/asd', $node)))); + + $target = $node->move('/bar/asd'); + $this->assertInstanceOf('\OC\Files\Node\File', $target); + $this->assertEquals(1, $target->getId()); + $this->assertEquals('/bar/asd', $node->getPath()); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testMoveNotPermitted() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $view->expects($this->never()) + ->method('rename'); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); + + $root->expects($this->once()) + ->method('get') + ->with('/bar') + ->will($this->returnValue($parentNode)); + + $node->move('/bar/asd'); + } + + /** + * @expectedException \OCP\Files\NotFoundException + */ + public function testMoveNoParent() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + /** + * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + + $storage->expects($this->never()) + ->method('rename'); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\Folder($root, $view, '/bar'); + + $root->expects($this->once()) + ->method('get') + ->with('/bar') + ->will($this->throwException(new NotFoundException())); + + $node->move('/bar/asd'); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testMoveParentIsFile() { + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + + $view->expects($this->never()) + ->method('rename'); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $parentNode = new \OC\Files\Node\File($root, $view, '/bar'); + + $root->expects($this->once()) + ->method('get') + ->with('/bar') + ->will($this->returnValue($parentNode)); + + $node->move('/bar/asd'); + } +} diff --git a/tests/lib/files/node/folder.php b/tests/lib/files/node/folder.php new file mode 100644 index 00000000000..b1589a276ba --- /dev/null +++ b/tests/lib/files/node/folder.php @@ -0,0 +1,479 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Node; + +use OC\Files\Cache\Cache; +use OC\Files\Node\Node; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; +use OC\Files\View; + +class Folder extends \PHPUnit_Framework_TestCase { + private $user; + + public function setUp() { + $this->user = new \OC\User\User('', new \OC_User_Dummy); + } + + public function testDelete() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + $root->expects($this->exactly(2)) + ->method('emit') + ->will($this->returnValue(true)); + + $view->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $view->expects($this->once()) + ->method('rmdir') + ->with('/bar/foo') + ->will($this->returnValue(true)); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $node->delete(); + } + + public function testDeleteHooks() { + $test = $this; + $hooksRun = 0; + /** + * @param \OC\Files\Node\File $node + */ + $preListener = function ($node) use (&$test, &$hooksRun) { + $test->assertInstanceOf('\OC\Files\Node\Folder', $node); + $test->assertEquals('foo', $node->getInternalPath()); + $test->assertEquals('/bar/foo', $node->getPath()); + $hooksRun++; + }; + + /** + * @param \OC\Files\Node\File $node + */ + $postListener = function ($node) use (&$test, &$hooksRun) { + $test->assertInstanceOf('\OC\Files\Node\NonExistingFolder', $node); + $test->assertEquals('foo', $node->getInternalPath()); + $test->assertEquals('/bar/foo', $node->getPath()); + $hooksRun++; + }; + + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + $root->listen('\OC\Files', 'preDelete', $preListener); + $root->listen('\OC\Files', 'postDelete', $postListener); + + $view->expects($this->any()) + ->method('getFileInfo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL, 'fileid' => 1))); + + $view->expects($this->once()) + ->method('rmdir') + ->with('/bar/foo') + ->will($this->returnValue(true)); + + $view->expects($this->any()) + ->method('resolvePath') + ->with('/bar/foo') + ->will($this->returnValue(array(null, 'foo'))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $node->delete(); + $this->assertEquals(2, $hooksRun); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testDeleteNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $node->delete(); + } + + public function testGetDirectoryContent() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + /** + * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + + $cache = $this->getMock('\OC\Files\Cache\Cache', array(), array('')); + $cache->expects($this->any()) + ->method('getStatus') + ->with('foo') + ->will($this->returnValue(Cache::COMPLETE)); + + $cache->expects($this->once()) + ->method('getFolderContents') + ->with('foo') + ->will($this->returnValue(array( + array('fileid' => 2, 'path' => '/bar/foo/asd', 'name' => 'asd', 'size' => 100, 'mtime' => 50, 'mimetype' => 'text/plain'), + array('fileid' => 3, 'path' => '/bar/foo/qwerty', 'name' => 'qwerty', 'size' => 200, 'mtime' => 55, 'mimetype' => 'httpd/unix-directory') + ))); + + $permissionsCache = $this->getMock('\OC\Files\Cache\Permissions', array(), array('/')); + $permissionsCache->expects($this->once()) + ->method('getDirectoryPermissions') + ->will($this->returnValue(array(2 => \OCP\PERMISSION_ALL))); + + $root->expects($this->once()) + ->method('getMountsIn') + ->with('/bar/foo') + ->will($this->returnValue(array())); + + $storage->expects($this->any()) + ->method('getPermissionsCache') + ->will($this->returnValue($permissionsCache)); + $storage->expects($this->any()) + ->method('getCache') + ->will($this->returnValue($cache)); + + $view->expects($this->any()) + ->method('resolvePath') + ->with('/bar/foo') + ->will($this->returnValue(array($storage, 'foo'))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $children = $node->getDirectoryListing(); + $this->assertEquals(2, count($children)); + $this->assertInstanceOf('\OC\Files\Node\File', $children[0]); + $this->assertInstanceOf('\OC\Files\Node\Folder', $children[1]); + $this->assertEquals('asd', $children[0]->getName()); + $this->assertEquals('qwerty', $children[1]->getName()); + } + + public function testGet() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $root->expects($this->once()) + ->method('get') + ->with('/bar/foo/asd'); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $node->get('asd'); + } + + public function testNodeExists() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $child = new \OC\Files\Node\Folder($root, $view, '/bar/foo/asd'); + + $root->expects($this->once()) + ->method('get') + ->with('/bar/foo/asd') + ->will($this->returnValue($child)); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $this->assertTrue($node->nodeExists('asd')); + } + + public function testNodeExistsNotExists() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $root->expects($this->once()) + ->method('get') + ->with('/bar/foo/asd') + ->will($this->throwException(new NotFoundException())); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $this->assertFalse($node->nodeExists('asd')); + } + + public function testNewFolder() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $view->expects($this->once()) + ->method('mkdir') + ->with('/bar/foo/asd') + ->will($this->returnValue(true)); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $child = new \OC\Files\Node\Folder($root, $view, '/bar/foo/asd'); + $result = $node->newFolder('asd'); + $this->assertEquals($child, $result); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testNewFolderNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $node->newFolder('asd'); + } + + public function testNewFile() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $view->expects($this->once()) + ->method('touch') + ->with('/bar/foo/asd') + ->will($this->returnValue(true)); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $child = new \OC\Files\Node\File($root, $view, '/bar/foo/asd'); + $result = $node->newFile('asd'); + $this->assertEquals($child, $result); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testNewFileNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $node->newFile('asd'); + } + + public function testGetFreeSpace() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('free_space') + ->with('/bar/foo') + ->will($this->returnValue(100)); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $this->assertEquals(100, $node->getFreeSpace()); + } + + public function testSearch() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + $storage = $this->getMock('\OC\Files\Storage\Storage'); + $cache = $this->getMock('\OC\Files\Cache\Cache', array(), array('')); + + $storage->expects($this->once()) + ->method('getCache') + ->will($this->returnValue($cache)); + + $cache->expects($this->once()) + ->method('search') + ->with('%qw%') + ->will($this->returnValue(array( + array('fileid' => 3, 'path' => 'foo/qwerty', 'name' => 'qwerty', 'size' => 200, 'mtime' => 55, 'mimetype' => 'text/plain') + ))); + + $root->expects($this->once()) + ->method('getMountsIn') + ->with('/bar/foo') + ->will($this->returnValue(array())); + + $view->expects($this->once()) + ->method('resolvePath') + ->will($this->returnValue(array($storage, 'foo'))); + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $result = $node->search('qw'); + $this->assertEquals(1, count($result)); + $this->assertEquals('/bar/foo/qwerty', $result[0]->getPath()); + } + + public function testSearchSubStorages() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + $storage = $this->getMock('\OC\Files\Storage\Storage'); + $cache = $this->getMock('\OC\Files\Cache\Cache', array(), array('')); + $subCache = $this->getMock('\OC\Files\Cache\Cache', array(), array('')); + $subStorage = $this->getMock('\OC\Files\Storage\Storage'); + $subMount = $this->getMock('\OC\Files\Mount\Mount', array(), array(null, '')); + + $subMount->expects($this->once()) + ->method('getStorage') + ->will($this->returnValue($subStorage)); + + $subMount->expects($this->once()) + ->method('getMountPoint') + ->will($this->returnValue('/bar/foo/bar/')); + + $storage->expects($this->once()) + ->method('getCache') + ->will($this->returnValue($cache)); + + $subStorage->expects($this->once()) + ->method('getCache') + ->will($this->returnValue($subCache)); + + $cache->expects($this->once()) + ->method('search') + ->with('%qw%') + ->will($this->returnValue(array( + array('fileid' => 3, 'path' => 'foo/qwerty', 'name' => 'qwerty', 'size' => 200, 'mtime' => 55, 'mimetype' => 'text/plain') + ))); + + $subCache->expects($this->once()) + ->method('search') + ->with('%qw%') + ->will($this->returnValue(array( + array('fileid' => 4, 'path' => 'asd/qweasd', 'name' => 'qweasd', 'size' => 200, 'mtime' => 55, 'mimetype' => 'text/plain') + ))); + + $root->expects($this->once()) + ->method('getMountsIn') + ->with('/bar/foo') + ->will($this->returnValue(array($subMount))); + + $view->expects($this->once()) + ->method('resolvePath') + ->will($this->returnValue(array($storage, 'foo'))); + + + $node = new \OC\Files\Node\Folder($root, $view, '/bar/foo'); + $result = $node->search('qw'); + $this->assertEquals(2, count($result)); + } + + public function testIsSubNode() { + $file = new Node(null, null, '/foo/bar'); + $folder = new \OC\Files\Node\Folder(null, null, '/foo'); + $this->assertTrue($folder->isSubNode($file)); + $this->assertFalse($folder->isSubNode($folder)); + + $file = new Node(null, null, '/foobar'); + $this->assertFalse($folder->isSubNode($file)); + } +} diff --git a/tests/lib/files/node/integration.php b/tests/lib/files/node/integration.php new file mode 100644 index 00000000000..14e1d05853d --- /dev/null +++ b/tests/lib/files/node/integration.php @@ -0,0 +1,122 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Node; + +use OC\Files\Cache\Cache; +use OC\Files\Mount\Manager; +use OC\Files\Node\Root; +use OCP\Files\NotFoundException; +use OCP\Files\NotPermittedException; +use OC\Files\Storage\Temporary; +use OC\Files\View; +use OC\User\User; + +class IntegrationTests extends \PHPUnit_Framework_TestCase { + /** + * @var \OC\Files\Node\Root $root + */ + private $root; + + /** + * @var \OC\Files\Storage\Storage[] + */ + private $storages; + + /** + * @var \OC\Files\View $view + */ + private $view; + + public function setUp() { + \OC\Files\Filesystem::init('', ''); + \OC\Files\Filesystem::clearMounts(); + $manager = \OC\Files\Filesystem::getMountManager(); + + \OC_Hook::clear('OC_Filesystem'); + + \OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Updater', 'writeHook'); + \OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Updater', 'deleteHook'); + \OC_Hook::connect('OC_Filesystem', 'post_rename', '\OC\Files\Cache\Updater', 'renameHook'); + \OC_Hook::connect('OC_Filesystem', 'post_touch', '\OC\Files\Cache\Updater', 'touchHook'); + + $user = new User(uniqid('user'), new \OC_User_Dummy); + \OC_User::setUserId($user->getUID()); + $this->view = new View(); + $this->root = new Root($manager, $this->view, $user); + $storage = new Temporary(array()); + $subStorage = new Temporary(array()); + $this->storages[] = $storage; + $this->storages[] = $subStorage; + $this->root->mount($storage, '/'); + $this->root->mount($subStorage, '/substorage/'); + } + + public function tearDown() { + foreach ($this->storages as $storage) { + $storage->getCache()->clear(); + } + \OC\Files\Filesystem::clearMounts(); + } + + public function testBasicFile() { + $file = $this->root->newFile('/foo.txt'); + $this->assertCount(2, $this->root->getDirectoryListing()); + $this->assertTrue($this->root->nodeExists('/foo.txt')); + $id = $file->getId(); + $this->assertInstanceOf('\OC\Files\Node\File', $file); + $file->putContent('qwerty'); + $this->assertEquals('text/plain', $file->getMimeType()); + $this->assertEquals('qwerty', $file->getContent()); + $this->assertFalse($this->root->nodeExists('/bar.txt')); + $file->move('/bar.txt'); + $this->assertFalse($this->root->nodeExists('/foo.txt')); + $this->assertTrue($this->root->nodeExists('/bar.txt')); + $this->assertEquals('bar.txt', $file->getName()); + $this->assertEquals('bar.txt', $file->getInternalPath()); + + $file->move('/substorage/bar.txt'); + $this->assertNotEquals($id, $file->getId()); + $this->assertEquals('qwerty', $file->getContent()); + } + + public function testBasicFolder() { + $folder = $this->root->newFolder('/foo'); + $this->assertTrue($this->root->nodeExists('/foo')); + $file = $folder->newFile('/bar'); + $this->assertTrue($this->root->nodeExists('/foo/bar')); + $file->putContent('qwerty'); + + $listing = $folder->getDirectoryListing(); + $this->assertEquals(1, count($listing)); + $this->assertEquals($file->getId(), $listing[0]->getId()); + $this->assertEquals($file->getStorage(), $listing[0]->getStorage()); + + + $rootListing = $this->root->getDirectoryListing(); + $this->assertEquals(2, count($rootListing)); + + $folder->move('/asd'); + /** + * @var \OC\Files\Node\File $file + */ + $file = $folder->get('/bar'); + $this->assertInstanceOf('\OC\Files\Node\File', $file); + $this->assertFalse($this->root->nodeExists('/foo/bar')); + $this->assertTrue($this->root->nodeExists('/asd/bar')); + $this->assertEquals('qwerty', $file->getContent()); + $folder->move('/substorage/foo'); + /** + * @var \OC\Files\Node\File $file + */ + $file = $folder->get('/bar'); + $this->assertInstanceOf('\OC\Files\Node\File', $file); + $this->assertTrue($this->root->nodeExists('/substorage/foo/bar')); + $this->assertEquals('qwerty', $file->getContent()); + } +} diff --git a/tests/lib/files/node/node.php b/tests/lib/files/node/node.php new file mode 100644 index 00000000000..cf5fec30522 --- /dev/null +++ b/tests/lib/files/node/node.php @@ -0,0 +1,330 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Node; + +class Node extends \PHPUnit_Framework_TestCase { + private $user; + + public function setUp() { + $this->user = new \OC\User\User('', new \OC_User_Dummy); + } + + public function testStat() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $stat = array( + 'fileid' => 1, + 'size' => 100, + 'etag' => 'qwerty', + 'mtime' => 50, + 'permissions' => 0 + ); + + $view->expects($this->once()) + ->method('stat') + ->with('/bar/foo') + ->will($this->returnValue($stat)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals($stat, $node->stat()); + } + + public function testGetId() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $stat = array( + 'fileid' => 1, + 'size' => 100, + 'etag' => 'qwerty', + 'mtime' => 50 + ); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue($stat)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals(1, $node->getId()); + } + + public function testGetSize() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('filesize') + ->with('/bar/foo') + ->will($this->returnValue(100)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals(100, $node->getSize()); + } + + public function testGetEtag() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $stat = array( + 'fileid' => 1, + 'size' => 100, + 'etag' => 'qwerty', + 'mtime' => 50 + ); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue($stat)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals('qwerty', $node->getEtag()); + } + + public function testGetMTime() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + /** + * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + + $view->expects($this->once()) + ->method('filemtime') + ->with('/bar/foo') + ->will($this->returnValue(50)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals(50, $node->getMTime()); + } + + public function testGetStorage() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + /** + * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + + $view->expects($this->once()) + ->method('resolvePath') + ->with('/bar/foo') + ->will($this->returnValue(array($storage, 'foo'))); + + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals($storage, $node->getStorage()); + } + + public function testGetPath() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals('/bar/foo', $node->getPath()); + } + + public function testGetInternalPath() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + /** + * @var \OC\Files\Storage\Storage | \PHPUnit_Framework_MockObject_MockObject $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + + $view->expects($this->once()) + ->method('resolvePath') + ->with('/bar/foo') + ->will($this->returnValue(array($storage, 'foo'))); + + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals('foo', $node->getInternalPath()); + } + + public function testGetName() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $node = new \OC\Files\Node\File($root, $view, '/bar/foo'); + $this->assertEquals('foo', $node->getName()); + } + + public function testTouchSetMTime() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->once()) + ->method('touch') + ->with('/bar/foo', 100) + ->will($this->returnValue(true)); + + $view->expects($this->once()) + ->method('filemtime') + ->with('/bar/foo') + ->will($this->returnValue(100)); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $node = new \OC\Files\Node\Node($root, $view, '/bar/foo'); + $node->touch(100); + $this->assertEquals(100, $node->getMTime()); + } + + public function testTouchHooks() { + $test = $this; + $hooksRun = 0; + /** + * @param \OC\Files\Node\File $node + */ + $preListener = function ($node) use (&$test, &$hooksRun) { + $test->assertEquals('foo', $node->getInternalPath()); + $test->assertEquals('/bar/foo', $node->getPath()); + $hooksRun++; + }; + + /** + * @param \OC\Files\Node\File $node + */ + $postListener = function ($node) use (&$test, &$hooksRun) { + $test->assertEquals('foo', $node->getInternalPath()); + $test->assertEquals('/bar/foo', $node->getPath()); + $hooksRun++; + }; + + /** + * @var \OC\Files\Mount\Manager $manager + */ + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + $root->listen('\OC\Files', 'preTouch', $preListener); + $root->listen('\OC\Files', 'postTouch', $postListener); + + $view->expects($this->once()) + ->method('touch') + ->with('/bar/foo', 100) + ->will($this->returnValue(true)); + + $view->expects($this->any()) + ->method('resolvePath') + ->with('/bar/foo') + ->will($this->returnValue(array(null, 'foo'))); + + $view->expects($this->any()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_ALL))); + + $node = new \OC\Files\Node\Node($root, $view, '/bar/foo'); + $node->touch(100); + $this->assertEquals(2, $hooksRun); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testTouchNotPermitted() { + $manager = $this->getMock('\OC\Files\Mount\Manager'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = $this->getMock('\OC\Files\Node\Root', array(), array($manager, $view, $this->user)); + $root->expects($this->any()) + ->method('getUser') + ->will($this->returnValue($this->user)); + + $view->expects($this->any()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('permissions' => \OCP\PERMISSION_READ))); + + $node = new \OC\Files\Node\Node($root, $view, '/bar/foo'); + $node->touch(100); + } +} diff --git a/tests/lib/files/node/root.php b/tests/lib/files/node/root.php new file mode 100644 index 00000000000..97eaf7f7162 --- /dev/null +++ b/tests/lib/files/node/root.php @@ -0,0 +1,106 @@ +<?php +/** + * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Files\Node; + +use OC\Files\Cache\Cache; +use OCP\Files\NotPermittedException; +use OC\Files\Mount\Manager; + +class Root extends \PHPUnit_Framework_TestCase { + private $user; + + public function setUp() { + $this->user = new \OC\User\User('', new \OC_User_Dummy); + } + + public function testGet() { + $manager = new Manager(); + /** + * @var \OC\Files\Storage\Storage $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $view->expects($this->once()) + ->method('getFileInfo') + ->with('/bar/foo') + ->will($this->returnValue(array('fileid' => 10, 'path' => 'bar/foo', 'name', 'mimetype' => 'text/plain'))); + + $view->expects($this->once()) + ->method('is_dir') + ->with('/bar/foo') + ->will($this->returnValue(false)); + + $view->expects($this->once()) + ->method('file_exists') + ->with('/bar/foo') + ->will($this->returnValue(true)); + + $root->mount($storage, ''); + $node = $root->get('/bar/foo'); + $this->assertEquals(10, $node->getId()); + $this->assertInstanceOf('\OC\Files\Node\File', $node); + } + + /** + * @expectedException \OCP\Files\NotFoundException + */ + public function testGetNotFound() { + $manager = new Manager(); + /** + * @var \OC\Files\Storage\Storage $storage + */ + $storage = $this->getMock('\OC\Files\Storage\Storage'); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $view->expects($this->once()) + ->method('file_exists') + ->with('/bar/foo') + ->will($this->returnValue(false)); + + $root->mount($storage, ''); + $root->get('/bar/foo'); + } + + /** + * @expectedException \OCP\Files\NotPermittedException + */ + public function testGetInvalidPath() { + $manager = new Manager(); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $root->get('/../foo'); + } + + /** + * @expectedException \OCP\Files\NotFoundException + */ + public function testGetNoStorages() { + $manager = new Manager(); + /** + * @var \OC\Files\View | \PHPUnit_Framework_MockObject_MockObject $view + */ + $view = $this->getMock('\OC\Files\View'); + $root = new \OC\Files\Node\Root($manager, $view, $this->user); + + $root->get('/bar/foo'); + } +} diff --git a/tests/lib/helper.php b/tests/lib/helper.php index 67b5a3d43ec..b4d896e5196 100644 --- a/tests/lib/helper.php +++ b/tests/lib/helper.php @@ -8,40 +8,42 @@ class Test_Helper extends PHPUnit_Framework_TestCase { - function testHumanFileSize() { - $result = OC_Helper::humanFileSize(0); - $expected = '0 B'; - $this->assertEquals($result, $expected); - - $result = OC_Helper::humanFileSize(1024); - $expected = '1 kB'; - $this->assertEquals($result, $expected); - - $result = OC_Helper::humanFileSize(10000000); - $expected = '9.5 MB'; - $this->assertEquals($result, $expected); - - $result = OC_Helper::humanFileSize(500000000000); - $expected = '465.7 GB'; - $this->assertEquals($result, $expected); + /** + * @dataProvider humanFileSizeProvider + */ + public function testHumanFileSize($expected, $input) + { + $result = OC_Helper::humanFileSize($input); + $this->assertEquals($expected, $result); } - function testComputerFileSize() { - $result = OC_Helper::computerFileSize("0 B"); - $expected = '0.0'; - $this->assertEquals($result, $expected); - - $result = OC_Helper::computerFileSize("1 kB"); - $expected = '1024.0'; - $this->assertEquals($result, $expected); + public function humanFileSizeProvider() + { + return array( + array('0 B', 0), + array('1 kB', 1024), + array('9.5 MB', 10000000), + array('465.7 GB', 500000000000), + array('454.7 TB', 500000000000000), + array('444.1 PB', 500000000000000000), + ); + } - $result = OC_Helper::computerFileSize("9.5 MB"); - $expected = '9961472.0'; - $this->assertEquals($result, $expected); + /** + * @dataProvider computerFileSizeProvider + */ + function testComputerFileSize($expected, $input) { + $result = OC_Helper::computerFileSize($input); + $this->assertEquals($expected, $result); + } - $result = OC_Helper::computerFileSize("465.7 GB"); - $expected = '500041567436.8'; - $this->assertEquals($result, $expected); + function computerFileSizeProvider(){ + return array( + array(0.0, "0 B"), + array(1024.0, "1 kB"), + array(9961472.0, "9.5 MB"), + array(500041567436.8, "465.7 GB"), + ); } function testGetMimeType() { |