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) { 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 { } 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']:''; $dir=isset($_GET['dir'])?$_GET['dir']:'';
$checkOnly=isset($_GET['checkonly']) and $_GET['checkonly']=='true'; $checkOnly=isset($_GET['checkonly']) and $_GET['checkonly']=='true';
$eventSource=false;
if(!$checkOnly) { if(!$checkOnly) {
$eventSource=new OC_EventSource(); $eventSource=new OC_EventSource();
} }
session_write_close(); session_write_close();
//create the file cache if necesary //create the file cache if necessary
if($force or !OC_FileCache::inCache('')) { if($force or !OC_FileCache::inCache('')) {
if(!$checkOnly) { if(!$checkOnly) {
OCP\DB::beginTransaction(); OCP\DB::beginTransaction();

View File

@ -10,8 +10,17 @@ OCP\JSON::checkLoggedIn();
OCP\JSON::callCheck(); OCP\JSON::callCheck();
$l=OC_L10N::get('files'); $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'])) { 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(); exit();
} }
@ -28,7 +37,10 @@ foreach ($_FILES['files']['error'] as $error) {
UPLOAD_ERR_NO_TMP_DIR=>$l->t('Missing a temporary folder'), UPLOAD_ERR_NO_TMP_DIR=>$l->t('Missing a temporary folder'),
UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'), 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(); exit();
} }
} }
@ -42,7 +54,9 @@ foreach($files['size'] as $size) {
$totalSize+=$size; $totalSize+=$size;
} }
if($totalSize>OC_Filesystem::free_space($dir)) { 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(); 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)) { if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
$meta = OC_FileCache::get($target); $meta = OC_FileCache::get($target);
$id = OC_FileCache::getId($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', $result[]=array( 'status' => 'success',
'mime'=>$meta['mimetype'], 'mime'=>$meta['mimetype'],
'size'=>$meta['size'], 'size'=>$meta['size'],
'id'=>$id, 'id'=>$id,
'name'=>basename($target)); 'name'=>basename($target),
'uploadMaxFilesize'=>$maxUploadFilesize,
'maxHumanFilesize'=>$maxHumanFilesize
);
} }
} }
OCP\JSON::encodedPrint($result); OCP\JSON::encodedPrint($result);
@ -69,4 +91,7 @@ if(strpos($dir, '..') === false) {
$error=$l->t( 'Invalid directory.' ); $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>p { cursor:pointer; }
#new>ul>li>form>input { padding:0.3em; margin:-0.3em; } #new>ul>li>form>input { padding:0.3em; margin:-0.3em; }
#upload { #upload {
height:27px; padding:0; margin-left:0.2em; overflow:hidden; height:27px; padding:0; margin-left:0.2em; overflow:hidden;
} }
#upload a { #upload a {
@ -35,7 +35,7 @@
} }
.file_upload_target { display:none; } .file_upload_target { display:none; }
.file_upload_form { display:inline; float:left; margin:0; padding:0; cursor:pointer; overflow:visible; } .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; left:0; top:0; width:28px; height:27px; padding:0;
font-size:1em; font-size:1em;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; -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::addStyle('files', 'files');
OCP\Util::addscript('files', 'jquery.iframe-transport'); OCP\Util::addscript('files', 'jquery.iframe-transport');
OCP\Util::addscript('files', 'jquery.fileupload'); OCP\Util::addscript('files', 'jquery.fileupload');
OCP\Util::addscript('files', 'jquery-visibility');
OCP\Util::addscript('files', 'files'); OCP\Util::addscript('files', 'files');
OCP\Util::addscript('files', 'filelist'); OCP\Util::addscript('files', 'filelist');
OCP\Util::addscript('files', 'fileactions'); OCP\Util::addscript('files', 'fileactions');
@ -38,36 +39,36 @@ OCP\App::setActiveNavigationEntry('files_index');
$dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : ''; $dir = isset($_GET['dir']) ? stripslashes($_GET['dir']) : '';
// Redirect if directory does not exist // Redirect if directory does not exist
if (!OC_Filesystem::is_dir($dir . '/')) { if (!OC_Filesystem::is_dir($dir . '/')) {
header('Location: ' . $_SERVER['SCRIPT_NAME'] . ''); header('Location: ' . $_SERVER['SCRIPT_NAME'] . '');
exit(); exit();
} }
$files = array(); $files = array();
foreach (OC_Files::getdirectorycontent($dir) as $i) { foreach (OC_Files::getdirectorycontent($dir) as $i) {
$i['date'] = OCP\Util::formatDate($i['mtime']); $i['date'] = OCP\Util::formatDate($i['mtime']);
if ($i['type'] == 'file') { if ($i['type'] == 'file') {
$fileinfo = pathinfo($i['name']); $fileinfo = pathinfo($i['name']);
$i['basename'] = $fileinfo['filename']; $i['basename'] = $fileinfo['filename'];
if (!empty($fileinfo['extension'])) { if (!empty($fileinfo['extension'])) {
$i['extension'] = '.' . $fileinfo['extension']; $i['extension'] = '.' . $fileinfo['extension'];
} else { } else {
$i['extension'] = ''; $i['extension'] = '';
} }
} }
if ($i['directory'] == '/') { if ($i['directory'] == '/') {
$i['directory'] = ''; $i['directory'] = '';
} }
$files[] = $i; $files[] = $i;
} }
// Make breadcrumb // Make breadcrumb
$breadcrumb = array(); $breadcrumb = array();
$pathtohere = ''; $pathtohere = '';
foreach (explode('/', $dir) as $i) { foreach (explode('/', $dir) as $i) {
if ($i != '') { if ($i != '') {
$pathtohere .= '/' . $i; $pathtohere .= '/' . $i;
$breadcrumb[] = array('dir' => $pathtohere, 'name' => $i); $breadcrumb[] = array('dir' => $pathtohere, 'name' => $i);
} }
} }
// make breadcrumb und filelist markup // make breadcrumb und filelist markup
@ -79,23 +80,17 @@ $breadcrumbNav = new OCP\Template('files', 'part.breadcrumb', '');
$breadcrumbNav->assign('breadcrumb', $breadcrumb, false); $breadcrumbNav->assign('breadcrumb', $breadcrumb, false);
$breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false); $breadcrumbNav->assign('baseURL', OCP\Util::linkTo('files', 'index.php') . '?dir=', false);
$upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize')); $maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
$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);
$permissions = OCP\PERMISSION_READ; $permissions = OCP\PERMISSION_READ;
if (OC_Filesystem::isUpdatable($dir . '/')) { if (OC_Filesystem::isUpdatable($dir . '/')) {
$permissions |= OCP\PERMISSION_UPDATE; $permissions |= OCP\PERMISSION_UPDATE;
} }
if (OC_Filesystem::isDeletable($dir . '/')) { if (OC_Filesystem::isDeletable($dir . '/')) {
$permissions |= OCP\PERMISSION_DELETE; $permissions |= OCP\PERMISSION_DELETE;
} }
if (OC_Filesystem::isSharable($dir . '/')) { if (OC_Filesystem::isSharable($dir . '/')) {
$permissions |= OCP\PERMISSION_SHARE; $permissions |= OCP\PERMISSION_SHARE;
} }
// information about storage capacities // information about storage capacities

