Merge remote-tracking branch 'owncloud/master' into db-convert-tool

* owncloud/master: (137 commits)
  add comment to clearify when a skip in the foreach happens
  remove obsolete code
  Always define sendmail_is_available
  [tx-robot] updated from transifex
  Make hardcoded exception messages translatable
  Disable sharing in trashbin app
  class Test_Config is already declared
  [tx-robot] updated from transifex
  using array_key_exists() instead of isset() - required because in case the value is null isset is returning false
  fixing undefined exception classes
  unit test testSetAppValueIfSetToNull() added
  unit tests for dynamic backend registration
  ignore underscore.js in scrutinizer.yml
  adding ownCloud globals to jshintrc: OC, t, n
  Use git checkout on directory as some files may not be in git resulting in, e.g.:
  adding underscore.js
  reduce code duplication, fix parse error, prevent page reload on hitting enter while changing the display name - refs #8085
  translations for oc-dialogs reside in code
  Fix copy conflict dialog translation
  [tx-robot] updated from transifex
  ...
This commit is contained in:
Andreas Fischer 2014-04-09 15:20:18 +02:00
commit 78ee4c1327
933 changed files with 38040 additions and 25760 deletions

View File

@ -11,18 +11,22 @@
"maxparams": 5,
"curly": true,
"jquery": true,
"maxlen": 80,
"maxlen": 120,
"indent": 4,
"browser": true,
"globals": {
"console": true,
"it": true,
"itx": true,
"xit": true,
"expect": true,
"describe": true,
"beforeEach": true,
"afterEach": true,
"sinon": true,
"fakeServer": true
"fakeServer": true,
"_": true,
"OC": true,
"t": true,
"n": true
}
}

View File

@ -7,6 +7,7 @@ filter:
- 'apps/*/l10n/*'
- 'lib/l10n/*'
- 'core/js/tests/lib/*.js'
- 'core/js/tests/specs/*.js'
- 'core/js/jquery-1.10.0.min.js'
- 'core/js/jquery-migrate-1.2.1.min.js'
- 'core/js/jquery-showpassword.js'
@ -15,6 +16,7 @@ filter:
- 'core/js/jquery-ui-1.10.0.custom.js'
- 'core/js/jquery.inview.js'
- 'core/js/jquery.placeholder.js'
- 'core/js/underscore.js'
imports:

View File

@ -9,7 +9,7 @@ Git master: [![Build Status](https://ci.owncloud.org/job/server-master-linux/bad
Quality: [![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/owncloud/core/badges/quality-score.png?s=ce2f5ded03d4ac628e9ee5c767243fa7412e644f)](https://scrutinizer-ci.com/g/owncloud/core/)
### Installation instructions
http://doc.owncloud.org/server/5.0/developer_manual/app/gettingstarted.html
http://doc.owncloud.org/server/6.0/developer_manual/app/index.html
### Contribution Guidelines
http://owncloud.org/dev/contribute/

View File

@ -7,37 +7,21 @@ OCP\JSON::checkLoggedIn();
$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
$dir = \OC\Files\Filesystem::normalizePath($dir);
$dirInfo = \OC\Files\Filesystem::getFileInfo($dir);
if (!$dirInfo->getType() === 'dir') {
if (!$dirInfo || !$dirInfo->getType() === 'dir') {
header("HTTP/1.0 404 Not Found");
exit();
}
$doBreadcrumb = isset($_GET['breadcrumb']);
$data = array();
$baseUrl = OCP\Util::linkTo('files', 'index.php') . '?dir=';
$permissions = $dirInfo->getPermissions();
// Make breadcrumb
if($doBreadcrumb) {
$breadcrumb = \OCA\Files\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 = \OCA\Files\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['directory'] = $dir;
$data['files'] = \OCA\Files\Helper::formatFileInfos($files);
$data['permissions'] = $permissions;
OCP\JSON::success(array('data' => $data));

View File

@ -112,9 +112,8 @@ if($source) {
}
if($result) {
$meta = \OC\Files\Filesystem::getFileInfo($target);
$mime=$meta['mimetype'];
$id = $meta['fileid'];
$eventSource->send('success', array('mime' => $mime, 'size' => \OC\Files\Filesystem::filesize($target), 'id' => $id, 'etag' => $meta['etag']));
$data = \OCA\Files\Helper::formatFileInfo($meta);
$eventSource->send('success', $data);
} else {
$eventSource->send('error', array('message' => $l10n->t('Error while downloading %s to %s', array($source, $target))));
}
@ -139,16 +138,7 @@ if($source) {
if($success) {
$meta = \OC\Files\Filesystem::getFileInfo($target);
$id = $meta['fileid'];
$mime = $meta['mimetype'];
$size = $meta['size'];
OCP\JSON::success(array('data' => array(
'id' => $id,
'mime' => $mime,
'size' => $size,
'content' => $content,
'etag' => $meta['etag'],
)));
OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta)));
exit();
}
}

View File

@ -58,8 +58,8 @@ if(\OC\Files\Filesystem::mkdir($target)) {
$path = '/'.$foldername;
}
$meta = \OC\Files\Filesystem::getFileInfo($path);
$id = $meta['fileid'];
OCP\JSON::success(array('data' => array('id' => $id)));
$meta['type'] = 'dir'; // missing ?!
OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta)));
exit();
}

View File

@ -1,54 +0,0 @@
<?php
OCP\JSON::checkLoggedIn();
\OC::$session->close();
// Load the files
$dir = isset($_GET['dir']) ? $_GET['dir'] : '';
$mimetypes = isset($_GET['mimetypes']) ? json_decode($_GET['mimetypes'], true) : '';
// Clean up duplicates from array and deal with non-array requests
if (is_array($mimetypes)) {
$mimetypes = array_unique($mimetypes);
} elseif (is_null($mimetypes)) {
$mimetypes = array($_GET['mimetypes']);
}
// make filelist
$files = array();
/**
* @var \OCP\Files\FileInfo[] $files
*/
// If a type other than directory is requested first load them.
if ($mimetypes && !in_array('httpd/unix-directory', $mimetypes)) {
$files = array_merge($files, \OC\Files\Filesystem::getDirectoryContent($dir, 'httpd/unix-directory'));
}
if (is_array($mimetypes) && count($mimetypes)) {
foreach ($mimetypes as $mimetype) {
$files = array_merge($files, \OC\Files\Filesystem::getDirectoryContent($dir, $mimetype));
}
} else {
$files = array_merge($files, \OC\Files\Filesystem::getDirectoryContent($dir));
}
// Sort by name
usort($files, array('\OCA\Files\Helper', 'fileCmp'));
$result = array();
foreach ($files as $file) {
$fileData = array();
$fileData['directory'] = $dir;
$fileData['name'] = $file->getName();
$fileData['type'] = $file->getType();
$fileData['path'] = $file['path'];
$fileData['id'] = $file->getId();
$fileData['size'] = $file->getSize();
$fileData['mtime'] = $file->getMtime();
$fileData['mimetype'] = $file->getMimetype();
$fileData['isPreviewAvailable'] = \OC::$server->getPreviewManager()->isMimeSupported($file->getMimetype());
$fileData["date"] = OCP\Util::formatDate($file->getMtime());
$fileData['mimetype_icon'] = \OCA\Files\Helper::determineIcon($file);
$result[] = $fileData;
}
OC_JSON::success(array('data' => $result));

View File

@ -20,6 +20,10 @@ if (empty($_POST['dirToken'])) {
die();
}
} else {
// TODO: ideally this code should be in files_sharing/ajax/upload.php
// and the upload/file transfer code needs to be refactored into a utility method
// that could be used there
// return only read permissions for public upload
$allowedPermissions = OCP\PERMISSION_READ;
$public_directory = !empty($_POST['subdir']) ? $_POST['subdir'] : '/';
@ -141,19 +145,14 @@ if (strpos($dir, '..') === false) {
$error = $l->t('The target folder has been moved or deleted.');
$errorCode = 'targetnotfound';
} else {
$result[] = array('status' => 'success',
'mime' => $meta['mimetype'],
'mtime' => $meta['mtime'],
'size' => $meta['size'],
'id' => $meta['fileid'],
'name' => basename($target),
'etag' => $meta['etag'],
'originalname' => $files['tmp_name'][$i],
'uploadMaxFilesize' => $maxUploadFileSize,
'maxHumanFilesize' => $maxHumanFileSize,
'permissions' => $meta['permissions'] & $allowedPermissions,
'directory' => $directory,
);
$data = \OCA\Files\Helper::formatFileInfo($meta);
$data['status'] = 'success';
$data['originalname'] = $files['tmp_name'][$i];
$data['uploadMaxFilesize'] = $maxUploadFileSize;
$data['maxHumanFilesize'] = $maxHumanFileSize;
$data['permissions'] = $meta['permissions'] & $allowedPermissions;
$data['directory'] = $directory;
$result[] = $data;
}
} else {
@ -169,19 +168,15 @@ if (strpos($dir, '..') === false) {
if ($meta === false) {
$error = $l->t('Upload failed. Could not get file info.');
} else {
$result[] = array('status' => 'existserror',
'mime' => $meta['mimetype'],
'mtime' => $meta['mtime'],
'size' => $meta['size'],
'id' => $meta['fileid'],
'name' => basename($target),
'etag' => $meta['etag'],
'originalname' => $files['tmp_name'][$i],
'uploadMaxFilesize' => $maxUploadFileSize,
'maxHumanFilesize' => $maxHumanFileSize,
'permissions' => $meta['permissions'] & $allowedPermissions,
'directory' => $directory,
);
$data = \OCA\Files\Helper::formatFileInfo($meta);
$data['permissions'] = $data['permissions'] & $allowedPermissions;
$data['status'] = 'existserror';
$data['originalname'] = $files['tmp_name'][$i];
$data['uploadMaxFilesize'] = $maxUploadFileSize;
$data['maxHumanFilesize'] = $maxHumanFileSize;
$data['permissions'] = $meta['permissions'] & $allowedPermissions;
$data['directory'] = $directory;
$result[] = $data;
}
}
}

View File

@ -32,15 +32,16 @@ OCP\Util::addscript('files', 'file-upload');
OCP\Util::addscript('files', 'jquery.iframe-transport');
OCP\Util::addscript('files', 'jquery.fileupload');
OCP\Util::addscript('files', 'jquery-visibility');
OCP\Util::addscript('files', 'breadcrumb');
OCP\Util::addscript('files', 'filelist');
OCP\App::setActiveNavigationEntry('files_index');
// Load the files
$dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
$dir = \OC\Files\Filesystem::normalizePath($dir);
$dirInfo = \OC\Files\Filesystem::getFileInfo($dir);
$dirInfo = \OC\Files\Filesystem::getFileInfo($dir, false);
// Redirect if directory does not exist
if (!$dirInfo->getType() === 'dir') {
if (!$dirInfo || !$dirInfo->getType() === 'dir') {
header('Location: ' . OCP\Util::getScriptName() . '');
exit();
}
@ -60,44 +61,19 @@ if ($isIE8 && isset($_GET['dir'])){
exit();
}
$ajaxLoad = false;
$files = array();
$user = OC_User::getUser();
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\Helper::getFiles($dir);
}
$config = \OC::$server->getConfig();
// Make breadcrumb
$breadcrumb = \OCA\Files\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('isPublic', false);
$breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
$breadcrumbNav->assign('breadcrumb', $breadcrumb);
$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=');
// needed for share init, permissions will be reloaded
// anyway with ajax load
$permissions = $dirInfo->getPermissions();
// information about storage capacities
$storageInfo=OC_Helper::getStorageInfo($dir);
$storageInfo=OC_Helper::getStorageInfo($dir, $dirInfo);
$freeSpace=$storageInfo['free'];
$uploadLimit=OCP\Util::uploadLimit();
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir, $freeSpace);
$publicUploadEnabled = $config->getAppValue('core', 'shareapi_allow_public_upload', 'yes');
// if the encryption app is disabled, than everything is fine (INIT_SUCCESSFUL status code)
$encryptionInitStatus = 2;
@ -112,20 +88,12 @@ if ($trashEnabled) {
$trashEmpty = \OCA\Files_Trashbin\Trashbin::isEmpty($user);
}
$isCreatable = \OC\Files\Filesystem::isCreatable($dir . '/');
$fileHeader = (!isset($files) or count($files) > 0);
$emptyContent = ($isCreatable and !$fileHeader) or $ajaxLoad;
OCP\Util::addscript('files', 'fileactions');
OCP\Util::addscript('files', 'files');
OCP\Util::addscript('files', 'keyboardshortcuts');
$tmpl = new OCP\Template('files', 'index', 'user');
$tmpl->assign('fileList', $list->fetchPage());
$tmpl->assign('breadcrumb', $breadcrumbNav->fetchPage());
$tmpl->assign('dir', $dir);
$tmpl->assign('isCreatable', $isCreatable);
$tmpl->assign('permissions', $permissions);
$tmpl->assign('files', $files);
$tmpl->assign('trash', $trashEnabled);
$tmpl->assign('trashEmpty', $trashEmpty);
$tmpl->assign('uploadMaxFilesize', $maxUploadFilesize); // minimium of freeSpace and uploadLimit
@ -141,8 +109,5 @@ $tmpl->assign("mailNotificationEnabled", $config->getAppValue('core', 'shareapi_
$tmpl->assign("allowShareWithLink", $config->getAppValue('core', 'shareapi_allow_links', 'yes'));
$tmpl->assign("encryptionInitStatus", $encryptionInitStatus);
$tmpl->assign('disableSharing', false);
$tmpl->assign('ajaxLoad', $ajaxLoad);
$tmpl->assign('emptyContent', $emptyContent);
$tmpl->assign('fileHeader', $fileHeader);
$tmpl->printPage();

241
apps/files/js/breadcrumb.js Normal file
View File

@ -0,0 +1,241 @@
/**
* ownCloud
*
* @author Vincent Petry
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global OC */
(function() {
/**
* Creates an breadcrumb element in the given container
*/
var BreadCrumb = function(options){
this.$el = $('<div class="breadcrumb"></div>');
options = options || {};
if (options.onClick) {
this.onClick = options.onClick;
}
if (options.onDrop) {
this.onDrop = options.onDrop;
}
if (options.getCrumbUrl) {
this.getCrumbUrl = options.getCrumbUrl;
}
};
BreadCrumb.prototype = {
$el: null,
dir: null,
lastWidth: 0,
hiddenBreadcrumbs: 0,
totalWidth: 0,
breadcrumbs: [],
onClick: null,
onDrop: null,
/**
* Sets the directory to be displayed as breadcrumb.
* This will re-render the breadcrumb.
* @param dir path to be displayed as breadcrumb
*/
setDirectory: function(dir) {
dir = dir || '/';
if (dir !== this.dir) {
this.dir = dir;
this.render();
}
},
/**
* Returns the full URL to the given directory
* @param part crumb data as map
* @param index crumb index
* @return full URL
*/
getCrumbUrl: function(part, index) {
return '#';
},
/**
* Renders the breadcrumb elements
*/
render: function() {
var parts = this._makeCrumbs(this.dir || '/');
var $crumb;
this.$el.empty();
this.breadcrumbs = [];
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
var $image;
var $link = $('<a></a>').attr('href', this.getCrumbUrl(part, i));
$link.text(part.name);
$crumb = $('<div class="crumb svg"></div>');
$crumb.append($link);
$crumb.attr('data-dir', part.dir);
if (part.img) {
$image = $('<img class="svg"></img>');
$image.attr('src', part.img);
$link.append($image);
}
this.breadcrumbs.push($crumb);
this.$el.append($crumb);
if (this.onClick) {
$crumb.on('click', this.onClick);
}
}
$crumb.addClass('last');
// in case svg is not supported by the browser we need to execute the fallback mechanism
if (!OC.Util.hasSVGSupport()) {
OC.Util.replaceSVG(this.$el);
}
// setup drag and drop
if (this.onDrop) {
this.$el.find('.crumb:not(.last)').droppable({
drop: this.onDrop,
tolerance: 'pointer'
});
}
this._updateTotalWidth();
this.resize($(window).width(), true);
},
/**
* Makes a breadcrumb structure based on the given path
* @param dir path to split into a breadcrumb structure
* @return array of map {dir: path, name: displayName}
*/
_makeCrumbs: function(dir) {
var crumbs = [];
var pathToHere = '';
// trim leading and trailing slashes
dir = dir.replace(/^\/+|\/+$/g, '');
var parts = dir.split('/');
if (dir === '') {
parts = [];
}
// root part
crumbs.push({
dir: '/',
name: '',
img: OC.imagePath('core', 'places/home.svg')
});
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
pathToHere = pathToHere + '/' + part;
crumbs.push({
dir: pathToHere,
name: part
});
}
return crumbs;
},
_updateTotalWidth: function () {
var self = this;
this.lastWidth = 0;
// initialize with some extra space
this.totalWidth = 64;
// FIXME: this class should not know about global elements
if ( $('#navigation').length ) {
this.totalWidth += $('#navigation').get(0).offsetWidth;
}
this.hiddenBreadcrumbs = 0;
for (var i = 0; i < this.breadcrumbs.length; i++ ) {
this.totalWidth += $(this.breadcrumbs[i]).get(0).offsetWidth;
}
$.each($('#controls .actions>div'), function(index, action) {
self.totalWidth += $(action).get(0).offsetWidth;
});
},
/**
* Show/hide breadcrumbs to fit the given width
*/
resize: function (width, firstRun) {
var i, $crumb;
if (width === this.lastWidth) {
return;
}
// window was shrinked since last time or first run ?
if ((width < this.lastWidth || firstRun) && width < this.totalWidth) {
if (this.hiddenBreadcrumbs === 0 && this.breadcrumbs.length > 1) {
// start by hiding the first breadcrumb after home,
// that one will have extra three dots displayed
$crumb = this.breadcrumbs[1];
this.totalWidth -= $crumb.get(0).offsetWidth;
$crumb.find('a').addClass('hidden');
$crumb.append('<span class="ellipsis">...</span>');
this.totalWidth += $crumb.get(0).offsetWidth;
this.hiddenBreadcrumbs = 2;
}
i = this.hiddenBreadcrumbs;
// hide subsequent breadcrumbs if the space is still not enough
while (width < this.totalWidth && i > 1 && i < this.breadcrumbs.length - 1) {
$crumb = this.breadcrumbs[i];
this.totalWidth -= $crumb.get(0).offsetWidth;
$crumb.addClass('hidden');
this.hiddenBreadcrumbs = i;
i++;
}
// window is bigger than last time
} else if (width > this.lastWidth && this.hiddenBreadcrumbs > 0) {
i = this.hiddenBreadcrumbs;
while (width > this.totalWidth && i > 0) {
if (this.hiddenBreadcrumbs === 1) {
// special handling for last one as it has the three dots
$crumb = this.breadcrumbs[1];
if ($crumb) {
this.totalWidth -= $crumb.get(0).offsetWidth;
$crumb.find('.ellipsis').remove();
$crumb.find('a').removeClass('hidden');
this.totalWidth += $crumb.get(0).offsetWidth;
}
} else {
$crumb = this.breadcrumbs[i];
$crumb.removeClass('hidden');
this.totalWidth += $crumb.get(0).offsetWidth;
if (this.totalWidth > width) {
this.totalWidth -= $crumb.get(0).offsetWidth;
$crumb.addClass('hidden');
break;
}
}
i--;
this.hiddenBreadcrumbs = i;
}
}
this.lastWidth = width;
}
};
window.BreadCrumb = BreadCrumb;
})();

View File

@ -180,7 +180,7 @@ OC.Upload = {
},
init: function() {
if ( $('#file_upload_start').exists() && $('#file_upload_start').is(':visible')) {
if ( $('#file_upload_start').exists() ) {
var file_upload_param = {
dropZone: $('#content'), // restrict dropZone to content div
@ -483,28 +483,6 @@ OC.Upload = {
$('#file_upload_start').attr('multiple', 'multiple');
}
//if the breadcrumb is to long, start by replacing foldernames with '...' except for the current folder
var crumb=$('div.crumb').first();
while($('div.controls').height() > 40 && crumb.next('div.crumb').length > 0) {
crumb.children('a').text('...');
crumb = crumb.next('div.crumb');
}
//if that isn't enough, start removing items from the breacrumb except for the current folder and it's parent
var crumb = $('div.crumb').first();
var next = crumb.next('div.crumb');
while($('div.controls').height()>40 && next.next('div.crumb').length > 0) {
crumb.remove();
crumb = next;
next = crumb.next('div.crumb');
}
//still not enough, start shorting down the current folder name
var crumb=$('div.crumb>a').last();
while($('div.controls').height() > 40 && crumb.text().length > 6) {
var text=crumb.text();
text = text.substr(0,text.length-6)+'...';
crumb.text(text);
}
$(document).click(function(ev) {
// do not close when clicking in the dropdown
if ($(ev.target).closest('#new').length){
@ -617,21 +595,7 @@ OC.Upload = {
{dir:$('#dir').val(), filename:name},
function(result) {
if (result.status === 'success') {
var date = new Date();
// TODO: ideally addFile should be able to receive
// all attributes and set them automatically,
// and also auto-load the preview
var tr = FileList.addFile(name, 0, date, false, hidden);
tr.attr('data-size', result.data.size);
tr.attr('data-mime', result.data.mime);
tr.attr('data-id', result.data.id);
tr.attr('data-etag', result.data.etag);
tr.find('.filesize').text(humanFileSize(result.data.size));
var path = getPathForPreview(name);
Files.lazyLoadPreview(path, result.data.mime, function(previewpath) {
tr.find('td.filename').attr('style','background-image:url('+previewpath+')');
}, null, null, result.data.etag);
FileActions.display(tr.find('td.filename'), true);
FileList.add(result.data, {hidden: hidden, insert: true});
} else {
OC.dialogs.alert(result.data.message, t('core', 'Could not create file'));
}
@ -644,10 +608,7 @@ OC.Upload = {
{dir:$('#dir').val(), foldername:name},
function(result) {
if (result.status === 'success') {
var date=new Date();
FileList.addDir(name, 0, date, hidden);
var tr = FileList.findFileEl(name);
tr.attr('data-id', result.data.id);
FileList.add(result.data, {hidden: hidden, insert: true});
} else {
OC.dialogs.alert(result.data.message, t('core', 'Could not create folder'));
}
@ -682,20 +643,10 @@ OC.Upload = {
}
});
eventSource.listen('success',function(data) {
var mime = data.mime;
var size = data.size;
var id = data.id;
var file = data;
$('#uploadprogressbar').fadeOut();
var date = new Date();
FileList.addFile(localName, size, date, false, hidden);
var tr = FileList.findFileEl(localName);
tr.data('mime', mime).data('id', id);
tr.attr('data-id', id);
var path = $('#dir').val()+'/'+localName;
Files.lazyLoadPreview(path, mime, function(previewpath) {
tr.find('td.filename').attr('style', 'background-image:url('+previewpath+')');
}, null, null, data.etag);
FileActions.display(tr.find('td.filename'), true);
FileList.add(file, {hidden: hidden, insert: true});
});
eventSource.listen('error',function(error) {
$('#uploadprogressbar').fadeOut();

View File

@ -8,7 +8,7 @@
*
*/
/* global OC, FileList */
/* global OC, FileList, Files */
/* global trashBinApp */
var FileActions = {
actions: {},
@ -180,7 +180,7 @@ var FileActions = {
}
var element = $(html);
element.data('action', actions['Delete']);
element.on('click', {a: null, elem: parent, actionFunc: actions['Delete']}, actionHandler);
element.on('click', {a: null, elem: parent, actionFunc: actions['Delete'].action}, actionHandler);
parent.parent().children().last().append(element);
}
@ -214,7 +214,7 @@ $(document).ready(function () {
FileActions.register(downloadScope, 'Download', OC.PERMISSION_READ, function () {
return OC.imagePath('core', 'actions/download');
}, function (filename) {
var url = FileList.getDownloadUrl(filename);
var url = Files.getDownloadUrl(filename);
if (url) {
OC.redirect(url);
}

File diff suppressed because it is too large Load Diff

View File

@ -161,80 +161,33 @@ var Files = {
});
},
lastWidth: 0,
initBreadCrumbs: function () {
var $controls = $('#controls');
Files.lastWidth = 0;
Files.breadcrumbs = [];
// initialize with some extra space
Files.breadcrumbsWidth = 64;
if ( document.getElementById("navigation") ) {
Files.breadcrumbsWidth += $('#navigation').get(0).offsetWidth;
/**
* Returns the download URL of the given file(s)
* @param filename string or array of file names to download
* @param dir optional directory in which the file name is, defaults to the current directory
*/
getDownloadUrl: function(filename, dir) {
if ($.isArray(filename)) {
filename = JSON.stringify(filename);
}
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.find('.crumb a').on('click', onClickBreadcrumb);
// setup drag and drop
$controls.find('.crumb:not(.last)').droppable(crumbDropOptions);
var params = {
dir: dir || FileList.getCurrentDirectory(),
files: filename
};
return this.getAjaxUrl('download', params);
},
resizeBreadcrumbs: function (width, firstRun) {
if (width !== Files.lastWidth) {
if ((width < Files.lastWidth || firstRun) && width < Files.breadcrumbsWidth) {
if (Files.hiddenBreadcrumbs === 0) {
bc = $(Files.breadcrumbs[1]).get(0);
if (typeof bc != 'undefined') {
Files.breadcrumbsWidth -= bc.offsetWidth;
$(Files.breadcrumbs[1]).find('a').hide();
$(Files.breadcrumbs[1]).append('<span>...</span>');
Files.breadcrumbsWidth += bc.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;
/**
* Returns the ajax URL for a given action
* @param action action string
* @param params optional params map
*/
getAjaxUrl: function(action, params) {
var q = '';
if (params) {
q = '?' + OC.buildQueryString(params);
}
return OC.filePath('files', 'ajax', action + '.php') + q;
}
};
$(document).ready(function() {
@ -245,14 +198,10 @@ $(document).ready(function() {
Files.displayEncryptionWarning();
Files.bindKeyboardShortcuts(document, jQuery);
FileList.postProcessList();
Files.setupDragAndDrop();
$('#file_action_panel').attr('activeAction', false);
// allow dropping on the "files" app icon
$('ul#apps li:first-child').data('dir','').droppable(crumbDropOptions);
// Triggers invisible file input
$('#upload a').on('click', function() {
$(this).parent().children('#file_upload_start').trigger('click');
@ -311,7 +260,7 @@ $(document).ready(function() {
var filename=$(this).parent().parent().attr('data-file');
var tr = FileList.findFileEl(filename);
var renaming=tr.data('renaming');
if (!renaming && !FileList.isLoading(filename)) {
if (!renaming) {
FileActions.currentFile = $(this).parent();
var mime=FileActions.getCurrentMimeType();
var type=FileActions.getCurrentType();
@ -377,15 +326,15 @@ $(document).ready(function() {
dir = OC.dirname(dir) || '/';
}
else {
files = getSelectedFilesTrash('name');
files = Files.getSelectedFiles('name');
}
OC.Notification.show(t('files','Your download is being prepared. This might take some time if the files are big.'));
OC.redirect(FileList.getDownloadUrl(files, dir));
OC.redirect(Files.getDownloadUrl(files, dir));
return false;
});
$('.delete-selected').click(function(event) {
var files=getSelectedFilesTrash('name');
var files = Files.getSelectedFiles('name');
event.preventDefault();
if (FileList.isAllSelected()) {
files = null;
@ -403,16 +352,6 @@ $(document).ready(function() {
//do a background scan if needed
scanFiles();
Files.initBreadCrumbs();
$(window).resize(function() {
var width = $(this).width();
Files.resizeBreadcrumbs(width, false);
});
var width = $(this).width();
Files.resizeBreadcrumbs(width, true);
// display storage warnings
setTimeout(Files.displayStorageWarnings, 100);
OC.Notification.setDefault(Files.displayStorageWarnings);
@ -503,7 +442,7 @@ var createDragShadow = function(event) {
$(event.target).parents('tr').find('td input:first').prop('checked',true);
}
var selectedFiles = getSelectedFilesTrash();
var selectedFiles = Files.getSelectedFiles();
if (!isDragSelected && selectedFiles.length === 1) {
//revert the selection
@ -619,52 +558,8 @@ var folderDropOptions={
tolerance: 'pointer'
};
var crumbDropOptions={
drop: function( event, ui ) {
var target=$(this).data('dir');
var dir = $('#dir').val();
while(dir.substr(0,1) === '/') {//remove extra leading /'s
dir=dir.substr(1);
}
dir = '/' + dir;
if (dir.substr(-1,1) !== '/') {
dir = dir + '/';
}
if (target === dir || target+'/' === dir) {
return;
}
var files = ui.helper.find('tr');
$(files).each(function(i,row) {
var dir = $(row).data('dir');
var file = $(row).data('filename');
//slapdash selector, tracking down our original element that the clone budded off of.
var origin = $('tr[data-id=' + $(row).data('origin') + ']');
var td = origin.children('td.filename');
var oldBackgroundImage = td.css('background-image');
td.css('background-image', 'url('+ OC.imagePath('core', 'loading.gif') + ')');
$.post(OC.filePath('files', 'ajax', 'move.php'), { dir: dir, file: file, target: target }, function(result) {
if (result) {
if (result.status === 'success') {
FileList.remove(file);
procesSelection();
$('#notification').hide();
} else {
$('#notification').hide();
$('#notification').text(result.data.message);
$('#notification').fadeIn();
}
} else {
OC.dialogs.alert(t('files', 'Error moving file'), t('files', 'Error'));
}
td.css('background-image', oldBackgroundImage);
});
});
},
tolerance: 'pointer'
};
function procesSelection() {
var selected = getSelectedFilesTrash();
var selected = Files.getSelectedFiles();
var selectedFiles = selected.filter(function(el) {
return el.type==='file';
});
@ -714,7 +609,7 @@ function procesSelection() {
* if property is set, an array with that property for each file is returnd
* if it's ommited an array of objects with all properties is returned
*/
function getSelectedFilesTrash(property) {
Files.getSelectedFiles = function(property) {
var elements=$('td.filename input:checkbox:checked').parent().parent();
var files=[];
elements.each(function(i,element) {
@ -740,7 +635,7 @@ Files.getMimeIcon = function(mime, ready) {
ready(Files.getMimeIcon.cache[mime]);
} else {
$.get( OC.filePath('files','ajax','mimeicon.php'), {mime: mime}, function(path) {
if(SVGSupport()){
if(OC.Util.hasSVGSupport()){
path = path.substr(0, path.length-4) + '.svg';
}
Files.getMimeIcon.cache[mime]=path;
@ -755,25 +650,32 @@ function getPathForPreview(name) {
return path;
}
/**
* Generates a preview URL based on the URL space.
* @param urlSpec map with {x: width, y: height, file: file path}
* @return preview URL
*/
Files.generatePreviewUrl = function(urlSpec) {
urlSpec = urlSpec || {};
if (!urlSpec.x) {
urlSpec.x = $('#filestable').data('preview-x');
}
if (!urlSpec.y) {
urlSpec.y = $('#filestable').data('preview-y');
}
urlSpec.y *= window.devicePixelRatio;
urlSpec.x *= window.devicePixelRatio;
urlSpec.forceIcon = 0;
return OC.generateUrl('/core/preview.png?') + $.param(urlSpec);
}
Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
// get mime icon url
Files.getMimeIcon(mime, function(iconURL) {
var urlSpec = {};
var previewURL;
var previewURL,
urlSpec = {};
ready(iconURL); // set mimeicon URL
// now try getting a preview thumbnail URL
if ( ! width ) {
width = $('#filestable').data('preview-x');
}
if ( ! height ) {
height = $('#filestable').data('preview-y');
}
// note: the order of arguments must match the one
// from the server's template so that the browser
// knows it's the same file for caching
urlSpec.x = width;
urlSpec.y = height;
urlSpec.file = Files.fixPath(path);
if (etag){
@ -784,15 +686,9 @@ Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
console.warn('Files.lazyLoadPreview(): missing etag argument');
}
if ( $('#isPublic').length ) {
urlSpec.t = $('#dirToken').val();
previewURL = OC.generateUrl('/publicpreview.png?') + $.param(urlSpec);
} else {
previewURL = OC.generateUrl('/core/preview.png?') + $.param(urlSpec);
}
previewURL = Files.generatePreviewUrl(urlSpec);
previewURL = previewURL.replace('(', '%28');
previewURL = previewURL.replace(')', '%29');
previewURL += '&forceIcon=0';
// preload image to prevent delay
// this will make the browser cache the image
@ -802,7 +698,7 @@ Files.lazyLoadPreview = function(path, mime, ready, width, height, etag) {
if (img.width > 5) {
ready(previewURL);
}
}
};
img.src = previewURL;
});
};
@ -841,14 +737,8 @@ function checkTrashStatus() {
});
}
function onClickBreadcrumb(e) {
var $el = $(e.target).closest('.crumb'),
$targetDir = $el.data('dir'),
isPublic = !!$('#isPublic').val();
if ($targetDir !== undefined && !isPublic) {
e.preventDefault();
FileList.changeDirectory(decodeURIComponent($targetDir));
}
// override core's fileDownloadPath (legacy)
function fileDownloadPath(dir, file) {
return Files.getDownloadUrl(file, dir);
}

View File

@ -27,9 +27,9 @@ $TRANSLATIONS = array(
"Share" => "شارك",
"Delete permanently" => "حذف بشكل دائم",
"Rename" => "إعادة تسميه",
"Error moving file" => "حدث خطأ أثناء نقل الملف",
"Error" => "خطأ",
"Pending" => "قيد الانتظار",
"replaced {new_name} with {old_name}" => "استبدل {new_name} بـ {old_name}",
"undo" => "تراجع",
"_%n folder_::_%n folders_" => array("لا يوجد مجلدات %n","1 مجلد %n","2 مجلد %n","عدد قليل من مجلدات %n","عدد كبير من مجلدات %n","مجلدات %n"),
"_%n file_::_%n files_" => array("لا يوجد ملفات %n","ملف %n","2 ملف %n","قليل من ملفات %n","الكثير من ملفات %n"," ملفات %n"),
"{dirs} and {files}" => "{dirs} و {files}",
@ -40,8 +40,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "المفتاح الخاص بتشفير التطبيقات غير صالح. يرجى تحديث كلمة السر الخاصة بالمفتاح الخاص من الإعدادت الشخصية حتى تتمكن من الوصول للملفات المشفرة.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "تم تعطيل التشفير لكن ملفاتك لا تزال مشفرة. فضلا اذهب إلى الإعدادات الشخصية لإزالة التشفير عن ملفاتك.",
"Your download is being prepared. This might take some time if the files are big." => "جاري تجهيز عملية التحميل. قد تستغرق بعض الوقت اذا كان حجم الملفات كبير.",
"Error moving file" => "حدث خطأ أثناء نقل الملف",
"Error" => "خطأ",
"Name" => "اسم",
"Size" => "حجم",
"Modified" => "معدل",

27
apps/files/l10n/ast.php Normal file
View File

@ -0,0 +1,27 @@
<?php
$TRANSLATIONS = array(
"File name cannot be empty." => "El nome de ficheru nun pue quedar baleru.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome inválidu, los caráuteres \"\\\", \"/\", \"<\", \">\", \":\", \"\", \"|\" \"?\" y \"*\" nun tán permitíos.",
"No file was uploaded. Unknown error" => "Nun se xubió dengún ficheru. Fallu desconocíu",
"There is no error, the file uploaded with success" => "Nun hai dengún fallu, el ficheru xubióse ensin problemes",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El ficheru xubíu perpasa la direutiva \"MAX_FILE_SIZE\" especificada nel formulariu HTML",
"The uploaded file was only partially uploaded" => "El ficheru xubióse de mou parcial",
"No file was uploaded" => "Nun se xubió dengún ficheru",
"Missing a temporary folder" => "Falta una carpeta temporal",
"Failed to write to disk" => "Fallu al escribir al discu",
"Not enough storage available" => "Nun hai abondu espaciu disponible",
"Files" => "Ficheros",
"Share" => "Compartir",
"Rename" => "Renomar",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Name" => "Nome",
"Size" => "Tamañu",
"Upload" => "Xubir",
"Save" => "Guardar",
"Cancel upload" => "Encaboxar xuba",
"Download" => "Descargar",
"Delete" => "Desaniciar"
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";

View File

@ -1,8 +1,8 @@
<?php
$TRANSLATIONS = array(
"Error" => "Памылка",
"_%n folder_::_%n folders_" => array("","","",""),
"_%n file_::_%n files_" => array("","","",""),
"_Uploading %n file_::_Uploading %n files_" => array("","","",""),
"Error" => "Памылка"
"_Uploading %n file_::_Uploading %n files_" => array("","","","")
);
$PLURAL_FORMS = "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -12,12 +12,11 @@ $TRANSLATIONS = array(
"Share" => "Споделяне",
"Delete permanently" => "Изтриване завинаги",
"Rename" => "Преименуване",
"Error" => "Грешка",
"Pending" => "Чакащо",
"undo" => "възтановяване",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "Грешка",
"Name" => "Име",
"Size" => "Размер",
"Modified" => "Променено",

View File

@ -19,13 +19,11 @@ $TRANSLATIONS = array(
"{new_name} already exists" => "{new_name} টি বিদ্যমান",
"Share" => "ভাগাভাগি কর",
"Rename" => "পূনঃনামকরণ",
"Error" => "সমস্যা",
"Pending" => "মুলতুবি",
"replaced {new_name} with {old_name}" => "{new_name} কে {old_name} নামে প্রতিস্থাপন করা হয়েছে",
"undo" => "ক্রিয়া প্রত্যাহার",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "সমস্যা",
"Name" => "রাম",
"Size" => "আকার",
"Modified" => "পরিবর্তিত",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Comparteix",
"Delete permanently" => "Esborra permanentment",
"Rename" => "Reanomena",
"Error moving file" => "Error en moure el fitxer",
"Error" => "Error",
"Pending" => "Pendent",
"Could not rename file" => "No es pot canviar el nom de fitxer",
"replaced {new_name} with {old_name}" => "s'ha substituït {old_name} per {new_name}",
"undo" => "desfés",
"Error deleting file." => "Error en esborrar el fitxer.",
"_%n folder_::_%n folders_" => array("%n carpeta","%n carpetes"),
"_%n file_::_%n files_" => array("%n fitxer","%n fitxers"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "La clau privada de l'aplicació d'encriptació no és vàlida! Actualitzeu la contrasenya de la clau privada a l'arranjament personal per recuperar els fitxers encriptats.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "L'encriptació s'ha desactivat però els vostres fitxers segueixen encriptats. Aneu a la vostra configuració personal per desencriptar els vostres fitxers.",
"Your download is being prepared. This might take some time if the files are big." => "S'està preparant la baixada. Pot trigar una estona si els fitxers són grans.",
"Error moving file" => "Error en moure el fitxer",
"Error" => "Error",
"Name" => "Nom",
"Size" => "Mida",
"Modified" => "Modificat",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Sdílet",
"Delete permanently" => "Trvale odstranit",
"Rename" => "Přejmenovat",
"Error moving file" => "Chyba při přesunu souboru",
"Error" => "Chyba",
"Pending" => "Nevyřízené",
"Could not rename file" => "Nepodařilo se přejmenovat soubor",
"replaced {new_name} with {old_name}" => "nahrazeno {new_name} s {old_name}",
"undo" => "vrátit zpět",
"Error deleting file." => "Chyba při mazání souboru.",
"_%n folder_::_%n folders_" => array("%n složka","%n složky","%n složek"),
"_%n file_::_%n files_" => array("%n soubor","%n soubory","%n souborů"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chybný soukromý klíč pro šifrovací aplikaci. Aktualizujte prosím heslo svého soukromého klíče ve vašem osobním nastavení, abyste znovu získali přístup k vašim zašifrovaným souborům.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Šifrování bylo vypnuto, vaše soubory jsou však stále zašifrované. Běžte prosím do osobního nastavení, kde soubory odšifrujete.",
"Your download is being prepared. This might take some time if the files are big." => "Vaše soubory ke stažení se připravují. Pokud jsou velké, může to chvíli trvat.",
"Error moving file" => "Chyba při přesunu souboru",
"Error" => "Chyba",
"Name" => "Název",
"Size" => "Velikost",
"Modified" => "Upraveno",

View File

@ -21,16 +21,14 @@ $TRANSLATIONS = array(
"Share" => "Rhannu",
"Delete permanently" => "Dileu'n barhaol",
"Rename" => "Ailenwi",
"Error" => "Gwall",
"Pending" => "I ddod",
"replaced {new_name} with {old_name}" => "newidiwyd {new_name} yn lle {old_name}",
"undo" => "dadwneud",
"_%n folder_::_%n folders_" => array("","","",""),
"_%n file_::_%n files_" => array("","","",""),
"_Uploading %n file_::_Uploading %n files_" => array("","","",""),
"Your storage is full, files can not be updated or synced anymore!" => "Mae eich storfa'n llawn, ni ellir diweddaru a chydweddu ffeiliau mwyach!",
"Your storage is almost full ({usedSpacePercent}%)" => "Mae eich storfa bron a bod yn llawn ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Wrthi'n paratoi i lwytho i lawr. Gall gymryd peth amser os yw'r ffeiliau'n fawr.",
"Error" => "Gwall",
"Name" => "Enw",
"Size" => "Maint",
"Modified" => "Addaswyd",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Del",
"Delete permanently" => "Slet permanent",
"Rename" => "Omdøb",
"Error moving file" => "Fejl ved flytning af fil",
"Error" => "Fejl",
"Pending" => "Afventer",
"Could not rename file" => "Kunne ikke omdøbe filen",
"replaced {new_name} with {old_name}" => "erstattede {new_name} med {old_name}",
"undo" => "fortryd",
"Error deleting file." => "Fejl ved sletnign af fil.",
"_%n folder_::_%n folders_" => array("%n mappe","%n mapper"),
"_%n file_::_%n files_" => array("%n fil","%n filer"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ugyldig privat nøgle for krypteringsprogrammet. Opdater venligst dit kodeord for den private nøgle i dine personlige indstillinger. Det kræves for at få adgang til dine krypterede filer.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Krypteringen blev deaktiveret, men dine filer er stadig krypteret. Gå venligst til dine personlige indstillinger for at dekryptere dine filer. ",
"Your download is being prepared. This might take some time if the files are big." => "Dit download forberedes. Dette kan tage lidt tid ved større filer.",
"Error moving file" => "Fejl ved flytning af fil",
"Error" => "Fejl",
"Name" => "Navn",
"Size" => "Størrelse",
"Modified" => "Ændret",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Teilen",
"Delete permanently" => "Endgültig löschen",
"Rename" => "Umbenennen",
"Error moving file" => "Fehler beim Verschieben der Datei",
"Error" => "Fehler",
"Pending" => "Ausstehend",
"Could not rename file" => "Die Datei konnte nicht umbenannt werden",
"replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}",
"undo" => "rückgängig machen",
"Error deleting file." => "Fehler beim Löschen der Datei.",
"_%n folder_::_%n folders_" => array("%n Ordner","%n Ordner"),
"_%n file_::_%n files_" => array("%n Datei","%n Dateien"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte aktualisiere Dein privates Schlüssel-Passwort, um den Zugriff auf Deine verschlüsselten Dateien wiederherzustellen.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Die Verschlüsselung wurde deaktiviert, jedoch sind Deine Dateien nach wie vor verschlüsselt. Bitte gehe zu Deinen persönlichen Einstellungen, um Deine Dateien zu entschlüsseln.",
"Your download is being prepared. This might take some time if the files are big." => "Dein Download wird vorbereitet. Dies kann bei größeren Dateien etwas dauern.",
"Error moving file" => "Fehler beim Verschieben der Datei",
"Error" => "Fehler",
"Name" => "Name",
"Size" => "Größe",
"Modified" => "Geändert",

View File

@ -23,9 +23,8 @@ $TRANSLATIONS = array(
"Share" => "Teilen",
"Delete permanently" => "Endgültig löschen",
"Rename" => "Umbenennen",
"Error" => "Fehler",
"Pending" => "Ausstehend",
"replaced {new_name} with {old_name}" => "{old_name} wurde ersetzt durch {new_name}",
"undo" => "rückgängig machen",
"_%n folder_::_%n folders_" => array("","%n Ordner"),
"_%n file_::_%n files_" => array("","%n Dateien"),
"_Uploading %n file_::_Uploading %n files_" => array("%n Datei wird hochgeladen","%n Dateien werden hochgeladen"),
@ -33,7 +32,6 @@ $TRANSLATIONS = array(
"Your storage is almost full ({usedSpacePercent}%)" => "Ihr Speicher ist fast voll ({usedSpacePercent}%)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Die Verschlüsselung wurde deaktiviert, jedoch sind Ihre Dateien nach wie vor verschlüsselt. Bitte gehen Sie zu Ihren persönlichen Einstellungen, um Ihre Dateien zu entschlüsseln.",
"Your download is being prepared. This might take some time if the files are big." => "Ihr Download wird vorbereitet. Dies kann bei grösseren Dateien etwas dauern.",
"Error" => "Fehler",
"Name" => "Name",
"Size" => "Grösse",
"Modified" => "Geändert",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Teilen",
"Delete permanently" => "Endgültig löschen",
"Rename" => "Umbenennen",
"Error moving file" => "Fehler beim Verschieben der Datei",
"Error" => "Fehler",
"Pending" => "Ausstehend",
"Could not rename file" => "Die Datei konnte nicht umbenannt werden",
"replaced {new_name} with {old_name}" => "{old_name} wurde ersetzt durch {new_name}",
"undo" => "rückgängig machen",
"Error deleting file." => "Fehler beim Löschen der Datei.",
"_%n folder_::_%n folders_" => array("%n Ordner","%n Ordner"),
"_%n file_::_%n files_" => array("%n Datei","%n Dateien"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ungültiger privater Schlüssel für die Verschlüsselung-App. Bitte aktualisieren Sie Ihr privates Schlüssel-Passwort, um den Zugriff auf Ihre verschlüsselten Dateien wiederherzustellen.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Die Verschlüsselung wurde deaktiviert, jedoch sind Ihre Dateien nach wie vor verschlüsselt. Bitte gehen Sie zu Ihren persönlichen Einstellungen, um Ihre Dateien zu entschlüsseln.",
"Your download is being prepared. This might take some time if the files are big." => "Ihr Download wird vorbereitet. Dies kann bei größeren Dateien etwas dauern.",
"Error moving file" => "Fehler beim Verschieben der Datei",
"Error" => "Fehler",
"Name" => "Name",
"Size" => "Größe",
"Modified" => "Geändert",

View File

@ -5,6 +5,7 @@ $TRANSLATIONS = array(
"File name cannot be empty." => "Το όνομα αρχείου δεν μπορεί να είναι κενό.",
"\"%s\" is an invalid file name." => "Το \"%s\" είναι ένα μη έγκυρο όνομα αρχείου.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Μη έγκυρο όνομα, '\\', '/', '<', '>', ':', '\"', '|', '?' και '*' δεν επιτρέπονται.",
"The target folder has been moved or deleted." => "Ο φάκελος προορισμού έχει μετακινηθεί ή διαγραφεί.",
"The name %s is already used in the folder %s. Please choose a different name." => "Το όνομα %s χρησιμοποιείτε ήδη στον φάκελο %s. Παρακαλώ επιλέξτε ένα άλλο όνομα.",
"Not a valid source" => "Μη έγκυρη πηγή",
"Server is not allowed to open URLs, please check the server configuration" => "Ο διακομιστής δεν επιτρέπεται να ανοίγει URL, παρακαλώ ελέγξτε τις ρυθμίσεις του διακομιστή",
@ -28,6 +29,8 @@ $TRANSLATIONS = array(
"Invalid directory." => "Μη έγκυρος φάκελος.",
"Files" => "Αρχεία",
"Unable to upload {filename} as it is a directory or has 0 bytes" => "Αδυναμία φόρτωσης {filename} καθώς είναι κατάλογος αρχείων ή έχει 0 bytes",
"Total file size {size1} exceeds upload limit {size2}" => "Το συνολικό μέγεθος αρχείου {size1} υπερβαίνει το όριο μεταφόρτωσης {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" => "Δεν υπάρχει αρκετός ελεύθερος χώρος, μεταφορτώνετε μέγεθος {size1} αλλά υπάρχει χώρος μόνο {size2}",
"Upload cancelled." => "Η αποστολή ακυρώθηκε.",
"Could not get result from server." => "Αδυναμία λήψης αποτελέσματος από το διακομιστή.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Η αποστολή του αρχείου βρίσκεται σε εξέλιξη. Το κλείσιμο της σελίδας θα ακυρώσει την αποστολή.",
@ -40,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Διαμοιρασμός",
"Delete permanently" => "Μόνιμη διαγραφή",
"Rename" => "Μετονομασία",
"Error moving file" => "Σφάλμα κατά τη μετακίνηση του αρχείου",
"Error" => "Σφάλμα",
"Pending" => "Εκκρεμεί",
"Could not rename file" => "Αδυναμία μετονομασίας αρχείου",
"replaced {new_name} with {old_name}" => "αντικαταστάθηκε το {new_name} με {old_name}",
"undo" => "αναίρεση",
"Error deleting file." => "Σφάλμα διαγραφής αρχείου.",
"_%n folder_::_%n folders_" => array("%n φάκελος","%n φάκελοι"),
"_%n file_::_%n files_" => array("%n αρχείο","%n αρχεία"),
@ -56,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Άκυρο προσωπικό κλειδί για την εφαρμογή κρυπτογράφησης. Παρακαλώ ενημερώστε τον κωδικό του προσωπικού κλειδίου σας στις προσωπικές ρυθμίσεις για να επανακτήσετε πρόσβαση στα κρυπτογραφημένα σας αρχεία.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Η κρυπτογράφηση απενεργοποιήθηκε, αλλά τα αρχεία σας είναι ακόμα κρυπτογραφημένα. Παρακαλούμε απενεργοποιήσετε την κρυπτογράφηση αρχείων από τις προσωπικές σας ρυθμίσεις",
"Your download is being prepared. This might take some time if the files are big." => "Η λήψη προετοιμάζεται. Αυτό μπορεί να πάρει ώρα εάν τα αρχεία έχουν μεγάλο μέγεθος.",
"Error moving file" => "Σφάλμα κατά τη μετακίνηση του αρχείου",
"Error" => "Σφάλμα",
"Name" => "Όνομα",
"Size" => "Μέγεθος",
"Modified" => "Τροποποιήθηκε",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Share",
"Delete permanently" => "Delete permanently",
"Rename" => "Rename",
"Error moving file" => "Error moving file",
"Error" => "Error",
"Pending" => "Pending",
"Could not rename file" => "Could not rename file",
"replaced {new_name} with {old_name}" => "replaced {new_name} with {old_name}",
"undo" => "undo",
"Error deleting file." => "Error deleting file.",
"_%n folder_::_%n folders_" => array("%n folder","%n folders"),
"_%n file_::_%n files_" => array("%n file","%n files"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files.",
"Your download is being prepared. This might take some time if the files are big." => "Your download is being prepared. This might take some time if the files are big.",
"Error moving file" => "Error moving file",
"Error" => "Error",
"Name" => "Name",
"Size" => "Size",
"Modified" => "Modified",

View File

@ -35,10 +35,10 @@ $TRANSLATIONS = array(
"Share" => "Kunhavigi",
"Delete permanently" => "Forigi por ĉiam",
"Rename" => "Alinomigi",
"Error moving file" => "Eraris movo de dosiero",
"Error" => "Eraro",
"Pending" => "Traktotaj",
"Could not rename file" => "Ne povis alinomiĝi dosiero",
"replaced {new_name} with {old_name}" => "anstataŭiĝis {new_name} per {old_name}",
"undo" => "malfari",
"_%n folder_::_%n folders_" => array("%n dosierujo","%n dosierujoj"),
"_%n file_::_%n files_" => array("%n dosiero","%n dosieroj"),
"{dirs} and {files}" => "{dirs} kaj {files}",
@ -46,8 +46,6 @@ $TRANSLATIONS = array(
"Your storage is full, files can not be updated or synced anymore!" => "Via memoro plenas, ne plu eblas ĝisdatigi aŭ sinkronigi dosierojn!",
"Your storage is almost full ({usedSpacePercent}%)" => "Via memoro preskaŭ plenas ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Via elŝuto pretiĝatas. Ĉi tio povas daŭri iom da tempo se la dosieroj grandas.",
"Error moving file" => "Eraris movo de dosiero",
"Error" => "Eraro",
"Name" => "Nomo",
"Size" => "Grando",
"Modified" => "Modifita",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Compartir",
"Delete permanently" => "Eliminar permanentemente",
"Rename" => "Renombrar",
"Error moving file" => "Error moviendo archivo",
"Error" => "Error",
"Pending" => "Pendiente",
"Could not rename file" => "No se pudo renombrar el archivo",
"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}",
"undo" => "deshacer",
"Error deleting file." => "Error al borrar el archivo",
"_%n folder_::_%n folders_" => array("%n carpeta","%n carpetas"),
"_%n file_::_%n files_" => array("%n archivo","%n archivos"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "La clave privada no es válida para la app de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "El cifrado ha sido deshabilitado pero tus archivos permanecen cifrados. Por favor, ve a tus ajustes personales para descifrar tus archivos.",
"Your download is being prepared. This might take some time if the files are big." => "Su descarga está siendo preparada. Esto podría tardar algo de tiempo si los archivos son grandes.",
"Error moving file" => "Error moviendo archivo",
"Error" => "Error",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Compartir",
"Delete permanently" => "Borrar permanentemente",
"Rename" => "Cambiar nombre",
"Error moving file" => "Error moviendo el archivo",
"Error" => "Error",
"Pending" => "Pendientes",
"Could not rename file" => "No se pudo renombrar el archivo",
"replaced {new_name} with {old_name}" => "se reemplazó {new_name} con {old_name}",
"undo" => "deshacer",
"Error deleting file." => "Error al borrar el archivo.",
"_%n folder_::_%n folders_" => array("%n carpeta","%n carpetas"),
"_%n file_::_%n files_" => array("%n archivo","%n archivos"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Llave privada inválida para la aplicación de encriptación. Por favor actualice la clave de la llave privada en las configuraciones personales para recobrar el acceso a sus archivos encriptados.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "El proceso de cifrado se ha desactivado, pero los archivos aún están encriptados. Por favor, vaya a la configuración personal para descifrar los archivos.",
"Your download is being prepared. This might take some time if the files are big." => "Tu descarga se está preparando. Esto puede demorar si los archivos son muy grandes.",
"Error moving file" => "Error moviendo el archivo",
"Error" => "Error",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",

View File

@ -2,10 +2,10 @@
$TRANSLATIONS = array(
"Files" => "Archivos",
"Share" => "Compartir",
"Error" => "Error",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "Error",
"Upload" => "Subir",
"Download" => "Descargar"
);

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Compartir",
"Delete permanently" => "Eliminar permanentemente",
"Rename" => "Renombrar",
"Error moving file" => "Error moviendo archivo",
"Error" => "Error",
"Pending" => "Pendiente",
"Could not rename file" => "No se pudo renombrar el archivo",
"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}",
"undo" => "deshacer",
"Error deleting file." => "Error borrando el archivo.",
"_%n folder_::_%n folders_" => array("%n carpeta","%n carpetas"),
"_%n file_::_%n files_" => array("%n archivo","%n archivos"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "La clave privada no es válida para la aplicación de cifrado. Por favor, actualiza la contraseña de tu clave privada en tus ajustes personales para recuperar el acceso a tus archivos cifrados.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "El cifrado ha sido deshabilitado pero tus archivos permanecen cifrados. Por favor, ve a tus ajustes personales para descifrar tus archivos.",
"Your download is being prepared. This might take some time if the files are big." => "Su descarga está siendo preparada. Esto podría tardar algo de tiempo si los archivos son grandes.",
"Error moving file" => "Error moviendo archivo",
"Error" => "Error",
"Name" => "Nombre",
"Size" => "Tamaño",
"Modified" => "Modificado",

View File

@ -3,7 +3,9 @@ $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Ei saa liigutada faili %s - samanimeline fail on juba olemas",
"Could not move %s" => "%s liigutamine ebaõnnestus",
"File name cannot be empty." => "Faili nimi ei saa olla tühi.",
"\"%s\" is an invalid file name." => "\"%s\" on vigane failinimi.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Vigane nimi, '\\', '/', '<', '>', ':', '\"', '|', '?' ja '*' pole lubatud.",
"The target folder has been moved or deleted." => "Sihtkataloog on ümber tõstetud või kustutatud.",
"The name %s is already used in the folder %s. Please choose a different name." => "Nimi %s on juba kasutusel kataloogis %s. Palun vali mõni teine nimi.",
"Not a valid source" => "Pole korrektne lähteallikas",
"Server is not allowed to open URLs, please check the server configuration" => "Server ei võimalda URL-ide avamist, palun kontrolli serveri seadistust",
@ -27,6 +29,8 @@ $TRANSLATIONS = array(
"Invalid directory." => "Vigane kaust.",
"Files" => "Failid",
"Unable to upload {filename} as it is a directory or has 0 bytes" => "Ei saa üles laadida {filename}, kuna see on kataloog või selle suurus on 0 baiti",
"Total file size {size1} exceeds upload limit {size2}" => "Faili suurus {size1} ületab faili üleslaadimise mahu piirangu {size2}.",
"Not enough free space, you are uploading {size1} but only {size2} is left" => "Pole piisavalt vaba ruumi. Sa laadid üles {size1}, kuid ainult {size2} on saadaval.",
"Upload cancelled." => "Üleslaadimine tühistati.",
"Could not get result from server." => "Serverist ei saadud tulemusi",
"File upload is in progress. Leaving the page now will cancel the upload." => "Faili üleslaadimine on töös. Lehelt lahkumine katkestab selle üleslaadimise.",
@ -39,23 +43,22 @@ $TRANSLATIONS = array(
"Share" => "Jaga",
"Delete permanently" => "Kustuta jäädavalt",
"Rename" => "Nimeta ümber",
"Error moving file" => "Viga faili eemaldamisel",
"Error" => "Viga",
"Pending" => "Ootel",
"Could not rename file" => "Ei suuda faili ümber nimetada",
"replaced {new_name} with {old_name}" => "asendas nime {old_name} nimega {new_name}",
"undo" => "tagasi",
"Error deleting file." => "Viga faili kustutamisel.",
"_%n folder_::_%n folders_" => array("%n kataloog","%n kataloogi"),
"_%n file_::_%n files_" => array("%n fail","%n faili"),
"{dirs} and {files}" => "{dirs} ja {files}",
"_Uploading %n file_::_Uploading %n files_" => array("Laadin üles %n faili","Laadin üles %n faili"),
"\"{name}\" is an invalid file name." => "\"{name}\" on vigane failinimi.",
"Your storage is full, files can not be updated or synced anymore!" => "Sinu andmemaht on täis! Faile ei uuendata ega sünkroniseerita!",
"Your storage is almost full ({usedSpacePercent}%)" => "Su andmemaht on peaaegu täis ({usedSpacePercent}%)",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" => "Krüpteerimisrakend on lubatud, kuid võtmeid pole lähtestatud. Palun logi välja ning uuesti sisse.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Vigane Krüpteerimisrakendi privaatvõti . Palun uuenda oma privaatse võtme parool oma personaasete seadete all taastamaks ligipääsu oma krüpteeritud failidele.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Krüpteering on keelatud, kuid sinu failid on endiselt krüpteeritud. Palun vaata oma personaalseid seadeid oma failide dekrüpteerimiseks.",
"Your download is being prepared. This might take some time if the files are big." => "Valmistatakse allalaadimist. See võib võtta veidi aega, kui on tegu suurte failidega. ",
"Error moving file" => "Viga faili eemaldamisel",
"Error" => "Viga",
"Name" => "Nimi",
"Size" => "Suurus",
"Modified" => "Muudetud",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Elkarbanatu",
"Delete permanently" => "Ezabatu betirako",
"Rename" => "Berrizendatu",
"Error moving file" => "Errorea fitxategia mugitzean",
"Error" => "Errorea",
"Pending" => "Zain",
"Could not rename file" => "Ezin izan da fitxategia berrizendatu",
"replaced {new_name} with {old_name}" => " {new_name}-k {old_name} ordezkatu du",
"undo" => "desegin",
"Error deleting file." => "Errorea fitxategia ezabatzerakoan.",
"_%n folder_::_%n folders_" => array("karpeta %n","%n karpeta"),
"_%n file_::_%n files_" => array("fitxategi %n","%n fitxategi"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Enkriptazio aplikaziorako gako pribatu okerra. Mesedez eguneratu zure gako pribatuaren pasahitza zure ezarpen pertsonaletan zure enkriptatuko fitxategietarako sarrera berreskuratzeko.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Enkriptazioa desgaitua izan da baina zure fitxategiak oraindik enkriptatuta daude. Mesedez jo zure ezarpen pertsonaletara zure fitxategiak dekodifikatzeko.",
"Your download is being prepared. This might take some time if the files are big." => "Zure deskarga prestatu egin behar da. Denbora bat har lezake fitxategiak handiak badira. ",
"Error moving file" => "Errorea fitxategia mugitzean",
"Error" => "Errorea",
"Name" => "Izena",
"Size" => "Tamaina",
"Modified" => "Aldatuta",

View File

@ -23,16 +23,14 @@ $TRANSLATIONS = array(
"Share" => "اشتراک‌گذاری",
"Delete permanently" => "حذف قطعی",
"Rename" => "تغییرنام",
"Error" => "خطا",
"Pending" => "در انتظار",
"replaced {new_name} with {old_name}" => "{نام_جدید} با { نام_قدیمی} جایگزین شد.",
"undo" => "بازگشت",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array("در حال بارگذاری %n فایل"),
"Your storage is full, files can not be updated or synced anymore!" => "فضای ذخیره ی شما کاملا پر است، بیش از این فایلها بهنگام یا همگام سازی نمی توانند بشوند!",
"Your storage is almost full ({usedSpacePercent}%)" => "فضای ذخیره ی شما تقریبا پر است ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "دانلود شما در حال آماده شدن است. در صورتیکه پرونده ها بزرگ باشند ممکن است مدتی طول بکشد.",
"Error" => "خطا",
"Name" => "نام",
"Size" => "اندازه",
"Modified" => "تاریخ",

View File

@ -41,9 +41,10 @@ $TRANSLATIONS = array(
"Share" => "Jaa",
"Delete permanently" => "Poista pysyvästi",
"Rename" => "Nimeä uudelleen",
"Error moving file" => "Virhe tiedostoa siirrettäessä",
"Error" => "Virhe",
"Pending" => "Odottaa",
"Could not rename file" => "Tiedoston nimeäminen uudelleen epäonnistui",
"undo" => "kumoa",
"Error deleting file." => "Virhe tiedostoa poistaessa.",
"_%n folder_::_%n folders_" => array("%n kansio","%n kansiota"),
"_%n file_::_%n files_" => array("%n tiedosto","%n tiedostoa"),
@ -54,8 +55,6 @@ $TRANSLATIONS = array(
"Your storage is almost full ({usedSpacePercent}%)" => "Tallennustila on melkein loppu ({usedSpacePercent}%)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Salaus poistettiin käytöstä, mutta tiedostosi ovat edelleen salattuina. Siirry henkilökohtaisiin asetuksiin avataksesi tiedostojesi salauksen.",
"Your download is being prepared. This might take some time if the files are big." => "Lataustasi valmistellaan. Tämä saattaa kestää hetken, jos tiedostot ovat suuria kooltaan.",
"Error moving file" => "Virhe tiedostoa siirrettäessä",
"Error" => "Virhe",
"Name" => "Nimi",
"Size" => "Koko",
"Modified" => "Muokattu",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Partager",
"Delete permanently" => "Supprimer de façon définitive",
"Rename" => "Renommer",
"Error moving file" => "Erreur lors du déplacement du fichier",
"Error" => "Erreur",
"Pending" => "En attente",
"Could not rename file" => "Impossible de renommer le fichier",
"replaced {new_name} with {old_name}" => "{new_name} a été remplacé par {old_name}",
"undo" => "annuler",
"Error deleting file." => "Erreur pendant la suppression du fichier.",
"_%n folder_::_%n folders_" => array("%n dossier","%n dossiers"),
"_%n file_::_%n files_" => array("%n fichier","%n fichiers"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Votre clef privée pour l'application de chiffrement est invalide ! Veuillez mettre à jour le mot de passe de votre clef privée dans vos paramètres personnels pour récupérer l'accès à vos fichiers chiffrés.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Le chiffrement était désactivé mais vos fichiers sont toujours chiffrés. Veuillez vous rendre sur vos Paramètres personnels pour déchiffrer vos fichiers.",
"Your download is being prepared. This might take some time if the files are big." => "Votre téléchargement est cours de préparation. Ceci peut nécessiter un certain temps si les fichiers sont volumineux.",
"Error moving file" => "Erreur lors du déplacement du fichier",
"Error" => "Erreur",
"Name" => "Nom",
"Size" => "Taille",
"Modified" => "Modifié",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Compartir",
"Delete permanently" => "Eliminar permanentemente",
"Rename" => "Renomear",
"Error moving file" => "Produciuse un erro ao mover o ficheiro",
"Error" => "Erro",
"Pending" => "Pendentes",
"Could not rename file" => "Non foi posíbel renomear o ficheiro",
"replaced {new_name} with {old_name}" => "substituír {new_name} por {old_name}",
"undo" => "desfacer",
"Error deleting file." => "Produciuse un erro ao eliminar o ficheiro.",
"_%n folder_::_%n folders_" => array("%n cartafol","%n cartafoles"),
"_%n file_::_%n files_" => array("%n ficheiro","%n ficheiros"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "A chave privada para o aplicativo de cifrado non é correcta. Actualice o contrasinal da súa chave privada nos seus axustes persoais para recuperar o acceso aos seus ficheiros cifrados.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "O cifrado foi desactivado, mais os ficheiros están cifrados. Vaia á configuración persoal para descifrar os ficheiros.",
"Your download is being prepared. This might take some time if the files are big." => "Está a prepararse a súa descarga. Isto pode levar bastante tempo se os ficheiros son grandes.",
"Error moving file" => "Produciuse un erro ao mover o ficheiro",
"Error" => "Erro",
"Name" => "Nome",
"Size" => "Tamaño",
"Modified" => "Modificado",

View File

@ -23,14 +23,12 @@ $TRANSLATIONS = array(
"Share" => "שתף",
"Delete permanently" => "מחק לצמיתות",
"Rename" => "שינוי שם",
"Error" => "שגיאה",
"Pending" => "ממתין",
"replaced {new_name} with {old_name}" => "{new_name} הוחלף ב־{old_name}",
"undo" => "ביטול",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Your storage is almost full ({usedSpacePercent}%)" => "שטח האחסון שלך כמעט מלא ({usedSpacePercent}%)",
"Error" => "שגיאה",
"Name" => "שם",
"Size" => "גודל",
"Modified" => "זמן שינוי",

View File

@ -1,10 +1,10 @@
<?php
$TRANSLATIONS = array(
"Share" => "साझा करें",
"Error" => "त्रुटि",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "त्रुटि",
"Upload" => "अपलोड ",
"Save" => "सहेजें"
);

View File

@ -11,12 +11,11 @@ $TRANSLATIONS = array(
"File upload is in progress. Leaving the page now will cancel the upload." => "Učitavanje datoteke. Napuštanjem stranice će prekinuti učitavanje.",
"Share" => "Podijeli",
"Rename" => "Promjeni ime",
"Error" => "Greška",
"Pending" => "U tijeku",
"undo" => "vrati",
"_%n folder_::_%n folders_" => array("","",""),
"_%n file_::_%n files_" => array("","",""),
"_Uploading %n file_::_Uploading %n files_" => array("","",""),
"Error" => "Greška",
"Name" => "Ime",
"Size" => "Veličina",
"Modified" => "Zadnja promjena",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Megosztás",
"Delete permanently" => "Végleges törlés",
"Rename" => "Átnevezés",
"Error moving file" => "Az állomány áthelyezése nem sikerült.",
"Error" => "Hiba",
"Pending" => "Folyamatban",
"Could not rename file" => "Az állomány nem nevezhető át",
"replaced {new_name} with {old_name}" => "{new_name} fájlt kicseréltük ezzel: {old_name}",
"undo" => "visszavonás",
"Error deleting file." => "Hiba a file törlése közben.",
"_%n folder_::_%n folders_" => array("%n mappa","%n mappa"),
"_%n file_::_%n files_" => array("%n állomány","%n állomány"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Az állományok titkosításához használt titkos kulcsa érvénytelen. Kérjük frissítse a titkos kulcs jelszót a személyes beállításokban, hogy ismét hozzáférjen a titkosított állományaihoz!",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "A titkosítási funkciót kikapcsolták, de az Ön állományai még mindig titkosított állapotban vannak. A személyes beállításoknál tudja a titkosítást feloldani.",
"Your download is being prepared. This might take some time if the files are big." => "Készül a letöltendő állomány. Ez eltarthat egy ideig, ha nagyok a fájlok.",
"Error moving file" => "Az állomány áthelyezése nem sikerült.",
"Error" => "Hiba",
"Name" => "Név",
"Size" => "Méret",
"Modified" => "Módosítva",

View File

@ -5,10 +5,10 @@ $TRANSLATIONS = array(
"Missing a temporary folder" => "Manca un dossier temporari",
"Files" => "Files",
"Share" => "Compartir",
"Error" => "Error",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "Error",
"Name" => "Nomine",
"Size" => "Dimension",
"Modified" => "Modificate",

View File

@ -37,10 +37,10 @@ $TRANSLATIONS = array(
"Share" => "Bagikan",
"Delete permanently" => "Hapus secara permanen",
"Rename" => "Ubah nama",
"Error moving file" => "Galat saat memindahkan berkas",
"Error" => "Galat",
"Pending" => "Menunggu",
"Could not rename file" => "Tidak dapat mengubah nama berkas",
"replaced {new_name} with {old_name}" => "mengganti {new_name} dengan {old_name}",
"undo" => "urungkan",
"Error deleting file." => "Galat saat menghapus berkas.",
"_%n folder_::_%n folders_" => array("%n folder"),
"_%n file_::_%n files_" => array("%n berkas"),
@ -52,8 +52,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Kunci privat tidak sah untuk Aplikasi Enskripsi. Silakan perbarui sandi kunci privat anda pada pengaturan pribadi untuk memulihkan akses ke berkas anda yang dienskripsi.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Enskripi telah dinonaktifkan tetapi berkas anda tetap dienskripsi. Silakan menuju ke pengaturan pribadi untuk deskrip berkas anda.",
"Your download is being prepared. This might take some time if the files are big." => "Unduhan Anda sedang disiapkan. Prosesnya dapat berlangsung agak lama jika ukuran berkasnya besar.",
"Error moving file" => "Galat saat memindahkan berkas",
"Error" => "Galat",
"Name" => "Nama",
"Size" => "Ukuran",
"Modified" => "Dimodifikasi",

View File

@ -19,13 +19,11 @@ $TRANSLATIONS = array(
"{new_name} already exists" => "{new_name} er þegar til",
"Share" => "Deila",
"Rename" => "Endurskýra",
"Error" => "Villa",
"Pending" => "Bíður",
"replaced {new_name} with {old_name}" => "yfirskrifaði {new_name} með {old_name}",
"undo" => "afturkalla",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "Villa",
"Name" => "Nafn",
"Size" => "Stærð",
"Modified" => "Breytt",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Condividi",
"Delete permanently" => "Elimina definitivamente",
"Rename" => "Rinomina",
"Error moving file" => "Errore durante lo spostamento del file",
"Error" => "Errore",
"Pending" => "In corso",
"Could not rename file" => "Impossibile rinominare il file",
"replaced {new_name} with {old_name}" => "sostituito {new_name} con {old_name}",
"undo" => "annulla",
"Error deleting file." => "Errore durante l'eliminazione del file.",
"_%n folder_::_%n folders_" => array("%n cartella","%n cartelle"),
"_%n file_::_%n files_" => array("%n file","%n file"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chiave privata non valida per l'applicazione di cifratura. Aggiorna la password della chiave privata nelle impostazioni personali per ripristinare l'accesso ai tuoi file cifrati.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "La cifratura è stata disabilitata ma i tuoi file sono ancora cifrati. Vai nelle impostazioni personali per decifrare i file.",
"Your download is being prepared. This might take some time if the files are big." => "Il tuo scaricamento è in fase di preparazione. Ciò potrebbe richiedere del tempo se i file sono grandi.",
"Error moving file" => "Errore durante lo spostamento del file",
"Error" => "Errore",
"Name" => "Nome",
"Size" => "Dimensione",
"Modified" => "Modificato",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "共有",
"Delete permanently" => "完全に削除する",
"Rename" => "名前の変更",
"Error moving file" => "ファイルの移動エラー",
"Error" => "エラー",
"Pending" => "中断",
"Could not rename file" => "ファイルの名前変更ができませんでした",
"replaced {new_name} with {old_name}" => "{old_name} を {new_name} に置換",
"undo" => "元に戻す",
"Error deleting file." => "ファイルの削除エラー。",
"_%n folder_::_%n folders_" => array("%n 個のフォルダー"),
"_%n file_::_%n files_" => array("%n 個のファイル"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "暗号化アプリの無効なプライベートキーです。あなたの暗号化されたファイルへアクセスするために、個人設定からプライベートキーのパスワードを更新してください。",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "暗号化の機能は無効化されましたが、ファイルはすでに暗号化されています。個人設定からファイルを複合を行ってください。",
"Your download is being prepared. This might take some time if the files are big." => "ダウンロードの準備中です。ファイルサイズが大きい場合は少し時間がかかるかもしれません。",
"Error moving file" => "ファイルの移動エラー",
"Error" => "エラー",
"Name" => "名前",
"Size" => "サイズ",
"Modified" => "更新日時",

8
apps/files/l10n/jv.php Normal file
View File

@ -0,0 +1,8 @@
<?php
$TRANSLATIONS = array(
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Download" => "Njipuk"
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";

View File

@ -21,16 +21,14 @@ $TRANSLATIONS = array(
"Share" => "გაზიარება",
"Delete permanently" => "სრულად წაშლა",
"Rename" => "გადარქმევა",
"Error" => "შეცდომა",
"Pending" => "მოცდის რეჟიმში",
"replaced {new_name} with {old_name}" => "{new_name} შეცვლილია {old_name}–ით",
"undo" => "დაბრუნება",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array(""),
"Your storage is full, files can not be updated or synced anymore!" => "თქვენი საცავი გადაივსო. ფაილების განახლება და სინქრონიზირება ვერ მოხერხდება!",
"Your storage is almost full ({usedSpacePercent}%)" => "თქვენი საცავი თითქმის გადაივსო ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "გადმოწერის მოთხოვნა მუშავდება. ის მოითხოვს გარკვეულ დროს რაგდან ფაილები არის დიდი ზომის.",
"Error" => "შეცდომა",
"Name" => "სახელი",
"Size" => "ზომა",
"Modified" => "შეცვლილია",

View File

@ -2,11 +2,10 @@
$TRANSLATIONS = array(
"Files" => "ឯកសារ",
"Share" => "ចែក​រំលែក",
"undo" => "មិន​ធ្វើ​វិញ",
"Error" => "កំហុស",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array(""),
"Error" => "កំហុស",
"Name" => "ឈ្មោះ",
"Size" => "ទំហំ",
"Upload" => "ផ្ទុក​ឡើង",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "공유",
"Delete permanently" => "영구히 삭제",
"Rename" => "이름 바꾸기",
"Error moving file" => "파일 이동 오류",
"Error" => "오류",
"Pending" => "대기 중",
"Could not rename file" => "이름을 변경할 수 없음",
"replaced {new_name} with {old_name}" => "{old_name}이(가) {new_name}(으)로 대체됨",
"undo" => "실행 취소",
"Error deleting file." => "파일 삭제 오류.",
"_%n folder_::_%n folders_" => array("폴더 %n개"),
"_%n file_::_%n files_" => array("파일 %n개"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "암호화 앱의 개인 키가 잘못되었습니다. 암호화된 파일에 다시 접근하려면 개인 설정에서 개인 키 암호를 업데이트해야 합니다.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "암호화는 해제되어 있지만, 파일은 아직 암호화되어 있습니다. 개인 설정에서 파일을 복호화하십시오.",
"Your download is being prepared. This might take some time if the files are big." => "다운로드 준비 중입니다. 파일 크기가 크면 시간이 오래 걸릴 수도 있습니다.",
"Error moving file" => "파일 이동 오류",
"Error" => "오류",
"Name" => "이름",
"Size" => "크기",
"Modified" => "수정됨",

View File

@ -2,10 +2,10 @@
$TRANSLATIONS = array(
"Files" => "په‌ڕگەکان",
"Share" => "هاوبەشی کردن",
"Error" => "هه‌ڵه",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "هه‌ڵه",
"Name" => "ناو",
"Upload" => "بارکردن",
"Save" => "پاشکه‌وتکردن",

View File

@ -11,11 +11,10 @@ $TRANSLATIONS = array(
"File upload is in progress. Leaving the page now will cancel the upload." => "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach.",
"Share" => "Deelen",
"Rename" => "Ëm-benennen",
"undo" => "réckgängeg man",
"Error" => "Fehler",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "Fehler",
"Name" => "Numm",
"Size" => "Gréisst",
"Modified" => "Geännert",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Dalintis",
"Delete permanently" => "Ištrinti negrįžtamai",
"Rename" => "Pervadinti",
"Error moving file" => "Klaida perkeliant failą",
"Error" => "Klaida",
"Pending" => "Laukiantis",
"Could not rename file" => "Neįmanoma pervadinti failo",
"replaced {new_name} with {old_name}" => "pakeiskite {new_name} į {old_name}",
"undo" => "anuliuoti",
"Error deleting file." => "Klaida trinant failą.",
"_%n folder_::_%n folders_" => array("%n aplankas","%n aplankai","%n aplankų"),
"_%n file_::_%n files_" => array("%n failas","%n failai","%n failų"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Netinkamas privatus raktas Šifravimo programai. Prašome atnaujinti savo privataus rakto slaptažodį asmeniniuose nustatymuose, kad atkurti prieigą prie šifruotų failų.",
"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.",
"Error moving file" => "Klaida perkeliant failą",
"Error" => "Klaida",
"Name" => "Pavadinimas",
"Size" => "Dydis",
"Modified" => "Pakeista",

View File

@ -23,9 +23,8 @@ $TRANSLATIONS = array(
"Share" => "Dalīties",
"Delete permanently" => "Dzēst pavisam",
"Rename" => "Pārsaukt",
"Error" => "Kļūda",
"Pending" => "Gaida savu kārtu",
"replaced {new_name} with {old_name}" => "aizvietoja {new_name} ar {old_name}",
"undo" => "atsaukt",
"_%n folder_::_%n folders_" => array("%n mapes","%n mape","%n mapes"),
"_%n file_::_%n files_" => array("%n faili","%n fails","%n faili"),
"_Uploading %n file_::_Uploading %n files_" => array("%n","Augšupielāde %n failu","Augšupielāde %n failus"),
@ -33,7 +32,6 @@ $TRANSLATIONS = array(
"Your storage is almost full ({usedSpacePercent}%)" => "Jūsu krātuve ir gandrīz pilna ({usedSpacePercent}%)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Šifrēšana tika atslēgta, tomēr jūsu faili joprojām ir šifrēti. Atšifrēt failus var Personiskajos uzstādījumos.",
"Your download is being prepared. This might take some time if the files are big." => "Tiek sagatavota lejupielāde. Tas var aizņemt kādu laiciņu, ja datnes ir lielas.",
"Error" => "Kļūda",
"Name" => "Nosaukums",
"Size" => "Izmērs",
"Modified" => "Mainīts",

View File

@ -34,10 +34,10 @@ $TRANSLATIONS = array(
"Share" => "Сподели",
"Delete permanently" => "Трајно избришани",
"Rename" => "Преименувај",
"Error moving file" => "Грешка при префрлање на датотека",
"Error" => "Грешка",
"Pending" => "Чека",
"Could not rename file" => "Не можам да ја преименувам датотеката",
"replaced {new_name} with {old_name}" => "заменета {new_name} со {old_name}",
"undo" => "врати",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"{dirs} and {files}" => "{dirs} и {files}",
@ -45,8 +45,6 @@ $TRANSLATIONS = array(
"Your storage is full, files can not be updated or synced anymore!" => "Вашиот сториџ е полн, датотеките веќе не можат да се освежуваат или синхронизираат!",
"Your storage is almost full ({usedSpacePercent}%)" => "Вашиот сториџ е скоро полн ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Вашето преземање се подготвува. Ова може да потрае до колку датотеките се големи.",
"Error moving file" => "Грешка при префрлање на датотека",
"Error" => "Грешка",
"Name" => "Име",
"Size" => "Големина",
"Modified" => "Променето",

View File

@ -11,11 +11,11 @@ $TRANSLATIONS = array(
"Upload cancelled." => "Muatnaik dibatalkan.",
"Share" => "Kongsi",
"Rename" => "Namakan",
"Error" => "Ralat",
"Pending" => "Dalam proses",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array(""),
"Error" => "Ralat",
"Name" => "Nama",
"Size" => "Saiz",
"Modified" => "Dimodifikasi",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Del",
"Delete permanently" => "Slett permanent",
"Rename" => "Gi nytt navn",
"Error moving file" => "Feil ved flytting av fil",
"Error" => "Feil",
"Pending" => "Ventende",
"Could not rename file" => "Klarte ikke å gi nytt navn til fil",
"replaced {new_name} with {old_name}" => "erstattet {new_name} med {old_name}",
"undo" => "angre",
"Error deleting file." => "Feil ved sletting av fil.",
"_%n folder_::_%n folders_" => array("%n mappe","%n mapper"),
"_%n file_::_%n files_" => array("%n fil","%n filer"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ugyldig privat nøkkel for Krypterings-app. Oppdater passordet for din private nøkkel i dine personlige innstillinger for å gjenopprette tilgang til de krypterte filene dine.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Kryptering ble slått av men filene dine er fremdeles kryptert. Gå til dine personlige innstillinger for å dekryptere filene dine.",
"Your download is being prepared. This might take some time if the files are big." => "Nedlastingen din klargjøres. Hvis filene er store kan dette ta litt tid.",
"Error moving file" => "Feil ved flytting av fil",
"Error" => "Feil",
"Name" => "Navn",
"Size" => "Størrelse",
"Modified" => "Endret",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Delen",
"Delete permanently" => "Verwijder definitief",
"Rename" => "Hernoem",
"Error moving file" => "Fout bij verplaatsen bestand",
"Error" => "Fout",
"Pending" => "In behandeling",
"Could not rename file" => "Kon niet hernoemen bestand",
"replaced {new_name} with {old_name}" => "verving {new_name} met {old_name}",
"undo" => "ongedaan maken",
"Error deleting file." => "Fout bij verwijderen bestand.",
"_%n folder_::_%n folders_" => array("","%n mappen"),
"_%n file_::_%n files_" => array("","%n bestanden"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ongeldige privésleutel voor crypto app. Werk het privésleutel wachtwoord bij in uw persoonlijke instellingen om opnieuw toegang te krijgen tot uw versleutelde bestanden.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Encryptie is uitgeschakeld maar uw bestanden zijn nog steeds versleuteld. Ga naar uw persoonlijke instellingen om uw bestanden te decoderen.",
"Your download is being prepared. This might take some time if the files are big." => "Uw download wordt voorbereid. Dit kan enige tijd duren bij grote bestanden.",
"Error moving file" => "Fout bij verplaatsen bestand",
"Error" => "Fout",
"Name" => "Naam",
"Size" => "Grootte",
"Modified" => "Aangepast",

View File

@ -27,9 +27,9 @@ $TRANSLATIONS = array(
"Share" => "Del",
"Delete permanently" => "Slett for godt",
"Rename" => "Endra namn",
"Error moving file" => "Feil ved flytting av fil",
"Error" => "Feil",
"Pending" => "Under vegs",
"replaced {new_name} with {old_name}" => "bytte ut {new_name} med {old_name}",
"undo" => "angre",
"_%n folder_::_%n folders_" => array("%n mappe","%n mapper"),
"_%n file_::_%n files_" => array("%n fil","%n filer"),
"{dirs} and {files}" => "{dirs} og {files}",
@ -38,8 +38,6 @@ $TRANSLATIONS = array(
"Your storage is almost full ({usedSpacePercent}%)" => "Lagringa di er nesten full ({usedSpacePercent} %)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Kryptering er skrudd av, men filene dine er enno krypterte. Du kan dekryptera filene i personlege innstillingar.",
"Your download is being prepared. This might take some time if the files are big." => "Gjer klar nedlastinga di. Dette kan ta ei stund viss filene er store.",
"Error moving file" => "Feil ved flytting av fil",
"Error" => "Feil",
"Name" => "Namn",
"Size" => "Storleik",
"Modified" => "Endra",

View File

@ -11,12 +11,11 @@ $TRANSLATIONS = array(
"File upload is in progress. Leaving the page now will cancel the upload." => "Un amontcargar es a se far. Daissar aquesta pagina ara tamparà lo cargament. ",
"Share" => "Parteja",
"Rename" => "Torna nomenar",
"Error" => "Error",
"Pending" => "Al esperar",
"undo" => "defar",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "Error",
"Name" => "Nom",
"Size" => "Talha",
"Modified" => "Modificat",

View File

@ -3,11 +3,10 @@ $TRANSLATIONS = array(
"Files" => "ਫਾਇਲਾਂ",
"Share" => "ਸਾਂਝਾ ਕਰੋ",
"Rename" => "ਨਾਂ ਬਦਲੋ",
"undo" => "ਵਾਪਸ",
"Error" => "ਗਲਤੀ",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "ਗਲਤੀ",
"Upload" => "ਅੱਪਲੋਡ",
"Cancel upload" => "ਅੱਪਲੋਡ ਰੱਦ ਕਰੋ",
"Download" => "ਡਾਊਨਲੋਡ",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Udostępnij",
"Delete permanently" => "Trwale usuń",
"Rename" => "Zmień nazwę",
"Error moving file" => "Błąd prz przenoszeniu pliku",
"Error" => "Błąd",
"Pending" => "Oczekujące",
"Could not rename file" => "Nie można zmienić nazwy pliku",
"replaced {new_name} with {old_name}" => "zastąpiono {new_name} przez {old_name}",
"undo" => "cofnij",
"Error deleting file." => "Błąd podczas usuwania pliku",
"_%n folder_::_%n folders_" => array("%n katalog","%n katalogi","%n katalogów"),
"_%n file_::_%n files_" => array("%n plik","%n pliki","%n plików"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Klucz prywatny nie jest poprawny! Może Twoje hasło zostało zmienione z zewnątrz. Można zaktualizować hasło klucza prywatnego w ustawieniach osobistych w celu odzyskania dostępu do plików",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Szyfrowanie zostało wyłączone, ale nadal pliki są zaszyfrowane. Przejdź do ustawień osobistych i tam odszyfruj pliki.",
"Your download is being prepared. This might take some time if the files are big." => "Pobieranie jest przygotowywane. Może to zająć trochę czasu jeśli pliki są duże.",
"Error moving file" => "Błąd prz przenoszeniu pliku",
"Error" => "Błąd",
"Name" => "Nazwa",
"Size" => "Rozmiar",
"Modified" => "Modyfikacja",

View File

@ -1,5 +0,0 @@
<?php
$TRANSLATIONS = array(
"Save" => "Zapisz"
);
$PLURAL_FORMS = "nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);";

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Compartilhar",
"Delete permanently" => "Excluir permanentemente",
"Rename" => "Renomear",
"Error moving file" => "Erro movendo o arquivo",
"Error" => "Erro",
"Pending" => "Pendente",
"Could not rename file" => "Não foi possível renomear o arquivo",
"replaced {new_name} with {old_name}" => "Substituído {old_name} por {new_name} ",
"undo" => "desfazer",
"Error deleting file." => "Erro eliminando o arquivo.",
"_%n folder_::_%n folders_" => array("%n pasta","%n pastas"),
"_%n file_::_%n files_" => array("%n arquivo","%n arquivos"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chave do App de Encriptação é inválida. Por favor, atualize sua senha de chave privada em suas configurações pessoais para recuperar o acesso a seus arquivos criptografados.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Encriptação foi desabilitada mas seus arquivos continuam encriptados. Por favor vá a suas configurações pessoais para descriptar seus arquivos.",
"Your download is being prepared. This might take some time if the files are big." => "Seu download está sendo preparado. Isto pode levar algum tempo se os arquivos forem grandes.",
"Error moving file" => "Erro movendo o arquivo",
"Error" => "Erro",
"Name" => "Nome",
"Size" => "Tamanho",
"Modified" => "Modificado",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "Partilhar",
"Delete permanently" => "Eliminar permanentemente",
"Rename" => "Renomear",
"Error moving file" => "Erro ao mover o ficheiro",
"Error" => "Erro",
"Pending" => "Pendente",
"Could not rename file" => "Não pôde renomear o ficheiro",
"replaced {new_name} with {old_name}" => "substituido {new_name} por {old_name}",
"undo" => "desfazer",
"Error deleting file." => "Erro ao apagar o ficheiro.",
"_%n folder_::_%n folders_" => array("%n pasta","%n pastas"),
"_%n file_::_%n files_" => array("%n ficheiro","%n ficheiros"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chave privada inválida da Aplicação de Encriptação. Por favor atualize a sua senha de chave privada nas definições pessoais, para recuperar o acesso aos seus ficheiros encriptados.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "A encriptação foi desactivada mas os seus ficheiros continuam encriptados. Por favor consulte as suas definições pessoais para desencriptar os ficheiros.",
"Your download is being prepared. This might take some time if the files are big." => "O seu download está a ser preparado. Este processo pode demorar algum tempo se os ficheiros forem grandes.",
"Error moving file" => "Erro ao mover o ficheiro",
"Error" => "Erro",
"Name" => "Nome",
"Size" => "Tamanho",
"Modified" => "Modificado",

View File

@ -4,7 +4,9 @@ $TRANSLATIONS = array(
"Could not move %s" => "Nu se poate muta %s",
"File name cannot be empty." => "Numele fișierului nu poate rămâne gol.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume nevalide, '\\', '/', '<', '>', ':', '\"', '|', '?' și '*' nu sunt permise.",
"Error while downloading %s to %s" => "Eroare la descarcarea %s in %s",
"Error when creating the file" => "Eroare la crearea fisierului",
"Folder name cannot be empty." => "Numele folderului nu poate fi liber.",
"Error when creating the folder" => "Eroare la crearea folderului",
"Unable to set upload directory." => "Imposibil de a seta directorul pentru incărcare.",
"Invalid Token" => "Jeton Invalid",
@ -32,10 +34,10 @@ $TRANSLATIONS = array(
"Share" => "Partajează",
"Delete permanently" => "Șterge permanent",
"Rename" => "Redenumește",
"Error moving file" => "Eroare la mutarea fișierului",
"Error" => "Eroare",
"Pending" => "În așteptare",
"Could not rename file" => "Nu s-a putut redenumi fisierul",
"replaced {new_name} with {old_name}" => "{new_name} a fost înlocuit cu {old_name}",
"undo" => "desfă",
"_%n folder_::_%n folders_" => array("%n director","%n directoare","%n directoare"),
"_%n file_::_%n files_" => array("%n fișier","%n fișiere","%n fișiere"),
"{dirs} and {files}" => "{dirs} și {files}",
@ -44,8 +46,6 @@ $TRANSLATIONS = array(
"Your storage is almost full ({usedSpacePercent}%)" => "Spațiul de stocare este aproape plin ({usedSpacePercent}%)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "criptarea a fost disactivata dar fisierele sant inca criptate.va rog intrati in setarile personale pentru a decripta fisierele",
"Your download is being prepared. This might take some time if the files are big." => "Se pregătește descărcarea. Aceasta poate dura ceva timp dacă fișierele sunt mari.",
"Error moving file" => "Eroare la mutarea fișierului",
"Error" => "Eroare",
"Name" => "Nume",
"Size" => "Mărime",
"Modified" => "Modificat",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Открыть доступ",
"Delete permanently" => "Удалить окончательно",
"Rename" => "Переименовать",
"Error moving file" => "Ошибка при перемещении файла",
"Error" => "Ошибка",
"Pending" => "Ожидание",
"Could not rename file" => "Не удалось переименовать файл",
"replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}",
"undo" => "отмена",
"Error deleting file." => "Ошибка при удалении файла.",
"_%n folder_::_%n folders_" => array("%n каталог","%n каталога","%n каталогов"),
"_%n file_::_%n files_" => array("%n файл","%n файла","%n файлов"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Закрытый ключ приложения шифрования недействителен. Обновите закрытый ключ в личных настройках, чтобы восстановить доступ к зашифрованным файлам.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Шифрование было отключено, но ваши файлы остались зашифрованными. Зайдите на страницу личных настроек для того, чтобы расшифровать их.",
"Your download is being prepared. This might take some time if the files are big." => "Идёт подготовка к скачиванию. Это может занять некоторое время, если файлы большого размера.",
"Error moving file" => "Ошибка при перемещении файла",
"Error" => "Ошибка",
"Name" => "Имя",
"Size" => "Размер",
"Modified" => "Дата изменения",

View File

@ -12,11 +12,10 @@ $TRANSLATIONS = array(
"File upload is in progress. Leaving the page now will cancel the upload." => "උඩුගතකිරීමක් සිදුවේ. පිටුව හැර යාමෙන් එය නැවතෙනු ඇත",
"Share" => "බෙදා හදා ගන්න",
"Rename" => "නැවත නම් කරන්න",
"undo" => "නිෂ්ප්‍රභ කරන්න",
"Error" => "දෝෂයක්",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "දෝෂයක්",
"Name" => "නම",
"Size" => "ප්‍රමාණය",
"Modified" => "වෙනස් කළ",

View File

@ -3,7 +3,9 @@ $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Nie je možné presunúť %s - súbor s týmto menom už existuje",
"Could not move %s" => "Nie je možné presunúť %s",
"File name cannot be empty." => "Meno súboru nemôže byť prázdne",
"\"%s\" is an invalid file name." => "\"%s\" je neplatné meno súboru.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nesprávne meno, '\\', '/', '<', '>', ':', '\"', '|', '?' a '*' nie sú povolené hodnoty.",
"The target folder has been moved or deleted." => "Cieľový priečinok bol premiestnený alebo odstránený.",
"The name %s is already used in the folder %s. Please choose a different name." => "Názov %s už používa priečinok s%. Prosím zvoľte iný názov.",
"Not a valid source" => "Neplatný zdroj",
"Server is not allowed to open URLs, please check the server configuration" => "Server nie je oprávnený otvárať adresy URL. Overte nastavenia servera.",
@ -27,6 +29,8 @@ $TRANSLATIONS = array(
"Invalid directory." => "Neplatný priečinok.",
"Files" => "Súbory",
"Unable to upload {filename} as it is a directory or has 0 bytes" => "Nemožno nahrať súbor {filename}, pretože je to priečinok, alebo má 0 bitov",
"Total file size {size1} exceeds upload limit {size2}" => "Celková veľkosť súboru {size1} prekračuje upload limit {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" => "Nie je dostatok voľného miesta, chcete nahrať {size1} ale k dispozíciji je len {size2}",
"Upload cancelled." => "Odosielanie zrušené.",
"Could not get result from server." => "Nepodarilo sa dostať výsledky zo servera.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Opustenie stránky zruší práve prebiehajúce odosielanie súboru.",
@ -39,23 +43,22 @@ $TRANSLATIONS = array(
"Share" => "Zdieľať",
"Delete permanently" => "Zmazať trvalo",
"Rename" => "Premenovať",
"Error moving file" => "Chyba pri presúvaní súboru",
"Error" => "Chyba",
"Pending" => "Prebieha",
"Could not rename file" => "Nemožno premenovať súbor",
"replaced {new_name} with {old_name}" => "prepísaný {new_name} súborom {old_name}",
"undo" => "vrátiť",
"Error deleting file." => "Chyba pri mazaní súboru.",
"_%n folder_::_%n folders_" => array("%n priečinok","%n priečinky","%n priečinkov"),
"_%n file_::_%n files_" => array("%n súbor","%n súbory","%n súborov"),
"{dirs} and {files}" => "{dirs} a {files}",
"_Uploading %n file_::_Uploading %n files_" => array("Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov"),
"\"{name}\" is an invalid file name." => "\"{name}\" je neplatné meno súboru.",
"Your storage is full, files can not be updated or synced anymore!" => "Vaše úložisko je plné. Súbory nemožno aktualizovať ani synchronizovať!",
"Your storage is almost full ({usedSpacePercent}%)" => "Vaše úložisko je takmer plné ({usedSpacePercent}%)",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" => "Aplikácia na šifrovanie je zapnutá, ale vaše kľúče nie sú inicializované. Odhláste sa a znovu sa prihláste.",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Chybný súkromný kľúč na šifrovanie aplikácií. Zaktualizujte si heslo súkromného kľúča v svojom osobnom nastavení, aby ste znovu získali prístup k svojim zašifrovaným súborom.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Šifrovanie bolo zakázané, ale vaše súbory sú stále zašifrované. Prosím, choďte do osobného nastavenia pre dešifrovanie súborov.",
"Your download is being prepared. This might take some time if the files are big." => "Vaše sťahovanie sa pripravuje. Ak sú sťahované súbory veľké, môže to chvíľu trvať.",
"Error moving file" => "Chyba pri presúvaní súboru",
"Error" => "Chyba",
"Name" => "Názov",
"Size" => "Veľkosť",
"Modified" => "Upravené",

View File

@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Souporaba",
"Delete permanently" => "Izbriši dokončno",
"Rename" => "Preimenuj",
"Error moving file" => "Napaka premikanja datoteke",
"Error" => "Napaka",
"Pending" => "V čakanju ...",
"Could not rename file" => "Ni mogoče preimenovati datoteke",
"replaced {new_name} with {old_name}" => "preimenovano ime {new_name} z imenom {old_name}",
"undo" => "razveljavi",
"Error deleting file." => "Napaka brisanja datoteke.",
"_%n folder_::_%n folders_" => array("%n mapa","%n mapi","%n mape","%n map"),
"_%n file_::_%n files_" => array("%n datoteka","%n datoteki","%n datoteke","%n datotek"),
@ -59,8 +59,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ni ustreznega osebnega ključa za program za šifriranje. Posodobite osebni ključ za dostop do šifriranih datotek med nastavitvami.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Šifriranje je onemogočeno, datoteke pa so še vedno šifrirane. Odšifrirajte jih med nastavitvami.",
"Your download is being prepared. This might take some time if the files are big." => "Postopek priprave datoteke za prejem je lahko dolgotrajen, kadar je datoteka zelo velika.",
"Error moving file" => "Napaka premikanja datoteke",
"Error" => "Napaka",
"Name" => "Ime",
"Size" => "Velikost",
"Modified" => "Spremenjeno",

View File

@ -25,9 +25,9 @@ $TRANSLATIONS = array(
"Share" => "Ndaj",
"Delete permanently" => "Fshi përfundimisht",
"Rename" => "Riemëro",
"Error moving file" => "Gabim lëvizjen dokumentave",
"Error" => "Gabim",
"Pending" => "Në vijim",
"replaced {new_name} with {old_name}" => "u zëvendësua {new_name} me {old_name}",
"undo" => "anullo",
"_%n folder_::_%n folders_" => array("%n dosje","%n dosje"),
"_%n file_::_%n files_" => array("%n skedar","%n skedarë"),
"{dirs} and {files}" => "{dirs} dhe {files}",
@ -36,8 +36,6 @@ $TRANSLATIONS = array(
"Your storage is almost full ({usedSpacePercent}%)" => "Hapsira juaj e arkivimit është pothuajse në fund ({usedSpacePercent}%)",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Kodifikimi u çaktivizua por skedarët tuaj vazhdojnë të jenë të kodifikuar. Ju lutem shkoni tek parametrat personale për të dekodifikuar skedarët tuaj.",
"Your download is being prepared. This might take some time if the files are big." => "Shkarkimi juaj është duke u përgatitur. Kjo mund të kërkojë kohë nëse skedarët janë të mëdhenj.",
"Error moving file" => "Gabim lëvizjen dokumentave",
"Error" => "Gabim",
"Name" => "Emri",
"Size" => "Madhësia",
"Modified" => "Ndryshuar",

View File

@ -21,16 +21,14 @@ $TRANSLATIONS = array(
"Share" => "Дели",
"Delete permanently" => "Обриши за стално",
"Rename" => "Преименуј",
"Error" => "Грешка",
"Pending" => "На чекању",
"replaced {new_name} with {old_name}" => "замењено {new_name} са {old_name}",
"undo" => "опозови",
"_%n folder_::_%n folders_" => array("","",""),
"_%n file_::_%n files_" => array("","",""),
"_Uploading %n file_::_Uploading %n files_" => array("","",""),
"Your storage is full, files can not be updated or synced anymore!" => "Ваше складиште је пуно. Датотеке више не могу бити ажуриране ни синхронизоване.",
"Your storage is almost full ({usedSpacePercent}%)" => "Ваше складиште је скоро па пуно ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Припремам преузимање. Ово може да потраје ако су датотеке велике.",
"Error" => "Грешка",
"Name" => "Име",
"Size" => "Величина",
"Modified" => "Измењено",

View File

@ -8,10 +8,10 @@ $TRANSLATIONS = array(
"Files" => "Fajlovi",
"Share" => "Podeli",
"Rename" => "Preimenij",
"Error" => "Greška",
"_%n folder_::_%n folders_" => array("","",""),
"_%n file_::_%n files_" => array("","",""),
"_Uploading %n file_::_Uploading %n files_" => array("","",""),
"Error" => "Greška",
"Name" => "Ime",
"Size" => "Veličina",
"Modified" => "Zadnja izmena",

View File

@ -3,9 +3,12 @@ $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Kunde inte flytta %s - Det finns redan en fil med detta namn",
"Could not move %s" => "Kan inte flytta %s",
"File name cannot be empty." => "Filnamn kan inte vara tomt.",
"\"%s\" is an invalid file name." => "\"%s\" är ett ogiltigt filnamn.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ogiltigt namn, '\\', '/', '<', '>', ':', '\"', '|', '?' och '*' är inte tillåtet.",
"The target folder has been moved or deleted." => "Målmappen har flyttats eller tagits bort.",
"The name %s is already used in the folder %s. Please choose a different name." => "Namnet %s används redan i katalogen %s. Välj ett annat namn.",
"Not a valid source" => "Inte en giltig källa",
"Server is not allowed to open URLs, please check the server configuration" => "Servern är inte tillåten att öppna URL:er, vänligen kontrollera server konfigurationen",
"Error while downloading %s to %s" => "Fel under nerladdning från %s till %s",
"Error when creating the file" => "Fel under skapande utav filen",
"Folder name cannot be empty." => "Katalognamn kan ej vara tomt.",
@ -26,6 +29,8 @@ $TRANSLATIONS = array(
"Invalid directory." => "Felaktig mapp.",
"Files" => "Filer",
"Unable to upload {filename} as it is a directory or has 0 bytes" => "Kan inte ladda upp {filename} eftersom den antingen är en mapp eller har 0 bytes.",
"Total file size {size1} exceeds upload limit {size2}" => "Totala filstorleken {size1} överskrider uppladdningsgränsen {size2}",
"Not enough free space, you are uploading {size1} but only {size2} is left" => "Inte tillräckligt med ledigt utrymme, du laddar upp {size1} men endast {size2} finns kvar.",
"Upload cancelled." => "Uppladdning avbruten.",
"Could not get result from server." => "Gick inte att hämta resultat från server.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
@ -34,26 +39,26 @@ $TRANSLATIONS = array(
"{new_name} already exists" => "{new_name} finns redan",
"Could not create file" => "Kunde ej skapa fil",
"Could not create folder" => "Kunde ej skapa katalog",
"Error fetching URL" => "Fel vid hämtning av URL",
"Share" => "Dela",
"Delete permanently" => "Radera permanent",
"Rename" => "Byt namn",
"Error moving file" => "Fel uppstod vid flyttning av fil",
"Error" => "Fel",
"Pending" => "Väntar",
"Could not rename file" => "Kan ej byta filnamn",
"replaced {new_name} with {old_name}" => "ersatt {new_name} med {old_name}",
"undo" => "ångra",
"Error deleting file." => "Kunde inte ta bort filen.",
"_%n folder_::_%n folders_" => array("%n mapp","%n mappar"),
"_%n file_::_%n files_" => array("%n fil","%n filer"),
"{dirs} and {files}" => "{dirs} och {files}",
"_Uploading %n file_::_Uploading %n files_" => array("Laddar upp %n fil","Laddar upp %n filer"),
"\"{name}\" is an invalid file name." => "\"{name}\" är ett ogiltligt filnamn.",
"Your storage is full, files can not be updated or synced anymore!" => "Ditt lagringsutrymme är fullt, filer kan inte längre uppdateras eller synkroniseras!",
"Your storage is almost full ({usedSpacePercent}%)" => "Ditt lagringsutrymme är nästan fullt ({usedSpacePercent}%)",
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" => "Krypteringsprogrammet är aktiverat men dina nycklar är inte initierade. Vänligen logga ut och in igen",
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Ogiltig privat nyckel i krypteringsprogrammet. Vänligen uppdatera lösenordet till din privata nyckel under dina personliga inställningar för att återfå tillgång till dina krypterade filer.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Kryptering inaktiverades men dina filer är fortfarande krypterade. Vänligen gå till sidan för dina personliga inställningar för att dekryptera dina filer.",
"Your download is being prepared. This might take some time if the files are big." => "Din nedladdning förbereds. Det kan ta tid om det är stora filer.",
"Error moving file" => "Fel uppstod vid flyttning av fil",
"Error" => "Fel",
"Name" => "Namn",
"Size" => "Storlek",
"Modified" => "Ändrad",
@ -69,6 +74,7 @@ $TRANSLATIONS = array(
"Maximum input size for ZIP files" => "Största tillåtna storlek för ZIP-filer",
"Save" => "Spara",
"New" => "Ny",
"New text file" => "Ny textfil",
"Text file" => "Textfil",
"New folder" => "Ny mapp",
"Folder" => "Mapp",

View File

@ -14,13 +14,11 @@ $TRANSLATIONS = array(
"{new_name} already exists" => "{new_name} ஏற்கனவே உள்ளது",
"Share" => "பகிர்வு",
"Rename" => "பெயர்மாற்றம்",
"Error" => "வழு",
"Pending" => "நிலுவையிலுள்ள",
"replaced {new_name} with {old_name}" => "{new_name} ஆனது {old_name} இனால் மாற்றப்பட்டது",
"undo" => "முன் செயல் நீக்கம் ",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "வழு",
"Name" => "பெயர்",
"Size" => "அளவு",
"Modified" => "மாற்றப்பட்டது",

View File

@ -1,10 +1,10 @@
<?php
$TRANSLATIONS = array(
"Delete permanently" => "శాశ్వతంగా తొలగించు",
"Error" => "పొరపాటు",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "పొరపాటు",
"Name" => "పేరు",
"Size" => "పరిమాణం",
"Save" => "భద్రపరచు",

View File

@ -20,16 +20,14 @@ $TRANSLATIONS = array(
"{new_name} already exists" => "{new_name} มีอยู่แล้วในระบบ",
"Share" => "แชร์",
"Rename" => "เปลี่ยนชื่อ",
"Error" => "ข้อผิดพลาด",
"Pending" => "อยู่ระหว่างดำเนินการ",
"replaced {new_name} with {old_name}" => "แทนที่ {new_name} ด้วย {old_name} แล้ว",
"undo" => "เลิกทำ",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array(""),
"Your storage is full, files can not be updated or synced anymore!" => "พื้นที่จัดเก็บข้อมูลของคุณเต็มแล้ว ไม่สามารถอัพเดทหรือผสานไฟล์ต่างๆได้อีกต่อไป",
"Your storage is almost full ({usedSpacePercent}%)" => "พื้นที่จัดเก็บข้อมูลของคุณใกล้เต็มแล้ว ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "กำลังเตรียมดาวน์โหลดข้อมูล หากไฟล์มีขนาดใหญ่ อาจใช้เวลาสักครู่",
"Error" => "ข้อผิดพลาด",
"Name" => "ชื่อ",
"Size" => "ขนาด",
"Modified" => "แก้ไขแล้ว",

View File

@ -29,7 +29,7 @@ $TRANSLATIONS = array(
"Invalid directory." => "Geçersiz dizin.",
"Files" => "Dosyalar",
"Unable to upload {filename} as it is a directory or has 0 bytes" => "Bir dizin veya 0 bayt olduğundan {filename} yüklenemedi",
"Total file size {size1} exceeds upload limit {size2}" => "Toplam dosya boyutu {size1} gönderme sınırını {size2}ıyor",
"Total file size {size1} exceeds upload limit {size2}" => "Toplam dosya boyutu {size1}, {size2} gönderme sınırınııyor",
"Not enough free space, you are uploading {size1} but only {size2} is left" => "Yeterince boş alan yok. Gönderdiğiniz boyut {size1} ancak {size2} alan mevcut",
"Upload cancelled." => "Yükleme iptal edildi.",
"Could not get result from server." => "Sunucudan sonuç alınamadı.",
@ -43,10 +43,10 @@ $TRANSLATIONS = array(
"Share" => "Paylaş",
"Delete permanently" => "Kalıcı olarak sil",
"Rename" => "İsim değiştir.",
"Error moving file" => "Dosya taşıma hatası",
"Error" => "Hata",
"Pending" => "Bekliyor",
"Could not rename file" => "Dosya adlandırılamadı",
"replaced {new_name} with {old_name}" => "{new_name} ismi {old_name} ile değiştirildi",
"undo" => "geri al",
"Error deleting file." => "Dosya silinirken hata.",
"_%n folder_::_%n folders_" => array("%n dizin","%n dizin"),
"_%n file_::_%n files_" => array("%n dosya","%n dosya"),
@ -59,12 +59,10 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "Şifreleme Uygulaması için geçersiz özel anahtar. Lütfen şifreli dosyalarınıza erişimi tekrar kazanabilmek için kişisel ayarlarınızdan özel anahtar parolanızı güncelleyin.",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Şifreleme işlemi durduruldu ancak dosyalarınız şifreli. Dosyalarınızın şifresini kaldırmak için lütfen kişisel ayarlar kısmına geçin.",
"Your download is being prepared. This might take some time if the files are big." => "İndirmeniz hazırlanıyor. Dosya büyük ise biraz zaman alabilir.",
"Error moving file" => "Dosya taşıma hatası",
"Error" => "Hata",
"Name" => "İsim",
"Size" => "Boyut",
"Modified" => "Değiştirilme",
"Invalid folder name. Usage of 'Shared' is reserved." => "Geçersiz dizin adı. 'Shared' ismi ayrılmıştır.",
"Invalid folder name. Usage of 'Shared' is reserved." => "Geçersiz klasör adı. 'Shared' ismi ayrılmıştır.",
"%s could not be renamed" => "%s yeniden adlandırılamadı",
"Upload" => "Yükle",
"File handling" => "Dosya işlemleri",

View File

@ -13,12 +13,11 @@ $TRANSLATIONS = array(
"Share" => "ھەمبەھىر",
"Delete permanently" => "مەڭگۈلۈك ئۆچۈر",
"Rename" => "ئات ئۆزگەرت",
"Error" => "خاتالىق",
"Pending" => "كۈتۈۋاتىدۇ",
"undo" => "يېنىۋال",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array(""),
"Error" => "خاتالىق",
"Name" => "ئاتى",
"Size" => "چوڭلۇقى",
"Modified" => "ئۆزگەرتكەن",

View File

@ -26,18 +26,16 @@ $TRANSLATIONS = array(
"Share" => "Поділитися",
"Delete permanently" => "Видалити назавжди",
"Rename" => "Перейменувати",
"Error moving file" => "Помилка переміщення файлу",
"Error" => "Помилка",
"Pending" => "Очікування",
"Could not rename file" => "Неможливо перейменувати файл",
"replaced {new_name} with {old_name}" => "замінено {new_name} на {old_name}",
"undo" => "відмінити",
"_%n folder_::_%n folders_" => array("%n тека","%n тека","%n теки"),
"_%n file_::_%n files_" => array("%n файл","%n файлів","%n файли"),
"_Uploading %n file_::_Uploading %n files_" => array("","",""),
"Your storage is full, files can not be updated or synced anymore!" => "Ваше сховище переповнене, файли більше не можуть бути оновлені або синхронізовані !",
"Your storage is almost full ({usedSpacePercent}%)" => "Ваше сховище майже повне ({usedSpacePercent}%)",
"Your download is being prepared. This might take some time if the files are big." => "Ваше завантаження готується. Це може зайняти деякий час, якщо файли завеликі.",
"Error moving file" => "Помилка переміщення файлу",
"Error" => "Помилка",
"Name" => "Ім'я",
"Size" => "Розмір",
"Modified" => "Змінено",

View File

@ -1,8 +1,8 @@
<?php
$TRANSLATIONS = array(
"Error" => "ایرر",
"_%n folder_::_%n folders_" => array("",""),
"_%n file_::_%n files_" => array("",""),
"_Uploading %n file_::_Uploading %n files_" => array("",""),
"Error" => "ایرر"
"_Uploading %n file_::_Uploading %n files_" => array("","")
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";

View File

@ -37,10 +37,10 @@ $TRANSLATIONS = array(
"Share" => "Chia sẻ",
"Delete permanently" => "Xóa vĩnh vễn",
"Rename" => "Sửa tên",
"Error moving file" => "Lỗi di chuyển tập tin",
"Error" => "Lỗi",
"Pending" => "Đang chờ",
"Could not rename file" => "Không thể đổi tên file",
"replaced {new_name} with {old_name}" => "đã thay thế {new_name} bằng {old_name}",
"undo" => "lùi lại",
"Error deleting file." => "Lỗi xóa file,",
"_%n folder_::_%n folders_" => array("%n thư mục"),
"_%n file_::_%n files_" => array("%n tập tin"),
@ -51,8 +51,6 @@ $TRANSLATIONS = array(
"Encryption App is enabled but your keys are not initialized, please log-out and log-in again" => "Ứng dụng mã hóa đã được kích hoạt nhưng bạn chưa khởi tạo khóa. Vui lòng đăng xuất ra và đăng nhập lại",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Mã hóa đã bị vô hiệu nhưng những tập tin của bạn vẫn được mã hóa. Vui lòng vào phần thiết lập cá nhân để giải mã chúng.",
"Your download is being prepared. This might take some time if the files are big." => "Your download is being prepared. This might take some time if the files are big.",
"Error moving file" => "Lỗi di chuyển tập tin",
"Error" => "Lỗi",
"Name" => "Tên",
"Size" => "Kích cỡ",
"Modified" => "Thay đổi",

View File

@ -39,10 +39,10 @@ $TRANSLATIONS = array(
"Share" => "分享",
"Delete permanently" => "永久删除",
"Rename" => "重命名",
"Error moving file" => "移动文件错误",
"Error" => "错误",
"Pending" => "等待",
"Could not rename file" => "不能重命名文件",
"replaced {new_name} with {old_name}" => "已将 {old_name}替换成 {new_name}",
"undo" => "撤销",
"Error deleting file." => "删除文件出错。",
"_%n folder_::_%n folders_" => array("%n 文件夹"),
"_%n file_::_%n files_" => array("%n个文件"),
@ -54,8 +54,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "无效的私有密钥。请到您的个人配置里去更新私有密钥,来恢复对加密文件的访问。",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "加密是被禁用的,但是您的文件还是被加密了。请到您的个人配置里设置文件加密选项。",
"Your download is being prepared. This might take some time if the files are big." => "下载正在准备中。如果文件较大可能会花费一些时间。",
"Error moving file" => "移动文件错误",
"Error" => "错误",
"Name" => "名称",
"Size" => "大小",
"Modified" => "修改日期",

View File

@ -2,10 +2,10 @@
$TRANSLATIONS = array(
"Files" => "文件",
"Share" => "分享",
"Error" => "錯誤",
"_%n folder_::_%n folders_" => array(""),
"_%n file_::_%n files_" => array(""),
"_Uploading %n file_::_Uploading %n files_" => array(""),
"Error" => "錯誤",
"Name" => "名稱",
"Upload" => "上傳",
"Save" => "儲存",

View File

@ -37,10 +37,10 @@ $TRANSLATIONS = array(
"Share" => "分享",
"Delete permanently" => "永久刪除",
"Rename" => "重新命名",
"Error moving file" => "移動檔案失敗",
"Error" => "錯誤",
"Pending" => "等候中",
"Could not rename file" => "無法重新命名",
"replaced {new_name} with {old_name}" => "使用 {new_name} 取代 {old_name}",
"undo" => "復原",
"_%n folder_::_%n folders_" => array("%n 個資料夾"),
"_%n file_::_%n files_" => array("%n 個檔案"),
"{dirs} and {files}" => "{dirs} 和 {files}",
@ -51,8 +51,6 @@ $TRANSLATIONS = array(
"Invalid private key for Encryption App. Please update your private key password in your personal settings to recover access to your encrypted files." => "無效的檔案加密私鑰,請在個人設定中更新您的私鑰密語以存取加密的檔案。",
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "加密已經被停用,但是您的舊檔案還是處於已加密的狀態,請前往個人設定以解密這些檔案。",
"Your download is being prepared. This might take some time if the files are big." => "正在準備您的下載,若您的檔案較大,將會需要更多時間。",
"Error moving file" => "移動檔案失敗",
"Error" => "錯誤",
"Name" => "名稱",
"Size" => "大小",
"Modified" => "修改時間",

View File

@ -84,25 +84,7 @@ class App {
) {
// successful rename
$meta = $this->view->getFileInfo($dir . '/' . $newname);
if ($meta['mimetype'] === 'httpd/unix-directory') {
$meta['type'] = 'dir';
}
else {
$meta['type'] = 'file';
}
// these need to be set for determineIcon()
$meta['isPreviewAvailable'] = \OC::$server->getPreviewManager()->isMimeSupported($meta['mimetype']);
$meta['directory'] = $dir;
$fileinfo = array(
'id' => $meta['fileid'],
'mime' => $meta['mimetype'],
'size' => $meta['size'],
'etag' => $meta['etag'],
'directory' => $meta['directory'],
'name' => $newname,
'isPreviewAvailable' => $meta['isPreviewAvailable'],
'icon' => \OCA\Files\Helper::determineIcon($meta)
);
$fileinfo = \OCA\Files\Helper::formatFileInfo($meta);
$result['success'] = true;
$result['data'] = $fileinfo;
} else {

View File

@ -19,11 +19,17 @@ class Helper
'usedSpacePercent' => (int)$storageInfo['relative']);
}
/**
* Determine icon for a given file
*
* @param \OC\Files\FileInfo $file file info
* @return string icon URL
*/
public static function determineIcon($file) {
if($file['type'] === 'dir') {
$dir = $file['directory'];
$icon = \OC_Helper::mimetypeIcon('dir');
$absPath = \OC\Files\Filesystem::getView()->getAbsolutePath($dir.'/'.$file['name']);
$absPath = $file->getPath();
$mount = \OC\Files\Filesystem::getMountManager()->find($absPath);
if (!is_null($mount)) {
$sid = $mount->getStorageId();
@ -38,11 +44,7 @@ class Helper
}
}
}else{
if($file['isPreviewAvailable']) {
$pathForPreview = $file['directory'] . '/' . $file['name'];
return \OC_Helper::previewIcon($pathForPreview) . '&c=' . $file['etag'];
}
$icon = \OC_Helper::mimetypeIcon($file['mimetype']);
$icon = \OC_Helper::mimetypeIcon($file->getMimetype());
}
return substr($icon, 0, -3) . 'svg';
@ -69,52 +71,58 @@ class Helper
}
/**
* 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
* Formats the file info to be returned as JSON to the client.
*
* @param \OCP\Files\FileInfo file info
* @return array formatted file info
*/
public static function getFiles($dir) {
$content = \OC\Files\Filesystem::getDirectoryContent($dir);
$files = array();
public static function formatFileInfo($i) {
$entry = 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'] = \OC::$server->getPreviewManager()->isMimeSupported($i['mimetype']);
$i['icon'] = \OCA\Files\Helper::determineIcon($i);
$files[] = $i;
$entry['id'] = $i['fileid'];
$entry['date'] = \OCP\Util::formatDate($i['mtime']);
$entry['mtime'] = $i['mtime'] * 1000;
// only pick out the needed attributes
$entry['icon'] = \OCA\Files\Helper::determineIcon($i);
if (\OC::$server->getPreviewManager()->isMimeSupported($i['mimetype'])) {
$entry['isPreviewAvailable'] = true;
}
$entry['name'] = $i['name'];
$entry['permissions'] = $i['permissions'];
$entry['mimetype'] = $i['mimetype'];
$entry['size'] = $i['size'];
$entry['type'] = $i['type'];
$entry['etag'] = $i['etag'];
if (isset($i['displayname_owner'])) {
$entry['shareOwner'] = $i['displayname_owner'];
}
return $entry;
}
usort($files, array('\OCA\Files\Helper', 'fileCmp'));
/**
* Format file info for JSON
* @param \OCP\Files\FileInfo[] $fileInfos file infos
*/
public static function formatFileInfos($fileInfos) {
$files = array();
foreach ($fileInfos as $i) {
$files[] = self::formatFileInfo($i);
}
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
* Retrieves the contents of the given directory and
* returns it as a sorted array of FileInfo.
*
* @param string $dir path to the directory
* @return \OCP\Files\FileInfo[] files
*/
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;
public static function getFiles($dir) {
$content = \OC\Files\Filesystem::getDirectoryContent($dir);
usort($content, array('\OCA\Files\Helper', 'fileCmp'));
return $content;
}
}

View File

@ -1,28 +1,26 @@
<?php OCP\Util::addscript('files', 'admin'); ?>
<form name="filesForm" action='#' method='post'>
<fieldset class="personalblock">
<h2><?php p($l->t('File handling')); ?></h2>
<?php if($_['uploadChangable']):?>
<label for="maxUploadSize"><?php p($l->t( 'Maximum upload size' )); ?> </label>
<input type="text" name='maxUploadSize' id="maxUploadSize" value='<?php p($_['uploadMaxFilesize']) ?>'/>
<?php if($_['displayMaxPossibleUploadSize']):?>
(<?php p($l->t('max. possible: ')); p($_['maxPossibleUploadSize']) ?>)
<?php endif;?>
<br/>
<form name="filesForm" class="section" action="#" method="post">
<h2><?php p($l->t('File handling')); ?></h2>
<?php if($_['uploadChangable']):?>
<label for="maxUploadSize"><?php p($l->t( 'Maximum upload size' )); ?> </label>
<input type="text" name='maxUploadSize' id="maxUploadSize" value='<?php p($_['uploadMaxFilesize']) ?>'/>
<?php if($_['displayMaxPossibleUploadSize']):?>
(<?php p($l->t('max. possible: ')); p($_['maxPossibleUploadSize']) ?>)
<?php endif;?>
<input type="checkbox" name="allowZipDownload" id="allowZipDownload" value="1"
title="<?php p($l->t( 'Needed for multi-file and folder downloads.' )); ?>"
<?php if ($_['allowZipDownload']): ?> checked="checked"<?php endif; ?> />
<label for="allowZipDownload"><?php p($l->t( 'Enable ZIP-download' )); ?></label><br/>
<br/>
<?php endif;?>
<input type="checkbox" name="allowZipDownload" id="allowZipDownload" value="1"
title="<?php p($l->t( 'Needed for multi-file and folder downloads.' )); ?>"
<?php if ($_['allowZipDownload']): ?> checked="checked"<?php endif; ?> />
<label for="allowZipDownload"><?php p($l->t( 'Enable ZIP-download' )); ?></label><br/>
<input type="text" name="maxZipInputSize" id="maxZipInputSize" style="width:180px;" value='<?php p($_['maxZipInputSize']) ?>'
title="<?php p($l->t( '0 is unlimited' )); ?>"
<?php if (!$_['allowZipDownload']): ?> disabled="disabled"<?php endif; ?> /><br />
<em><?php p($l->t( 'Maximum input size for ZIP files' )); ?> </em><br />
<input type="text" name="maxZipInputSize" id="maxZipInputSize" style="width:180px;" value='<?php p($_['maxZipInputSize']) ?>'
title="<?php p($l->t( '0 is unlimited' )); ?>"
<?php if (!$_['allowZipDownload']): ?> disabled="disabled"<?php endif; ?> /><br />
<em><?php p($l->t( 'Maximum input size for ZIP files' )); ?> </em><br />
<input type="hidden" value="<?php p($_['requesttoken']); ?>" name="requesttoken" />
<input type="submit" name="submitFilesAdminSettings" id="submitFilesAdminSettings"
value="<?php p($l->t( 'Save' )); ?>"/>
</fieldset>
<input type="hidden" value="<?php p($_['requesttoken']); ?>" name="requesttoken" />
<input type="submit" name="submitFilesAdminSettings" id="submitFilesAdminSettings"
value="<?php p($l->t( 'Save' )); ?>"/>
</form>

View File

@ -3,8 +3,8 @@
<span class="what">{what}<!-- If you select both versions, the copied file will have a number added to its name. --></span><br/>
<br/>
<table>
<th><label><input class="allnewfiles" type="checkbox" />New Files<span class="count"></span></label></th>
<th><label><input class="allexistingfiles" type="checkbox" />Already existing files<span class="count"></span></label></th>
<th><label><input class="allnewfiles" type="checkbox" />{allnewfiles}<span class="count"></span></label></th>
<th><label><input class="allexistingfiles" type="checkbox" />{allexistingfiles}<span class="count"></span></label></th>
</table>
<div class="conflicts">
<div class="template">

View File

@ -1,6 +1,5 @@
<div id="controls">
<?php print_unescaped($_['breadcrumb']); ?>
<div class="actions creatable <?php if (!$_['isCreatable']):?>hidden<?php endif; ?>">
<div class="actions creatable hidden">
<?php if(!isset($_['dirToken'])):?>
<div id="new" class="button">
<a><?php p($l->t('New'));?></a>
@ -48,20 +47,20 @@
</div>
</div>
<div id="file_action_panel"></div>
<div class="notCreatable notPublic <?php if ($_['isCreatable'] or $_['isPublic'] ):?>hidden<?php endif; ?>">
<div class="notCreatable notPublic hidden">
<?php p($l->t('You dont have permission to upload or create files here'))?>
</div>
<input type="hidden" name="permissions" value="<?php p($_['permissions']); ?>" id="permissions">
</div>
<div id="emptycontent" <?php if (!$_['emptyContent']):?>class="hidden"<?php endif; ?>><?php p($l->t('Nothing in here. Upload something!'))?></div>
<div id="emptycontent" class="hidden"><?php p($l->t('Nothing in here. Upload something!'))?></div>
<input type="hidden" id="disableSharing" data-status="<?php p($_['disableSharing']); ?>" />
<table id="filestable" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>" data-preview-x="36" data-preview-y="36">
<thead>
<tr>
<th <?php if (!$_['fileHeader']):?>class="hidden"<?php endif; ?> id='headerName'>
<th class="hidden" id='headerName'>
<div id="headerName-container">
<input type="checkbox" id="select_all" />
<label for="select_all"></label>
@ -77,8 +76,8 @@
</span>
</div>
</th>
<th <?php if (!$_['fileHeader']):?>class="hidden"<?php endif; ?> id="headerSize"><?php p($l->t('Size')); ?></th>
<th <?php if (!$_['fileHeader']):?>class="hidden"<?php endif; ?> id="headerDate">
<th class="hidden" id="headerSize"><?php p($l->t('Size')); ?></th>
<th class="hidden" id="headerDate">
<span id="modified"><?php p($l->t( 'Modified' )); ?></span>
<?php if ($_['permissions'] & OCP\PERMISSION_DELETE): ?>
<span class="selectedActions"><a href="" class="delete-selected">
@ -91,7 +90,6 @@
</tr>
</thead>
<tbody id="fileList">
<?php print_unescaped($_['fileList']); ?>
</tbody>
</table>
<div id="editor"></div><!-- FIXME Do not use this div in your app! It is deprecated and will be removed in the future! -->
@ -111,7 +109,6 @@
<!-- config hints for javascript -->
<input type="hidden" name="filesApp" id="filesApp" value="1" />
<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']); ?>" />
<?php if (!$_['isPublic']) :?>

View File

@ -1,17 +0,0 @@
<div class="crumb svg <?php if(!count($_["breadcrumb"])) p('last');?>" data-dir=''>
<a href="<?php print_unescaped($_['baseURL']); ?>">
<?php if(isset($_['rootBreadCrumb'])):
echo $_['rootBreadCrumb'];
else:?>
<img src="<?php print_unescaped(OCP\image_path('core', 'places/home.svg'));?>" class="svg" />
<?php endif;?>
</a>
</div>
<?php for($i=0; $i<count($_["breadcrumb"]); $i++):
$crumb = $_["breadcrumb"][$i];
$dir = \OCP\Util::encodePath($crumb["dir"]); ?>
<div class="crumb <?php if($i == count($_["breadcrumb"])-1) p('last');?> svg"
data-dir='<?php p($dir);?>'>
<a href="<?php p($_['baseURL'].$dir); ?>"><?php p($crumb["name"]); ?></a>
</div>
<?php endfor;

View File

@ -1,67 +0,0 @@
<?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);
if($simple_size_color<0) $simple_size_color = 0;
$relative_modified_date = OCP\relative_modified_date($file['mtime']);
// the older the file, the brighter the shade of grey; days*14
$relative_date_color = round((time()-$file['mtime'])/60/60/24*14);
if($relative_date_color>160) $relative_date_color = 160;
$name = \OCP\Util::encodePath($file['name']);
$directory = \OCP\Util::encodePath($file['directory']); ?>
<tr data-id="<?php p($file['fileid']); ?>"
data-file="<?php p($name);?>"
data-type="<?php ($file['type'] == 'dir')?p('dir'):p('file')?>"
data-mime="<?php p($file['mimetype'])?>"
data-size="<?php p($file['size']);?>"
data-etag="<?php p($file['etag']);?>"
data-permissions="<?php p($file['permissions']); ?>"
<?php if(isset($file['displayname_owner'])): ?>
data-share-owner="<?php p($file['displayname_owner']) ?>"
<?php endif; ?>
>
<?php if(isset($file['isPreviewAvailable']) and $file['isPreviewAvailable']): ?>
<td class="filename svg preview-icon"
<?php else: ?>
<td class="filename svg"
<?php endif; ?>
style="background-image:url(<?php print_unescaped($file['icon']); ?>)"
>
<?php if(!isset($_['readonly']) || !$_['readonly']): ?>
<input id="select-<?php p($file['fileid']); ?>" type="checkbox" />
<label for="select-<?php p($file['fileid']); ?>"></label>
<?php endif; ?>
<?php if($file['type'] == 'dir'): ?>
<a class="name" href="<?php p(rtrim($_['baseURL'],'/').'/'.trim($directory,'/').'/'.$name); ?>" title="">
<span class="nametext">
<?php print_unescaped(htmlspecialchars($file['name']));?>
</span>
<span class="uploadtext" currentUploads="0">
</span>
</a>
<?php else: ?>
<a class="name" href="<?php p(rtrim($_['downloadURL'],'/').'/'.trim($directory,'/').'/'.$name); ?>">
<label class="filetext" title="" for="select-<?php p($file['fileid']); ?>"></label>
<span class="nametext"><?php print_unescaped(htmlspecialchars($file['basename']));?><span class='extension'><?php p($file['extension']);?></span></span>
</a>
<?php endif; ?>
</td>
<td class="filesize"
style="color:rgb(<?php p($simple_size_color.','.$simple_size_color.','.$simple_size_color) ?>)">
<?php print_unescaped(OCP\human_file_size($file['size'])); ?>
</td>
<td class="date">
<span class="modified"
title="<?php p($file['date']); ?>"
style="color:rgb(<?php p($relative_date_color.','
.$relative_date_color.','
.$relative_date_color) ?>)">
<?php p($relative_modified_date); ?>
</span>
</td>
</tr>
<?php endforeach;

View File

@ -92,28 +92,32 @@ class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase {
$this->viewMock->expects($this->any())
->method('getFileInfo')
->will($this->returnValue(array(
->will($this->returnValue(new \OC\Files\FileInfo(
'/test',
null,
'/test',
array(
'fileid' => 123,
'type' => 'dir',
'mimetype' => 'httpd/unix-directory',
'mtime' => 0,
'permissions' => 31,
'size' => 18,
'etag' => 'abcdef',
'directory' => '/',
'name' => 'new_name',
)));
))));
$result = $this->files->rename($dir, $oldname, $newname);
$this->assertTrue($result['success']);
$this->assertEquals(123, $result['data']['id']);
$this->assertEquals('new_name', $result['data']['name']);
$this->assertEquals('/test', $result['data']['directory']);
$this->assertEquals(18, $result['data']['size']);
$this->assertEquals('httpd/unix-directory', $result['data']['mime']);
$this->assertEquals('httpd/unix-directory', $result['data']['mimetype']);
$icon = \OC_Helper::mimetypeIcon('dir');
$icon = substr($icon, 0, -3) . 'svg';
$this->assertEquals($icon, $result['data']['icon']);
$this->assertFalse($result['data']['isPreviewAvailable']);
}
/**
@ -148,29 +152,33 @@ class Test_OC_Files_App_Rename extends \PHPUnit_Framework_TestCase {
$this->viewMock->expects($this->any())
->method('getFileInfo')
->will($this->returnValue(array(
->will($this->returnValue(new \OC\Files\FileInfo(
'/',
null,
'/',
array(
'fileid' => 123,
'type' => 'dir',
'mimetype' => 'httpd/unix-directory',
'mtime' => 0,
'permissions' => 31,
'size' => 18,
'etag' => 'abcdef',
'directory' => '/',
'name' => 'new_name',
)));
))));
$result = $this->files->rename($dir, $oldname, $newname);
$this->assertTrue($result['success']);
$this->assertEquals(123, $result['data']['id']);
$this->assertEquals('newname', $result['data']['name']);
$this->assertEquals('/', $result['data']['directory']);
$this->assertEquals('new_name', $result['data']['name']);
$this->assertEquals(18, $result['data']['size']);
$this->assertEquals('httpd/unix-directory', $result['data']['mime']);
$this->assertEquals('httpd/unix-directory', $result['data']['mimetype']);
$this->assertEquals('abcdef', $result['data']['etag']);
$icon = \OC_Helper::mimetypeIcon('dir');
$icon = substr($icon, 0, -3) . 'svg';
$this->assertEquals($icon, $result['data']['icon']);
$this->assertFalse($result['data']['isPreviewAvailable']);
}
/**

View File

@ -0,0 +1,248 @@
/**
* ownCloud
*
* @author Vincent Petry
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
* License as published by the Free Software Foundation; either
* version 3 of the License, or any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
*/
/* global BreadCrumb */
describe('BreadCrumb tests', function() {
describe('Rendering', function() {
var bc;
beforeEach(function() {
bc = new BreadCrumb({
getCrumbUrl: function(part, index) {
// for testing purposes
return part.dir + '#' + index;
}
});
});
afterEach(function() {
bc = null;
});
it('Renders its own container', function() {
bc.render();
expect(bc.$el.hasClass('breadcrumb')).toEqual(true);
});
it('Renders root by default', function() {
var $crumbs;
bc.render();
$crumbs = bc.$el.find('.crumb');
expect($crumbs.length).toEqual(1);
expect($crumbs.eq(0).find('a').attr('href')).toEqual('/#0');
expect($crumbs.eq(0).find('img').length).toEqual(1);
expect($crumbs.eq(0).attr('data-dir')).toEqual('/');
});
it('Renders root when switching to root', function() {
var $crumbs;
bc.setDirectory('/somedir');
bc.setDirectory('/');
$crumbs = bc.$el.find('.crumb');
expect($crumbs.length).toEqual(1);
expect($crumbs.eq(0).attr('data-dir')).toEqual('/');
});
it('Renders last crumb with "last" class', function() {
bc.setDirectory('/abc/def');
expect(bc.$el.find('.crumb:last').hasClass('last')).toEqual(true);
});
it('Renders single path section', function() {
var $crumbs;
bc.setDirectory('/somedir');
$crumbs = bc.$el.find('.crumb');
expect($crumbs.length).toEqual(2);
expect($crumbs.eq(0).find('a').attr('href')).toEqual('/#0');
expect($crumbs.eq(0).find('img').length).toEqual(1);
expect($crumbs.eq(0).attr('data-dir')).toEqual('/');
expect($crumbs.eq(1).find('a').attr('href')).toEqual('/somedir#1');
expect($crumbs.eq(1).find('img').length).toEqual(0);
expect($crumbs.eq(1).attr('data-dir')).toEqual('/somedir');
});
it('Renders multiple path sections and special chars', function() {
var $crumbs;
bc.setDirectory('/somedir/with space/abc');
$crumbs = bc.$el.find('.crumb');
expect($crumbs.length).toEqual(4);
expect($crumbs.eq(0).find('a').attr('href')).toEqual('/#0');
expect($crumbs.eq(0).find('img').length).toEqual(1);
expect($crumbs.eq(0).attr('data-dir')).toEqual('/');
expect($crumbs.eq(1).find('a').attr('href')).toEqual('/somedir#1');
expect($crumbs.eq(1).find('img').length).toEqual(0);
expect($crumbs.eq(1).attr('data-dir')).toEqual('/somedir');
expect($crumbs.eq(2).find('a').attr('href')).toEqual('/somedir/with space#2');
expect($crumbs.eq(2).find('img').length).toEqual(0);
expect($crumbs.eq(2).attr('data-dir')).toEqual('/somedir/with space');
expect($crumbs.eq(3).find('a').attr('href')).toEqual('/somedir/with space/abc#3');
expect($crumbs.eq(3).find('img').length).toEqual(0);
expect($crumbs.eq(3).attr('data-dir')).toEqual('/somedir/with space/abc');
});
});
describe('Events', function() {
it('Calls onClick handler when clicking on a crumb', function() {
var handler = sinon.stub();
var bc = new BreadCrumb({
onClick: handler
});
bc.setDirectory('/one/two/three/four');
bc.$el.find('.crumb:eq(3)').click();
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).thisValue).toEqual(bc.$el.find('.crumb').get(3));
handler.reset();
bc.$el.find('.crumb:eq(0) a').click();
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).thisValue).toEqual(bc.$el.find('.crumb').get(0));
});
it('Calls onDrop handler when dropping on a crumb', function() {
var droppableStub = sinon.stub($.fn, 'droppable');
var handler = sinon.stub();
var bc = new BreadCrumb({
onDrop: handler
});
bc.setDirectory('/one/two/three/four');
expect(droppableStub.calledOnce).toEqual(true);
expect(droppableStub.getCall(0).args[0].drop).toBeDefined();
// simulate drop
droppableStub.getCall(0).args[0].drop({dummy: true});
expect(handler.calledOnce).toEqual(true);
expect(handler.getCall(0).args[0]).toEqual({dummy: true});
droppableStub.restore();
});
});
describe('Resizing', function() {
var bc, widthStub, dummyDir,
oldUpdateTotalWidth;
beforeEach(function() {
dummyDir = '/short name/longer name/looooooooooooonger/even longer long long long longer long/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/last one';
oldUpdateTotalWidth = BreadCrumb.prototype._updateTotalWidth;
BreadCrumb.prototype._updateTotalWidth = function() {
// need to set display:block for correct offsetWidth (no CSS loaded here)
$('div.crumb').css({
'display': 'block',
'float': 'left'
});
return oldUpdateTotalWidth.apply(this, arguments);
};
bc = new BreadCrumb();
widthStub = sinon.stub($.fn, 'width');
// append dummy navigation and controls
// as they are currently used for measurements
$('#testArea').append(
'<div id="navigation" style="width: 80px"></div>',
'<div id="controls"></div>'
);
// make sure we know the test screen width
$('#testArea').css('width', 1280);
// use test area as we need it for measurements
$('#controls').append(bc.$el);
$('#controls').append('<div class="actions"><div>Dummy action with a given width</div></div>');
});
afterEach(function() {
BreadCrumb.prototype._updateTotalWidth = oldUpdateTotalWidth;
widthStub.restore();
bc = null;
});
it('Hides breadcrumbs to fit window', function() {
var $crumbs;
widthStub.returns(500);
// triggers resize implicitly
bc.setDirectory(dummyDir);
$crumbs = bc.$el.find('.crumb');
// first one is always visible
expect($crumbs.eq(0).hasClass('hidden')).toEqual(false);
// second one has ellipsis
expect($crumbs.eq(1).hasClass('hidden')).toEqual(false);
expect($crumbs.eq(1).find('.ellipsis').length).toEqual(1);
// there is only one ellipsis in total
expect($crumbs.find('.ellipsis').length).toEqual(1);
// subsequent elements are hidden
expect($crumbs.eq(2).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(3).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(4).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(5).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(6).hasClass('hidden')).toEqual(false);
});
it('Updates ellipsis on window size increase', function() {
var $crumbs;
widthStub.returns(500);
// triggers resize implicitly
bc.setDirectory(dummyDir);
$crumbs = bc.$el.find('.crumb');
// simulate increase
$('#testArea').css('width', 1800);
bc.resize(1800);
// first one is always visible
expect($crumbs.eq(0).hasClass('hidden')).toEqual(false);
// second one has ellipsis
expect($crumbs.eq(1).hasClass('hidden')).toEqual(false);
expect($crumbs.eq(1).find('.ellipsis').length).toEqual(1);
// there is only one ellipsis in total
expect($crumbs.find('.ellipsis').length).toEqual(1);
// subsequent elements are hidden
expect($crumbs.eq(2).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(3).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(4).hasClass('hidden')).toEqual(true);
// the rest is visible
expect($crumbs.eq(5).hasClass('hidden')).toEqual(false);
expect($crumbs.eq(6).hasClass('hidden')).toEqual(false);
});
it('Updates ellipsis on window size decrease', function() {
var $crumbs;
$('#testArea').css('width', 2000);
widthStub.returns(2000);
// triggers resize implicitly
bc.setDirectory(dummyDir);
$crumbs = bc.$el.find('.crumb');
// simulate decrease
bc.resize(500);
$('#testArea').css('width', 500);
// first one is always visible
expect($crumbs.eq(0).hasClass('hidden')).toEqual(false);
// second one has ellipsis
expect($crumbs.eq(1).hasClass('hidden')).toEqual(false);
expect($crumbs.eq(1).find('.ellipsis').length).toEqual(1);
// there is only one ellipsis in total
expect($crumbs.find('.ellipsis').length).toEqual(1);
// subsequent elements are hidden
expect($crumbs.eq(2).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(3).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(4).hasClass('hidden')).toEqual(true);
// the rest is visible
expect($crumbs.eq(5).hasClass('hidden')).toEqual(true);
expect($crumbs.eq(6).hasClass('hidden')).toEqual(false);
});
});
});

View File

@ -22,6 +22,7 @@
/* global OC, FileActions, FileList */
describe('FileActions tests', function() {
var $filesTable;
beforeEach(function() {
// init horrible parameters
var $body = $('body');
@ -34,42 +35,83 @@ describe('FileActions tests', function() {
$('#dir, #permissions, #filestable').remove();
});
it('calling display() sets file actions', function() {
// note: download_url is actually the link target, not the actual download URL...
var $tr = FileList.addFile('testName.txt', 1234, new Date(), false, false, {download_url: 'test/download/url'});
var fileData = {
id: 18,
type: 'file',
name: 'testName.txt',
mimetype: 'plain/text',
size: '1234',
etag: 'a01234c',
mtime: '123456'
};
// no actions before call
expect($tr.find('.action[data-action=Download]').length).toEqual(0);
expect($tr.find('.action[data-action=Rename]').length).toEqual(0);
expect($tr.find('.action.delete').length).toEqual(0);
// note: FileActions.display() is called implicitly
var $tr = FileList.add(fileData);
FileActions.display($tr.find('td.filename'), true);
// actions defined after cal
expect($tr.find('.action[data-action=Download]').length).toEqual(1);
expect($tr.find('.nametext .action[data-action=Rename]').length).toEqual(1);
// actions defined after call
expect($tr.find('.action.action-download').length).toEqual(1);
expect($tr.find('.action.action-download').attr('data-action')).toEqual('Download');
expect($tr.find('.nametext .action.action-rename').length).toEqual(1);
expect($tr.find('.nametext .action.action-rename').attr('data-action')).toEqual('Rename');
expect($tr.find('.action.delete').length).toEqual(1);
});
it('calling display() twice correctly replaces file actions', function() {
var $tr = FileList.addFile('testName.txt', 1234, new Date(), false, false, {download_url: 'test/download/url'});
var fileData = {
id: 18,
type: 'file',
name: 'testName.txt',
mimetype: 'plain/text',
size: '1234',
etag: 'a01234c',
mtime: '123456'
};
var $tr = FileList.add(fileData);
FileActions.display($tr.find('td.filename'), true);
FileActions.display($tr.find('td.filename'), true);
// actions defined after cal
expect($tr.find('.action[data-action=Download]').length).toEqual(1);
expect($tr.find('.nametext .action[data-action=Rename]').length).toEqual(1);
expect($tr.find('.action.action-download').length).toEqual(1);
expect($tr.find('.nametext .action.action-rename').length).toEqual(1);
expect($tr.find('.action.delete').length).toEqual(1);
});
it('redirects to download URL when clicking download', function() {
var redirectStub = sinon.stub(OC, 'redirect');
// note: download_url is actually the link target, not the actual download URL...
var $tr = FileList.addFile('test download File.txt', 1234, new Date(), false, false, {download_url: 'test/download/url'});
var fileData = {
id: 18,
type: 'file',
name: 'testName.txt',
mimetype: 'plain/text',
size: '1234',
etag: 'a01234c',
mtime: '123456'
};
var $tr = FileList.add(fileData);
FileActions.display($tr.find('td.filename'), true);
$tr.find('.action[data-action=Download]').click();
$tr.find('.action-download').click();
expect(redirectStub.calledOnce).toEqual(true);
expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=test%20download%20File.txt');
expect(redirectStub.getCall(0).args[0]).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt');
redirectStub.restore();
});
it('deletes file when clicking delete', function() {
var deleteStub = sinon.stub(FileList, 'do_delete');
var fileData = {
id: 18,
type: 'file',
name: 'testName.txt',
mimetype: 'plain/text',
size: '1234',
etag: 'a01234c',
mtime: '123456'
};
var $tr = FileList.add(fileData);
FileActions.display($tr.find('td.filename'), true);
$tr.find('.action.delete').click();
expect(deleteStub.calledOnce).toEqual(true);
deleteStub.restore();
});
});

View File

@ -21,6 +21,9 @@
/* global OC, FileList */
describe('FileList tests', function() {
var testFiles, alertStub, notificationStub,
pushStateStub;
beforeEach(function() {
// init horrible parameters
var $body = $('body');
@ -28,45 +31,784 @@ describe('FileList tests', function() {
$body.append('<input type="hidden" id="permissions" value="31"></input>');
// dummy files table
$body.append('<table id="filestable"></table>');
// prevents URL changes during tests
pushStateStub = sinon.stub(window.history, 'pushState');
alertStub = sinon.stub(OC.dialogs, 'alert');
notificationStub = sinon.stub(OC.Notification, 'show');
// init parameters and test table elements
$('#testArea').append(
'<input type="hidden" id="dir" value="/subdir"></input>' +
'<input type="hidden" id="permissions" value="31"></input>' +
// dummy controls
'<div id="controls">' +
' <div class="actions creatable"></div>' +
' <div class="notCreatable"></div>' +
'</div>' +
// dummy table
'<table id="filestable">' +
'<thead><tr><th class="hidden">Name</th></tr></thead>' +
'<tbody id="fileList"></tbody>' +
'</table>' +
'<div id="emptycontent">Empty content message</div>'
);
testFiles = [{
id: 1,
type: 'file',
name: 'One.txt',
mimetype: 'text/plain',
size: 12
}, {
id: 2,
type: 'file',
name: 'Two.jpg',
mimetype: 'image/jpeg',
size: 12049
}, {
id: 3,
type: 'file',
name: 'Three.pdf',
mimetype: 'application/pdf',
size: 58009
}, {
id: 4,
type: 'dir',
name: 'somedir',
mimetype: 'httpd/unix-directory',
size: 250
}];
FileList.initialize();
});
afterEach(function() {
testFiles = undefined;
FileList.initialized = false;
FileList.isEmpty = true;
delete FileList._reloadCall;
$('#dir, #permissions, #filestable').remove();
notificationStub.restore();
alertStub.restore();
pushStateStub.restore();
});
it('generates file element with correct attributes when calling addFile', function() {
var lastMod = new Date(10000);
// note: download_url is actually the link target, not the actual download URL...
var $tr = FileList.addFile('testName.txt', 1234, lastMod, false, false, {download_url: 'test/download/url'});
expect($tr).toBeDefined();
expect($tr[0].tagName.toLowerCase()).toEqual('tr');
expect($tr.find('a:first').attr('href')).toEqual('test/download/url');
expect($tr.attr('data-type')).toEqual('file');
expect($tr.attr('data-file')).toEqual('testName.txt');
expect($tr.attr('data-size')).toEqual('1234');
expect($tr.attr('data-permissions')).toEqual('31');
//expect($tr.attr('data-mime')).toEqual('plain/text');
describe('Getters', function() {
it('Returns the current directory', function() {
$('#dir').val('/one/two/three');
expect(FileList.getCurrentDirectory()).toEqual('/one/two/three');
});
it('Returns the directory permissions as int', function() {
$('#permissions').val('23');
expect(FileList.getDirectoryPermissions()).toEqual(23);
});
});
it('generates dir element with correct attributes when calling addDir', function() {
var lastMod = new Date(10000);
var $tr = FileList.addDir('testFolder', 1234, lastMod, false);
describe('Adding files', function() {
var clock, now;
beforeEach(function() {
// to prevent date comparison issues
clock = sinon.useFakeTimers();
now = new Date();
});
afterEach(function() {
clock.restore();
});
it('generates file element with correct attributes when calling add() with file data', function() {
var fileData = {
id: 18,
type: 'file',
name: 'testName.txt',
mimetype: 'plain/text',
size: '1234',
etag: 'a01234c',
mtime: '123456'
};
var $tr = FileList.add(fileData);
expect($tr).toBeDefined();
expect($tr[0].tagName.toLowerCase()).toEqual('tr');
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('testFolder');
expect($tr.attr('data-size')).toEqual('1234');
expect($tr.attr('data-permissions')).toEqual('31');
//expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
expect($tr).toBeDefined();
expect($tr[0].tagName.toLowerCase()).toEqual('tr');
expect($tr.attr('data-id')).toEqual('18');
expect($tr.attr('data-type')).toEqual('file');
expect($tr.attr('data-file')).toEqual('testName.txt');
expect($tr.attr('data-size')).toEqual('1234');
expect($tr.attr('data-etag')).toEqual('a01234c');
expect($tr.attr('data-permissions')).toEqual('31');
expect($tr.attr('data-mime')).toEqual('plain/text');
expect($tr.attr('data-mtime')).toEqual('123456');
expect($tr.find('a.name').attr('href')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=testName.txt');
expect($tr.find('.filesize').text()).toEqual('1 kB');
expect(FileList.findFileEl('testName.txt')[0]).toEqual($tr[0]);
});
it('generates dir element with correct attributes when calling add() with dir data', function() {
var fileData = {
id: 19,
type: 'dir',
name: 'testFolder',
mimetype: 'httpd/unix-directory',
size: '1234',
etag: 'a01234c',
mtime: '123456'
};
var $tr = FileList.add(fileData);
expect($tr).toBeDefined();
expect($tr[0].tagName.toLowerCase()).toEqual('tr');
expect($tr.attr('data-id')).toEqual('19');
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('testFolder');
expect($tr.attr('data-size')).toEqual('1234');
expect($tr.attr('data-etag')).toEqual('a01234c');
expect($tr.attr('data-permissions')).toEqual('31');
expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
expect($tr.attr('data-mtime')).toEqual('123456');
expect($tr.find('.filesize').text()).toEqual('1 kB');
expect(FileList.findFileEl('testFolder')[0]).toEqual($tr[0]);
});
it('generates file element with default attributes when calling add() with minimal data', function() {
var fileData = {
type: 'file',
name: 'testFile.txt'
};
clock.tick(123456);
var $tr = FileList.add(fileData);
expect($tr).toBeDefined();
expect($tr[0].tagName.toLowerCase()).toEqual('tr');
expect($tr.attr('data-id')).toEqual(null);
expect($tr.attr('data-type')).toEqual('file');
expect($tr.attr('data-file')).toEqual('testFile.txt');
expect($tr.attr('data-size')).toEqual(null);
expect($tr.attr('data-etag')).toEqual(null);
expect($tr.attr('data-permissions')).toEqual('31');
expect($tr.attr('data-mime')).toEqual(null);
expect($tr.attr('data-mtime')).toEqual('123456');
expect($tr.find('.filesize').text()).toEqual('Pending');
});
it('generates dir element with default attributes when calling add() with minimal data', function() {
var fileData = {
type: 'dir',
name: 'testFolder'
};
clock.tick(123456);
var $tr = FileList.add(fileData);
expect($tr).toBeDefined();
expect($tr[0].tagName.toLowerCase()).toEqual('tr');
expect($tr.attr('data-id')).toEqual(null);
expect($tr.attr('data-type')).toEqual('dir');
expect($tr.attr('data-file')).toEqual('testFolder');
expect($tr.attr('data-size')).toEqual(null);
expect($tr.attr('data-etag')).toEqual(null);
expect($tr.attr('data-permissions')).toEqual('31');
expect($tr.attr('data-mime')).toEqual('httpd/unix-directory');
expect($tr.attr('data-mtime')).toEqual('123456');
expect($tr.find('.filesize').text()).toEqual('Pending');
});
it('generates file element with zero size when size is explicitly zero', function() {
var fileData = {
type: 'dir',
name: 'testFolder',
size: '0'
};
var $tr = FileList.add(fileData);
expect($tr.find('.filesize').text()).toEqual('0 B');
});
it('adds new file to the end of the list before the summary', function() {
var fileData = {
type: 'file',
name: 'P comes after O.txt'
};
FileList.setFiles(testFiles);
$tr = FileList.add(fileData);
expect($tr.index()).toEqual(4);
expect($tr.next().hasClass('summary')).toEqual(true);
});
it('adds new file at correct position in insert mode', function() {
var fileData = {
type: 'file',
name: 'P comes after O.txt'
};
FileList.setFiles(testFiles);
$tr = FileList.add(fileData, {insert: true});
// after "One.txt"
expect($tr.index()).toEqual(1);
});
it('removes empty content message and shows summary when adding first file', function() {
var fileData = {
type: 'file',
name: 'first file.txt',
size: 12
};
FileList.setFiles([]);
expect(FileList.isEmpty).toEqual(true);
FileList.add(fileData);
$summary = $('#fileList .summary');
expect($summary.length).toEqual(1);
// yes, ugly...
expect($summary.find('.info').text()).toEqual('0 folders and 1 file');
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(true);
expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.filesize').text()).toEqual('12 B');
expect($('#filestable thead th').hasClass('hidden')).toEqual(false);
expect($('#emptycontent').hasClass('hidden')).toEqual(true);
expect(FileList.isEmpty).toEqual(false);
});
});
describe('Removing files from the list', function() {
it('Removes file from list when calling remove() and updates summary', function() {
var $removedEl;
FileList.setFiles(testFiles);
$removedEl = FileList.remove('One.txt');
expect($removedEl).toBeDefined();
expect($removedEl.attr('data-file')).toEqual('One.txt');
expect($('#fileList tr:not(.summary)').length).toEqual(3);
expect(FileList.findFileEl('One.txt').length).toEqual(0);
$summary = $('#fileList .summary');
expect($summary.length).toEqual(1);
expect($summary.find('.info').text()).toEqual('1 folder and 2 files');
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.filesize').text()).toEqual('69 kB');
expect(FileList.isEmpty).toEqual(false);
});
it('Shows empty content when removing last file', function() {
FileList.setFiles([testFiles[0]]);
FileList.remove('One.txt');
expect($('#fileList tr:not(.summary)').length).toEqual(0);
expect(FileList.findFileEl('One.txt').length).toEqual(0);
$summary = $('#fileList .summary');
expect($summary.length).toEqual(0);
expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
expect($('#emptycontent').hasClass('hidden')).toEqual(false);
expect(FileList.isEmpty).toEqual(true);
});
});
describe('Deleting files', function() {
function doDelete() {
var request, query;
// note: normally called from FileActions
FileList.do_delete(['One.txt', 'Two.jpg']);
expect(fakeServer.requests.length).toEqual(1);
request = fakeServer.requests[0];
expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/delete.php');
query = fakeServer.requests[0].requestBody;
expect(OC.parseQueryString(query)).toEqual({'dir': '/subdir', files: '["One.txt","Two.jpg"]'});
}
it('calls delete.php, removes the deleted entries and updates summary', function() {
FileList.setFiles(testFiles);
doDelete();
fakeServer.requests[0].respond(
200,
{ 'Content-Type': 'application/json' },
JSON.stringify({status: 'success'})
);
expect(FileList.findFileEl('One.txt').length).toEqual(0);
expect(FileList.findFileEl('Two.jpg').length).toEqual(0);
expect(FileList.findFileEl('Three.pdf').length).toEqual(1);
expect(FileList.$fileList.find('tr:not(.summary)').length).toEqual(2);
$summary = $('#fileList .summary');
expect($summary.length).toEqual(1);
expect($summary.find('.info').text()).toEqual('1 folder and 1 file');
expect($summary.find('.dirinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.fileinfo').hasClass('hidden')).toEqual(false);
expect($summary.find('.filesize').text()).toEqual('57 kB');
expect(FileList.isEmpty).toEqual(false);
expect($('#filestable thead th').hasClass('hidden')).toEqual(false);
expect($('#emptycontent').hasClass('hidden')).toEqual(true);
expect(notificationStub.notCalled).toEqual(true);
});
it('updates summary when deleting last file', function() {
FileList.setFiles([testFiles[0], testFiles[1]]);
doDelete();
fakeServer.requests[0].respond(
200,
{ 'Content-Type': 'application/json' },
JSON.stringify({status: 'success'})
);
expect(FileList.$fileList.find('tr:not(.summary)').length).toEqual(0);
$summary = $('#fileList .summary');
expect($summary.length).toEqual(0);
expect(FileList.isEmpty).toEqual(true);
expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
expect($('#emptycontent').hasClass('hidden')).toEqual(false);
});
it('bring back deleted item when delete call failed', function() {
FileList.setFiles(testFiles);
doDelete();
fakeServer.requests[0].respond(
200,
{ 'Content-Type': 'application/json' },
JSON.stringify({status: 'error', data: {message: 'WOOT'}})
);
// files are still in the list
expect(FileList.findFileEl('One.txt').length).toEqual(1);
expect(FileList.findFileEl('Two.jpg').length).toEqual(1);
expect(FileList.$fileList.find('tr:not(.summary)').length).toEqual(4);
expect(notificationStub.calledOnce).toEqual(true);
});
});
describe('Renaming files', function() {
function doRename() {
var $input, request;
FileList.setFiles(testFiles);
// trigger rename prompt
FileList.rename('One.txt');
$input = FileList.$fileList.find('input.filename');
$input.val('One_renamed.txt').blur();
expect(fakeServer.requests.length).toEqual(1);
var request = fakeServer.requests[0];
expect(request.url.substr(0, request.url.indexOf('?'))).toEqual(OC.webroot + '/index.php/apps/files/ajax/rename.php');
expect(OC.parseQueryString(request.url)).toEqual({'dir': '/subdir', newname: 'One_renamed.txt', file: 'One.txt'});
// element is renamed before the request finishes
expect(FileList.findFileEl('One.txt').length).toEqual(0);
expect(FileList.findFileEl('One_renamed.txt').length).toEqual(1);
// input is gone
expect(FileList.$fileList.find('input.filename').length).toEqual(0);
}
it('Keeps renamed file entry if rename ajax call suceeded', function() {
doRename();
fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
status: 'success',
data: {
name: 'One_renamed.txt'
}
}));
// element stays renamed
expect(FileList.findFileEl('One.txt').length).toEqual(0);
expect(FileList.findFileEl('One_renamed.txt').length).toEqual(1);
expect(alertStub.notCalled).toEqual(true);
});
it('Reverts file entry if rename ajax call failed', function() {
doRename();
fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
status: 'error',
data: {
message: 'Something went wrong'
}
}));
// element was reverted
expect(FileList.findFileEl('One.txt').length).toEqual(1);
expect(FileList.findFileEl('One_renamed.txt').length).toEqual(0);
expect(alertStub.calledOnce).toEqual(true);
});
it('Correctly updates file link after rename', function() {
var $tr;
doRename();
fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
status: 'success',
data: {
name: 'One_renamed.txt'
}
}));
$tr = FileList.findFileEl('One_renamed.txt');
expect($tr.find('a.name').attr('href')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=One_renamed.txt');
});
// FIXME: fix this in the source code!
xit('Correctly updates file link after rename when path has same name', function() {
var $tr;
// evil case: because of buggy code
$('#dir').val('/One.txt/subdir');
doRename();
fakeServer.requests[0].respond(200, {'Content-Type': 'application/json'}, JSON.stringify({
status: 'success',
data: {
name: 'One_renamed.txt'
}
}));
$tr = FileList.findFileEl('One_renamed.txt');
expect($tr.find('a.name').attr('href')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=One.txt');
});
});
describe('List rendering', function() {
it('renders a list of files using add()', function() {
var addSpy = sinon.spy(FileList, 'add');
FileList.setFiles(testFiles);
expect(addSpy.callCount).toEqual(4);
expect($('#fileList tr:not(.summary)').length).toEqual(4);
addSpy.restore();
});
it('updates summary using the file sizes', function() {
var $summary;
FileList.setFiles(testFiles);
$summary = $('#fileList .summary');
expect($summary.length).toEqual(1);
expect($summary.find('.info').text()).toEqual('1 folder and 3 files');
expect($summary.find('.filesize').text()).toEqual('69 kB');
});
it('shows headers, summary and hide empty content message after setting files', function(){
FileList.setFiles(testFiles);
expect($('#filestable thead th').hasClass('hidden')).toEqual(false);
expect($('#emptycontent').hasClass('hidden')).toEqual(true);
expect(FileList.$fileList.find('.summary').length).toEqual(1);
});
it('hides headers, summary and show empty content message after setting empty file list', function(){
FileList.setFiles([]);
expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
expect($('#emptycontent').hasClass('hidden')).toEqual(false);
expect(FileList.$fileList.find('.summary').length).toEqual(0);
});
it('hides headers, empty content message, and summary when list is empty and user has no creation permission', function(){
$('#permissions').val(0);
FileList.setFiles([]);
expect($('#filestable thead th').hasClass('hidden')).toEqual(true);
expect($('#emptycontent').hasClass('hidden')).toEqual(true);
expect(FileList.$fileList.find('.summary').length).toEqual(0);
});
it('calling findFileEl() can find existing file element', function() {
FileList.setFiles(testFiles);
expect(FileList.findFileEl('Two.jpg').length).toEqual(1);
});
it('calling findFileEl() returns empty when file not found in file', function() {
FileList.setFiles(testFiles);
expect(FileList.findFileEl('unexist.dat').length).toEqual(0);
});
it('only add file if in same current directory', function() {
$('#dir').val('/current dir');
var fileData = {
type: 'file',
name: 'testFile.txt',
directory: '/current dir'
};
var $tr = FileList.add(fileData);
expect(FileList.findFileEl('testFile.txt').length).toEqual(1);
});
it('triggers "fileActionsReady" event after update', function() {
var handler = sinon.stub();
FileList.$fileList.on('fileActionsReady', handler);
FileList.setFiles(testFiles);
expect(handler.calledOnce).toEqual(true);
});
it('triggers "updated" event after update', function() {
var handler = sinon.stub();
FileList.$fileList.on('updated', handler);
FileList.setFiles(testFiles);
expect(handler.calledOnce).toEqual(true);
});
});
describe('file previews', function() {
var previewLoadStub;
function getImageUrl($el) {
// might be slightly different cross-browser
var url = $el.css('background-image');
var r = url.match(/url\(['"]?([^'")]*)['"]?\)/);
if (!r) {
return url;
}
return r[1];
}
beforeEach(function() {
previewLoadStub = sinon.stub(Files, 'lazyLoadPreview');
});
afterEach(function() {
previewLoadStub.restore();
});
it('renders default icon for file when none provided and no preview is available', function() {
var fileData = {
type: 'file',
name: 'testFile.txt'
};
var $tr = FileList.add(fileData);
var $td = $tr.find('td.filename');
expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
expect(previewLoadStub.notCalled).toEqual(true);
});
it('renders default icon for dir when none provided and no preview is available', function() {
var fileData = {
type: 'dir',
name: 'test dir'
};
var $tr = FileList.add(fileData);
var $td = $tr.find('td.filename');
expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/folder.svg');
expect(previewLoadStub.notCalled).toEqual(true);
});
it('renders provided icon for file when provided', function() {
var fileData = {
type: 'file',
name: 'test dir',
icon: OC.webroot + '/core/img/filetypes/application-pdf.svg'
};
var $tr = FileList.add(fileData);
var $td = $tr.find('td.filename');
expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/application-pdf.svg');
expect(previewLoadStub.notCalled).toEqual(true);
});
it('renders preview when no icon was provided and preview is available', function() {
var fileData = {
type: 'file',
name: 'test dir',
isPreviewAvailable: true
};
var $tr = FileList.add(fileData);
var $td = $tr.find('td.filename');
expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
expect(previewLoadStub.calledOnce).toEqual(true);
// third argument is callback
previewLoadStub.getCall(0).args[2](OC.webroot + '/somepath.png');
expect(getImageUrl($td)).toEqual(OC.webroot + '/somepath.png');
});
it('renders default file type icon when no icon was provided and no preview is available', function() {
var fileData = {
type: 'file',
name: 'test dir',
isPreviewAvailable: false
};
var $tr = FileList.add(fileData);
var $td = $tr.find('td.filename');
expect(getImageUrl($td)).toEqual(OC.webroot + '/core/img/filetypes/file.svg');
expect(previewLoadStub.notCalled).toEqual(true);
});
});
describe('viewer mode', function() {
it('enabling viewer mode hides files table and action buttons', function() {
FileList.setViewerMode(true);
expect($('#filestable').hasClass('hidden')).toEqual(true);
expect($('.actions').hasClass('hidden')).toEqual(true);
expect($('.notCreatable').hasClass('hidden')).toEqual(true);
});
it('disabling viewer mode restores files table and action buttons', function() {
FileList.setViewerMode(true);
FileList.setViewerMode(false);
expect($('#filestable').hasClass('hidden')).toEqual(false);
expect($('.actions').hasClass('hidden')).toEqual(false);
expect($('.notCreatable').hasClass('hidden')).toEqual(true);
});
it('disabling viewer mode restores files table and action buttons with correct permissions', function() {
$('#permissions').val(0);
FileList.setViewerMode(true);
FileList.setViewerMode(false);
expect($('#filestable').hasClass('hidden')).toEqual(false);
expect($('.actions').hasClass('hidden')).toEqual(true);
expect($('.notCreatable').hasClass('hidden')).toEqual(false);
});
});
describe('loading file list', function() {
beforeEach(function() {
var data = {
status: 'success',
data: {
files: testFiles,
permissions: 31
}
};
fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2F(subdir|anothersubdir)/, [
200, {
"Content-Type": "application/json"
},
JSON.stringify(data)
]);
});
it('fetches file list from server and renders it when reload() is called', function() {
FileList.reload();
expect(fakeServer.requests.length).toEqual(1);
var url = fakeServer.requests[0].url;
var query = url.substr(url.indexOf('?') + 1);
expect(OC.parseQueryString(query)).toEqual({'dir': '/subdir'});
fakeServer.respond();
expect($('#fileList tr:not(.summary)').length).toEqual(4);
expect(FileList.findFileEl('One.txt').length).toEqual(1);
});
it('switches dir and fetches file list when calling changeDirectory()', function() {
FileList.changeDirectory('/anothersubdir');
expect(FileList.getCurrentDirectory()).toEqual('/anothersubdir');
expect(fakeServer.requests.length).toEqual(1);
var url = fakeServer.requests[0].url;
var query = url.substr(url.indexOf('?') + 1);
expect(OC.parseQueryString(query)).toEqual({'dir': '/anothersubdir'});
fakeServer.respond();
});
it('switches to root dir when current directory does not exist', function() {
fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2funexist/, [
404, {
"Content-Type": "application/json"
},
''
]);
FileList.changeDirectory('/unexist');
fakeServer.respond();
expect(FileList.getCurrentDirectory()).toEqual('/');
});
it('shows mask before loading file list then hides it at the end', function() {
var showMaskStub = sinon.stub(FileList, 'showMask');
var hideMaskStub = sinon.stub(FileList, 'hideMask');
FileList.changeDirectory('/anothersubdir');
expect(showMaskStub.calledOnce).toEqual(true);
expect(hideMaskStub.calledOnce).toEqual(false);
fakeServer.respond();
expect(showMaskStub.calledOnce).toEqual(true);
expect(hideMaskStub.calledOnce).toEqual(true);
showMaskStub.restore();
hideMaskStub.restore();
});
it('changes URL to target dir', function() {
FileList.changeDirectory('/somedir');
expect(pushStateStub.calledOnce).toEqual(true);
expect(pushStateStub.getCall(0).args[0]).toEqual({dir: '/somedir'});
expect(pushStateStub.getCall(0).args[2]).toEqual(OC.webroot + '/index.php/apps/files?dir=/somedir');
});
it('refreshes breadcrumb after update', function() {
var setDirSpy = sinon.spy(FileList.breadcrumb, 'setDirectory');
FileList.changeDirectory('/anothersubdir');
fakeServer.respond();
expect(FileList.breadcrumb.setDirectory.calledOnce).toEqual(true);
expect(FileList.breadcrumb.setDirectory.calledWith('/anothersubdir')).toEqual(true);
setDirSpy.restore();
});
});
describe('breadcrumb events', function() {
beforeEach(function() {
var data = {
status: 'success',
data: {
files: testFiles,
permissions: 31
}
};
fakeServer.respondWith(/\/index\.php\/apps\/files\/ajax\/list.php\?dir=%2Fsubdir/, [
200, {
"Content-Type": "application/json"
},
JSON.stringify(data)
]);
});
it('clicking on root breadcrumb changes directory to root', function() {
FileList.changeDirectory('/subdir/two/three with space/four/five');
fakeServer.respond();
var changeDirStub = sinon.stub(FileList, 'changeDirectory');
FileList.breadcrumb.$el.find('.crumb:eq(0)').click();
expect(changeDirStub.calledOnce).toEqual(true);
expect(changeDirStub.getCall(0).args[0]).toEqual('/');
changeDirStub.restore();
});
it('clicking on breadcrumb changes directory', function() {
FileList.changeDirectory('/subdir/two/three with space/four/five');
fakeServer.respond();
var changeDirStub = sinon.stub(FileList, 'changeDirectory');
FileList.breadcrumb.$el.find('.crumb:eq(3)').click();
expect(changeDirStub.calledOnce).toEqual(true);
expect(changeDirStub.getCall(0).args[0]).toEqual('/subdir/two/three with space');
changeDirStub.restore();
});
it('dropping files on breadcrumb calls move operation', function() {
var request, query, testDir = '/subdir/two/three with space/four/five';
FileList.changeDirectory(testDir);
fakeServer.respond();
var $crumb = FileList.breadcrumb.$el.find('.crumb:eq(3)');
// no idea what this is but is required by the handler
var ui = {
helper: {
find: sinon.stub()
}
};
// returns a list of tr that were dragged
// FIXME: why are their attributes different than the
// regular file trs ?
ui.helper.find.returns([
$('<tr data-filename="One.txt" data-dir="' + testDir + '"></tr>'),
$('<tr data-filename="Two.jpg" data-dir="' + testDir + '"></tr>')
]);
// simulate drop event
FileList._onDropOnBreadCrumb.call($crumb, new $.Event('drop'), ui);
// will trigger two calls to move.php (first one was previous list.php)
expect(fakeServer.requests.length).toEqual(3);
request = fakeServer.requests[1];
expect(request.method).toEqual('POST');
expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php');
query = OC.parseQueryString(request.requestBody);
expect(query).toEqual({
target: '/subdir/two/three with space',
dir: testDir,
file: 'One.txt'
});
request = fakeServer.requests[2];
expect(request.method).toEqual('POST');
expect(request.url).toEqual(OC.webroot + '/index.php/apps/files/ajax/move.php');
query = OC.parseQueryString(request.requestBody);
expect(query).toEqual({
target: '/subdir/two/three with space',
dir: testDir,
file: 'Two.jpg'
});
});
it('dropping files on same dir breadcrumb does nothing', function() {
var request, query, testDir = '/subdir/two/three with space/four/five';
FileList.changeDirectory(testDir);
fakeServer.respond();
var $crumb = FileList.breadcrumb.$el.find('.crumb:last');
// no idea what this is but is required by the handler
var ui = {
helper: {
find: sinon.stub()
}
};
// returns a list of tr that were dragged
// FIXME: why are their attributes different than the
// regular file trs ?
ui.helper.find.returns([
$('<tr data-filename="One.txt" data-dir="' + testDir + '"></tr>'),
$('<tr data-filename="Two.jpg" data-dir="' + testDir + '"></tr>')
]);
// simulate drop event
FileList._onDropOnBreadCrumb.call($crumb, new $.Event('drop'), ui);
// no extra server request
expect(fakeServer.requests.length).toEqual(1);
});
});
describe('Download Url', function() {
it('returns correct download URL for single files', function() {
expect(FileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=some%20file.txt');
expect(FileList.getDownloadUrl('some file.txt', '/anotherpath/abc')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fanotherpath%2Fabc&files=some%20file.txt');
expect(Files.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=some%20file.txt');
expect(Files.getDownloadUrl('some file.txt', '/anotherpath/abc')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fanotherpath%2Fabc&files=some%20file.txt');
$('#dir').val('/');
expect(FileList.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=some%20file.txt');
expect(Files.getDownloadUrl('some file.txt')).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2F&files=some%20file.txt');
});
it('returns correct download URL for multiple files', function() {
expect(FileList.getDownloadUrl(['a b c.txt', 'd e f.txt'])).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D');
expect(Files.getDownloadUrl(['a b c.txt', 'd e f.txt'])).toEqual(OC.webroot + '/index.php/apps/files/ajax/download.php?dir=%2Fsubdir&files=%5B%22a%20b%20c.txt%22%2C%22d%20e%20f.txt%22%5D');
});
it('returns the correct ajax URL', function() {
expect(Files.getAjaxUrl('test', {a:1, b:'x y'})).toEqual(OC.webroot + '/index.php/apps/files/ajax/test.php?a=1&b=x%20y');
});
});
});

View File

@ -0,0 +1,13 @@
<?php
$TRANSLATIONS = array(
"Password successfully changed." => "Contraseña camudada esitosamente.",
"Could not change the password. Maybe the old password was not correct." => "Nun pue camudase la contraseña. Quiciabes la contraseña vieya nun fore correuta.",
"personal settings" => "axustes personales",
"Encryption" => "Cifráu",
"Enabled" => "Habilitáu",
"Disabled" => "Deshabilitáu",
"Change Password" => "Camudar conseña",
" If you don't remember your old password you can ask your administrator to recover your files." => "Si nun recuerdes la to contraseña vieya pues entrugar al to alministrador pa recuperar los tos ficheros.",
"Could not update file recovery" => "Nun pue anovase'l ficheru de recuperación"
);
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";

View File

@ -16,6 +16,7 @@ $TRANSLATIONS = array(
"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." => "Παρακαλώ επιβεβαιώστε ότι η PHP 5.3.3 ή νεότερη είναι εγκατεστημένη και ότι το OpenSSL μαζί με το PHP extension είναι ενεργοποιήμένο και έχει ρυθμιστεί σωστά. Προς το παρόν, η εφαρμογή κρυπτογράφησης είναι απενεργοποιημένη.",
"Following users are not set up for encryption:" => "Οι κάτωθι χρήστες δεν έχουν ρυθμιστεί για κρυπογράφηση:",
"Initial encryption started... This can take some time. Please wait." => "Η αρχική κρυπτογράφηση άρχισε... Αυτό μπορεί να πάρει κάποια ώρα. Παρακαλώ περιμένετε.",
"Initial encryption running... Please try again later." => "Εκτέλεση αρχικής κρυπτογράφησης... Παρακαλώ προσπαθήστε αργότερα.",
"Go directly to your " => "Πηγαίνε απευθείας στο ",
"personal settings" => "προσωπικές ρυθμίσεις",
"Encryption" => "Κρυπτογράφηση",

Some files were not shown because too many files have changed in this diff Show More