Merge branch 'master' into fixing-998-master

Conflicts:
	apps/files/ajax/upload.php
	apps/files/js/files.js
This commit is contained in:
Thomas Mueller 2013-01-18 23:22:34 +01:00
commit afb5de955e
763 changed files with 8048 additions and 8728 deletions

37
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,37 @@
## Submitting issues
If you have questions about how to use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
### Guidelines
* Report the issue using our [template][template], it includes all the informations we need to track down the issue.
* This repository is *only* for issues within the ownCloud core code. Issues in other compontents should be reported in their own repositores:
- [Android client](https://github.com/owncloud/android/issues)
- [iOS client](https://github.com/owncloud/ios-issues/issues)
- [Desktop client](https://github.com/owncloud/mirall/issues)
- [ownCloud apps](https://github.com/owncloud/apps/issues) (e.g. Calendar, Contacts...)
* Search the existing issues first, it's likely that your issue was already reported.
If your issue appears to be a bug, and hasn't been reported, open a new issue.
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
[template]: https://raw.github.com/owncloud/core/master/issue_template.md
[mailinglist]: https://mail.kde.org/mailman/listinfo/owncloud
[forum]: http://forum.owncloud.org/
[irc]: http://webchat.freenode.net/?channels=owncloud&uio=d4
## Contributing to Source Code
Thanks for wanting to contribute source code to ownCloud. That's great!
Before we're able to merge your code into the ownCloud core, you need to sign our [Contributor Agreement][agreement].
Please read the [Developer Manuals][devmanual] to get useful infos like how to create your first application or how to test the ownCloud code with phpunit.
[agreement]: http://owncloud.org/about/contributor-agreement/
[devmanual]: http://owncloud.org/dev/
## Translations
Please submit translations via [Transifex][transifex].
[transifex]: https://www.transifex.com/projects/p/owncloud/

View File

@ -21,8 +21,20 @@ foreach($files as $file) {
}
}
// updated max file size after upload
$l=new OC_L10N('files');
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize);
$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize;
if($success) {
OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $files )));
OCP\JSON::success(array("data" => array( "dir" => $dir, "files" => $files,
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
)));
} else {
OCP\JSON::error(array("data" => array( "message" => "Could not delete:\n" . $filesWithError )));
OCP\JSON::error(array("data" => array( "message" => "Could not delete:\n" . $filesWithError,
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
)));
}

View File

@ -0,0 +1,16 @@
<?php
// only need filesystem apps
$RUNTIME_APPTYPES = array('filesystem');
OCP\JSON::checkLoggedIn();
$l=new OC_L10N('files');
$maxUploadFilesize = OCP\Util::maxUploadFilesize($dir);
$maxHumanFilesize = OCP\Util::humanFileSize($maxUploadFilesize);
$maxHumanFilesize = $l->t('Upload') . ' max. ' . $maxHumanFilesize;
// send back json
OCP\JSON::success(array('data' => array('uploadMaxFilesize' => $maxUploadFilesize,
'maxHumanFilesize' => $maxHumanFilesize
)));

View File

@ -6,13 +6,14 @@ $force=isset($_GET['force']) and $_GET['force']=='true';
$dir=isset($_GET['dir'])?$_GET['dir']:'';
$checkOnly=isset($_GET['checkonly']) and $_GET['checkonly']=='true';
$eventSource=false;
if(!$checkOnly) {
$eventSource=new OC_EventSource();
}
session_write_close();
//create the file cache if necesary
//create the file cache if necessary
if($force or !OC_FileCache::inCache('')) {
if(!$checkOnly) {
OCP\DB::beginTransaction();

View File

@ -10,8 +10,17 @@ OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck();
$l=OC_L10N::get('files');
// current max upload size
$l=new OC_L10N('files');
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize);
$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize;
if (!isset($_FILES['files'])) {
OCP\JSON::error(array('data' => array( 'message' => $l->t( 'No file was uploaded. Unknown error' ))));
OCP\JSON::error(array('data' => array( 'message' => $l->t( 'No file was uploaded. Unknown error' ),
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
)));
exit();
}
@ -28,7 +37,10 @@ foreach ($_FILES['files']['error'] as $error) {
UPLOAD_ERR_NO_TMP_DIR=>$l->t('Missing a temporary folder'),
UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'),
);
OCP\JSON::error(array('data' => array( 'message' => $errors[$error] )));
OCP\JSON::error(array('data' => array( 'message' => $errors[$error],
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
)));
exit();
}
}
@ -42,7 +54,9 @@ foreach($files['size'] as $size) {
$totalSize+=$size;
}
if($totalSize>OC_Filesystem::free_space($dir)) {
OCP\JSON::error(array('data' => array( 'message' => $l->t( 'Not enough storage available' ))));
OCP\JSON::error(array('data' => array( 'message' => $l->t( 'Not enough storage available' ),
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize)));
exit();
}
@ -56,11 +70,19 @@ if(strpos($dir, '..') === false) {
if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
$meta = OC_FileCache::get($target);
$id = OC_FileCache::getId($target);
// updated max file size after upload
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$maxHumanFilesize=OCP\Util::humanFileSize($maxUploadFilesize);
$maxHumanFilesize=$l->t('Upload') . ' max. '.$maxHumanFilesize;
$result[]=array( 'status' => 'success',
'mime'=>$meta['mimetype'],
'size'=>$meta['size'],
'id'=>$id,
'name'=>basename($target));
'name'=>basename($target),
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
);
}
}
OCP\JSON::encodedPrint($result);
@ -69,4 +91,7 @@ if(strpos($dir, '..') === false) {
$error=$l->t( 'Invalid directory.' );
}
OCP\JSON::error(array('data' => array('message' => $error )));
OCP\JSON::error(array('data' => array('message' => $error,
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
)));

View File

@ -23,7 +23,7 @@
#new>ul>li>p { cursor:pointer; }
#new>ul>li>form>input { padding:0.3em; margin:-0.3em; }
#upload {
#upload {
height:27px; padding:0; margin-left:0.2em; overflow:hidden;
}
#upload a {
@ -35,7 +35,7 @@
}
.file_upload_target { display:none; }
.file_upload_form { display:inline; float:left; margin:0; padding:0; cursor:pointer; overflow:visible; }
#file_upload_start {
#file_upload_start {
left:0; top:0; width:28px; height:27px; padding:0;
font-size:1em;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0;

View File

@ -28,6 +28,7 @@ OCP\User::checkLoggedIn();
OCP\Util::addStyle('files', 'files');
OCP\Util::addscript('files', 'jquery.iframe-transport');
OCP\Util::addscript('files', 'jquery.fileupload');
OCP\Util::addscript('files', 'jquery-visibility');
OCP\Util::addscript('files', 'files');
OCP\Util::addscript('files', 'filelist');
OCP\Util::addscript('files', 'fileactions');
@ -38,36 +39,36 @@ OCP\App::setActiveNavigationEntry('files_index');
$dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
// Redirect if directory does not exist
if (!OC_Filesystem::is_dir($dir . '/')) {
header('Location: ' . $_SERVER['SCRIPT_NAME'] . '');
exit();
header('Location: ' . $_SERVER['SCRIPT_NAME'] . '');
exit();
}
$files = array();
foreach (OC_Files::getdirectorycontent($dir) 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'] = '';
}
}
if ($i['directory'] == '/') {
$i['directory'] = '';
}
$files[] = $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'] = '';
}
}
if ($i['directory'] == '/') {
$i['directory'] = '';
}
$files[] = $i;
}
// Make breadcrumb
$breadcrumb = array();
$pathtohere = '';
foreach (explode('/', $dir) as $i) {
if ($i != '') {
$pathtohere .= '/' . $i;
$breadcrumb[] = array('dir' => $pathtohere, 'name' => $i);
}
if ($i != '') {
$pathtohere .= '/' . $i;
$breadcrumb[] = array('dir' => $pathtohere, 'name' => $i);
}
}
// make breadcrumb und filelist markup
@ -79,23 +80,17 @@ $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
$breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false);
$upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize'));
$post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size'));
$maxUploadFilesize = min($upload_max_filesize, $post_max_size);
$freeSpace = OC_Filesystem::free_space($dir);
$freeSpace = max($freeSpace, 0);
$maxUploadFilesize = min($maxUploadFilesize, $freeSpace);
$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$permissions = OCP\PERMISSION_READ;
if (OC_Filesystem::isUpdatable($dir . '/')) {
$permissions |= OCP\PERMISSION_UPDATE;
$permissions |= OCP\PERMISSION_UPDATE;
}
if (OC_Filesystem::isDeletable($dir . '/')) {
$permissions |= OCP\PERMISSION_DELETE;
$permissions |= OCP\PERMISSION_DELETE;
}
if (OC_Filesystem::isSharable($dir . '/')) {
$permissions |= OCP\PERMISSION_SHARE;
$permissions |= OCP\PERMISSION_SHARE;
}
// information about storage capacities

View File

@ -70,23 +70,23 @@ var FileActions = {
}
parent.children('a.name').append('<span class="fileactions" />');
var defaultAction = FileActions.getDefault(FileActions.getCurrentMimeType(), FileActions.getCurrentType(), FileActions.getCurrentPermissions());
var actionHandler = function (event) {
event.stopPropagation();
event.preventDefault();
FileActions.currentFile = event.data.elem;
var file = FileActions.getCurrentFile();
event.data.actionFunc(file);
};
$.each(actions, function (name, action) {
// NOTE: Temporary fix to prevent rename action in root of Shared directory
if (name === 'Rename' && $('#dir').val() === '/Shared') {
return true;
}
if ((name === 'Download' || action !== defaultAction) && name !== 'Delete') {
var img = FileActions.icons[name];
if (img.call) {
@ -97,16 +97,16 @@ var FileActions = {
html += '<img class ="svg" src="' + img + '" /> ';
}
html += t('files', name) + '</a>';
var element = $(html);
element.data('action', name);
//alert(element);
element.on('click',{a:null, elem:parent, actionFunc:actions[name]},actionHandler);
parent.find('a.name>span.fileactions').append(element);
}
});
if (actions['Delete']) {
var img = FileActions.icons['Delete'];
if (img.call) {

View File

@ -26,6 +26,23 @@ Files={
});
procesSelection();
},
updateMaxUploadFilesize:function(response) {
if(response == undefined) {
return;
}
if(response.data !== undefined && response.data.uploadMaxFilesize !== undefined) {
$('#max_upload').val(response.data.uploadMaxFilesize);
$('#data-upload-form a').attr('original-title', response.data.maxHumanFilesize);
}
if(response[0] == undefined) {
return;
}
if(response[0].uploadMaxFilesize !== undefined) {
$('#max_upload').val(response[0].uploadMaxFilesize);
$('#data-upload-form a').attr('original-title', response[0].maxHumanFilesize);
}
},
isFileNameValid:function (name) {
if (name === '.') {
OC.Notification.show(t('files', '\'.\' is an invalid file name.'));
@ -47,19 +64,19 @@ Files={
OC.Notification.hide();
return true;
},
displayStorageWarnings: function() {
var usedSpacePercent = $('#usedSpacePercent').val();
if (usedSpacePercent > 98) {
displayStorageWarnings: function() {
var usedSpacePercent = $('#usedSpacePercent').val();
if (usedSpacePercent > 98) {
OC.Notification.show(t('files', 'Your storage is full, files can not be updated or synced anymore!'));
return;
}
if (usedSpacePercent > 90) {
}
if (usedSpacePercent > 90) {
OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent}));
}
}
}
}
};
$(document).ready(function() {
Files.bindKeyboardShortcuts(document, jQuery);
Files.bindKeyboardShortcuts(document, jQuery);
$('#fileList tr').each(function(){
//little hack to set unescape filenames in attribute
$(this).attr('data-file',decodeURIComponent($(this).attr('data-file')));
@ -94,8 +111,8 @@ $(document).ready(function() {
// Sets the file link behaviour :
$('td.filename a').live('click',function(event) {
event.preventDefault();
if (event.ctrlKey || event.shiftKey) {
event.preventDefault();
if (event.shiftKey) {
var last = $(lastChecked).parent().parent().prevAll().length;
var first = $(this).parent().parent().prevAll().length;
@ -137,6 +154,7 @@ $(document).ready(function() {
var permissions = $(this).parent().parent().data('permissions');
var action=FileActions.getDefault(mime,type, permissions);
if(action){
event.preventDefault();
action(filename);
}
}
@ -319,8 +337,9 @@ $(document).ready(function() {
var response;
response=jQuery.parseJSON(result);
if(response[0] == undefined || response[0].status != 'success') {
OC.Notification.show(t('files', response.data.message));
OC.Notification.show(t('files', response.data.message));
}
Files.updateMaxUploadFilesize(response);
var file=response[0];
// TODO: this doesn't work if the file name has been changed server side
delete uploadingFiles[dirName][file.name];
@ -371,6 +390,8 @@ $(document).ready(function() {
.success(function(result, textStatus, jqXHR) {
var response;
response=jQuery.parseJSON(result);
Files.updateMaxUploadFilesize(response);
if(response[0] != undefined && response[0].status == 'success') {
var file=response[0];
delete uploadingFiles[file.name];
@ -382,18 +403,18 @@ $(document).ready(function() {
//TODO update file upload size limit
FileList.loadingDone(file.name, file.id);
} else {
Files.cancelUpload(this.files[0].name);
Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove();
}
})
.error(function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'abort') {
Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', 'Upload cancelled.'));
}
});
})
.error(function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'abort') {
Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', 'Upload cancelled.'));
}
});
uploadingFiles[uniqueName] = jqXHR;
}
}
@ -401,6 +422,7 @@ $(document).ready(function() {
data.submit().success(function(data, status) {
// in safari data is a string
response = jQuery.parseJSON(typeof data === 'string' ? data : data[0].body.innerText);
Files.updateMaxUploadFilesize(response);
if(response[0] != undefined && response[0].status == 'success') {
var file=response[0];
delete uploadingFiles[file.name];
@ -412,7 +434,7 @@ $(document).ready(function() {
//TODO update file upload size limit
FileList.loadingDone(file.name, file.id);
} else {
//TODO Files.cancelUpload(/*where do we get the filename*/);
//TODO Files.cancelUpload(/*where do we get the filename*/);
OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove();
@ -713,6 +735,32 @@ $(document).ready(function() {
// display storage warnings
setTimeout ( "Files.displayStorageWarnings()", 100 );
OC.Notification.setDefault(Files.displayStorageWarnings);
// file space size sync
function update_storage_statistics() {
$.getJSON(OC.filePath('files','ajax','getstoragestats.php'),function(response) {
Files.updateMaxUploadFilesize(response);
});
}
// start on load - we ask the server every 5 minutes
var update_storage_statistics_interval = 5*60*1000;
var update_storage_statistics_interval_id = setInterval(update_storage_statistics, update_storage_statistics_interval);
// Use jquery-visibility to de-/re-activate file stats sync
if ($.support.pageVisibility) {
$(document).on({
'show.visibility': function() {
if (!update_storage_statistics_interval_id) {
update_storage_statistics_interval_id = setInterval(update_storage_statistics, update_storage_statistics_interval);
}
},
'hide.visibility': function() {
clearInterval(update_storage_statistics_interval_id);
update_storage_statistics_interval_id = 0;
}
});
}
});
function scanFiles(force,dir){
@ -742,6 +790,7 @@ scanFiles.scanning=false;
function boolOperationFinished(data, callback) {
result = jQuery.parseJSON(data.responseText);
Files.updateMaxUploadFilesize(result);
if(result.status == 'success'){
callback.call();
} else {

32
apps/files/js/jquery-visibility.js vendored Normal file
View File

@ -0,0 +1,32 @@
/*! http://mths.be/visibility v1.0.5 by @mathias */
(function (window, document, $, undefined) {
var prefix,
property,
// In Opera, `'onfocusin' in document == true`, hence the extra `hasFocus` check to detect IE-like behavior
eventName = 'onfocusin' in document && 'hasFocus' in document ? 'focusin focusout' : 'focus blur',
prefixes = ['', 'moz', 'ms', 'o', 'webkit'],
$support = $.support,
$event = $.event;
while ((property = prefix = prefixes.pop()) != undefined) {
property = (prefix ? prefix + 'H' : 'h') + 'idden';
if ($support.pageVisibility = typeof document[property] == 'boolean') {
eventName = prefix + 'visibilitychange';
break;
}
}
$(/blur$/.test(eventName) ? window : document).on(eventName, function (event) {
var type = event.type,
originalEvent = event.originalEvent,
toElement = originalEvent.toElement;
// If its a `{focusin,focusout}` event (IE), `fromElement` and `toElement` should both be `null` or `undefined`;
// else, the page visibility hasnt changed, but the user just clicked somewhere in the doc.
// In IE9, we need to check the `relatedTarget` property instead.
if (!/^focus./.test(type) || (toElement == undefined && originalEvent.fromElement == undefined && originalEvent.relatedTarget == undefined)) {
$event.trigger((property && document[property] || /^(?:blur|focusout)$/.test(type) ? 'hide' : 'show') + '.visibility');
}
});
}(this, document, jQuery));

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits.",
"Could not move %s" => "Konnte %s nicht verschieben",
"Unable to rename file" => "Konnte Datei nicht umbenennen",
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
@ -8,7 +11,7 @@
"Missing a temporary folder" => "Temporärer Ordner fehlt.",
"Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte",
"Not enough space available" => "Nicht genug Speicherplatz verfügbar",
"Invalid directory." => "Ungültiges Verzeichnis.",
"Invalid directory." => "Ungültiges Verzeichnis",
"Files" => "Dateien",
"Unshare" => "Nicht mehr freigeben",
"Delete" => "Löschen",
@ -22,8 +25,8 @@
"replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}",
"unshared {files}" => "Freigabe von {files} aufgehoben",
"deleted {files}" => "{files} gelöscht",
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein.",
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Ungültiger Name, '\\', '/', '<', '>', ':', '\"', '|', '?' und '*' sind nicht zulässig.",
"generating ZIP-file, it may take some time." => "Erstelle ZIP-Datei. Dies kann eine Weile dauern.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Deine Datei kann nicht hochgeladen werden, da sie entweder ein Verzeichnis oder 0 Bytes groß ist.",
@ -34,7 +37,8 @@
"{count} files uploading" => "{count} Dateien werden hochgeladen",
"Upload cancelled." => "Upload abgebrochen.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Du die Seite jetzt verlässt, wird der Upload abgebrochen.",
"URL cannot be empty." => "Die URL darf nicht leer sein.",
"URL cannot be empty." => "Die URL darf nicht leer sein",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten.",
"{count} files scanned" => "{count} Dateien wurden gescannt",
"error while scanning" => "Fehler beim Scannen",
"Name" => "Name",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Konnte %s nicht verschieben - Datei mit diesem Namen existiert bereits",
"Could not move %s" => "Konnte %s nicht verschieben",
"Unable to rename file" => "Konnte Datei nicht umbenennen",
"No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Es sind keine Fehler aufgetreten. Die Datei wurde erfolgreich hochgeladen.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Die hochgeladene Datei überschreitet die upload_max_filesize Vorgabe in php.ini",
@ -35,6 +38,7 @@
"Upload cancelled." => "Upload abgebrochen.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Der Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"URL cannot be empty." => "Die URL darf nicht leer sein.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ungültiger Verzeichnisname. Die Nutzung von \"Shared\" ist ownCloud vorbehalten",
"{count} files scanned" => "{count} Dateien wurden gescannt",
"error while scanning" => "Fehler beim Scannen",
"Name" => "Name",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "No se puede mover %s - Ya existe un archivo con ese nombre",
"Could not move %s" => "No se puede mover %s",
"Unable to rename file" => "No se puede renombrar el archivo",
"No file was uploaded. Unknown error" => "Fallo no se subió el fichero",
"There is no error, the file uploaded with success" => "No se ha producido ningún error, el archivo se ha subido con éxito",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "No se pudo mover %s - Un archivo con este nombre ya existe",
"Could not move %s" => "No se pudo mover %s ",
"Unable to rename file" => "No fue posible cambiar el nombre al archivo",
"No file was uploaded. Unknown error" => "El archivo no fue subido. Error desconocido",
"There is no error, the file uploaded with success" => "No se han producido errores, el archivo se ha subido con éxito",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "El archivo que intentás subir excede el tamaño definido por upload_max_filesize en el php.ini:",
@ -22,6 +25,8 @@
"replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}",
"unshared {files}" => "{files} se dejaron de compartir",
"deleted {files}" => "{files} borrados",
"'.' is an invalid file name." => "'.' es un nombre de archivo inválido.",
"File name cannot be empty." => "El nombre del archivo no puede quedar vacío.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nombre invalido, '\\', '/', '<', '>', ':', '\"', '|', '?' y '*' no están permitidos.",
"generating ZIP-file, it may take some time." => "generando un archivo ZIP, puede llevar un tiempo.",
"Unable to upload your file as it is a directory or has 0 bytes" => "No fue posible subir el archivo porque es un directorio o porque su tamaño es 0 bytes",
@ -33,6 +38,7 @@
"Upload cancelled." => "La subida fue cancelada",
"File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Si salís de la página ahora, la subida se cancelará.",
"URL cannot be empty." => "La URL no puede estar vacía",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nombre de carpeta inválido. El uso de 'Shared' está reservado por ownCloud",
"{count} files scanned" => "{count} archivos escaneados",
"error while scanning" => "error mientras se escaneaba",
"Name" => "Nombre",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Non se moveu %s - Xa existe un ficheiro con ese nome.",
"Could not move %s" => "Non se puido mover %s",
"Unable to rename file" => "Non se pode renomear o ficheiro",
"No file was uploaded. Unknown error" => "Non se subiu ningún ficheiro. Erro descoñecido.",
"There is no error, the file uploaded with success" => "Non hai erros. O ficheiro enviouse correctamente",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "O ficheiro subido excede a directiva indicada polo tamaño_máximo_de_subida de php.ini",
@ -22,6 +25,8 @@
"replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}",
"unshared {files}" => "{files} sen compartir",
"deleted {files}" => "{files} eliminados",
"'.' is an invalid file name." => "'.' é un nonme de ficheiro non válido",
"File name cannot be empty." => "O nome de ficheiro non pode estar baldeiro",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nome non válido, '\\', '/', '<', '>', ':', '\"', '|', '?' e '*' non se permiten.",
"generating ZIP-file, it may take some time." => "xerando un ficheiro ZIP, o que pode levar un anaco.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Non se puido subir o ficheiro pois ou é un directorio ou ten 0 bytes",
@ -33,6 +38,7 @@
"Upload cancelled." => "Subida cancelada.",
"File upload is in progress. Leaving the page now will cancel the upload." => "A subida do ficheiro está en curso. Saír agora da páxina cancelará a subida.",
"URL cannot be empty." => "URL non pode quedar baleiro.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Nome de cartafol non válido. O uso de 'Shared' está reservado por Owncloud",
"{count} files scanned" => "{count} ficheiros escaneados",
"error while scanning" => "erro mentres analizaba",
"Name" => "Nome",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "%s 항목을 이동시키지 못하였음 - 파일 이름이 이미 존재함",
"Could not move %s" => "%s 항목을 이딩시키지 못하였음",
"Unable to rename file" => "파일 이름바꾸기 할 수 없음",
"No file was uploaded. Unknown error" => "파일이 업로드되지 않았습니다. 알 수 없는 오류입니다",
"There is no error, the file uploaded with success" => "업로드에 성공하였습니다.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "업로드한 파일이 php.ini의 upload_max_filesize보다 큽니다:",
@ -35,6 +38,7 @@
"Upload cancelled." => "업로드가 취소되었습니다.",
"File upload is in progress. Leaving the page now will cancel the upload." => "파일 업로드가 진행 중입니다. 이 페이지를 벗어나면 업로드가 취소됩니다.",
"URL cannot be empty." => "URL을 입력해야 합니다.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "폴더 이름이 유효하지 않습니다. ",
"{count} files scanned" => "파일 {count}개 검색됨",
"error while scanning" => "검색 중 오류 발생",
"Name" => "이름",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Kon %s niet verplaatsen - Er bestaat al een bestand met deze naam",
"Could not move %s" => "Kon %s niet verplaatsen",
"Unable to rename file" => "Kan bestand niet hernoemen",
"No file was uploaded. Unknown error" => "Er was geen bestand geladen. Onbekende fout",
"There is no error, the file uploaded with success" => "Geen fout opgetreden, bestand successvol geupload.",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Het geüploade bestand overscheidt de upload_max_filesize optie in php.ini:",
@ -35,6 +38,7 @@
"Upload cancelled." => "Uploaden geannuleerd.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Bestandsupload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"URL cannot be empty." => "URL kan niet leeg zijn.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Ongeldige mapnaam. Gebruik van'Gedeeld' is voorbehouden aan Owncloud",
"{count} files scanned" => "{count} bestanden gescanned",
"error while scanning" => "Fout tijdens het scannen",
"Name" => "Naam",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Nie można było przenieść %s - Plik o takiej nazwie już istnieje",
"Could not move %s" => "Nie można było przenieść %s",
"Unable to rename file" => "Nie można zmienić nazwy pliku",
"No file was uploaded. Unknown error" => "Plik nie został załadowany. Nieznany błąd",
"There is no error, the file uploaded with success" => "Przesłano plik",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Wgrany plik przekracza wartość upload_max_filesize zdefiniowaną w php.ini: ",

View File

@ -1,4 +1,6 @@
<?php $TRANSLATIONS = array(
"Could not move %s" => "Nu s-a putut muta %s",
"Unable to rename file" => "Nu s-a putut redenumi fișierul",
"No file was uploaded. Unknown error" => "Nici un fișier nu a fost încărcat. Eroare necunoscută",
"There is no error, the file uploaded with success" => "Nicio eroare, fișierul a fost încărcat cu succes",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Fisierul incarcat depaseste upload_max_filesize permisi in php.ini: ",
@ -7,6 +9,8 @@
"No file was uploaded" => "Niciun fișier încărcat",
"Missing a temporary folder" => "Lipsește un dosar temporar",
"Failed to write to disk" => "Eroare la scriere pe disc",
"Not enough space available" => "Nu este suficient spațiu disponibil",
"Invalid directory." => "Director invalid.",
"Files" => "Fișiere",
"Unshare" => "Anulează partajarea",
"Delete" => "Șterge",
@ -20,6 +24,8 @@
"replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}",
"unshared {files}" => "nedistribuit {files}",
"deleted {files}" => "Sterse {files}",
"'.' is an invalid file name." => "'.' este un nume invalid de fișier.",
"File name cannot be empty." => "Numele fișierului nu poate rămâne gol.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Nume invalid, '\\', '/', '<', '>', ':', '\"', '|', '?' si '*' nu sunt permise.",
"generating ZIP-file, it may take some time." => "se generază fișierul ZIP, va dura ceva timp.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nu s-a putut încărca fișierul tău deoarece pare să fie un director sau are 0 bytes.",
@ -31,6 +37,7 @@
"Upload cancelled." => "Încărcare anulată.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Fișierul este în curs de încărcare. Părăsirea paginii va întrerupe încărcarea.",
"URL cannot be empty." => "Adresa URL nu poate fi goală.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Invalid folder name. Usage of 'Shared' is reserved by Ownclou",
"{count} files scanned" => "{count} fisiere scanate",
"error while scanning" => "eroare la scanarea",
"Name" => "Nume",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "Невозможно переместить %s - файл с таким именем уже существует",
"Could not move %s" => "Невозможно переместить %s",
"Unable to rename file" => "Невозможно переименовать файл",
"No file was uploaded. Unknown error" => "Файл не был загружен. Неизвестная ошибка",
"There is no error, the file uploaded with success" => "Файл успешно загружен",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Файл превышает размер установленный upload_max_filesize в php.ini:",
@ -7,6 +10,8 @@
"No file was uploaded" => "Файл не был загружен",
"Missing a temporary folder" => "Невозможно найти временную папку",
"Failed to write to disk" => "Ошибка записи на диск",
"Not enough space available" => "Недостаточно свободного места",
"Invalid directory." => "Неправильный каталог.",
"Files" => "Файлы",
"Unshare" => "Отменить публикацию",
"Delete" => "Удалить",
@ -20,6 +25,8 @@
"replaced {new_name} with {old_name}" => "заменено {new_name} на {old_name}",
"unshared {files}" => "не опубликованные {files}",
"deleted {files}" => "удаленные {files}",
"'.' is an invalid file name." => "'.' - неправильное имя файла.",
"File name cannot be empty." => "Имя файла не может быть пустым.",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "Неправильное имя, '\\', '/', '<', '>', ':', '\"', '|', '?' и '*' недопустимы.",
"generating ZIP-file, it may take some time." => "создание ZIP-файла, это может занять некоторое время.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Не удается загрузить файл размером 0 байт в каталог",
@ -31,6 +38,7 @@
"Upload cancelled." => "Загрузка отменена.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процессе загрузки. Покинув страницу вы прервёте загрузку.",
"URL cannot be empty." => "Ссылка не может быть пустой.",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "Неправильное имя каталога. Имя 'Shared' зарезервировано.",
"{count} files scanned" => "{count} файлов просканировано",
"error while scanning" => "ошибка во время санирования",
"Name" => "Название",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array(
"Could not move %s - File with this name already exists" => "无法移动 %s - 同名文件已存在",
"Could not move %s" => "无法移动 %s",
"Unable to rename file" => "无法重命名文件",
"No file was uploaded. Unknown error" => "没有文件被上传。未知错误",
"There is no error, the file uploaded with success" => "没有发生错误,文件上传成功。",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "上传文件大小已超过php.ini中upload_max_filesize所规定的值",
@ -7,6 +10,8 @@
"No file was uploaded" => "文件没有上传",
"Missing a temporary folder" => "缺少临时目录",
"Failed to write to disk" => "写入磁盘失败",
"Not enough space available" => "没有足够可用空间",
"Invalid directory." => "无效文件夹。",
"Files" => "文件",
"Unshare" => "取消分享",
"Delete" => "删除",
@ -20,6 +25,8 @@
"replaced {new_name} with {old_name}" => "已将 {old_name}替换成 {new_name}",
"unshared {files}" => "取消了共享 {files}",
"deleted {files}" => "删除了 {files}",
"'.' is an invalid file name." => "'.' 是一个无效的文件名。",
"File name cannot be empty." => "文件名不能为空。",
"Invalid name, '\\', '/', '<', '>', ':', '\"', '|', '?' and '*' are not allowed." => "无效名称,'\\', '/', '<', '>', ':', '\"', '|', '?' 和 '*' 不被允许使用。",
"generating ZIP-file, it may take some time." => "正在生成 ZIP 文件,可能需要一些时间",
"Unable to upload your file as it is a directory or has 0 bytes" => "无法上传文件,因为它是一个目录或者大小为 0 字节",
@ -31,6 +38,7 @@
"Upload cancelled." => "上传已取消",
"File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传中。现在离开此页会导致上传动作被取消。",
"URL cannot be empty." => "URL不能为空",
"Invalid folder name. Usage of 'Shared' is reserved by Owncloud" => "无效文件夹名。'共享' 是 Owncloud 预留的文件夹名。",
"{count} files scanned" => "{count} 个文件已扫描。",
"error while scanning" => "扫描时出错",
"Name" => "名称",

View File

@ -1,10 +1,10 @@
<?php for($i=0; $i<count($_["breadcrumb"]); $i++):
$crumb = $_["breadcrumb"][$i];
$dir = str_replace('+', '%20', urlencode($crumb["dir"]));
$dir = str_replace('%2F', '/', $dir); ?>
<div class="crumb <?php if($i == count($_["breadcrumb"])-1) echo 'last';?> svg"
data-dir='<?php echo $dir;?>'
style='background-image:url("<?php echo OCP\image_path('core', 'breadcrumb.png');?>")'>
<a href="<?php echo $_['baseURL'].$dir; ?>"><?php echo OCP\Util::sanitizeHTML($crumb["name"]); ?></a>
</div>
<?php endfor;
<?php for($i=0; $i<count($_["breadcrumb"]); $i++):
$crumb = $_["breadcrumb"][$i];
$dir = str_replace('+', '%20', urlencode($crumb["dir"]));
$dir = str_replace('%2F', '/', $dir); ?>
<div class="crumb <?php if($i == count($_["breadcrumb"])-1) echo 'last';?> svg"
data-dir='<?php echo $dir;?>'
style='background-image:url("<?php echo OCP\image_path('core', 'breadcrumb.png');?>")'>
<a href="<?php echo $_['baseURL'].$dir; ?>"><?php echo OCP\Util::sanitizeHTML($crumb["name"]); ?></a>
</div>
<?php endfor;

View File

@ -1,70 +1,70 @@
<script type="text/javascript">
<?php if ( array_key_exists('publicListView', $_) && $_['publicListView'] == true ) :?>
var publicListView = true;
<?php else: ?>
var publicListView = false;
<?php endif; ?>
</script>
<script type="text/javascript">
<?php if ( array_key_exists('publicListView', $_) && $_['publicListView'] == true ) :?>
var publicListView = true;
<?php else: ?>
var publicListView = false;
<?php endif; ?>
</script>
<?php foreach($_['files'] as $file):
$simple_file_size = OCP\simple_file_size($file['size']);
// the bigger the file, the darker the shade of grey; megabytes*2
$simple_size_color = intval(200-$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>200) $relative_date_color = 200;
$name = str_replace('+', '%20', urlencode($file['name']));
$name = str_replace('%2F', '/', $name);
$directory = str_replace('+', '%20', urlencode($file['directory']));
$directory = str_replace('%2F', '/', $directory); ?>
<tr data-id="<?php echo $file['id']; ?>"
data-file="<?php echo $name;?>"
data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>"
data-mime="<?php echo $file['mimetype']?>"
data-size='<?php echo $file['size'];?>'
data-permissions='<?php echo $file['permissions']; ?>'>
<td class="filename svg"
<?php if($file['type'] == 'dir'): ?>
style="background-image:url(<?php echo OCP\mimetype_icon('dir'); ?>)"
<?php else: ?>
style="background-image:url(<?php echo OCP\mimetype_icon($file['mimetype']); ?>)"
<?php endif; ?>
>
<?php if(!isset($_['readonly']) || !$_['readonly']): ?><input type="checkbox" /><?php endif; ?>
<?php if($file['type'] == 'dir'): ?>
<a class="name" href="<?php $_['baseURL'].$directory.'/'.$name; ?>)" title="">
<?php else: ?>
<a class="name" href="<?php echo $_['downloadURL'].$directory.'/'.$name; ?>" title="">
<?php endif; ?>
<span class="nametext">
<?php if($file['type'] == 'dir'):?>
<?php echo htmlspecialchars($file['name']);?>
<?php else:?>
<?php echo htmlspecialchars($file['basename']);?><span
class='extension'><?php echo $file['extension'];?></span>
<?php endif;?>
</span>
<?php if($file['type'] == 'dir'):?>
<span class="uploadtext" currentUploads="0">
</span>
<?php endif;?>
</a>
</td>
<td class="filesize"
title="<?php echo OCP\human_file_size($file['size']); ?>"
style="color:rgb(<?php echo $simple_size_color.','.$simple_size_color.','.$simple_size_color ?>)">
<?php echo $simple_file_size; ?>
</td>
<td class="date">
<span class="modified"
title="<?php echo $file['date']; ?>"
style="color:rgb(<?php echo $relative_date_color.','
.$relative_date_color.','
.$relative_date_color ?>)">
<?php echo $relative_modified_date; ?>
</span>
</td>
</tr>
<?php endforeach;
<?php foreach($_['files'] as $file):
$simple_file_size = OCP\simple_file_size($file['size']);
// the bigger the file, the darker the shade of grey; megabytes*2
$simple_size_color = intval(200-$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>200) $relative_date_color = 200;
$name = str_replace('+', '%20', urlencode($file['name']));
$name = str_replace('%2F', '/', $name);
$directory = str_replace('+', '%20', urlencode($file['directory']));
$directory = str_replace('%2F', '/', $directory); ?>
<tr data-id="<?php echo $file['id']; ?>"
data-file="<?php echo $name;?>"
data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>"
data-mime="<?php echo $file['mimetype']?>"
data-size='<?php echo $file['size'];?>'
data-permissions='<?php echo $file['permissions']; ?>'>
<td class="filename svg"
<?php if($file['type'] == 'dir'): ?>
style="background-image:url(<?php echo OCP\mimetype_icon('dir'); ?>)"
<?php else: ?>
style="background-image:url(<?php echo OCP\mimetype_icon($file['mimetype']); ?>)"
<?php endif; ?>
>
<?php if(!isset($_['readonly']) || !$_['readonly']): ?><input type="checkbox" /><?php endif; ?>
<?php if($file['type'] == 'dir'): ?>
<a class="name" href="<?php $_['baseURL'].$directory.'/'.$name; ?>)" title="">
<?php else: ?>
<a class="name" href="<?php echo $_['downloadURL'].$directory.'/'.$name; ?>" title="">
<?php endif; ?>
<span class="nametext">
<?php if($file['type'] == 'dir'):?>
<?php echo htmlspecialchars($file['name']);?>
<?php else:?>
<?php echo htmlspecialchars($file['basename']);?><span
class='extension'><?php echo $file['extension'];?></span>
<?php endif;?>
</span>
<?php if($file['type'] == 'dir'):?>
<span class="uploadtext" currentUploads="0">
</span>
<?php endif;?>
</a>
</td>
<td class="filesize"
title="<?php echo OCP\human_file_size($file['size']); ?>"
style="color:rgb(<?php echo $simple_size_color.','.$simple_size_color.','.$simple_size_color ?>)">
<?php echo $simple_file_size; ?>
</td>
<td class="date">
<span class="modified"
title="<?php echo $file['date']; ?>"
style="color:rgb(<?php echo $relative_date_color.','
.$relative_date_color.','
.$relative_date_color ?>)">
<?php echo $relative_modified_date; ?>
</span>
</td>
</tr>
<?php endforeach;

View File

@ -2,7 +2,7 @@
<fieldset class="personalblock">
<legend><strong><?php echo $l->t('Encryption');?></strong></legend>
<input type='checkbox'<?php if ($_['encryption_enabled']): ?> checked="checked"<?php endif; ?>
id='enable_encryption' ></input>
id='enable_encryption' />
<label for='enable_encryption'><?php echo $l->t('Enable Encryption')?></label><br />
<select id='encryption_blacklist' title="<?php echo $l->t('None')?>" multiple="multiple">
<?php foreach ($_['blacklist'] as $type): ?>

View File

@ -108,7 +108,7 @@ class OC_Filestorage_AmazonS3 extends OC_Filestorage_Common {
$stat['atime'] = time();
$stat['mtime'] = $stat['atime'];
$stat['ctime'] = $stat['atime'];
} else {
} else {
$object = $this->getObject($path);
if ($object) {
$stat['size'] = $object['Size'];

View File

@ -38,7 +38,7 @@ class OC_Mount_Config {
* @return array
*/
public static function getBackends() {
$backends['OC_Filestorage_Local']=array(
'backend' => 'Local',
'configuration' => array(
@ -77,7 +77,7 @@ class OC_Mount_Config {
'token' => '#token',
'token_secret' => '#token secret'),
'custom' => 'google');
$backends['OC_Filestorage_SWIFT']=array(
'backend' => 'OpenStack Swift',
'configuration' => array(
@ -86,7 +86,7 @@ class OC_Mount_Config {
'token' => '*Token',
'root' => '&Root',
'secure' => '!Secure ftps://'));
if(OC_Mount_Config::checksmbclient()) $backends['OC_Filestorage_SMB']=array(
'backend' => 'SMB / CIFS',
'configuration' => array(
@ -95,7 +95,7 @@ class OC_Mount_Config {
'password' => '*Password',
'share' => 'Share',
'root' => '&Root'));
$backends['OC_Filestorage_DAV']=array(
'backend' => 'ownCloud / WebDAV',
'configuration' => array(
@ -103,7 +103,7 @@ class OC_Mount_Config {
'user' => 'Username',
'password' => '*Password',
'root' => '&Root',
'secure' => '!Secure https://'));
'secure' => '!Secure https://'));
return($backends);
}
@ -403,7 +403,7 @@ class OC_Mount_Config {
}
/**
* check if smbclient is installed
* check if smbclient is installed
*/
public static function checksmbclient() {
if(function_exists('shell_exec')) {
@ -415,7 +415,7 @@ class OC_Mount_Config {
}
/**
* check if php-ftp is installed
* check if php-ftp is installed
*/
public static function checkphpftp() {
if(function_exists('ftp_login')) {

View File

@ -234,12 +234,11 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$path1=$this->cleanPath($path1);
$path2=$this->root.$this->cleanPath($path2);
try {
$response=$this->client->request('MOVE', $path1, null, array('Destination'=>$path2));
$this->client->request('MOVE', $path1, null, array('Destination'=>$path2));
return true;
} catch(Exception $e) {
echo $e;
echo 'fail';
var_dump($response);
return false;
}
}
@ -248,12 +247,11 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$path1=$this->cleanPath($path1);
$path2=$this->root.$this->cleanPath($path2);
try {
$response=$this->client->request('COPY', $path1, null, array('Destination'=>$path2));
$this->client->request('COPY', $path1, null, array('Destination'=>$path2));
return true;
} catch(Exception $e) {
echo $e;
echo 'fail';
var_dump($response);
return false;
}
}

View File

@ -1,7 +1,7 @@
<form id="files_external">
<fieldset class="personalblock">
<legend><strong><?php echo $l->t('External Storage'); ?></strong></legend>
<?php if (isset($_['dependencies']) and ($_['dependencies']<>'')) echo ''.$_['dependencies'].''; ?>
<?php if (isset($_['dependencies']) and ($_['dependencies']<>'')) echo ''.$_['dependencies'].''; ?>
<table id="externalStorage" data-admin='<?php echo json_encode($_['isAdminPage']); ?>'>
<thead>
<tr>
@ -47,7 +47,7 @@
<?php elseif (strpos($placeholder, '!') !== false): ?>
<label><input type="checkbox"
data-parameter="<?php echo $parameter; ?>"
<?php if ($value == 'true'): ?> checked="checked"<?php endif; ?>
<?php if ($value == 'true'): ?> checked="checked"<?php endif; ?>
/><?php echo substr($placeholder, 1); ?></label>
<?php elseif (strpos($placeholder, '&') !== false): ?>
<input type="text"
@ -105,7 +105,7 @@
<?php endif; ?>
<td <?php if ($mountPoint != ''): ?>class="remove"
<?php else: ?>style="visibility:hidden;"
<?php endif ?>><img alt="<?php echo $l->t('Delete'); ?>"
<?php endif ?>><img alt="<?php echo $l->t('Delete'); ?>"
title="<?php echo $l->t('Delete'); ?>"
class="svg action"
src="<?php echo image_path('core', 'actions/delete.svg'); ?>" /></td>

View File

@ -1,7 +1,7 @@
$(document).ready(function() {
if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined' && !publicListView) {
FileActions.register('all', 'Share', OC.PERMISSION_READ, OC.imagePath('core', 'actions/share'), function(filename) {
if ($('#dir').val() == '/') {
var item = $('#dir').val() + filename;

View File

@ -66,12 +66,12 @@ if (isset($_GET['t'])) {
$type = $linkItem['item_type'];
$fileSource = $linkItem['file_source'];
$shareOwner = $linkItem['uid_owner'];
if (OCP\User::userExists($shareOwner) && $fileSource != -1 ) {
$pathAndUser = getPathAndUser($linkItem['file_source']);
$fileOwner = $pathAndUser['user'];
//if this is a reshare check the file owner also exists
if ($shareOwner != $fileOwner && ! OCP\User::userExists($fileOwner)) {
OCP\Util::writeLog('share', 'original file owner '.$fileOwner
@ -81,7 +81,7 @@ if (isset($_GET['t'])) {
$tmpl->printPage();
exit();
}
//mount filesystem of file owner
OC_Util::setupFS($fileOwner);
}
@ -104,7 +104,7 @@ if (isset($_GET['t'])) {
}
}
$shareOwner = substr($path, 1, strpos($path, '/', 1) - 1);
if (OCP\User::userExists($shareOwner)) {
OC_Util::setupFS($shareOwner);
$fileSource = getId($path);
@ -159,7 +159,7 @@ if ($linkItem) {
$tmpl->printPage();
exit();
}
} else {
// Check if item id is set in session
if (!isset($_SESSION['public_link_authenticated'])

View File

@ -1,44 +0,0 @@
<?php
/**
* ownCloud - user_migrate
*
* @author Sam Tuke
* @copyright 2012 Sam Tuke samtuke@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/>.
*
*/
// TODO: Allow admins to expire versions of any user
// TODO: Provide feedback as to how many versions were deleted
// Check user and app status
OCP\JSON::checkLoggedIn();
OCP\App::checkAppEnabled('files_versions');
OCP\JSON::callCheck();
$versions = new OCA_Versions\Storage();
if( $versions->expireAll() ) {
OCP\JSON::success();
die();
} else {
OCP\JSON::error();
die();
}

View File

@ -4,10 +4,9 @@ OCP\JSON::checkAppEnabled('files_versions');
$userDirectory = "/".OCP\USER::getUser()."/files";
$source = $_GET['source'];
if( OCA_Versions\Storage::isversioned( $source ) ) {
$count = 5; //show the newest revisions
if( ($versions = OCA_Versions\Storage::getVersions( $source, $count)) ) {
$count=5; //show the newest revisions
$versions = OCA_Versions\Storage::getVersions( $source, $count);
$versionsFormatted = array();
foreach ( $versions AS $version ) {

View File

@ -8,10 +8,9 @@ $userDirectory = "/".OCP\USER::getUser()."/files";
$file = $_GET['file'];
$revision=(int)$_GET['revision'];
if( OCA_Versions\Storage::isversioned( $file ) ) {
if(OCA_Versions\Storage::rollback( $file, $revision )) {
OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file )));
}else{
OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file )));
}
if(OCA_Versions\Storage::rollback( $file, $revision )) {
OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file )));
}else{
OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file )));
}

View File

@ -28,7 +28,6 @@ $tmpl = new OCP\Template( 'files_versions', 'history', 'user' );
if ( isset( $_GET['path'] ) ) {
$path = $_GET['path'];
$path = $path;
$tmpl->assign( 'path', $path );
$versions = new OCA_Versions\Storage();
@ -52,10 +51,8 @@ if ( isset( $_GET['path'] ) ) {
}
// show the history only if there is something to show
if( OCA_Versions\Storage::isversioned( $path ) ) {
$count = 999; //show the newest revisions
$versions = OCA_Versions\Storage::getVersions( $path, $count);
$count = 999; //show the newest revisions
if( ($versions = OCA_Versions\Storage::getVersions( $path, $count)) ) {
$tmpl->assign( 'versions', array_reverse( $versions ) );

View File

@ -1,39 +0,0 @@
// TODO: allow the button to be clicked only once
$( document ).ready(function(){
//
$( '#expireAllBtn' ).click(
function( event ) {
// Prevent page from reloading
event.preventDefault();
// Show loading gif
$('.expireAllLoading').show();
$.getJSON(
OC.filePath('files_versions','ajax','expireAll.php'),
function(result){
if (result.status == 'success') {
$('.expireAllLoading').hide();
$('#expireAllBtn').html('Expiration successful');
} else {
// Cancel loading
$('#expireAllBtn').html('Expiration failed');
// Show Dialog
OC.dialogs.alert(
'Something went wrong, your files may not have been expired',
'An error has occurred',
function(){
$('#expireAllBtn').html(t('files_versions', 'Expire all versions')+'<img style="display: none;" class="loading" src="'+OC.filePath('core','img','loading.gif')+'" />');
}
);
}
}
);
}
);
});

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "إنهاء تاريخ الإنتهاء لجميع الإصدارات",
"History" => "السجل الزمني",
"Versions" => "الإصدارات",
"This will delete all existing backup versions of your files" => "هذه العملية ستقوم بإلغاء جميع إصدارات النسخ الاحتياطي للملفات",
"Files Versioning" => "أصدرة الملفات",
"Enable" => "تفعيل"
);

View File

@ -1,6 +1,4 @@
<?php $TRANSLATIONS = array(
"History" => "История",
"Versions" => "Версии",
"This will delete all existing backup versions of your files" => "Това действие ще изтрие всички налични архивни версии на Вашите файлове",
"Enable" => "Включено"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "সমস্ত ভার্সন মেয়াদোত্তীর্ণ",
"History" => "ইতিহাস",
"Versions" => "ভার্সন",
"This will delete all existing backup versions of your files" => "এটি আপনার বিদ্যমান ফাইলের সমস্ত ব্যাক-আপ ভার্সন মুছে ফেলবে।",
"Files Versioning" => "ফাইল ভার্সন করা",
"Enable" => "সক্রিয় "
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expira totes les versions",
"History" => "Historial",
"Versions" => "Versions",
"This will delete all existing backup versions of your files" => "Això eliminarà totes les versions de còpia de seguretat dels vostres fitxers",
"Files Versioning" => "Fitxers de Versions",
"Enable" => "Habilita"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Vypršet všechny verze",
"History" => "Historie",
"Versions" => "Verze",
"This will delete all existing backup versions of your files" => "Odstraní všechny existující zálohované verze Vašich souborů",
"Files Versioning" => "Verzování souborů",
"Enable" => "Povolit"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Lad alle versioner udløbe",
"History" => "Historik",
"Versions" => "Versioner",
"This will delete all existing backup versions of your files" => "Dette vil slette alle eksisterende backupversioner af dine filer",
"Files Versioning" => "Versionering af filer",
"Enable" => "Aktiver"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Alle Versionen löschen",
"History" => "Historie",
"Versions" => "Versionen",
"This will delete all existing backup versions of your files" => "Dies löscht alle vorhandenen Sicherungsversionen Deiner Dateien.",
"Files Versioning" => "Dateiversionierung",
"Enable" => "Aktivieren"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Alle Versionen löschen",
"History" => "Historie",
"Versions" => "Versionen",
"This will delete all existing backup versions of your files" => "Dies löscht alle vorhandenen Sicherungsversionen Ihrer Dateien.",
"Files Versioning" => "Dateiversionierung",
"Enable" => "Aktivieren"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Λήξη όλων των εκδόσεων",
"History" => "Ιστορικό",
"Versions" => "Εκδόσεις",
"This will delete all existing backup versions of your files" => "Αυτό θα διαγράψει όλες τις υπάρχουσες εκδόσεις των αντιγράφων ασφαλείας των αρχείων σας",
"Files Versioning" => "Εκδόσεις Αρχείων",
"Enable" => "Ενεργοποίηση"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Eksvalidigi ĉiujn eldonojn",
"History" => "Historio",
"Versions" => "Eldonoj",
"This will delete all existing backup versions of your files" => "Ĉi tio forigos ĉiujn estantajn sekurkopiajn eldonojn de viaj dosieroj",
"Files Versioning" => "Dosiereldonigo",
"Enable" => "Kapabligi"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas las versiones",
"History" => "Historial",
"Versions" => "Versiones",
"This will delete all existing backup versions of your files" => "Esto eliminará todas las versiones guardadas como copia de seguridad de tus archivos",
"Files Versioning" => "Versionado de archivos",
"Enable" => "Habilitar"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas las versiones",
"History" => "Historia",
"Versions" => "Versiones",
"This will delete all existing backup versions of your files" => "Hacer estom borrará todas las versiones guardadas como copia de seguridad de tus archivos",
"Files Versioning" => "Versionado de archivos",
"Enable" => "Activar"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Kõikide versioonide aegumine",
"History" => "Ajalugu",
"Versions" => "Versioonid",
"This will delete all existing backup versions of your files" => "See kustutab kõik sinu failidest tehtud varuversiooni",
"Files Versioning" => "Failide versioonihaldus",
"Enable" => "Luba"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Iraungi bertsio guztiak",
"History" => "Historia",
"Versions" => "Bertsioak",
"This will delete all existing backup versions of your files" => "Honek zure fitxategien bertsio guztiak ezabatuko ditu",
"Files Versioning" => "Fitxategien Bertsioak",
"Enable" => "Gaitu"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Vanhenna kaikki versiot",
"History" => "Historia",
"Versions" => "Versiot",
"This will delete all existing backup versions of your files" => "Tämä poistaa kaikki tiedostojesi olemassa olevat varmuuskopioversiot",
"Files Versioning" => "Tiedostojen versiointi",
"Enable" => "Käytä"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Supprimer les versions intermédiaires",
"History" => "Historique",
"Versions" => "Versions",
"This will delete all existing backup versions of your files" => "Cette opération va effacer toutes les versions intermédiaires de vos fichiers (et ne garder que la dernière version en date).",
"Files Versioning" => "Versionnage des fichiers",
"Enable" => "Activer"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Caducan todas as versións",
"History" => "Historial",
"Versions" => "Versións",
"This will delete all existing backup versions of your files" => "Isto eliminará todas as copias de seguranza que haxa dos seus ficheiros",
"Files Versioning" => "Sistema de versión de ficheiros",
"Enable" => "Activar"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "הפגת תוקף כל הגרסאות",
"History" => "היסטוריה",
"Versions" => "גרסאות",
"This will delete all existing backup versions of your files" => "פעולה זו תמחק את כל גיבויי הגרסאות הקיימים של הקבצים שלך",
"Files Versioning" => "שמירת הבדלי גרסאות של קבצים",
"Enable" => "הפעלה"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Az összes korábbi változat törlése",
"History" => "Korábbi változatok",
"Versions" => "Az állományok korábbi változatai",
"This will delete all existing backup versions of your files" => "Itt törölni tudja állományainak összes korábbi verzióját",
"Files Versioning" => "Az állományok verzionálása",
"Enable" => "engedélyezve"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "kadaluarsakan semua versi",
"History" => "riwayat",
"Versions" => "versi",
"This will delete all existing backup versions of your files" => "ini akan menghapus semua versi backup yang ada dari file anda",
"Files Versioning" => "pembuatan versi file",
"Enable" => "aktifkan"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Úrelda allar útgáfur",
"History" => "Saga",
"Versions" => "Útgáfur",
"This will delete all existing backup versions of your files" => "Þetta mun eyða öllum afritum af skránum þínum",
"Files Versioning" => "Útgáfur af skrám",
"Enable" => "Virkja"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Scadenza di tutte le versioni",
"History" => "Cronologia",
"Versions" => "Versioni",
"This will delete all existing backup versions of your files" => "Ciò eliminerà tutte le versioni esistenti dei tuoi file",
"Files Versioning" => "Controllo di versione dei file",
"Enable" => "Abilita"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "すべてのバージョンを削除する",
"History" => "履歴",
"Versions" => "バージョン",
"This will delete all existing backup versions of your files" => "これは、あなたのファイルのすべてのバックアップバージョンを削除します",
"Files Versioning" => "ファイルのバージョン管理",
"Enable" => "有効化"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "모든 버전 삭제",
"History" => "역사",
"Versions" => "버전",
"This will delete all existing backup versions of your files" => "이 파일의 모든 백업 버전을 삭제합니다",
"Files Versioning" => "파일 버전 관리",
"Enable" => "사용함"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "وه‌شانه‌کان گشتیان به‌سه‌رده‌چن",
"History" => "مێژوو",
"Versions" => "وه‌شان",
"This will delete all existing backup versions of your files" => "ئه‌مه‌ سه‌رجه‌م پاڵپشتی وه‌شانه‌ هه‌بووه‌کانی په‌ڕگه‌کانت ده‌سڕینته‌وه",
"Files Versioning" => "وه‌شانی په‌ڕگه",
"Enable" => "چالاککردن"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Panaikinti visų versijų galiojimą",
"History" => "Istorija",
"Versions" => "Versijos",
"This will delete all existing backup versions of your files" => "Tai ištrins visas esamas failo versijas",
"Files Versioning" => "Failų versijos",
"Enable" => "Įjungti"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Истечи ги сите верзии",
"History" => "Историја",
"Versions" => "Версии",
"This will delete all existing backup versions of your files" => "Ова ќе ги избрише сите постоечки резервни копии од вашите датотеки",
"Files Versioning" => "Верзии на датотеки",
"Enable" => "Овозможи"
);

View File

@ -1,7 +1,5 @@
<?php $TRANSLATIONS = array(
"History" => "Historie",
"Versions" => "Versjoner",
"This will delete all existing backup versions of your files" => "Dette vil slette alle tidligere versjoner av alle filene dine",
"Files Versioning" => "Fil versjonering",
"Enable" => "Aktiver"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Alle versies laten verlopen",
"History" => "Geschiedenis",
"Versions" => "Versies",
"This will delete all existing backup versions of your files" => "Dit zal alle bestaande backup versies van uw bestanden verwijderen",
"Files Versioning" => "Bestand versies",
"Enable" => "Activeer"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Wygasają wszystkie wersje",
"History" => "Historia",
"Versions" => "Wersje",
"This will delete all existing backup versions of your files" => "Spowoduje to usunięcie wszystkich istniejących wersji kopii zapasowych plików",
"Files Versioning" => "Wersjonowanie plików",
"Enable" => "Włącz"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas as versões",
"History" => "Histórico",
"Versions" => "Versões",
"This will delete all existing backup versions of your files" => "Isso removerá todas as versões de backup existentes dos seus arquivos",
"Files Versioning" => "Versionamento de Arquivos",
"Enable" => "Habilitar"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas as versões",
"History" => "Histórico",
"Versions" => "Versões",
"This will delete all existing backup versions of your files" => "Isto irá apagar todas as versões de backup do seus ficheiros",
"Files Versioning" => "Versionamento de Ficheiros",
"Enable" => "Activar"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expiră toate versiunile",
"History" => "Istoric",
"Versions" => "Versiuni",
"This will delete all existing backup versions of your files" => "Această acțiune va șterge toate versiunile salvate ale fișierelor tale",
"Files Versioning" => "Versionare fișiere",
"Enable" => "Activare"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Просрочить все версии",
"History" => "История",
"Versions" => "Версии",
"This will delete all existing backup versions of your files" => "Очистить список версий ваших файлов",
"Files Versioning" => "Версии файлов",
"Enable" => "Включить"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Срок действия всех версий истекает",
"History" => "История",
"Versions" => "Версии",
"This will delete all existing backup versions of your files" => "Это приведет к удалению всех существующих версий резервной копии Ваших файлов",
"Files Versioning" => "Файлы управления версиями",
"Enable" => "Включить"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "සියලු අනුවාද අවලංගු කරන්න",
"History" => "ඉතිහාසය",
"Versions" => "අනුවාද",
"This will delete all existing backup versions of your files" => "මෙයින් ඔබගේ ගොනුවේ රක්ශිත කරනු ලැබු අනුවාද සියල්ල මකා දමනු ලැබේ",
"Files Versioning" => "ගොනු අනුවාදයන්",
"Enable" => "සක්‍රිය කරන්න"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Expirovať všetky verzie",
"History" => "História",
"Versions" => "Verzie",
"This will delete all existing backup versions of your files" => "Budú zmazané všetky zálohované verzie vašich súborov",
"Files Versioning" => "Vytváranie verzií súborov",
"Enable" => "Zapnúť"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Zastaraj vse različice",
"History" => "Zgodovina",
"Versions" => "Različice",
"This will delete all existing backup versions of your files" => "S tem bodo izbrisane vse obstoječe različice varnostnih kopij vaših datotek",
"Files Versioning" => "Sledenje različicam",
"Enable" => "Omogoči"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Upphör alla versioner",
"History" => "Historik",
"Versions" => "Versioner",
"This will delete all existing backup versions of your files" => "Detta kommer att radera alla befintliga säkerhetskopior av dina filer",
"Files Versioning" => "Versionshantering av filer",
"Enable" => "Aktivera"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "எல்லா பதிப்புகளும் காலாவதியாகிவிட்டது",
"History" => "வரலாறு",
"Versions" => "பதிப்புகள்",
"This will delete all existing backup versions of your files" => "உங்களுடைய கோப்புக்களில் ஏற்கனவே உள்ள ஆதாரநகல்களின் பதிப்புக்களை இவை அழித்துவிடும்",
"Files Versioning" => "கோப்பு பதிப்புகள்",
"Enable" => "இயலுமைப்படுத்துக"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "หมดอายุทุกรุ่น",
"History" => "ประวัติ",
"Versions" => "รุ่น",
"This will delete all existing backup versions of your files" => "นี่จะเป็นลบทิ้งไฟล์รุ่นที่ทำการสำรองข้อมูลทั้งหมดที่มีอยู่ของคุณทิ้งไป",
"Files Versioning" => "การกำหนดเวอร์ชั่นของไฟล์",
"Enable" => "เปิดใช้งาน"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Tüm sürümleri sona erdir",
"History" => "Geçmiş",
"Versions" => "Sürümler",
"This will delete all existing backup versions of your files" => "Bu dosyalarınızın tüm yedek sürümlerini silecektir",
"Files Versioning" => "Dosya Sürümleri",
"Enable" => "Etkinleştir"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Термін дії всіх версій",
"History" => "Історія",
"Versions" => "Версії",
"This will delete all existing backup versions of your files" => "Це призведе до знищення всіх існуючих збережених версій Ваших файлів",
"Files Versioning" => "Версії файлів",
"Enable" => "Включити"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "Hết hạn tất cả các phiên bản",
"History" => "Lịch sử",
"Versions" => "Phiên bản",
"This will delete all existing backup versions of your files" => "Khi bạn thực hiện thao tác này sẽ xóa tất cả các phiên bản sao lưu hiện có ",
"Files Versioning" => "Phiên bản tập tin",
"Enable" => "Bật "
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "作废所有版本",
"History" => "历史",
"Versions" => "版本",
"This will delete all existing backup versions of your files" => "这将删除所有您现有文件的备份版本",
"Files Versioning" => "文件版本",
"Enable" => "启用"
);

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "过期所有版本",
"History" => "历史",
"Versions" => "版本",
"This will delete all existing backup versions of your files" => "将会删除您的文件的所有备份版本",
"Files Versioning" => "文件版本",
"Enable" => "开启"
);

View File

@ -1,7 +1,5 @@
<?php $TRANSLATIONS = array(
"Expire all versions" => "所有逾期的版本",
"History" => "歷史",
"Versions" => "版本",
"Files Versioning" => "檔案版本化中...",
"Enable" => "啟用"
);

View File

@ -39,15 +39,15 @@ class Hooks {
* cleanup the versions directory if the actual file gets deleted
*/
public static function remove_hook($params) {
$versions_fileview = \OCP\Files::getStorage('files_versions');
$rel_path = $params['path'];
$abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$rel_path.'.v';
if(Storage::isversioned($rel_path)) {
$versions = Storage::getVersions($rel_path);
foreach ($versions as $v) {
unlink($abs_path . $v['version']);
}
}
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
$versions = new Storage( new \OC_FilesystemView('') );
$path = $params[\OC_Filesystem::signal_param_path];
if($path<>'') $versions->delete( $path );
}
}
/**
@ -58,18 +58,16 @@ class Hooks {
* of the stored versions along the actual file
*/
public static function rename_hook($params) {
$versions_fileview = \OCP\Files::getStorage('files_versions');
$rel_oldpath = $params['oldpath'];
$abs_oldpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$rel_oldpath.'.v';
$abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$params['newpath'].'.v';
if(Storage::isversioned($rel_oldpath)) {
$info=pathinfo($abs_newpath);
if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
$versions = Storage::getVersions($rel_oldpath);
foreach ($versions as $v) {
rename($abs_oldpath.$v['version'], $abs_newpath.$v['version']);
}
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
$versions = new Storage( new \OC_FilesystemView('') );
$oldpath = $params['oldpath'];
$newpath = $params['newpath'];
if($oldpath<>'' && $newpath<>'') $versions->rename( $oldpath, $newpath );
}
}
}

View File

@ -1,6 +1,7 @@
<?php
/**
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org>
* 2013 Bjoern Schiessle <schiessle@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
@ -16,24 +17,23 @@ namespace OCA_Versions;
class Storage {
// config.php configuration:
// - files_versions
// - files_versionsfolder
// - files_versionsblacklist
// - files_versionsmaxfilesize
// - files_versionsinterval
// - files_versionmaxversions
//
// todo:
// - finish porting to OC_FilesystemView to enable network transparency
// - add transparent compression. first test if it´s worth it.
const DEFAULTENABLED=true;
const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp';
const DEFAULTMAXFILESIZE=1048576; // 10MB
const DEFAULTMININTERVAL=60; // 1 min
const DEFAULTMAXVERSIONS=50;
const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota
private static $max_versions_per_interval = array(
1 => array('intervalEndsAfter' => 10, //first 10sec, one version every 2sec
'step' => 2),
2 => array('intervalEndsAfter' => 60, //next minute, one version every 10sec
'step' => 10),
3 => array('intervalEndsAfter' => 3600, //next hour, one version every minute
'step' => 60),
4 => array('intervalEndsAfter' => 86400, //next 24h, one version every hour
'step' => 3600),
5 => array('intervalEndsAfter' => 2592000, //next 30days, one version per day
'step' => 86400),
6 => array('intervalEndsAfter' => -1, //until the end one version per week
'step' => 604800),
);
private static function getUidAndFilename($filename)
{
@ -72,55 +72,77 @@ class Storage {
return false;
}
// check filetype blacklist
$blacklist=explode(' ', \OCP\Config::getSystemValue('files_versionsblacklist', Storage::DEFAULTBLACKLIST));
foreach($blacklist as $bl) {
$parts=explode('.', $filename);
$ext=end($parts);
if(strtolower($ext)==$bl) {
return false;
}
}
// we should have a source file to work with
if (!$files_view->file_exists($filename)) {
return false;
}
// check filesize
if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)) {
return false;
}
// check mininterval if the file is being modified by the owner (all shared files should be versioned despite mininterval)
if ($uid == \OCP\User::getUser()) {
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
$matches=glob($versionsName.'.v*');
sort($matches);
$parts=explode('.v', end($matches));
if((end($parts)+Storage::DEFAULTMININTERVAL)>time()) {
return false;
}
}
// create all parent folders
$info=pathinfo($filename);
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$users_view->getAbsolutePath('files_versions/');
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
}
// store a new version of a file
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.time());
$result = $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
$versionsSize = self::calculateSize($uid);
}
$versionsSize += $users_view->filesize('files'.$filename);
// expire old revisions if necessary
Storage::expire($filename);
$newSize = self::expire($filename, $versionsSize);
if ( $newSize != $versionsSize ) {
\OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
}
}
}
/**
* Delete versions of a file
*/
public static function delete($filename) {
list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.$uid .'/files_versions');
$abs_path = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('').$filename.'.v';
if( ($versions = self::getVersions($filename)) ) {
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
$versionsSize = self::calculateSize($uid);
}
foreach ($versions as $v) {
unlink($abs_path . $v['version']);
$versionsSize -= $v['size'];
}
\OCP\Config::setAppValue('files_versions', 'size', $versionsSize);
}
}
/**
* rename versions of a file
*/
public static function rename($oldpath, $newpath) {
list($uid, $oldpath) = self::getUidAndFilename($oldpath);
list($uidn, $newpath) = self::getUidAndFilename($newpath);
$versions_view = new \OC_FilesystemView('/'.$uid .'/files_versions');
$files_view = new \OC_FilesystemView('/'.$uid .'/files');
$abs_newpath = \OCP\Config::getSystemValue('datadirectory').$versions_view->getAbsolutePath('').$newpath;
if ( $files_view->is_dir($oldpath) && $versions_view->is_dir($oldpath) ) {
$versions_view->rename($oldpath, $newpath);
} else if ( ($versions = Storage::getVersions($oldpath)) ) {
$info=pathinfo($abs_newpath);
if(!file_exists($info['dirname'])) mkdir($info['dirname'], 0750, true);
$versions = Storage::getVersions($oldpath);
foreach ($versions as $v) {
$versions_view->rename($oldpath.'.v'.$v['version'], $newpath.'.v'.$v['version']);
}
}
}
/**
* rollback to an old version of a file.
*/
@ -129,45 +151,29 @@ class Storage {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
$users_view = new \OC_FilesystemView('/'.$uid);
$versionCreated = false;
//first create a new version
$version = 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename);
if ( !$users_view->file_exists($version)) {
$users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename));
$versionCreated = true;
}
// rollback
if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
$users_view->touch('files'.$filename, $revision);
Storage::expire($filename);
return true;
}else{
return false;
}else if ( $versionCreated ) {
$users_view->unlink($version);
}
}
return false;
}
/**
* check if old versions of a file exist.
*/
public static function isversioned($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
// check for old versions
$matches=glob($versionsName.'.v*');
if(count($matches)>0) {
return true;
}else{
return false;
}
}else{
return(false);
}
}
/**
* @brief get a list of all available versions of a file in descending chronological order
@ -187,92 +193,232 @@ class Storage {
sort( $matches );
$i = 0;
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
$files_view = new \OC_FilesystemView('/'.$uid.'/files');
$local_file = $files_view->getLocalFile($filename);
foreach( $matches as $ma ) {
$i++;
$versions[$i]['cur'] = 0;
foreach( $matches as $ma ) {
$parts = explode( '.v', $ma );
$versions[$i]['version'] = ( end( $parts ) );
$version = ( end( $parts ) );
$key = $version.'#'.$filename;
$versions[$key]['cur'] = 0;
$versions[$key]['version'] = $version;
$versions[$key]['path'] = $filename;
$versions[$key]['size'] = $versions_fileview->filesize($filename.'.v'.$version);
// if file with modified date exists, flag it in array as currently enabled version
( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$i]['fileMatch'] = 1 : $versions[$i]['fileMatch'] = 0 );
( \md5_file( $ma ) == \md5_file( $local_file ) ? $versions[$key]['fileMatch'] = 1 : $versions[$key]['fileMatch'] = 0 );
}
$versions = array_reverse( $versions );
foreach( $versions as $key => $value ) {
// flag the first matched file in array (which will have latest modification date) as current version
if ( $value['fileMatch'] ) {
$value['cur'] = 1;
break;
}
}
$versions = array_reverse( $versions );
// only show the newest commits
if( $count != 0 and ( count( $versions )>$count ) ) {
$versions = array_slice( $versions, count( $versions ) - $count );
}
return( $versions );
} else {
// if versioning isn't enabled then return an empty array
return( array() );
}
}
/**
* @brief get the size of all stored versions from a given user
* @param $uid id from the user
* @return size of vesions
*/
private static function calculateSize($uid) {
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
$size = 0;
foreach ($iterator as $path) {
if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
$relpath = substr($path, strlen($versionsRoot)-1);
$size += $versions_fileview->filesize($relpath);
}
}
return $size;
}
}
/**
* @brief returns all stored file versions from a given user
* @param $uid id to the user
* @return array with contains two arrays 'all' which contains all versions sorted by age and 'by_file' which contains all versions sorted by filename
*/
private static function getAllVersions($uid) {
if( \OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true' ) {
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsRoot = \OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath('');
$iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($versionsRoot), \RecursiveIteratorIterator::CHILD_FIRST);
$versions = array();
foreach ($iterator as $path) {
if ( preg_match('/^.+\.v(\d+)$/', $path, $match) ) {
$relpath = substr($path, strlen($versionsRoot)-1);
$versions[$match[1].'#'.$relpath] = array('path' => $relpath, 'timestamp' => $match[1]);
}
}
ksort($versions);
$i = 0;
$result = array();
foreach( $versions as $key => $value ) {
$i++;
$size = $versions_fileview->filesize($value['path']);
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
$result['all'][$key]['version'] = $value['timestamp'];
$result['all'][$key]['path'] = $filename;
$result['all'][$key]['size'] = $size;
$filename = substr($value['path'], 0, -strlen($value['timestamp'])-2);
$result['by_file'][$filename][$key]['version'] = $value['timestamp'];
$result['by_file'][$filename][$key]['path'] = $filename;
$result['by_file'][$filename][$key]['size'] = $size;
}
return $result;
}
}
/**
* @brief Erase a file's versions which exceed the set quota
*/
public static function expire($filename) {
private static function expire($filename, $versionsSize = null) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
list($uid, $filename) = self::getUidAndFilename($filename);
$versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename);
// check for old versions
$matches = glob( $versionsName.'.v*' );
if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) {
$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS );
// delete old versions of a file
$deleteItems = array_slice( $matches, 0, $numberToDelete );
foreach( $deleteItems as $de ) {
unlink( $versionsName.'.v'.$de );
// get available disk space for user
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota'));
if ( $quota == null ) {
$quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
}
if ( $quota == null ) {
$quota = \OC_Filesystem::free_space('/');
}
// make sure that we have the current size of the version history
if ( $versionsSize === null ) {
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
$versionsSize = self::calculateSize($uid);
}
}
}
}
/**
* @brief Erase all old versions of all user files
* @return true/false
*/
public function expireAll() {
$view = \OCP\Files::getStorage('files_versions');
return $view->deleteAll('', true);
// calculate available space for version history
$rootInfo = \OC_FileCache::get('', '/'. $uid . '/files');
$free = $quota-$rootInfo['size']; // remaining free space for user
if ( $free > 0 ) {
$availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions
} else {
$availableSpace = $free-$versionsSize;
}
// after every 1000s run reduce the number of all versions not only for the current file
$random = rand(0, 1000);
if ($random == 0) {
$result = Storage::getAllVersions($uid);
$versions_by_file = $result['by_file'];
$all_versions = $result['all'];
} else {
$all_versions = Storage::getVersions($filename);
$versions_by_file[$filename] = $all_versions;
}
$time = time();
// it is possible to expire versions from more than one file
// iterate through all given files
foreach ($versions_by_file as $filename => $versions) {
$versions = array_reverse($versions); // newest version first
$interval = 1;
$step = Storage::$max_versions_per_interval[$interval]['step'];
if (Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1) {
$nextInterval = -1;
} else {
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
}
$firstVersion = reset($versions);
$firstKey = key($versions);
$prevTimestamp = $firstVersion['version'];
$nextVersion = $firstVersion['version'] - $step;
$remaining_versions[$firstKey] = $firstVersion;
unset($versions[$firstKey]);
foreach ($versions as $key => $version) {
$newInterval = true;
while ( $newInterval ) {
if ( $nextInterval == -1 || $version['version'] >= $nextInterval ) {
if ( $version['version'] > $nextVersion ) {
//distance between two version too small, delete version
$versions_fileview->unlink($version['path'].'.v'.$version['version']);
$availableSpace += $version['size'];
$versionsSize -= $version['size'];
unset($all_versions[$key]); // update array with all versions
} else {
$nextVersion = $version['version'] - $step;
}
$newInterval = false; // version checked so we can move to the next one
} else { // time to move on to the next interval
$interval++;
$step = Storage::$max_versions_per_interval[$interval]['step'];
$nextVersion = $prevTimestamp - $step;
if ( Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'] == -1 ) {
$nextInterval = -1;
} else {
$nextInterval = $time - Storage::$max_versions_per_interval[$interval]['intervalEndsAfter'];
}
$newInterval = true; // we changed the interval -> check same version with new interval
}
}
$prevTimestamp = $version['version'];
}
}
// check if enough space is available after versions are rearranged.
// if not we delete the oldest versions until we meet the size limit for versions
$numOfVersions = count($all_versions);
$i = 0;
while ($availableSpace < 0) {
if ($i = $numOfVersions-2) break; // keep at least the last version
$versions_fileview->unlink($all_versions[$i]['path'].'.v'.$all_versions[$i]['version']);
$versionsSize -= $all_versions[$i]['size'];
$availableSpace += $all_versions[$i]['size'];
$i++;
}
return $versionsSize; // finally return the new size of the version history
}
return false;
}
}

View File

@ -1,7 +0,0 @@
<?php
$tmpl = new OCP\Template( 'files_versions', 'settings-personal');
OCP\Util::addscript('files_versions', 'settings-personal');
return $tmpl->fetchPage();

View File

@ -1,12 +0,0 @@
<form id="versions">
<fieldset class="personalblock">
<legend>
<strong><?php echo $l->t('Versions'); ?></strong>
</legend>
<button id="expireAllBtn">
<?php echo $l->t('Expire all versions'); ?>
<img style="display: none;" class="expireAllLoading" src="<?php echo OCP\Util::imagePath('core', 'loading.gif'); ?>" />
</button>
<br /><em><?php echo $l->t('This will delete all existing backup versions of your files'); ?></em>
</fieldset>
</form>

View File

@ -1,6 +1,6 @@
<form id="versionssettings">
<fieldset class="personalblock">
<legend><strong><?php echo $l->t('Files Versioning');?></strong></legend>
<input type="checkbox" name="versions" id="versions" value="1" <?php if (OCP\Config::getSystemValue('versions', 'true')=='true') echo ' checked="checked"'; ?> /> <label for="versions"><?php echo $l->t('Enable'); ?></label> <br/>
</fieldset>
<fieldset class="personalblock">
<legend><strong><?php echo $l->t('Files Versioning');?></strong></legend>
<input type="checkbox" name="versions" id="versions" value="1" <?php if (OCP\Config::getSystemValue('versions', 'true')=='true') echo ' checked="checked"'; ?> /> <label for="versions"><?php echo $l->t('Enable'); ?></label> <br/>
</fieldset>
</form>

View File

@ -2,9 +2,11 @@
width: 20%;
max-width: 200px;
display: inline-block;
vertical-align: top;
padding-top: 9px;
}
#ldap fieldset input {
#ldap fieldset input, #ldap fieldset textarea {
width: 70%;
display: inline-block;
}

View File

@ -1,3 +1,4 @@
<?php $TRANSLATIONS = array(
"Password" => "كلمة المرور"
"Password" => "كلمة المرور",
"Help" => "المساعدة"
);

View File

@ -1,9 +1,10 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Avís:</b> Les aplicacions user_ldap i user_webdavauth són incompatibles. Podeu experimentar comportaments no desitjats. Demaneu a l'administrador del sistema que en desactivi una.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Avís:</b> El mòdul PHP LDAP necessari no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Avís:</b> El mòdul PHP LDAP no està instal·lat, el dorsal no funcionarà. Demaneu a l'administrador del sistema que l'instal·li.",
"Host" => "Màquina",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podeu ometre el protocol, excepte si requeriu SSL. Llavors comenceu amb ldaps://",
"Base DN" => "DN Base",
"One Base DN per line" => "Una DN Base per línia",
"You can specify Base DN for users and groups in the Advanced tab" => "Podeu especificar DN Base per usuaris i grups a la pestanya Avançat",
"User DN" => "DN Usuari",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "La DN de l'usuari client amb la que s'haurà de fer, per exemple uid=agent,dc=exemple,dc=com. Per un accés anònim, deixeu la DN i la contrasenya en blanc.",
@ -20,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "sense cap paràmetre de substitució, per exemple \"objectClass=grupPosix\".",
"Port" => "Port",
"Base User Tree" => "Arbre base d'usuaris",
"One User Base DN per line" => "Una DN Base d'Usuari per línia",
"Base Group Tree" => "Arbre base de grups",
"One Group Base DN per line" => "Una DN Base de Grup per línia",
"Group-Member association" => "Associació membres-grup",
"Use TLS" => "Usa TLS",
"Do not use it for SSL connections, it will fail." => "No ho useu en connexions SSL, fallarà.",

View File

@ -1,9 +1,10 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Varování:</b> Aplikace user_ldap a user_webdavauth nejsou kompatibilní. Může nastávat neočekávané chování. Požádejte, prosím, správce systému aby jednu z nich zakázal.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Varování:</b> není nainstalován LDAP modul pro PHP, podpůrná vrstva nebude fungovat. Požádejte, prosím, správce systému aby jej nainstaloval.",
"<b>Warning:</b> The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Varování:</b> není nainstalován LDAP modul pro PHP, podpůrná vrstva nebude fungovat. Požádejte, prosím, správce systému aby jej nainstaloval.",
"Host" => "Počítač",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Můžete vynechat protokol, vyjma pokud požadujete SSL. Tehdy začněte s ldaps://",
"Base DN" => "Základní DN",
"One Base DN per line" => "Jedna základní DN na řádku",
"You can specify Base DN for users and groups in the Advanced tab" => "V rozšířeném nastavení můžete určit základní DN pro uživatele a skupiny",
"User DN" => "Uživatelské DN",
"The DN of the client user with which the bind shall be done, e.g. uid=agent,dc=example,dc=com. For anonymous access, leave DN and Password empty." => "DN klentského uživatele ke kterému tvoříte vazbu, např. uid=agent,dc=example,dc=com. Pro anonymní přístup ponechte údaje DN and Heslo prázdné.",
@ -20,7 +21,9 @@
"without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez zástupných znaků, např. \"objectClass=posixGroup\".",
"Port" => "Port",
"Base User Tree" => "Základní uživatelský strom",
"One User Base DN per line" => "Jedna uživatelská základní DN na řádku",
"Base Group Tree" => "Základní skupinový strom",
"One Group Base DN per line" => "Jedna skupinová základní DN na řádku",
"Group-Member association" => "Asociace člena skupiny",
"Use TLS" => "Použít TLS",
"Do not use it for SSL connections, it will fail." => "Nepoužívejte pro připojení pomocí SSL, připojení selže.",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Warnung:</b> Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitte Deinen Systemadministator eine der beiden Anwendungen zu deaktivieren.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Warnung:</b> Das PHP-Modul, das LDAP benöntigt, ist nicht installiert. Das Backend wird nicht funktionieren. Bitte deinen Systemadministrator das Modul zu installieren.",
"Host" => "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Du kannst das Protokoll auslassen, außer wenn Du SSL benötigst. Beginne dann mit ldaps://",
"Base DN" => "Basis-DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Warnung:</b> Die Anwendungen user_ldap und user_webdavauth sind inkompatibel. Es kann demzufolge zu unerwarteten Verhalten kommen. Bitten Sie Ihren Systemadministator eine der beiden Anwendungen zu deaktivieren.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Warnung:</b> Das PHP-Modul, das LDAP benöntigt, ist nicht installiert. Das Backend wird nicht funktionieren. Bitten Sie Ihren Systemadministrator das Modul zu installieren.",
"Host" => "Host",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Sie können das Protokoll auslassen, außer wenn Sie SSL benötigen. Beginnen Sie dann mit ldaps://",
"Base DN" => "Basis-DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Προσοχή:</b> Οι εφαρμογές user_ldap και user_webdavauth είναι ασύμβατες. Μπορεί να αντιμετωπίσετε απρόβλεπτη συμπεριφορά. Παρακαλώ ζητήστε από τον διαχειριστή συστήματος να απενεργοποιήσει μία από αυτές.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Προσοχή:</b> Το PHP LDAP module που απαιτείται δεν είναι εγκατεστημένο και ο μηχανισμός δεν θα λειτουργήσει. Παρακαλώ ζητήστε από τον διαχειριστή του συστήματος να το εγκαταστήσει.",
"Host" => "Διακομιστής",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Μπορείτε να παραλείψετε το πρωτόκολλο, εκτός αν απαιτείται SSL. Σε αυτή την περίπτωση ξεκινήστε με ldaps://",
"Base DN" => "Base DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Advertencia:</b> Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Advertencia:</b> El módulo PHP LDAP necesario no está instalado, el sistema no funcionará. Pregunte al administrador del sistema para instalarlo.",
"Host" => "Servidor",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Puede omitir el protocolo, excepto si requiere SSL. En ese caso, empiece con ldaps://",
"Base DN" => "DN base",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Advertencia:</b> Los Apps user_ldap y user_webdavauth son incompatibles. Puede que experimente un comportamiento inesperado. Pregunte al administrador del sistema para desactivar uno de ellos.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Advertencia:</b> El módulo PHP LDAP necesario no está instalado, el sistema no funcionará. Pregunte al administrador del sistema para instalarlo.",
"Host" => "Servidor",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Podés omitir el protocolo, excepto si SSL es requerido. En ese caso, empezá con ldaps://",
"Base DN" => "DN base",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Abisua:</b> user_ldap eta user_webdavauth aplikazioak bateraezinak dira. Portaera berezia izan dezakezu. Mesedez eskatu zure sistema kudeatzaileari bietako bat desgaitzeko.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Abisua:</b> PHPk behar duen LDAP modulua ez dago instalaturik, motorrak ez du funtzionatuko. Mesedez eskatu zure sistema kudeatzaileari instala dezan.",
"Host" => "Hostalaria",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Protokoloa ez da beharrezkoa, SSL behar baldin ez baduzu. Honela bada hasi ldaps://",
"Base DN" => "Oinarrizko DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Avertissement:</b> Les applications user_ldap et user_webdavauth sont incompatibles. Des disfonctionnements peuvent survenir. Contactez votre administrateur système pour qu'il désactive l'une d'elles.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Avertissement:</b> Le module PHP LDAP requis n'est pas installé, l'application ne marchera pas. Contactez votre administrateur système pour qu'il l'installe.",
"Host" => "Hôte",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Vous pouvez omettre le protocole, sauf si vous avez besoin de SSL. Dans ce cas préfixez avec ldaps://",
"Base DN" => "DN Racine",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array(
"<b>Warning:</b> Apps user_ldap and user_webdavauth are incompatible. You may experience unexpected behaviour. Please ask your system administrator to disable one of them." => "<b>Aviso:</b> Os aplicativos user_ldap e user_webdavauth son incompatíbeis. Pode acontecer un comportamento estraño. Consulte co administrador do sistema para desactivar un deles.",
"<b>Warning:</b> The PHP LDAP module needs is not installed, the backend will not work. Please ask your system administrator to install it." => "<b>Aviso:</b> O módulo PHP LDAP é necesario e non está instalado, a infraestrutura non funcionará. Consulte co administrador do sistema para instalalo.",
"Host" => "Servidor",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Pode omitir o protocolo agás que precise de SSL. Nese caso comece con ldaps://",
"Base DN" => "DN base",

View File

@ -0,0 +1,12 @@
<?php $TRANSLATIONS = array(
"Host" => "מארח",
"User DN" => "DN משתמש",
"Password" => "סיסמא",
"For anonymous access, leave DN and Password empty." => "לגישה אנונימית, השאר את הDM והסיסמא ריקים.",
"User Login Filter" => "סנן כניסת משתמש",
"User List Filter" => "סנן רשימת משתמשים",
"Group Filter" => "סנן קבוצה",
"in bytes" => "בבתים",
"in seconds. A change empties the cache." => "בשניות. שינוי מרוקן את המטמון.",
"Help" => "עזרה"
);

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