View File

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

View File

@ -26,6 +26,23 @@ Files={
}); });
procesSelection(); 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) { isFileNameValid:function (name) {
if (name === '.') { if (name === '.') {
OC.Notification.show(t('files', '\'.\' is an invalid file name.')); OC.Notification.show(t('files', '\'.\' is an invalid file name.'));
@ -47,19 +64,19 @@ Files={
OC.Notification.hide(); OC.Notification.hide();
return true; return true;
}, },
displayStorageWarnings: function() { displayStorageWarnings: function() {
var usedSpacePercent = $('#usedSpacePercent').val(); var usedSpacePercent = $('#usedSpacePercent').val();
if (usedSpacePercent > 98) { if (usedSpacePercent > 98) {
OC.Notification.show(t('files', 'Your storage is full, files can not be updated or synced anymore!')); OC.Notification.show(t('files', 'Your storage is full, files can not be updated or synced anymore!'));
return; return;
} }
if (usedSpacePercent > 90) { if (usedSpacePercent > 90) {
OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent})); OC.Notification.show(t('files', 'Your storage is almost full ({usedSpacePercent}%)', {usedSpacePercent: usedSpacePercent}));
} }
} }
}; };
$(document).ready(function() { $(document).ready(function() {
Files.bindKeyboardShortcuts(document, jQuery); Files.bindKeyboardShortcuts(document, jQuery);
$('#fileList tr').each(function(){ $('#fileList tr').each(function(){
//little hack to set unescape filenames in attribute //little hack to set unescape filenames in attribute
$(this).attr('data-file',decodeURIComponent($(this).attr('data-file'))); $(this).attr('data-file',decodeURIComponent($(this).attr('data-file')));
@ -94,8 +111,8 @@ $(document).ready(function() {
// Sets the file link behaviour : // Sets the file link behaviour :
$('td.filename a').live('click',function(event) { $('td.filename a').live('click',function(event) {
event.preventDefault();
if (event.ctrlKey || event.shiftKey) { if (event.ctrlKey || event.shiftKey) {
event.preventDefault();
if (event.shiftKey) { if (event.shiftKey) {
var last = $(lastChecked).parent().parent().prevAll().length; var last = $(lastChecked).parent().parent().prevAll().length;
var first = $(this).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 permissions = $(this).parent().parent().data('permissions');
var action=FileActions.getDefault(mime,type, permissions); var action=FileActions.getDefault(mime,type, permissions);
if(action){ if(action){
event.preventDefault();
action(filename); action(filename);
} }
} }
@ -319,8 +337,9 @@ $(document).ready(function() {
var response; var response;
response=jQuery.parseJSON(result); response=jQuery.parseJSON(result);
if(response[0] == undefined || response[0].status != 'success') { 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]; var file=response[0];
// TODO: this doesn't work if the file name has been changed server side // TODO: this doesn't work if the file name has been changed server side
delete uploadingFiles[dirName][file.name]; delete uploadingFiles[dirName][file.name];
@ -371,6 +390,8 @@ $(document).ready(function() {
.success(function(result, textStatus, jqXHR) { .success(function(result, textStatus, jqXHR) {
var response; var response;
response=jQuery.parseJSON(result); response=jQuery.parseJSON(result);
Files.updateMaxUploadFilesize(response);
if(response[0] != undefined && response[0].status == 'success') { if(response[0] != undefined && response[0].status == 'success') {
var file=response[0]; var file=response[0];
delete uploadingFiles[file.name]; delete uploadingFiles[file.name];
@ -382,18 +403,18 @@ $(document).ready(function() {
//TODO update file upload size limit //TODO update file upload size limit
FileList.loadingDone(file.name, file.id); FileList.loadingDone(file.name, file.id);
} else { } else {
Files.cancelUpload(this.files[0].name); Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', response.data.message)); OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut(); $('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove(); $('#fileList > tr').not('[data-mime]').remove();
} }
}) })
.error(function(jqXHR, textStatus, errorThrown) { .error(function(jqXHR, textStatus, errorThrown) {
if(errorThrown === 'abort') { if(errorThrown === 'abort') {
Files.cancelUpload(this.files[0].name); Files.cancelUpload(this.files[0].name);
OC.Notification.show(t('files', 'Upload cancelled.')); OC.Notification.show(t('files', 'Upload cancelled.'));
} }
}); });
uploadingFiles[uniqueName] = jqXHR; uploadingFiles[uniqueName] = jqXHR;
} }
} }
@ -401,6 +422,7 @@ $(document).ready(function() {
data.submit().success(function(data, status) { data.submit().success(function(data, status) {
// in safari data is a string // in safari data is a string
response = jQuery.parseJSON(typeof data === 'string' ? data : data[0].body.innerText); response = jQuery.parseJSON(typeof data === 'string' ? data : data[0].body.innerText);
Files.updateMaxUploadFilesize(response);
if(response[0] != undefined && response[0].status == 'success') { if(response[0] != undefined && response[0].status == 'success') {
var file=response[0]; var file=response[0];
delete uploadingFiles[file.name]; delete uploadingFiles[file.name];
@ -412,7 +434,7 @@ $(document).ready(function() {
//TODO update file upload size limit //TODO update file upload size limit
FileList.loadingDone(file.name, file.id); FileList.loadingDone(file.name, file.id);
} else { } 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)); OC.Notification.show(t('files', response.data.message));
$('#fileList > tr').not('[data-mime]').fadeOut(); $('#fileList > tr').not('[data-mime]').fadeOut();
$('#fileList > tr').not('[data-mime]').remove(); $('#fileList > tr').not('[data-mime]').remove();
@ -713,6 +735,32 @@ $(document).ready(function() {
// display storage warnings // display storage warnings
setTimeout ( "Files.displayStorageWarnings()", 100 ); setTimeout ( "Files.displayStorageWarnings()", 100 );
OC.Notification.setDefault(Files.displayStorageWarnings); 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){ function scanFiles(force,dir){
@ -742,6 +790,7 @@ scanFiles.scanning=false;
function boolOperationFinished(data, callback) { function boolOperationFinished(data, callback) {
result = jQuery.parseJSON(data.responseText); result = jQuery.parseJSON(data.responseText);
Files.updateMaxUploadFilesize(result);
if(result.status == 'success'){ if(result.status == 'success'){
callback.call(); callback.call();
} else { } 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( <?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", "No file was uploaded. Unknown error" => "Keine Datei hochgeladen. Unbekannter Fehler",
"There is no error, the file uploaded with success" => "Datei fehlerfrei hochgeladen.", "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", "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.", "Missing a temporary folder" => "Temporärer Ordner fehlt.",
"Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte", "Failed to write to disk" => "Fehler beim Schreiben auf die Festplatte",
"Not enough space available" => "Nicht genug Speicherplatz verfügbar", "Not enough space available" => "Nicht genug Speicherplatz verfügbar",
"Invalid directory." => "Ungültiges Verzeichnis.", "Invalid directory." => "Ungültiges Verzeichnis",
"Files" => "Dateien", "Files" => "Dateien",
"Unshare" => "Nicht mehr freigeben", "Unshare" => "Nicht mehr freigeben",
"Delete" => "Löschen", "Delete" => "Löschen",
@ -22,8 +25,8 @@
"replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}", "replaced {new_name} with {old_name}" => "{old_name} ersetzt durch {new_name}",
"unshared {files}" => "Freigabe von {files} aufgehoben", "unshared {files}" => "Freigabe von {files} aufgehoben",
"deleted {files}" => "{files} gelöscht", "deleted {files}" => "{files} gelöscht",
"'.' is an invalid file name." => "'.' ist kein gültiger Dateiname.", "'.' is an invalid file name." => "'.' ist kein gültiger Dateiname",
"File name cannot be empty." => "Der Dateiname darf nicht leer sein.", "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.", "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.", "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.", "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", "{count} files uploading" => "{count} Dateien werden hochgeladen",
"Upload cancelled." => "Upload abgebrochen.", "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.", "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", "{count} files scanned" => "{count} Dateien wurden gescannt",
"error while scanning" => "Fehler beim Scannen", "error while scanning" => "Fehler beim Scannen",
"Name" => "Name", "Name" => "Name",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array( <?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", "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.", "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", "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.", "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.", "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.", "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", "{count} files scanned" => "{count} Dateien wurden gescannt",
"error while scanning" => "Fehler beim Scannen", "error while scanning" => "Fehler beim Scannen",
"Name" => "Name", "Name" => "Name",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array( <?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", "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", "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", "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( <?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", "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", "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:", "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}", "replaced {new_name} with {old_name}" => "reemplazado {new_name} con {old_name}",
"unshared {files}" => "{files} se dejaron de compartir", "unshared {files}" => "{files} se dejaron de compartir",
"deleted {files}" => "{files} borrados", "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.", "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.", "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", "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", "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á.", "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", "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", "{count} files scanned" => "{count} archivos escaneados",
"error while scanning" => "error mientras se escaneaba", "error while scanning" => "error mientras se escaneaba",
"Name" => "Nombre", "Name" => "Nombre",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array( <?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.", "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", "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", "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}", "replaced {new_name} with {old_name}" => "substituír {new_name} polo {old_name}",
"unshared {files}" => "{files} sen compartir", "unshared {files}" => "{files} sen compartir",
"deleted {files}" => "{files} eliminados", "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.", "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.", "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", "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.", "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.", "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.", "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", "{count} files scanned" => "{count} ficheiros escaneados",
"error while scanning" => "erro mentres analizaba", "error while scanning" => "erro mentres analizaba",
"Name" => "Nome", "Name" => "Nome",

View File

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

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array( <?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", "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.", "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:", "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.", "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.", "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.", "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", "{count} files scanned" => "{count} bestanden gescanned",
"error while scanning" => "Fout tijdens het scannen", "error while scanning" => "Fout tijdens het scannen",
"Name" => "Naam", "Name" => "Naam",

View File

@ -1,4 +1,7 @@
<?php $TRANSLATIONS = array( <?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", "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", "There is no error, the file uploaded with success" => "Przesłano plik",
"The uploaded file exceeds the upload_max_filesize directive in php.ini: " => "Wgrany plik przekracza wartość upload_max_filesize zdefiniowaną w php.ini: ", "The uploaded file exceeds the 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( <?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ă", "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", "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: ", "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", "No file was uploaded" => "Niciun fișier încărcat",
"Missing a temporary folder" => "Lipsește un dosar temporar", "Missing a temporary folder" => "Lipsește un dosar temporar",
"Failed to write to disk" => "Eroare la scriere pe disc", "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", "Files" => "Fișiere",
"Unshare" => "Anulează partajarea", "Unshare" => "Anulează partajarea",
"Delete" => "Șterge", "Delete" => "Șterge",
@ -20,6 +24,8 @@
"replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}", "replaced {new_name} with {old_name}" => "{new_name} inlocuit cu {old_name}",
"unshared {files}" => "nedistribuit {files}", "unshared {files}" => "nedistribuit {files}",
"deleted {files}" => "Sterse {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.", "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.", "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.", "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ă.", "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.", "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ă.", "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", "{count} files scanned" => "{count} fisiere scanate",
"error while scanning" => "eroare la scanarea", "error while scanning" => "eroare la scanarea",
"Name" => "Nume", "Name" => "Nume",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,10 +8,9 @@ $userDirectory = "/".OCP\USER::getUser()."/files";
$file = $_GET['file']; $file = $_GET['file'];
$revision=(int)$_GET['revision']; $revision=(int)$_GET['revision'];
if( OCA_Versions\Storage::isversioned( $file ) ) { if(OCA_Versions\Storage::rollback( $file, $revision )) {
if(OCA_Versions\Storage::rollback( $file, $revision )) { OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file )));
OCP\JSON::success(array("data" => array( "revision" => $revision, "file" => $file ))); }else{
}else{ OCP\JSON::error(array("data" => array( "message" => "Could not revert:" . $file )));
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'] ) ) { if ( isset( $_GET['path'] ) ) {
$path = $_GET['path']; $path = $_GET['path'];
$path = $path;
$tmpl->assign( 'path', $path ); $tmpl->assign( 'path', $path );
$versions = new OCA_Versions\Storage(); $versions = new OCA_Versions\Storage();
@ -52,10 +51,8 @@ if ( isset( $_GET['path'] ) ) {
} }
// show the history only if there is something to show // show the history only if there is something to show
if( OCA_Versions\Storage::isversioned( $path ) ) { $count = 999; //show the newest revisions
if( ($versions = OCA_Versions\Storage::getVersions( $path, $count)) ) {
$count = 999; //show the newest revisions
$versions = OCA_Versions\Storage::getVersions( $path, $count);
$tmpl->assign( 'versions', array_reverse( $versions ) ); $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( <?php $TRANSLATIONS = array(
"Expire all versions" => "إنهاء تاريخ الإنتهاء لجميع الإصدارات",
"History" => "السجل الزمني", "History" => "السجل الزمني",
"Versions" => "الإصدارات",
"This will delete all existing backup versions of your files" => "هذه العملية ستقوم بإلغاء جميع إصدارات النسخ الاحتياطي للملفات",
"Files Versioning" => "أصدرة الملفات", "Files Versioning" => "أصدرة الملفات",
"Enable" => "تفعيل" "Enable" => "تفعيل"
); );

View File

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

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expira totes les versions",
"History" => "Historial", "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", "Files Versioning" => "Fitxers de Versions",
"Enable" => "Habilita" "Enable" => "Habilita"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Vypršet všechny verze",
"History" => "Historie", "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ů", "Files Versioning" => "Verzování souborů",
"Enable" => "Povolit" "Enable" => "Povolit"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Lad alle versioner udløbe",
"History" => "Historik", "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", "Files Versioning" => "Versionering af filer",
"Enable" => "Aktiver" "Enable" => "Aktiver"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Alle Versionen löschen",
"History" => "Historie", "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", "Files Versioning" => "Dateiversionierung",
"Enable" => "Aktivieren" "Enable" => "Aktivieren"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Alle Versionen löschen",
"History" => "Historie", "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", "Files Versioning" => "Dateiversionierung",
"Enable" => "Aktivieren" "Enable" => "Aktivieren"
); );

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Eksvalidigi ĉiujn eldonojn",
"History" => "Historio", "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", "Files Versioning" => "Dosiereldonigo",
"Enable" => "Kapabligi" "Enable" => "Kapabligi"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas las versiones",
"History" => "Historial", "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", "Files Versioning" => "Versionado de archivos",
"Enable" => "Habilitar" "Enable" => "Habilitar"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas las versiones",
"History" => "Historia", "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", "Files Versioning" => "Versionado de archivos",
"Enable" => "Activar" "Enable" => "Activar"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Kõikide versioonide aegumine",
"History" => "Ajalugu", "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", "Files Versioning" => "Failide versioonihaldus",
"Enable" => "Luba" "Enable" => "Luba"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Iraungi bertsio guztiak",
"History" => "Historia", "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", "Files Versioning" => "Fitxategien Bertsioak",
"Enable" => "Gaitu" "Enable" => "Gaitu"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Vanhenna kaikki versiot",
"History" => "Historia", "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", "Files Versioning" => "Tiedostojen versiointi",
"Enable" => "Käytä" "Enable" => "Käytä"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Supprimer les versions intermédiaires",
"History" => "Historique", "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", "Files Versioning" => "Versionnage des fichiers",
"Enable" => "Activer" "Enable" => "Activer"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Caducan todas as versións",
"History" => "Historial", "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", "Files Versioning" => "Sistema de versión de ficheiros",
"Enable" => "Activar" "Enable" => "Activar"
); );

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Az összes korábbi változat törlése",
"History" => "Korábbi változatok", "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", "Files Versioning" => "Az állományok verzionálása",
"Enable" => "engedélyezve" "Enable" => "engedélyezve"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "kadaluarsakan semua versi",
"History" => "riwayat", "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", "Files Versioning" => "pembuatan versi file",
"Enable" => "aktifkan" "Enable" => "aktifkan"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Úrelda allar útgáfur",
"History" => "Saga", "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", "Files Versioning" => "Útgáfur af skrám",
"Enable" => "Virkja" "Enable" => "Virkja"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Scadenza di tutte le versioni",
"History" => "Cronologia", "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", "Files Versioning" => "Controllo di versione dei file",
"Enable" => "Abilita" "Enable" => "Abilita"
); );

View File

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

View File

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

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Panaikinti visų versijų galiojimą",
"History" => "Istorija", "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", "Files Versioning" => "Failų versijos",
"Enable" => "Įjungti" "Enable" => "Įjungti"
); );

View File

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

View File

@ -1,7 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"History" => "Historie", "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", "Files Versioning" => "Fil versjonering",
"Enable" => "Aktiver" "Enable" => "Aktiver"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Alle versies laten verlopen",
"History" => "Geschiedenis", "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", "Files Versioning" => "Bestand versies",
"Enable" => "Activeer" "Enable" => "Activeer"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Wygasają wszystkie wersje",
"History" => "Historia", "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", "Files Versioning" => "Wersjonowanie plików",
"Enable" => "Włącz" "Enable" => "Włącz"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas as versões",
"History" => "Histórico", "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", "Files Versioning" => "Versionamento de Arquivos",
"Enable" => "Habilitar" "Enable" => "Habilitar"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expirar todas as versões",
"History" => "Histórico", "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", "Files Versioning" => "Versionamento de Ficheiros",
"Enable" => "Activar" "Enable" => "Activar"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expiră toate versiunile",
"History" => "Istoric", "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", "Files Versioning" => "Versionare fișiere",
"Enable" => "Activare" "Enable" => "Activare"
); );

View File

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

View File

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

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Expirovať všetky verzie",
"History" => "História", "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", "Files Versioning" => "Vytváranie verzií súborov",
"Enable" => "Zapnúť" "Enable" => "Zapnúť"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Zastaraj vse različice",
"History" => "Zgodovina", "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", "Files Versioning" => "Sledenje različicam",
"Enable" => "Omogoči" "Enable" => "Omogoči"
); );

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Upphör alla versioner",
"History" => "Historik", "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", "Files Versioning" => "Versionshantering av filer",
"Enable" => "Aktivera" "Enable" => "Aktivera"
); );

View File

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

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Tüm sürümleri sona erdir",
"History" => "Geçmiş", "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", "Files Versioning" => "Dosya Sürümleri",
"Enable" => "Etkinleştir" "Enable" => "Etkinleştir"
); );

View File

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

View File

@ -1,8 +1,5 @@
<?php $TRANSLATIONS = array( <?php $TRANSLATIONS = array(
"Expire all versions" => "Hết hạn tất cả các phiên bản",
"History" => "Lịch sử", "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", "Files Versioning" => "Phiên bản tập tin",
"Enable" => "Bật " "Enable" => "Bật "
); );

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +1,7 @@
<?php <?php
/** /**
* Copyright (c) 2012 Frank Karlitschek <frank@owncloud.org> * 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 * This file is licensed under the Affero General Public License version 3 or
* later. * later.
* See the COPYING-README file. * See the COPYING-README file.
@ -16,24 +17,23 @@ namespace OCA_Versions;
class Storage { 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 DEFAULTENABLED=true;
const DEFAULTBLACKLIST='avi mp3 mpg mp4 ctmp'; const DEFAULTMAXSIZE=50; // unit: percentage; 50% of available disk space/quota
const DEFAULTMAXFILESIZE=1048576; // 10MB
const DEFAULTMININTERVAL=60; // 1 min private static $max_versions_per_interval = array(
const DEFAULTMAXVERSIONS=50; 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) private static function getUidAndFilename($filename)
{ {
@ -72,55 +72,77 @@ class Storage {
return false; 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 // we should have a source file to work with
if (!$files_view->file_exists($filename)) { if (!$files_view->file_exists($filename)) {
return false; 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 // create all parent folders
$info=pathinfo($filename); $info=pathinfo($filename);
$versionsFolderName=\OCP\Config::getSystemValue('datadirectory').$users_view->getAbsolutePath('files_versions/');
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) { if(!file_exists($versionsFolderName.'/'.$info['dirname'])) {
mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true); mkdir($versionsFolderName.'/'.$info['dirname'], 0750, true);
} }
// store a new version of a file // 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 // 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. * rollback to an old version of a file.
*/ */
@ -129,45 +151,29 @@ class Storage {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename); list($uid, $filename) = self::getUidAndFilename($filename);
$users_view = new \OC_FilesystemView('/'.$uid); $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 // rollback
if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) { if( @$users_view->copy('files_versions'.$filename.'.v'.$revision, 'files'.$filename) ) {
$users_view->touch('files'.$filename, $revision);
Storage::expire($filename);
return true; return true;
}else{ }else if ( $versionCreated ) {
$users_view->unlink($version);
return false;
} }
} }
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 * @brief get a list of all available versions of a file in descending chronological order
@ -187,92 +193,232 @@ class Storage {
sort( $matches ); sort( $matches );
$i = 0; $files_view = new \OC_FilesystemView('/'.$uid.'/files');
$files_view = new \OC_FilesystemView('/'.\OCP\User::getUser().'/files');
$local_file = $files_view->getLocalFile($filename); $local_file = $files_view->getLocalFile($filename);
foreach( $matches as $ma ) {
$i++; foreach( $matches as $ma ) {
$versions[$i]['cur'] = 0;
$parts = explode( '.v', $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 // 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 ); $versions = array_reverse( $versions );
foreach( $versions as $key => $value ) { foreach( $versions as $key => $value ) {
// flag the first matched file in array (which will have latest modification date) as current version // flag the first matched file in array (which will have latest modification date) as current version
if ( $value['fileMatch'] ) { if ( $value['fileMatch'] ) {
$value['cur'] = 1; $value['cur'] = 1;
break; break;
} }
} }
$versions = array_reverse( $versions ); $versions = array_reverse( $versions );
// only show the newest commits // only show the newest commits
if( $count != 0 and ( count( $versions )>$count ) ) { if( $count != 0 and ( count( $versions )>$count ) ) {
$versions = array_slice( $versions, count( $versions ) - $count ); $versions = array_slice( $versions, count( $versions ) - $count );
} }
return( $versions ); return( $versions );
} else { } else {
// if versioning isn't enabled then return an empty array // if versioning isn't enabled then return an empty array
return( 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 * @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') { 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'); $versions_fileview = new \OC_FilesystemView('/'.$uid.'/files_versions');
$versionsName=\OCP\Config::getSystemValue('datadirectory').$versions_fileview->getAbsolutePath($filename); // get available disk space for user
$quota = \OCP\Util::computerFileSize(\OC_Preferences::getValue($uid, 'files', 'quota'));
// check for old versions if ( $quota == null ) {
$matches = glob( $versionsName.'.v*' ); $quota = \OCP\Util::computerFileSize(\OC_Appconfig::getValue('files', 'default_quota'));
}
if( count( $matches ) > \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ) ) { if ( $quota == null ) {
$quota = \OC_Filesystem::free_space('/');
$numberToDelete = count($matches) - \OCP\Config::getSystemValue( 'files_versionmaxversions', Storage::DEFAULTMAXVERSIONS ); }
// delete old versions of a file // make sure that we have the current size of the version history
$deleteItems = array_slice( $matches, 0, $numberToDelete ); if ( $versionsSize === null ) {
if ( ($versionsSize = \OCP\Config::getAppValue('files_versions', 'size')) === null ) {
foreach( $deleteItems as $de ) { $versionsSize = self::calculateSize($uid);
unlink( $versionsName.'.v'.$de );
} }
} }
}
}
/** // calculate available space for version history
* @brief Erase all old versions of all user files $rootInfo = \OC_FileCache::get('', '/'. $uid . '/files');
* @return true/false $free = $quota-$rootInfo['size']; // remaining free space for user
*/ if ( $free > 0 ) {
public function expireAll() { $availableSpace = ($free * self::DEFAULTMAXSIZE / 100) - $versionsSize; // how much space can be used for versions
$view = \OCP\Files::getStorage('files_versions'); } else {
return $view->deleteAll('', true); $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"> <form id="versionssettings">
<fieldset class="personalblock"> <fieldset class="personalblock">
<legend><strong><?php echo $l->t('Files Versioning');?></strong></legend> <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/> <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>
</form> </form>

View File

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

View File

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

View File

@ -1,9 +1,10 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "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", "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", "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.", "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\".", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "sense cap paràmetre de substitució, per exemple \"objectClass=grupPosix\".",
"Port" => "Port", "Port" => "Port",
"Base User Tree" => "Arbre base d'usuaris", "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", "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", "Group-Member association" => "Associació membres-grup",
"Use TLS" => "Usa TLS", "Use TLS" => "Usa TLS",
"Do not use it for SSL connections, it will fail." => "No ho useu en connexions SSL, fallarà.", "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( <?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> 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č", "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://", "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", "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", "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", "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é.", "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\".", "without any placeholder, e.g. \"objectClass=posixGroup\"." => "bez zástupných znaků, např. \"objectClass=posixGroup\".",
"Port" => "Port", "Port" => "Port",
"Base User Tree" => "Základní uživatelský strom", "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", "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", "Group-Member association" => "Asociace člena skupiny",
"Use TLS" => "Použít TLS", "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.", "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( <?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> 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", "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://", "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", "Base DN" => "Basis-DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "Base DN" => "Basis-DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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" => "Διακομιστής", "Host" => "Διακομιστής",
"You can omit the protocol, except you require SSL. Then start with ldaps://" => "Μπορείτε να παραλείψετε το πρωτόκολλο, εκτός αν απαιτείται SSL. Σε αυτή την περίπτωση ξεκινήστε με ldaps://", "You can omit the protocol, except you require SSL. Then start with ldaps://" => "Μπορείτε να παραλείψετε το πρωτόκολλο, εκτός αν απαιτείται SSL. Σε αυτή την περίπτωση ξεκινήστε με ldaps://",
"Base DN" => "Base DN", "Base DN" => "Base DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "Base DN" => "DN base",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "Base DN" => "DN base",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "Base DN" => "Oinarrizko DN",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "Base DN" => "DN Racine",

View File

@ -1,6 +1,5 @@
<?php $TRANSLATIONS = array( <?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> 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", "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://", "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", "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