Merge branch 'master' into contactsmanager-register
Conflicts: lib/private/contactsmanager.phpremotes/origin/ldap_group_count
commit
bb6fac1102
@ -1 +1 @@
|
||||
Subproject commit da3c9f651a26cf076249ebf25c477e3791e69ca3
|
||||
Subproject commit ef80977061d4bc3a2d8ee0bf23a8287a3222b628
|
||||
@ -1,46 +0,0 @@
|
||||
<?php
|
||||
|
||||
// fix webdav properties,add namespace in front of the property, update for OC4.5
|
||||
$installedVersion=OCP\Config::getAppValue('files', 'installed_version');
|
||||
if (version_compare($installedVersion, '1.1.6', '<')) {
|
||||
$concat = OC_DB::getConnection()->getDatabasePlatform()->
|
||||
getConcatExpression( '\'{DAV:}\'', '`propertyname`' );
|
||||
$query = OC_DB::prepare('
|
||||
UPDATE `*PREFIX*properties`
|
||||
SET `propertyname` = ' . $concat . '
|
||||
WHERE `propertyname` NOT LIKE \'{%\'
|
||||
');
|
||||
$query->execute();
|
||||
}
|
||||
|
||||
//update from OC 3
|
||||
|
||||
//try to remove remaining files.
|
||||
//Give a warning if not possible
|
||||
|
||||
$filesToRemove = array(
|
||||
'ajax',
|
||||
'appinfo',
|
||||
'css',
|
||||
'js',
|
||||
'l10n',
|
||||
'templates',
|
||||
'admin.php',
|
||||
'download.php',
|
||||
'index.php',
|
||||
'settings.php'
|
||||
);
|
||||
|
||||
foreach($filesToRemove as $file) {
|
||||
$filepath = OC::$SERVERROOT . '/files/' . $file;
|
||||
if(!file_exists($filepath)) {
|
||||
continue;
|
||||
}
|
||||
$success = OCP\Files::rmdirr($filepath);
|
||||
if($success === false) {
|
||||
//probably not sufficient privileges, give up and give a message.
|
||||
OCP\Util::writeLog('files', 'Could not clean /files/ directory.'
|
||||
.' Please remove everything except webdav.php from ' . OC::$SERVERROOT . '/files/', OCP\Util::ERROR);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,147 @@
|
||||
/*
|
||||
* Copyright (c) 2014
|
||||
*
|
||||
* @author Vincent Petry
|
||||
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global dragOptions, folderDropOptions */
|
||||
(function() {
|
||||
|
||||
if (!OCA.Files) {
|
||||
OCA.Files = {};
|
||||
}
|
||||
|
||||
var App = {
|
||||
navigation: null,
|
||||
|
||||
initialize: function() {
|
||||
this.navigation = new OCA.Files.Navigation($('#app-navigation'));
|
||||
|
||||
// TODO: ideally these should be in a separate class / app (the embedded "all files" app)
|
||||
this.fileActions = OCA.Files.FileActions;
|
||||
this.files = OCA.Files.Files;
|
||||
|
||||
this.fileList = new OCA.Files.FileList(
|
||||
$('#app-content-files'), {
|
||||
scrollContainer: $('#app-content'),
|
||||
dragOptions: dragOptions,
|
||||
folderDropOptions: folderDropOptions
|
||||
}
|
||||
);
|
||||
this.files.initialize();
|
||||
this.fileActions.registerDefaultActions(this.fileList);
|
||||
this.fileList.setFileActions(this.fileActions);
|
||||
|
||||
// for backward compatibility, the global FileList will
|
||||
// refer to the one of the "files" view
|
||||
window.FileList = this.fileList;
|
||||
|
||||
this._setupEvents();
|
||||
// trigger URL change event handlers
|
||||
this._onPopState(OC.Util.History.parseUrlQuery());
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the container of the currently visible app.
|
||||
*
|
||||
* @return app container
|
||||
*/
|
||||
getCurrentAppContainer: function() {
|
||||
return this.navigation.getActiveContainer();
|
||||
},
|
||||
|
||||
/**
|
||||
* Setup events based on URL changes
|
||||
*/
|
||||
_setupEvents: function() {
|
||||
OC.Util.History.addOnPopStateHandler(_.bind(this._onPopState, this));
|
||||
|
||||
// detect when app changed their current directory
|
||||
$('#app-content').delegate('>div', 'changeDirectory', _.bind(this._onDirectoryChanged, this));
|
||||
$('#app-content').delegate('>div', 'changeViewerMode', _.bind(this._onChangeViewerMode, this));
|
||||
|
||||
$('#app-navigation').on('itemChanged', _.bind(this._onNavigationChanged, this));
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for when the current navigation item has changed
|
||||
*/
|
||||
_onNavigationChanged: function(e) {
|
||||
var params;
|
||||
if (e && e.itemId) {
|
||||
params = {
|
||||
view: e.itemId,
|
||||
dir: '/'
|
||||
};
|
||||
this._changeUrl(params.view, params.dir);
|
||||
this.navigation.getActiveContainer().trigger(new $.Event('urlChanged', params));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for when an app notified that its directory changed
|
||||
*/
|
||||
_onDirectoryChanged: function(e) {
|
||||
if (e.dir) {
|
||||
this._changeUrl(this.navigation.getActiveItem(), e.dir);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for when an app notifies that it needs space
|
||||
* for viewer mode.
|
||||
*/
|
||||
_onChangeViewerMode: function(e) {
|
||||
var state = !!e.viewerModeEnabled;
|
||||
$('#app-navigation').toggleClass('hidden', state);
|
||||
$('.app-files').toggleClass('viewer-mode no-sidebar', state);
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for when the URL changed
|
||||
*/
|
||||
_onPopState: function(params) {
|
||||
params = _.extend({
|
||||
dir: '/',
|
||||
view: 'files'
|
||||
}, params);
|
||||
var lastId = this.navigation.getActiveItem();
|
||||
if (!this.navigation.itemExists(params.view)) {
|
||||
params.view = 'files';
|
||||
}
|
||||
this.navigation.setActiveItem(params.view, {silent: true});
|
||||
if (lastId !== this.navigation.getActiveItem()) {
|
||||
this.navigation.getActiveContainer().trigger(new $.Event('show'));
|
||||
}
|
||||
this.navigation.getActiveContainer().trigger(new $.Event('urlChanged', params));
|
||||
},
|
||||
|
||||
/**
|
||||
* Change the URL to point to the given dir and view
|
||||
*/
|
||||
_changeUrl: function(view, dir) {
|
||||
var params = {dir: dir};
|
||||
if (view !== 'files') {
|
||||
params.view = view;
|
||||
}
|
||||
OC.Util.History.pushState(params);
|
||||
}
|
||||
};
|
||||
OCA.Files.App = App;
|
||||
})();
|
||||
|
||||
$(document).ready(function() {
|
||||
// wait for other apps/extensions to register their event handlers
|
||||
// in the "ready" clause
|
||||
_.defer(function() {
|
||||
OCA.Files.App.initialize();
|
||||
});
|
||||
});
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,195 @@
|
||||
/**
|
||||
* 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, n, t */
|
||||
|
||||
(function() {
|
||||
/**
|
||||
* The FileSummary class encapsulates the file summary values and
|
||||
* the logic to render it in the given container
|
||||
* @param $tr table row element
|
||||
* $param summary optional initial summary value
|
||||
*/
|
||||
var FileSummary = function($tr) {
|
||||
this.$el = $tr;
|
||||
this.clear();
|
||||
this.render();
|
||||
};
|
||||
|
||||
FileSummary.prototype = {
|
||||
summary: {
|
||||
totalFiles: 0,
|
||||
totalDirs: 0,
|
||||
totalSize: 0
|
||||
},
|
||||
|
||||
/**
|
||||
* Adds file
|
||||
* @param file file to add
|
||||
* @param update whether to update the display
|
||||
*/
|
||||
add: function(file, update) {
|
||||
if (file.type === 'dir' || file.mime === 'httpd/unix-directory') {
|
||||
this.summary.totalDirs++;
|
||||
}
|
||||
else {
|
||||
this.summary.totalFiles++;
|
||||
}
|
||||
this.summary.totalSize += parseInt(file.size, 10) || 0;
|
||||
if (!!update) {
|
||||
this.update();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Removes file
|
||||
* @param file file to remove
|
||||
* @param update whether to update the display
|
||||
*/
|
||||
remove: function(file, update) {
|
||||
if (file.type === 'dir' || file.mime === 'httpd/unix-directory') {
|
||||
this.summary.totalDirs--;
|
||||
}
|
||||
else {
|
||||
this.summary.totalFiles--;
|
||||
}
|
||||
this.summary.totalSize -= parseInt(file.size, 10) || 0;
|
||||
if (!!update) {
|
||||
this.update();
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Returns the total of files and directories
|
||||
*/
|
||||
getTotal: function() {
|
||||
return this.summary.totalDirs + this.summary.totalFiles;
|
||||
},
|
||||
/**
|
||||
* Recalculates the summary based on the given files array
|
||||
* @param files array of files
|
||||
*/
|
||||
calculate: function(files) {
|
||||
var file;
|
||||
var summary = {
|
||||
totalDirs: 0,
|
||||
totalFiles: 0,
|
||||
totalSize: 0
|
||||
};
|
||||
|
||||
for (var i = 0; i < files.length; i++) {
|
||||
file = files[i];
|
||||
if (file.type === 'dir' || file.mime === 'httpd/unix-directory') {
|
||||
summary.totalDirs++;
|
||||
}
|
||||
else {
|
||||
summary.totalFiles++;
|
||||
}
|
||||
summary.totalSize += parseInt(file.size, 10) || 0;
|
||||
}
|
||||
this.setSummary(summary);
|
||||
},
|
||||
/**
|
||||
* Clears the summary
|
||||
*/
|
||||
clear: function() {
|
||||
this.calculate([]);
|
||||
},
|
||||
/**
|
||||
* Sets the current summary values
|
||||
* @param summary map
|
||||
*/
|
||||
setSummary: function(summary) {
|
||||
this.summary = summary;
|
||||
this.update();
|
||||
},
|
||||
|
||||
/**
|
||||
* Renders the file summary element
|
||||
*/
|
||||
update: function() {
|
||||
if (!this.$el) {
|
||||
return;
|
||||
}
|
||||
if (!this.summary.totalFiles && !this.summary.totalDirs) {
|
||||
this.$el.addClass('hidden');
|
||||
return;
|
||||
}
|
||||
// There's a summary and data -> Update the summary
|
||||
this.$el.removeClass('hidden');
|
||||
var $dirInfo = this.$el.find('.dirinfo');
|
||||
var $fileInfo = this.$el.find('.fileinfo');
|
||||
var $connector = this.$el.find('.connector');
|
||||
|
||||
// Substitute old content with new translations
|
||||
$dirInfo.html(n('files', '%n folder', '%n folders', this.summary.totalDirs));
|
||||
$fileInfo.html(n('files', '%n file', '%n files', this.summary.totalFiles));
|
||||
this.$el.find('.filesize').html(OC.Util.humanFileSize(this.summary.totalSize));
|
||||
|
||||
// Show only what's necessary (may be hidden)
|
||||
if (this.summary.totalDirs === 0) {
|
||||
$dirInfo.addClass('hidden');
|
||||
$connector.addClass('hidden');
|
||||
} else {
|
||||
$dirInfo.removeClass('hidden');
|
||||
}
|
||||
if (this.summary.totalFiles === 0) {
|
||||
$fileInfo.addClass('hidden');
|
||||
$connector.addClass('hidden');
|
||||
} else {
|
||||
$fileInfo.removeClass('hidden');
|
||||
}
|
||||
if (this.summary.totalDirs > 0 && this.summary.totalFiles > 0) {
|
||||
$connector.removeClass('hidden');
|
||||
}
|
||||
},
|
||||
render: function() {
|
||||
if (!this.$el) {
|
||||
return;
|
||||
}
|
||||
// TODO: ideally this should be separate to a template or something
|
||||
var summary = this.summary;
|
||||
var directoryInfo = n('files', '%n folder', '%n folders', summary.totalDirs);
|
||||
var fileInfo = n('files', '%n file', '%n files', summary.totalFiles);
|
||||
|
||||
var infoVars = {
|
||||
dirs: '<span class="dirinfo">'+directoryInfo+'</span><span class="connector">',
|
||||
files: '</span><span class="fileinfo">'+fileInfo+'</span>'
|
||||
};
|
||||
|
||||
// don't show the filesize column, if filesize is NaN (e.g. in trashbin)
|
||||
var fileSize = '';
|
||||
if (!isNaN(summary.totalSize)) {
|
||||
fileSize = '<td class="filesize">' + OC.Util.humanFileSize(summary.totalSize) + '</td>';
|
||||
}
|
||||
|
||||
var info = t('files', '{dirs} and {files}', infoVars);
|
||||
|
||||
var $summary = $('<td><span class="info">'+info+'</span></td>'+fileSize+'<td></td>');
|
||||
|
||||
if (!this.summary.totalFiles && !this.summary.totalDirs) {
|
||||
this.$el.addClass('hidden');
|
||||
}
|
||||
|
||||
this.$el.append($summary);
|
||||
}
|
||||
};
|
||||
OCA.Files.FileSummary = FileSummary;
|
||||
})();
|
||||
|
||||
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright (c) 2014
|
||||
*
|
||||
* @author Vincent Petry
|
||||
* @copyright 2014 Vincent Petry <pvince81@owncloud.com>
|
||||
*
|
||||
* This file is licensed under the Affero General Public License version 3
|
||||
* or later.
|
||||
*
|
||||
* See the COPYING-README file.
|
||||
*
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
var Navigation = function($el) {
|
||||
this.initialize($el);
|
||||
};
|
||||
|
||||
Navigation.prototype = {
|
||||
|
||||
/**
|
||||
* Currently selected item in the list
|
||||
*/
|
||||
_activeItem: null,
|
||||
|
||||
/**
|
||||
* Currently selected container
|
||||
*/
|
||||
$currentContent: null,
|
||||
|
||||
/**
|
||||
* Initializes the navigation from the given container
|
||||
* @param $el element containing the navigation
|
||||
*/
|
||||
initialize: function($el) {
|
||||
this.$el = $el;
|
||||
this._activeItem = null;
|
||||
this.$currentContent = null;
|
||||
this._setupEvents();
|
||||
},
|
||||
|
||||
/**
|
||||
* Setup UI events
|
||||
*/
|
||||
_setupEvents: function() {
|
||||
this.$el.on('click', 'li a', _.bind(this._onClickItem, this));
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the container of the currently active app.
|
||||
*
|
||||
* @return app container
|
||||
*/
|
||||
getActiveContainer: function() {
|
||||
return this.$currentContent;
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns the currently active item
|
||||
*
|
||||
* @return item ID
|
||||
*/
|
||||
getActiveItem: function() {
|
||||
return this._activeItem;
|
||||
},
|
||||
|
||||
/**
|
||||
* Switch the currently selected item, mark it as selected and
|
||||
* make the content container visible, if any.
|
||||
*
|
||||
* @param string itemId id of the navigation item to select
|
||||
* @param array options "silent" to not trigger event
|
||||
*/
|
||||
setActiveItem: function(itemId, options) {
|
||||
var oldItemId = this._activeItem;
|
||||
if (itemId === this._activeItem) {
|
||||
if (!options || !options.silent) {
|
||||
this.$el.trigger(
|
||||
new $.Event('itemChanged', {itemId: itemId, previousItemId: oldItemId})
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
this.$el.find('li').removeClass('selected');
|
||||
if (this.$currentContent) {
|
||||
this.$currentContent.addClass('hidden');
|
||||
this.$currentContent.trigger(jQuery.Event('hide'));
|
||||
}
|
||||
this._activeItem = itemId;
|
||||
this.$el.find('li[data-id=' + itemId + ']').addClass('selected');
|
||||
this.$currentContent = $('#app-content-' + itemId);
|
||||
this.$currentContent.removeClass('hidden');
|
||||
if (!options || !options.silent) {
|
||||
this.$currentContent.trigger(jQuery.Event('show'));
|
||||
this.$el.trigger(
|
||||
new $.Event('itemChanged', {itemId: itemId, previousItemId: oldItemId})
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Returns whether a given item exists
|
||||
*/
|
||||
itemExists: function(itemId) {
|
||||
return this.$el.find('li[data-id=' + itemId + ']').length;
|
||||
},
|
||||
|
||||
/**
|
||||
* Event handler for when clicking on an item.
|
||||
*/
|
||||
_onClickItem: function(ev) {
|
||||
var $target = $(ev.target);
|
||||
var itemId = $target.closest('li').attr('data-id');
|
||||
this.setActiveItem(itemId);
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
OCA.Files.Navigation = Navigation;
|
||||
|
||||
})();
|
||||
@ -1,29 +1,67 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"Could not move %s - File with this name already exists" => "Nun pudo movese %s - Yá existe un ficheru con esi nome.",
|
||||
"Could not move %s" => "Nun pudo movese %s",
|
||||
"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.",
|
||||
"Unable to set upload directory." => "Nun se puede afitar la carpeta de xubida.",
|
||||
"Invalid Token" => "Token inválidu",
|
||||
"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 upload_max_filesize directive in php.ini: " => "El ficheru xubíu perpasa la direutiva \"upload_max_filesize\" del ficheru php.ini",
|
||||
"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",
|
||||
"Upload failed. Could not find uploaded file" => "Xubida fallía. Nun se pudo atopar el ficheru xubíu.",
|
||||
"Upload failed. Could not get file info." => "Falló la xubida. Nun se pudo obtener la información del ficheru.",
|
||||
"Invalid directory." => "Carpeta non válida.",
|
||||
"Files" => "Ficheros",
|
||||
"Unable to upload {filename} as it is a directory or has 0 bytes" => "Nun se pudo xubir {filename}, paez que ye un directoriu o tien 0 bytes",
|
||||
"Upload cancelled." => "Xubida encaboxada.",
|
||||
"Could not get result from server." => "Nun se pudo obtener el resultáu del servidor.",
|
||||
"File upload is in progress. Leaving the page now will cancel the upload." => "La xubida del ficheru ta en progresu. Si dexes esta páxina encaboxarase la xubida.",
|
||||
"{new_name} already exists" => "{new_name} yá existe",
|
||||
"Share" => "Compartir",
|
||||
"Delete permanently" => "Desaniciar dafechu",
|
||||
"Rename" => "Renomar",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "Ta preparándose la descarga. Esto podría llevar dalgún tiempu si los ficheros son grandes.",
|
||||
"Error moving file" => "Fallu moviendo'l ficheru",
|
||||
"Error" => "Fallu",
|
||||
"Name" => "Nome",
|
||||
"Size" => "Tamañu",
|
||||
"Modified" => "Modificáu",
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("",""),
|
||||
"Name" => "Nome",
|
||||
"Size" => "Tamañu",
|
||||
"Your storage is full, files can not be updated or synced anymore!" => "L'almacenamientu ta completu, ¡yá nun se pueden anovar o sincronizar ficheros!",
|
||||
"Your storage is almost full ({usedSpacePercent}%)" => "L'almacenamientu ta casi completu ({usedSpacePercent}%)",
|
||||
"Encryption was disabled but your files are still encrypted. Please go to your personal settings to decrypt your files." => "Deshabilitose'l cifráu pero los tos ficheros tovía tan cifraos. Por favor, vete a los axustes personales pa descrifrar los tos ficheros.",
|
||||
"%s could not be renamed" => "Nun se puede renomar %s ",
|
||||
"File handling" => "Alministración de ficheros",
|
||||
"Maximum upload size" => "Tamañu máximu de xubida",
|
||||
"max. possible: " => "máx. posible:",
|
||||
"Needed for multi-file and folder downloads." => "Ye necesariu pa descargues multificheru y de carpetes",
|
||||
"Enable ZIP-download" => "Activar descarga ZIP",
|
||||
"0 is unlimited" => "0 ye illimitao",
|
||||
"Maximum input size for ZIP files" => "Tamañu máximu d'entrada pa ficheros ZIP",
|
||||
"Save" => "Guardar",
|
||||
"WebDAV" => "WebDAV",
|
||||
"Use this address to <a href=\"%s\" target=\"_blank\">access your Files via WebDAV</a>" => "Usa esta direición pa <a href=\"%s/server/5.0/user_manual/files/files.html\" target=\"_blank\">acceder a los ficheros a traviés de WebDAV</a>",
|
||||
"New" => "Nuevu",
|
||||
"Text file" => "Ficheru de testu",
|
||||
"New folder" => "Nueva carpeta",
|
||||
"Folder" => "Carpeta",
|
||||
"From link" => "Dende enllaz",
|
||||
"Cancel upload" => "Encaboxar xuba",
|
||||
"Nothing in here. Upload something!" => "Nun hai nada equí. ¡Xubi daqué!",
|
||||
"Download" => "Descargar",
|
||||
"Delete" => "Desaniciar"
|
||||
"Delete" => "Desaniciar",
|
||||
"Upload too large" => "La xubida ye demasiao grande",
|
||||
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los ficheros que tas intentando xubir perpasen el tamañu máximu pa les xubíes de ficheros nesti servidor.",
|
||||
"Files are being scanned, please wait." => "Tan escaniándose los ficheros, espera por favor.",
|
||||
"Current scanning" => "Escanéu actual"
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -1,17 +1,37 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"File name cannot be empty." => "ឈ្មោះឯកសារមិនអាចនៅទទេបានឡើយ។",
|
||||
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "ឈ្មោះមិនត្រឹមត្រូវ, មិនអនុញ្ញាត '\\', '/', '<', '>', ':', '\"', '|', '?' និង '*' ទេ។",
|
||||
"Files" => "ឯកសារ",
|
||||
"Upload cancelled." => "បានបោះបង់ការផ្ទុកឡើង។",
|
||||
"{new_name} already exists" => "មានឈ្មោះ {new_name} រួចហើយ",
|
||||
"Share" => "ចែករំលែក",
|
||||
"Delete permanently" => "លុបជាអចិន្ត្រៃយ៍",
|
||||
"Rename" => "ប្ដូរឈ្មោះ",
|
||||
"Your download is being prepared. This might take some time if the files are big." => "ការទាញយករបស់អ្នកកំពុងត្រូវបានរៀបចំហើយ។ នេះអាចចំណាយពេលមួយសំទុះ ប្រសិនបើឯកសារធំ។",
|
||||
"Pending" => "កំពុងរង់ចាំ",
|
||||
"Error" => "កំហុស",
|
||||
"Name" => "ឈ្មោះ",
|
||||
"Size" => "ទំហំ",
|
||||
"Modified" => "បានកែប្រែ",
|
||||
"_%n folder_::_%n folders_" => array(""),
|
||||
"_%n file_::_%n files_" => array(""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array(""),
|
||||
"Name" => "ឈ្មោះ",
|
||||
"Size" => "ទំហំ",
|
||||
"Maximum upload size" => "ទំហំផ្ទុកឡើងជាអតិបរមា",
|
||||
"Enable ZIP-download" => "បើកការទាញយកជា ZIP",
|
||||
"0 is unlimited" => "0 គឺមិនកំណត់",
|
||||
"Maximum input size for ZIP files" => "ទំហំចូលជាអតិបរមាសម្រាប់ឯកសារ ZIP",
|
||||
"Save" => "រក្សាទុក",
|
||||
"WebDAV" => "WebDAV",
|
||||
"New" => "ថ្មី",
|
||||
"Text file" => "ឯកសារអក្សរ",
|
||||
"New folder" => "ថតថ្មី",
|
||||
"Folder" => "ថត",
|
||||
"From link" => "ពីតំណ",
|
||||
"Cancel upload" => "បោះបង់ការផ្ទុកឡើង",
|
||||
"Nothing in here. Upload something!" => "គ្មានអ្វីនៅទីនេះទេ។ ផ្ទុកឡើងអ្វីមួយ!",
|
||||
"Download" => "ទាញយក",
|
||||
"Delete" => "លុប"
|
||||
"Delete" => "លុប",
|
||||
"Upload too large" => "ផ្ទុកឡើងធំពេក"
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=1; plural=0;";
|
||||
|
||||
@ -0,0 +1,7 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
@ -1,8 +1,12 @@
|
||||
<?php
|
||||
$TRANSLATIONS = array(
|
||||
"Share" => "تقسیم",
|
||||
"Error" => "ایرر",
|
||||
"Name" => "اسم",
|
||||
"_%n folder_::_%n folders_" => array("",""),
|
||||
"_%n file_::_%n files_" => array("",""),
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("","")
|
||||
"_Uploading %n file_::_Uploading %n files_" => array("",""),
|
||||
"Save" => "حفظ",
|
||||
"Delete" => "حذف کریں"
|
||||
);
|
||||
$PLURAL_FORMS = "nplurals=2; plural=(n != 1);";
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* ownCloud - Files list
|
||||
*
|
||||
* @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/>.
|
||||
*
|
||||
*/
|
||||
|
||||
// Check if we are a user
|
||||
OCP\User::checkLoggedIn();
|
||||
|
||||
$config = \OC::$server->getConfig();
|
||||
// TODO: move this to the generated config.js
|
||||
$publicUploadEnabled = $config->getAppValue('core', 'shareapi_allow_public_upload', 'yes');
|
||||
$uploadLimit=OCP\Util::uploadLimit();
|
||||
|
||||
// renders the controls and table headers template
|
||||
$tmpl = new OCP\Template('files', 'list', '');
|
||||
$tmpl->assign('uploadLimit', $uploadLimit); // PHP upload limit
|
||||
$tmpl->assign('publicUploadEnabled', $publicUploadEnabled);
|
||||
$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
|
||||
$tmpl->printPage();
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
<div id="app-navigation">
|
||||
<ul>
|
||||
<?php foreach ($_['navigationItems'] as $item) { ?>
|
||||
<li data-id="<?php p($item['id']) ?>" class="nav-<?php p($item['id']) ?>"><a href="<?php p(isset($item['href']) ? $item['href'] : '#') ?>"><?php p($item['name']);?></a></li>
|
||||
<?php } ?>
|
||||
</ul>
|
||||
<div id="app-settings">
|
||||
<div id="app-settings-header">
|
||||
<button class="settings-button"></button>
|
||||
</div>
|
||||
<div id="app-settings-content">
|
||||
<h2><?php p($l->t('WebDAV'));?></h2>
|
||||
<div><input id="webdavurl" type="text" readonly="readonly" value="<?php p(OC_Helper::linkToRemote('webdav')); ?>"></input></div>
|
||||
<em><?php print_unescaped($l->t('Use this address to <a href="%s" target="_blank">access your Files via WebDAV</a>', array(link_to_docs('user-webdav'))));?></em>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue