Merge branch 'master' into routing

Conflicts:
	apps/files/js/fileactions.js
	lib/base.php
	lib/helper.php
	lib/ocs.php
This commit is contained in:
Bart Visscher 2012-09-07 15:42:37 +02:00
commit 5eba579827
852 changed files with 19116 additions and 11617 deletions

2
.gitignore vendored
View File

@ -19,10 +19,12 @@ _darcs/*
CVS/*
.svn/*
RCS/*
*.backup*
# kdevelop
.kdev
*.kdev4
*.kate-swp
# Lokalize
*lokalize*

View File

@ -33,7 +33,7 @@ $upload_max_filesize = OCP\Util::computerFileSize(ini_get('upload_max_filesize')
$post_max_size = OCP\Util::computerFileSize(ini_get('post_max_size'));
$maxUploadFilesize = OCP\Util::humanFileSize(min($upload_max_filesize, $post_max_size));
if($_POST) {
if(isset($_POST['maxUploadSize'])){
if(isset($_POST['maxUploadSize'])) {
if(($setMaxSize = OC_Files::setUploadLimit(OCP\Util::computerFileSize($_POST['maxUploadSize']))) !== false) {
$maxUploadFilesize = OCP\Util::humanFileSize($setMaxSize);
}

View File

@ -17,7 +17,7 @@ $data = array();
if($doBreadcrumb) {
$breadcrumb = array();
$pathtohere = "/";
foreach( explode( "/", $dir ) as $i ){
foreach( explode( "/", $dir ) as $i ) {
if( $i != "" ) {
$pathtohere .= "$i/";
$breadcrumb[] = array( "dir" => $pathtohere, "name" => $i );
@ -32,7 +32,7 @@ if($doBreadcrumb) {
// make filelist
$files = array();
foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
foreach( OC_Files::getdirectorycontent( $dir ) as $i ) {
$i["date"] = OCP\Util::formatDate($i["mtime"] );
$files[] = $i;
}

View File

@ -35,7 +35,7 @@ $dir = $_POST['dir'];
$error='';
$totalSize=0;
foreach($files['size'] as $size){
foreach($files['size'] as $size) {
$totalSize+=$size;
}
if($totalSize>OC_Filesystem::free_space('/')) {
@ -46,7 +46,7 @@ if($totalSize>OC_Filesystem::free_space('/')) {
$result=array();
if(strpos($dir, '..') === false) {
$fileCount=count($files['name']);
for($i=0;$i<$fileCount;$i++){
for($i=0;$i<$fileCount;$i++) {
$target = OCP\Files::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]);
if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) {
$meta=OC_FileCache_Cached::get($target);

View File

@ -23,14 +23,14 @@
// only need filesystem apps
$RUNTIME_APPTYPES=array('filesystem','authentication');
OC_App::loadApps($RUNTIME_APPTYPES);
if(!OC_User::isLoggedIn()){
if(!isset($_SERVER['PHP_AUTH_USER'])){
if(!OC_User::isLoggedIn()) {
if(!isset($_SERVER['PHP_AUTH_USER'])) {
header('WWW-Authenticate: Basic realm="ownCloud Server"');
header('HTTP/1.0 401 Unauthorized');
echo 'Valid credentials must be supplied';
exit();
} else {
if(!OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])){
if(!OC_User::login($_SERVER["PHP_AUTH_USER"], $_SERVER["PHP_AUTH_PW"])) {
exit();
}
}

View File

@ -5,7 +5,7 @@ $installedVersion=OCP\Config::getAppValue('files', 'installed_version');
if (version_compare($installedVersion, '1.1.4', '<')) {
$query = OC_DB::prepare( "SELECT `propertyname`, `propertypath`, `userid` FROM `*PREFIX*properties`" );
$result = $query->execute();
while( $row = $result->fetchRow()){
while( $row = $result->fetchRow()) {
$query = OC_DB::prepare( 'UPDATE `*PREFIX*properties` SET `propertyname` = ? WHERE `userid` = ? AND `propertypath` = ?' );
$query->execute( array( preg_replace("/^{.*}/", "", $row["propertyname"]),$row["userid"], $row["propertypath"] ));
}

View File

@ -29,7 +29,7 @@ OCP\User::checkLoggedIn();
$filename = $_GET["file"];
if(!OC_Filesystem::file_exists($filename)){
if(!OC_Filesystem::file_exists($filename)) {
header("HTTP/1.0 404 Not Found");
$tmpl = new OCP\Template( '', '404', 'guest' );
$tmpl->assign('file',$filename);

View File

@ -31,7 +31,7 @@ OCP\Util::addscript( 'files', 'jquery.fileupload' );
OCP\Util::addscript( 'files', 'files' );
OCP\Util::addscript( 'files', 'filelist' );
OCP\Util::addscript( 'files', 'fileactions' );
if(!isset($_SESSION['timezone'])){
if(!isset($_SESSION['timezone'])) {
OCP\Util::addscript( 'files', 'timezone' );
}
OCP\App::setActiveNavigationEntry( 'files_index' );
@ -44,9 +44,9 @@ if(!OC_Filesystem::is_dir($dir.'/')) {
}
$files = array();
foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
foreach( OC_Files::getdirectorycontent( $dir ) as $i ) {
$i['date'] = OCP\Util::formatDate($i['mtime'] );
if($i['type']=='file'){
if($i['type']=='file') {
$fileinfo=pathinfo($i['name']);
$i['basename']=$fileinfo['filename'];
if (!empty($fileinfo['extension'])) {
@ -56,7 +56,7 @@ foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
$i['extension']='';
}
}
if($i['directory']=='/'){
if($i['directory']=='/') {
$i['directory']='';
}
$files[] = $i;
@ -65,8 +65,8 @@ foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
// Make breadcrumb
$breadcrumb = array();
$pathtohere = '';
foreach( explode( '/', $dir ) as $i ){
if( $i != '' ){
foreach( explode( '/', $dir ) as $i ) {
if( $i != '' ) {
$pathtohere .= '/'.str_replace('+','%20', urlencode($i));
$breadcrumb[] = array( 'dir' => $pathtohere, 'name' => $i );
}
@ -89,11 +89,23 @@ $freeSpace=OC_Filesystem::free_space('/');
$freeSpace=max($freeSpace,0);
$maxUploadFilesize = min($maxUploadFilesize ,$freeSpace);
$permissions = OCP\Share::PERMISSION_READ;
if (OC_Filesystem::isUpdatable($dir.'/')) {
$permissions |= OCP\Share::PERMISSION_UPDATE;
}
if (OC_Filesystem::isDeletable($dir.'/')) {
$permissions |= OCP\Share::PERMISSION_DELETE;
}
if (OC_Filesystem::isSharable($dir.'/')) {
$permissions |= OCP\Share::PERMISSION_SHARE;
}
$tmpl = new OCP\Template( 'files', 'index', 'user' );
$tmpl->assign( 'fileList', $list->fetchPage(), false );
$tmpl->assign( 'breadcrumb', $breadcrumbNav->fetchPage(), false );
$tmpl->assign( 'dir', OC_Filesystem::normalizePath($dir));
$tmpl->assign( 'isCreatable', OC_Filesystem::isCreatable($dir.'/'));
$tmpl->assign('permissions', $permissions);
$tmpl->assign( 'files', $files );
$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize);
$tmpl->assign( 'uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize));

View File

@ -1,9 +1,4 @@
FileActions={
PERMISSION_CREATE:4,
PERMISSION_READ:1,
PERMISSION_UPDATE:2,
PERMISSION_DELETE:8,
PERMISSION_SHARE:16,
var FileActions={
actions:{},
defaults:{},
icons:{},
@ -25,20 +20,20 @@ FileActions={
get:function(mime,type,permissions){
var actions={};
if(FileActions.actions.all){
actions=$.extend( actions, FileActions.actions.all )
actions=$.extend( actions, FileActions.actions.all );
}
if(mime){
if(FileActions.actions[mime]){
actions=$.extend( actions, FileActions.actions[mime] )
actions=$.extend( actions, FileActions.actions[mime] );
}
var mimePart=mime.substr(0,mime.indexOf('/'));
if(FileActions.actions[mimePart]){
actions=$.extend( actions, FileActions.actions[mimePart] )
actions=$.extend( actions, FileActions.actions[mimePart] );
}
}
if(type){//type is 'dir' or 'file'
if(FileActions.actions[type]){
actions=$.extend( actions, FileActions.actions[type] )
actions=$.extend( actions, FileActions.actions[type] );
}
}
var filteredActions = {};
@ -108,7 +103,12 @@ FileActions={
if(img.call){
img=img(file);
}
var html='<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" style="display:none" />';
// NOTE: Temporary fix to allow unsharing of files in root of Shared folder
if ($('#dir').val() == '/Shared') {
var html = '<a href="#" original-title="' + t('files', 'Unshare') + '" class="action delete" style="display:none" />';
} else {
var html='<a href="#" original-title="' + t('files', 'Delete') + '" class="action delete" style="display:none" />';
}
var element=$(html);
if(img){
element.append($('<img src="'+img+'"/>'));
@ -148,7 +148,7 @@ FileActions={
getCurrentPermissions:function() {
return FileActions.currentFile.parent().data('permissions');
}
}
};
$(document).ready(function(){
if($('#allowZipDownload').val() == 1){
@ -156,12 +156,12 @@ $(document).ready(function(){
} else {
var downloadScope = 'file';
}
FileActions.register(downloadScope,'Download', FileActions.PERMISSION_READ, function(){return OC.imagePath('core','actions/download')},function(filename){
FileActions.register(downloadScope,'Download', OC.PERMISSION_READ, function(){return OC.imagePath('core','actions/download');},function(filename){
window.location=OC.filePath('files', 'ajax', 'download.php') + encodeURIComponent('?files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val()));
});
});
FileActions.register('all','Delete', FileActions.PERMISSION_DELETE, function(){return OC.imagePath('core','actions/delete')},function(filename){
FileActions.register('all','Delete', OC.PERMISSION_DELETE, function(){return OC.imagePath('core','actions/delete');},function(filename){
if(Files.cancelUpload(filename)) {
if(filename.substr){
filename=[filename];
@ -179,11 +179,11 @@ FileActions.register('all','Delete', FileActions.PERMISSION_DELETE, function(){r
$('.tipsy').remove();
});
FileActions.register('all','Rename', FileActions.PERMISSION_UPDATE, function(){return OC.imagePath('core','actions/rename')},function(filename){
FileActions.register('all','Rename', OC.PERMISSION_UPDATE, function(){return OC.imagePath('core','actions/rename');},function(filename){
FileList.rename(filename);
});
FileActions.register('dir','Open', FileActions.PERMISSION_READ, '', function(filename){
FileActions.register('dir','Open', OC.PERMISSION_READ, '', function(filename){
window.location=OC.linkTo('files', 'index.php') + '?dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename);
});

View File

@ -1,11 +1,11 @@
FileList={
var FileList={
useUndo:true,
update:function(fileListHtml) {
$('#fileList').empty().html(fileListHtml);
},
addFile:function(name,size,lastModified,loading){
addFile:function(name,size,lastModified,loading,hidden){
var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file.png');
var html='<tr data-type="file" data-size="'+size+'">';
var html='<tr data-type="file" data-size="'+size+'" data-permissions="'+$('#permissions').val()+'">';
if(name.indexOf('.')!=-1){
var basename=name.substr(0,name.lastIndexOf('.'));
var extension=name.substr(name.lastIndexOf('.'));
@ -14,7 +14,7 @@ FileList={
var extension=false;
}
html+='<td class="filename" style="background-image:url('+img+')"><input type="checkbox" />';
html+='<a class="name" href="download.php?file='+$('#dir').val().replace(/</, '&lt;').replace(/>/, '&gt;')+'/'+name+'"><span class="nametext">'+basename
html+='<a class="name" href="download.php?file='+$('#dir').val().replace(/</, '&lt;').replace(/>/, '&gt;')+'/'+name+'"><span class="nametext">'+basename;
if(extension){
html+='<span class="extension">'+extension+'</span>';
}
@ -36,9 +36,12 @@ FileList={
}else{
$('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions);
}
if (hidden) {
$('tr').filterAttr('data-file', name).hide();
}
},
addDir:function(name,size,lastModified){
html = $('<tr></tr>').attr({ "data-type": "dir", "data-size": size, "data-file": name});
addDir:function(name,size,lastModified,hidden){
html = $('<tr></tr>').attr({ "data-type": "dir", "data-size": size, "data-file": name, "data-permissions": $('#permissions').val()});
td = $('<td></td>').attr({"class": "filename", "style": 'background-image:url('+OC.imagePath('core', 'filetypes/folder.png')+')' });
td.append('<input type="checkbox" />');
var link_elem = $('<a></a>').attr({ "class": "name", "href": OC.linkTo('files', 'index.php')+"?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/') });
@ -63,6 +66,9 @@ FileList={
FileList.insertElement(name,'dir',html);
$('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions);
$('tr').filterAttr('data-file',name).find('td.filename').droppable(folderDropOptions);
if (hidden) {
$('tr').filterAttr('data-file', name).hide();
}
},
refresh:function(data) {
result = jQuery.parseJSON(data.responseText);
@ -82,7 +88,7 @@ FileList={
},
insertElement:function(name,type,element){
//find the correct spot to insert the file or folder
var fileElements=$('tr[data-file][data-type="'+type+'"]');
var fileElements=$('tr[data-file][data-type="'+type+'"]:visible');
var pos;
if(name.localeCompare($(fileElements[0]).attr('data-file'))<0){
pos=-1;
@ -137,11 +143,7 @@ FileList={
event.preventDefault();
var newname=input.val();
if (newname != name) {
if ($('tr').filterAttr('data-file', newname).length > 0) {
$('#notification').html(newname+' '+t('files', 'already exists')+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
$('#notification').data('oldName', name);
$('#notification').data('newName', newname);
$('#notification').fadeIn();
if (FileList.checkName(name, newname, false)) {
newname = name;
} else {
$.get(OC.filePath('files','ajax','rename.php'), { dir : $('#dir').val(), newname: newname, file: name },function(result) {
@ -151,7 +153,6 @@ FileList={
}
});
}
}
tr.attr('data-file', newname);
var path = td.children('a.name').attr('href');
@ -179,58 +180,77 @@ FileList={
form.trigger('submit');
});
},
replace:function(oldName, newName) {
checkName:function(oldName, newName, isNewFile) {
if (isNewFile || $('tr').filterAttr('data-file', newName).length > 0) {
if (isNewFile) {
$('#notification').html(newName+' '+t('files', 'already exists')+'<span class="replace">'+t('files', 'replace')+'</span><span class="suggest">'+t('files', 'suggest name')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
} else {
$('#notification').html(newName+' '+t('files', 'already exists')+'<span class="replace">'+t('files', 'replace')+'</span><span class="cancel">'+t('files', 'cancel')+'</span>');
}
$('#notification').data('oldName', oldName);
$('#notification').data('newName', newName);
$('#notification').data('isNewFile', isNewFile);
$('#notification').fadeIn();
return true;
} else {
return false;
}
},
replace:function(oldName, newName, isNewFile) {
// Finish any existing actions
if (FileList.lastAction || !FileList.useUndo) {
FileList.lastAction();
}
var tr = $('tr').filterAttr('data-file', oldName);
tr.hide();
$('tr').filterAttr('data-file', oldName).hide();
$('tr').filterAttr('data-file', newName).hide();
var tr = $('tr').filterAttr('data-file', oldName).clone();
tr.attr('data-replace', 'true');
tr.attr('data-file', newName);
var td = tr.children('td.filename');
td.children('a.name .span').text(newName);
var path = td.children('a.name').attr('href');
td.children('a.name').attr('href', path.replace(encodeURIComponent(oldName), encodeURIComponent(newName)));
if (newName.indexOf('.') > 0) {
var basename = newName.substr(0, newName.lastIndexOf('.'));
} else {
var basename = newName;
}
td.children('a.name').empty();
var span = $('<span class="nametext"></span>');
span.text(basename);
td.children('a.name').append(span);
if (newName.indexOf('.') > 0) {
span.append($('<span class="extension">'+newName.substr(newName.lastIndexOf('.'))+'</span>'));
}
FileList.insertElement(newName, tr.data('type'), tr);
tr.show();
FileList.replaceCanceled = false;
FileList.replaceOldName = oldName;
FileList.replaceNewName = newName;
FileList.replaceIsNewFile = isNewFile;
FileList.lastAction = function() {
FileList.finishReplace();
};
$('#notification').html(t('files', 'replaced')+' '+newName+' '+t('files', 'with')+' '+oldName+'<span class="undo">'+t('files', 'undo')+'</span>');
if (isNewFile) {
$('#notification').html(t('files', 'replaced')+' '+newName+'<span class="undo">'+t('files', 'undo')+'</span>');
} else {
$('#notification').html(t('files', 'replaced')+' '+newName+' '+t('files', 'with')+' '+oldName+'<span class="undo">'+t('files', 'undo')+'</span>');
}
$('#notification').fadeIn();
},
finishReplace:function() {
if (!FileList.replaceCanceled && FileList.replaceOldName && FileList.replaceNewName) {
// Delete the file being replaced and rename the replacement
FileList.deleteCanceled = false;
FileList.deleteFiles = [FileList.replaceNewName];
FileList.finishDelete(function() {
$.ajax({url: OC.filePath('files', 'ajax', 'rename.php'), async: false, data: { dir: $('#dir').val(), newname: FileList.replaceNewName, file: FileList.replaceOldName }, success: function(result) {
if (result && result.status == 'success') {
var tr = $('tr').filterAttr('data-file', FileList.replaceOldName);
tr.attr('data-file', FileList.replaceNewName);
var td = tr.children('td.filename');
td.children('a.name .span').text(FileList.replaceNewName);
var path = td.children('a.name').attr('href');
td.children('a.name').attr('href', path.replace(encodeURIComponent(FileList.replaceOldName), encodeURIComponent(FileList.replaceNewName)));
if (FileList.replaceNewName.indexOf('.') > 0) {
var basename = FileList.replaceNewName.substr(0, FileList.replaceNewName.lastIndexOf('.'));
} else {
var basename = FileList.replaceNewName;
}
td.children('a.name').empty();
var span = $('<span class="nametext"></span>');
span.text(basename);
td.children('a.name').append(span);
if (FileList.replaceNewName.indexOf('.') > 0) {
span.append($('<span class="extension">'+FileList.replaceNewName.substr(FileList.replaceNewName.lastIndexOf('.'))+'</span>'));
}
tr.show();
} else {
OC.dialogs.alert(result.data.message, 'Error moving file');
}
FileList.replaceCanceled = true;
FileList.replaceOldName = null;
FileList.replaceNewName = null;
FileList.lastAction = null;
}});
}, true);
$.ajax({url: OC.filePath('files', 'ajax', 'rename.php'), async: false, data: { dir: $('#dir').val(), newname: FileList.replaceNewName, file: FileList.replaceOldName }, success: function(result) {
if (result && result.status == 'success') {
$('tr').filterAttr('data-replace', 'true').removeAttr('data-replace');
} else {
OC.dialogs.alert(result.data.message, 'Error moving file');
}
FileList.replaceCanceled = true;
FileList.replaceOldName = null;
FileList.replaceNewName = null;
FileList.lastAction = null;
}});
}
},
do_delete:function(files){
@ -243,7 +263,12 @@ FileList={
return;
}
FileList.prepareDeletion(files);
$('#notification').html(t('files', 'deleted')+' '+files+'<span class="undo">'+t('files', 'undo')+'</span>');
// NOTE: Temporary fix to change the text to unshared for files in root of Shared folder
if ($('#dir').val() == '/Shared') {
$('#notification').html(t('files', 'unshared')+' '+files+'<span class="undo">'+t('files', 'undo')+'</span>');
} else {
$('#notification').html(t('files', 'deleted')+' '+files+'<span class="undo">'+t('files', 'undo')+'</span>');
}
$('#notification').fadeIn();
},
finishDelete:function(ready,sync){
@ -255,7 +280,7 @@ FileList={
data: {dir:$('#dir').val(),files:fileNames},
complete: function(data){
boolOperationFinished(data, function(){
$('#notification').fadeOut();
$('#notification').fadeOut('400');
$.each(FileList.deleteFiles,function(index,file){
FileList.remove(file);
});
@ -299,21 +324,39 @@ $(document).ready(function(){
FileList.deleteCanceled=true;
FileList.deleteFiles=null;
} else if (FileList.replaceOldName && FileList.replaceNewName) {
$('tr').filterAttr('data-file', FileList.replaceOldName).show();
if (FileList.replaceIsNewFile) {
// Delete the new uploaded file
FileList.deleteCanceled = false;
FileList.deleteFiles = [FileList.replaceOldName];
FileList.finishDelete(null, true);
} else {
$('tr').filterAttr('data-file', FileList.replaceOldName).show();
}
$('tr').filterAttr('data-replace', 'true').remove();
$('tr').filterAttr('data-file', FileList.replaceNewName).show();
FileList.replaceCanceled = true;
FileList.replaceOldName = null;
FileList.replaceNewName = null;
FileList.replaceIsNewFile = null;
}
FileList.lastAction = null;
$('#notification').fadeOut();
$('#notification').fadeOut('400');
});
$('#notification .replace').live('click', function() {
$('#notification').fadeOut('400', function() {
FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'));
FileList.replace($('#notification').data('oldName'), $('#notification').data('newName'), $('#notification').data('isNewFile'));
});
});
$('#notification .suggest').live('click', function() {
$('tr').filterAttr('data-file', $('#notification').data('oldName')).show();
$('#notification').fadeOut('400');
});
$('#notification .cancel').live('click', function() {
$('#notification').fadeOut();
if ($('#notification').data('isNewFile')) {
FileList.deleteCanceled = false;
FileList.deleteFiles = [$('#notification').data('oldName')];
FileList.finishDelete(null, true);
}
});
FileList.useUndo=('onbeforeunload' in window)
$(window).bind('beforeunload', function (){

View File

@ -26,7 +26,7 @@ Files={
});
procesSelection();
}
}
};
$(document).ready(function() {
$('#fileList tr').each(function(){
//little hack to set unescape filenames in attribute
@ -40,8 +40,16 @@ $(document).ready(function() {
$('#file_action_panel').attr('activeAction', false);
//drag/drop of files
$('#fileList tr[data-write="true"] td.filename').draggable(dragOptions);
$('#fileList tr[data-type="dir"][data-write="true"] td.filename').droppable(folderDropOptions);
$('#fileList tr td.filename').each(function(i,e){
if ($(e).parent().data('permissions') & OC.PERMISSION_DELETE) {
$(e).draggable(dragOptions);
}
});
$('#fileList tr[data-type="dir"] td.filename').each(function(i,e){
if ($(e).parent().data('permissions') & OC.PERMISSION_CREATE){
$(e).droppable(folderDropOptions);
}
});
$('div.crumb:not(.last)').droppable(crumbDropOptions);
$('ul#apps>li:first-child').data('dir','');
if($('div.crumb').length){
@ -228,7 +236,14 @@ $(document).ready(function() {
var size=t('files','Pending');
}
if(files && !dirName){
FileList.addFile(getUniqueName(files[i].name),size,date,true);
var uniqueName = getUniqueName(files[i].name);
if (uniqueName != files[i].name) {
FileList.checkName(uniqueName, files[i].name, true);
var hidden = true;
} else {
var hidden = false;
}
FileList.addFile(uniqueName,size,date,true,hidden);
} else if(dirName) {
var uploadtext = $('tr').filterAttr('data-type', 'dir').filterAttr('data-file', dirName).find('.uploadtext')
var currentUploads = parseInt(uploadtext.attr('currentUploads'));
@ -247,7 +262,14 @@ $(document).ready(function() {
}
}else{
var filename=this.value.split('\\').pop(); //ie prepends C:\fakepath\ in front of the filename
FileList.addFile(getUniqueName(filename),'Pending',date,true);
var uniqueName = getUniqueName(filename);
if (uniqueName != filename) {
FileList.checkName(uniqueName, filename, true);
var hidden = true;
} else {
var hidden = false;
}
FileList.addFile(uniqueName,'Pending',date,true,hidden);
}
if($.support.xhrFileUpload) {
for(var i=0;i<files.length;i++){
@ -386,6 +408,21 @@ $(document).ready(function() {
})
});
$.assocArraySize = function(obj) {
// http://stackoverflow.com/a/6700/11236
var size = 0, key;
for (key in obj) {
if (obj.hasOwnProperty(key)) size++;
}
return size;
};
// warn user not to leave the page while upload is in progress
$(window).bind('beforeunload', function(e) {
if ($.assocArraySize(uploadingFiles) > 0)
return t('files','File upload is in progress. Leaving the page now will cancel the upload.');
});
//add multiply file upload attribute to all browsers except konqueror (which crashes when it's used)
if(navigator.userAgent.search(/konqueror/i)==-1){
$('.file_upload_start').attr('multiple','multiple')
@ -452,21 +489,27 @@ $(document).ready(function() {
$(this).append(input);
input.focus();
input.change(function(){
var name=getUniqueName($(this).val());
if(type != 'web' && name.indexOf('/')!=-1){
if(type != 'web' && $(this).val().indexOf('/')!=-1){
$('#notification').text(t('files','Invalid name, \'/\' is not allowed.'));
$('#notification').fadeIn();
return;
}
var name = getUniqueName($(this).val());
if (name != $(this).val()) {
FileList.checkName(name, $(this).val(), true);
var hidden = true;
} else {
var hidden = false;
}
switch(type){
case 'file':
$.post(
OC.filePath('files','ajax','newfile.php'),
{dir:$('#dir').val(),filename:name,content:" \n"},
{dir:$('#dir').val(),filename:name},
function(result){
if (result.status == 'success') {
var date=new Date();
FileList.addFile(name,0,date);
FileList.addFile(name,0,date,false,hidden);
var tr=$('tr').filterAttr('data-file',name);
tr.data('mime','text/plain');
getMimeIcon('text/plain',function(path){
@ -485,7 +528,7 @@ $(document).ready(function() {
function(result){
if (result.status == 'success') {
var date=new Date();
FileList.addDir(name,0,date);
FileList.addDir(name,0,date,hidden);
} else {
OC.dialogs.alert(result.data.message, 'Error');
}
@ -516,7 +559,7 @@ $(document).ready(function() {
eventSource.listen('success',function(mime){
$('#uploadprogressbar').fadeOut();
var date=new Date();
FileList.addFile(localName,0,date);
FileList.addFile(localName,0,date,false,hidden);
var tr=$('tr').filterAttr('data-file',localName);
tr.data('mime',mime);
getMimeIcon(mime,function(path){

View File

@ -10,16 +10,18 @@
"Delete" => "Suprimeix",
"already exists" => "ja existeix",
"replace" => "substitueix",
"suggest name" => "sugereix un nom",
"cancel" => "cancel·la",
"replaced" => "substituït",
"with" => "per",
"undo" => "desfés",
"with" => "per",
"deleted" => "esborrat",
"generating ZIP-file, it may take some time." => "s'estan generant fitxers ZIP, pot trigar una estona.",
"Unable to upload your file as it is a directory or has 0 bytes" => "No es pot pujar el fitxer perquè és una carpeta o té 0 bytes",
"Upload Error" => "Error en la pujada",
"Pending" => "Pendents",
"Upload cancelled." => "La pujada s'ha cancel·lat.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Hi ha una pujada en curs. Si abandoneu la pàgina la pujada es cancel·larà.",
"Invalid name, '/' is not allowed." => "El nom no és vàlid, no es permet '/'.",
"Size" => "Mida",
"Modified" => "Modificat",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Activa la baixada ZIP",
"0 is unlimited" => "0 és sense límit",
"Maximum input size for ZIP files" => "Mida màxima d'entrada per fitxers ZIP",
"Save" => "Desa",
"New" => "Nou",
"Text file" => "Fitxer de text",
"Folder" => "Carpeta",

View File

@ -1,51 +1,54 @@
<?php $TRANSLATIONS = array(
"There is no error, the file uploaded with success" => "Soubor byl odeslán úspěšně",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Odeslaný soubor přesáhl velikostí parametr upload_max_filesize v php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Odeslaný soubor přesáhl velikostí parametr MAX_FILE_SIZE specifikovaný v HTML formuláři",
"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Odeslaný soubor přesáhl svou velikostí parametr upload_max_filesize v php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Odeslaný soubor přesáhl svou velikostí parametr MAX_FILE_SIZE specifikovaný v formuláři HTML",
"The uploaded file was only partially uploaded" => "Soubor byl odeslán pouze částečně",
"No file was uploaded" => "Soubor nebyl odeslán",
"Missing a temporary folder" => "Chybí adresář pro sočasné soubory",
"Failed to write to disk" => "Zápis na disk se nezdařil",
"No file was uploaded" => "Žádný soubor nebyl odeslán",
"Missing a temporary folder" => "Chybí adresář pro dočasné soubory",
"Failed to write to disk" => "Zápis na disk selhal",
"Files" => "Soubory",
"Delete" => "Vymazat",
"Delete" => "Smazat",
"already exists" => "již existuje",
"replace" => "zaměnit",
"cancel" => "storno",
"replaced" => "zaměněno",
"with" => "s",
"replace" => "nahradit",
"suggest name" => "navrhnout název",
"cancel" => "zrušit",
"replaced" => "nahrazeno",
"undo" => "zpět",
"with" => "s",
"deleted" => "smazáno",
"generating ZIP-file, it may take some time." => "generuji ZIP soubor, může to chvíli trvat",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nemohu nahrát váš soubor neboť to je adresář a nebo má nulovou délku.",
"Upload Error" => "Chyba při nahrávání",
"Pending" => "Očekává se",
"Upload cancelled." => "Nahrávání zrušeno",
"Invalid name, '/' is not allowed." => "Špatné jméno, znak '/' není povolen",
"generating ZIP-file, it may take some time." => "generuji ZIP soubor, může to nějakou dobu trvat.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nelze odeslat Váš soubor, protože je to adresář nebo má velikost 0 bajtů",
"Upload Error" => "Chyba odesílání",
"Pending" => "Čekající",
"Upload cancelled." => "Odesílání zrušeno.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Probíhá odesílání souboru. Opuštění stránky vyústí ve zrušení nahrávání.",
"Invalid name, '/' is not allowed." => "Neplatný název, znak '/' není povolen",
"Size" => "Velikost",
"Modified" => "Změněno",
"folder" => "adresář",
"folders" => "adresáře",
"folder" => "složka",
"folders" => "složky",
"file" => "soubor",
"files" => "soubory",
"File handling" => "Nastavení chování k souborům",
"Maximum upload size" => "Maximální velikost ukládaných souborů",
"max. possible: " => "největší možná:",
"Needed for multi-file and folder downloads." => "Potřeba pro vícesoborvé stahování a stahování adresářů",
"File handling" => "Zacházení se soubory",
"Maximum upload size" => "Maximální velikost pro odesílání",
"max. possible: " => "největší možná: ",
"Needed for multi-file and folder downloads." => "Potřebné pro více-souborové stahování a stahování složek.",
"Enable ZIP-download" => "Povolit ZIP-stahování",
"0 is unlimited" => "0 znamená bez omezení",
"Maximum input size for ZIP files" => "Maximální velikost vstupu pro ZIP soubory",
"Save" => "Uložit",
"New" => "Nový",
"Text file" => "Textový soubor",
"Folder" => "Adresář",
"Folder" => "Složka",
"From url" => "Z url",
"Upload" => "Uložit",
"Cancel upload" => "Zrušit upload",
"Nothing in here. Upload something!" => "Žádný obsah. Uložte si něco!",
"Upload" => "Odeslat",
"Cancel upload" => "Zrušit odesílání",
"Nothing in here. Upload something!" => "Žádný obsah. Nahrajte něco.",
"Name" => "Název",
"Share" => "Sdílet",
"Download" => "Stáhnout",
"Upload too large" => "Příliš velký soubor",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažíte uložit, překračují maximální velikosti uploadu na tomto serveru.",
"Upload too large" => "Odeslaný soubor je příliš velký",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Soubory, které se snažíte odeslat, překračují limit velikosti odesílání na tomto serveru.",
"Files are being scanned, please wait." => "Soubory se prohledávají, prosím čekejte.",
"Current scanning" => "Aktuální prohledávání"
);

View File

@ -12,14 +12,15 @@
"replace" => "erstat",
"cancel" => "fortryd",
"replaced" => "erstattet",
"with" => "med",
"undo" => "fortryd",
"with" => "med",
"deleted" => "Slettet",
"generating ZIP-file, it may take some time." => "genererer ZIP-fil, det kan tage lidt tid.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kunne ikke uploade din fil, da det enten er en mappe eller er tom",
"Upload Error" => "Fejl ved upload",
"Pending" => "Afventer",
"Upload cancelled." => "Upload afbrudt.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Fil upload kører. Hvis du forlader siden nu, vil uploadet blive annuleret.",
"Invalid name, '/' is not allowed." => "Ugyldigt navn, '/' er ikke tilladt.",
"Size" => "Størrelse",
"Modified" => "Ændret",

View File

@ -1,7 +1,7 @@
<?php $TRANSLATIONS = array(
"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 Größe der hochzuladenden Datei überschreitet die upload_max_filesize-Richtlinie in php.ini",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde",
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die Größe der hochzuladenden Datei überschreitet die MAX_FILE_SIZE-Richtlinie, die im HTML-Formular angegeben wurde",
"The uploaded file was only partially uploaded" => "Die Datei wurde nur teilweise hochgeladen.",
"No file was uploaded" => "Es wurde keine Datei hochgeladen.",
"Missing a temporary folder" => "Temporärer Ordner fehlt.",
@ -10,17 +10,19 @@
"Delete" => "Löschen",
"already exists" => "ist bereits vorhanden",
"replace" => "ersetzen",
"suggest name" => "Name vorschlagen",
"cancel" => "abbrechen",
"replaced" => "ersetzt",
"with" => "mit",
"undo" => "rückgängig machen",
"with" => "mit",
"deleted" => "gelöscht",
"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" => "Ihre Datei kann nicht hochgeladen werden, da sie ein Verzeichnis ist oder 0 Bytes hat.",
"Upload Error" => "Fehler beim Hochladen",
"Pending" => "Ausstehend",
"Upload cancelled." => "Hochladen abgebrochen.",
"Invalid name, '/' is not allowed." => "Ungültiger Name, \"/\" ist nicht erlaubt.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Dateiupload läuft. Wenn Sie die Seite jetzt verlassen, wird der Upload abgebrochen.",
"Invalid name, '/' is not allowed." => "Ungültiger Name: \"/\" ist nicht erlaubt.",
"Size" => "Größe",
"Modified" => "Bearbeitet",
"folder" => "Ordner",
@ -30,10 +32,11 @@
"File handling" => "Dateibehandlung",
"Maximum upload size" => "Maximale Upload-Größe",
"max. possible: " => "maximal möglich:",
"Needed for multi-file and folder downloads." => "Für Mehrfachdateien- und Ordnerdownloads benötigt:",
"Needed for multi-file and folder downloads." => "Für Mehrfachdatei- und Ordnerdownloads benötigt:",
"Enable ZIP-download" => "ZIP-Download aktivieren",
"0 is unlimited" => "0 bedeutet unbegrenzt",
"Maximum input size for ZIP files" => "Maximale Größe für ZIP Dateien",
"Maximum input size for ZIP files" => "Maximale Größe für ZIP-Dateien",
"Save" => "Speichern",
"New" => "Neu",
"Text file" => "Textdatei",
"Folder" => "Ordner",

View File

@ -12,8 +12,8 @@
"replace" => "αντικατέστησε",
"cancel" => "ακύρωση",
"replaced" => "αντικαταστάθηκε",
"with" => "με",
"undo" => "αναίρεση",
"with" => "με",
"deleted" => "διαγράφηκε",
"generating ZIP-file, it may take some time." => "παραγωγή αρχείου ZIP, ίσως διαρκέσει αρκετά.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Αδυναμία στην μεταφόρτωση του αρχείου σας αφού είναι φάκελος ή έχει 0 bytes",

View File

@ -12,8 +12,8 @@
"replace" => "anstataŭigi",
"cancel" => "nuligi",
"replaced" => "anstataŭigita",
"with" => "kun",
"undo" => "malfari",
"with" => "kun",
"deleted" => "forigita",
"generating ZIP-file, it may take some time." => "generanta ZIP-dosiero, ĝi povas daŭri iom da tempo",
"Unable to upload your file as it is a directory or has 0 bytes" => "Ne eblis alŝuti vian dosieron ĉar ĝi estas dosierujo aŭ havas 0 duumokojn",

View File

@ -10,16 +10,18 @@
"Delete" => "Eliminado",
"already exists" => "ya existe",
"replace" => "reemplazar",
"suggest name" => "sugerir nombre",
"cancel" => "cancelar",
"replaced" => "reemplazado",
"with" => "con",
"undo" => "deshacer",
"with" => "con",
"deleted" => "borrado",
"generating ZIP-file, it may take some time." => "generando un fichero ZIP, puede llevar un tiempo.",
"Unable to upload your file as it is a directory or has 0 bytes" => "No ha sido posible subir tu archivo porque es un directorio o tiene 0 bytes",
"Upload Error" => "Error al subir el archivo",
"Pending" => "Pendiente",
"Upload cancelled." => "Subida cancelada.",
"File upload is in progress. Leaving the page now will cancel the upload." => "La subida del archivo está en proceso. Salir de la página ahora cancelará la subida.",
"Invalid name, '/' is not allowed." => "Nombre no válido, '/' no está permitido.",
"Size" => "Tamaño",
"Modified" => "Modificado",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Habilitar descarga en ZIP",
"0 is unlimited" => "0 es ilimitado",
"Maximum input size for ZIP files" => "Tamaño máximo para archivos ZIP de entrada",
"Save" => "Guardar",
"New" => "Nuevo",
"Text file" => "Archivo de texto",
"Folder" => "Carpeta",

View File

@ -12,8 +12,8 @@
"replace" => "asenda",
"cancel" => "loobu",
"replaced" => "asendatud",
"with" => "millega",
"undo" => "tagasi",
"with" => "millega",
"deleted" => "kustutatud",
"generating ZIP-file, it may take some time." => "ZIP-faili loomine, see võib veidi aega võtta.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Sinu faili üleslaadimine ebaõnnestus, kuna see on kaust või selle suurus on 0 baiti",

View File

@ -12,8 +12,8 @@
"replace" => "ordeztu",
"cancel" => "ezeztatu",
"replaced" => "ordeztua",
"with" => "honekin",
"undo" => "desegin",
"with" => "honekin",
"deleted" => "ezabatuta",
"generating ZIP-file, it may take some time." => "ZIP-fitxategia sortzen ari da, denbora har dezake",
"Unable to upload your file as it is a directory or has 0 bytes" => "Ezin da zure fitxategia igo, karpeta bat da edo 0 byt ditu",

View File

@ -12,8 +12,8 @@
"replace" => "جایگزین",
"cancel" => "لغو",
"replaced" => "جایگزین‌شده",
"with" => "همراه",
"undo" => "بازگشت",
"with" => "همراه",
"deleted" => "حذف شده",
"generating ZIP-file, it may take some time." => "در حال ساخت فایل فشرده ممکن است زمان زیادی به طول بیانجامد",
"Unable to upload your file as it is a directory or has 0 bytes" => "ناتوان در بارگذاری یا فایل یک پوشه است یا 0بایت دارد",

View File

@ -10,16 +10,18 @@
"Delete" => "Poista",
"already exists" => "on jo olemassa",
"replace" => "korvaa",
"suggest name" => "ehdota nimeä",
"cancel" => "peru",
"replaced" => "korvattu",
"with" => "käyttäen",
"undo" => "kumoa",
"with" => "käyttäen",
"deleted" => "poistettu",
"generating ZIP-file, it may take some time." => "luodaan ZIP-tiedostoa, tämä saattaa kestää hetken.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Tiedoston lähetys epäonnistui, koska sen koko on 0 tavua tai kyseessä on kansio",
"Upload Error" => "Lähetysvirhe.",
"Pending" => "Odottaa",
"Upload cancelled." => "Lähetys peruttu.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Tiedoston lähetys on meneillään. Sivulta poistuminen nyt peruu tiedoston lähetyksen.",
"Invalid name, '/' is not allowed." => "Virheellinen nimi, merkki '/' ei ole sallittu.",
"Size" => "Koko",
"Modified" => "Muutettu",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Ota ZIP-paketin lataaminen käytöön",
"0 is unlimited" => "0 on rajoittamaton",
"Maximum input size for ZIP files" => "ZIP-tiedostojen enimmäiskoko",
"Save" => "Tallenna",
"New" => "Uusi",
"Text file" => "Tekstitiedosto",
"Folder" => "Kansio",
@ -46,5 +49,6 @@
"Download" => "Lataa",
"Upload too large" => "Lähetettävä tiedosto on liian suuri",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Lähetettäväksi valitsemasi tiedostot ylittävät palvelimen salliman tiedostokoon rajan.",
"Files are being scanned, please wait." => "Tiedostoja tarkistetaan, odota hetki."
"Files are being scanned, please wait." => "Tiedostoja tarkistetaan, odota hetki.",
"Current scanning" => "Tämänhetkinen tutkinta"
);

View File

@ -12,14 +12,15 @@
"replace" => "remplacer",
"cancel" => "annuler",
"replaced" => "remplacé",
"with" => "avec",
"undo" => "annuler",
"with" => "avec",
"deleted" => "supprimé",
"generating ZIP-file, it may take some time." => "Générer un fichier ZIP, cela peut prendre du temps",
"generating ZIP-file, it may take some time." => "Fichier ZIP en cours d'assemblage ; cela peut prendre du temps.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossible de charger vos fichiers car il s'agit d'un dossier ou le fichier fait 0 octet.",
"Upload Error" => "Erreur de chargement",
"Pending" => "En cours",
"Upload cancelled." => "Chargement annulé",
"Upload cancelled." => "Chargement annulé.",
"File upload is in progress. Leaving the page now will cancel the upload." => "L'envoi du fichier est en cours. Quitter cette page maintenant annulera l'envoi du fichier.",
"Invalid name, '/' is not allowed." => "Nom invalide, '/' n'est pas autorisé.",
"Size" => "Taille",
"Modified" => "Modifié",
@ -34,18 +35,19 @@
"Enable ZIP-download" => "Activer le téléchargement ZIP",
"0 is unlimited" => "0 est illimité",
"Maximum input size for ZIP files" => "Taille maximale pour les fichiers ZIP",
"Save" => "Sauvegarder",
"New" => "Nouveau",
"Text file" => "Fichier texte",
"Folder" => "Dossier",
"From url" => "Depuis URL",
"Upload" => "Envoyer",
"Cancel upload" => "Annuler envoi",
"Cancel upload" => "Annuler l'envoi",
"Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)",
"Name" => "Nom",
"Share" => "Partager",
"Download" => "Téléchargement",
"Upload too large" => "Fichier trop volumineux",
"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Les fichiers que vous essayez d'envoyer dépassent la taille maximale permise par ce serveur.",
"Files are being scanned, please wait." => "Les fichiers sont analysés, patientez svp.",
"Files are being scanned, please wait." => "Les fichiers sont en cours d'analyse, veuillez patienter.",
"Current scanning" => "Analyse en cours"
);

View File

@ -12,8 +12,8 @@
"replace" => "substituír",
"cancel" => "cancelar",
"replaced" => "substituído",
"with" => "con",
"undo" => "desfacer",
"with" => "con",
"deleted" => "eliminado",
"generating ZIP-file, it may take some time." => "xerando ficheiro ZIP, 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",

View File

@ -12,8 +12,8 @@
"replace" => "zamjeni",
"cancel" => "odustani",
"replaced" => "zamjenjeno",
"with" => "sa",
"undo" => "vrati",
"with" => "sa",
"deleted" => "izbrisano",
"generating ZIP-file, it may take some time." => "generiranje ZIP datoteke, ovo može potrajati.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nemoguće poslati datoteku jer je prazna ili je direktorij",

View File

@ -12,8 +12,8 @@
"replace" => "cserél",
"cancel" => "mégse",
"replaced" => "kicserélve",
"with" => "-val/-vel",
"undo" => "visszavon",
"with" => "-val/-vel",
"deleted" => "törölve",
"generating ZIP-file, it may take some time." => "ZIP-fájl generálása, ez eltarthat egy ideig.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nem tölthető fel, mert mappa volt, vagy 0 byte méretű",

View File

@ -12,8 +12,8 @@
"replace" => "mengganti",
"cancel" => "batalkan",
"replaced" => "diganti",
"with" => "dengan",
"undo" => "batal dikerjakan",
"with" => "dengan",
"deleted" => "dihapus",
"generating ZIP-file, it may take some time." => "membuat berkas ZIP, ini mungkin memakan waktu.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Gagal mengunggah berkas anda karena berupa direktori atau mempunyai ukuran 0 byte",

View File

@ -10,16 +10,18 @@
"Delete" => "Elimina",
"already exists" => "esiste già",
"replace" => "sostituisci",
"suggest name" => "suggerisci nome",
"cancel" => "annulla",
"replaced" => "sostituito",
"with" => "con",
"undo" => "annulla",
"with" => "con",
"deleted" => "eliminati",
"generating ZIP-file, it may take some time." => "creazione file ZIP, potrebbe richiedere del tempo.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossibile inviare il file poiché è una cartella o ha dimensione 0 byte",
"Upload Error" => "Errore di invio",
"Pending" => "In corso",
"Upload cancelled." => "Invio annullato",
"File upload is in progress. Leaving the page now will cancel the upload." => "Caricamento del file in corso. La chiusura della pagina annullerà il caricamento.",
"Invalid name, '/' is not allowed." => "Nome non valido",
"Size" => "Dimensione",
"Modified" => "Modificato",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Abilita scaricamento ZIP",
"0 is unlimited" => "0 è illimitato",
"Maximum input size for ZIP files" => "Dimensione massima per i file ZIP",
"Save" => "Salva",
"New" => "Nuovo",
"Text file" => "File di testo",
"Folder" => "Cartella",

View File

@ -12,14 +12,15 @@
"replace" => "置き換え",
"cancel" => "キャンセル",
"replaced" => "置換:",
"with" => "",
"undo" => "元に戻す",
"with" => "",
"deleted" => "削除",
"generating ZIP-file, it may take some time." => "ZIPファイルを生成中です、しばらくお待ちください。",
"Unable to upload your file as it is a directory or has 0 bytes" => "アップロード使用としているファイルがディレクトリ、もしくはサイズが0バイトのため、アップロードできません。",
"Upload Error" => "アップロードエラー",
"Pending" => "保留",
"Upload cancelled." => "アップロードはキャンセルされました。",
"File upload is in progress. Leaving the page now will cancel the upload." => "ファイル転送を実行中です。今このページから移動するとアップロードが中止されます。",
"Invalid name, '/' is not allowed." => "無効な名前、'/' は使用できません。",
"Size" => "サイズ",
"Modified" => "更新日時",
@ -34,6 +35,7 @@
"Enable ZIP-download" => "ZIP形式のダウンロードを有効にする",
"0 is unlimited" => "0を指定した場合は無制限",
"Maximum input size for ZIP files" => "ZIPファイルへの最大入力サイズ",
"Save" => "保存",
"New" => "新規",
"Text file" => "テキストファイル",
"Folder" => "フォルダ",

View File

@ -8,7 +8,15 @@
"Failed to write to disk" => "디스크에 쓰지 못했습니다",
"Files" => "파일",
"Delete" => "삭제",
"already exists" => "이미 존재 합니다",
"replace" => "대체",
"cancel" => "취소",
"replaced" => "대체됨",
"undo" => "복구",
"with" => "",
"deleted" => "삭제",
"generating ZIP-file, it may take some time." => "ZIP파일 생성에 시간이 걸릴 수 있습니다.",
"Unable to upload your file as it is a directory or has 0 bytes" => "이 파일은 디렉토리이거나 0 바이트이기 때문에 업로드 할 수 없습니다.",
"Upload Error" => "업로드 에러",
"Pending" => "보류 중",
"Upload cancelled." => "업로드 취소.",

View File

@ -8,8 +8,25 @@
"Failed to write to disk" => "Konnt net op den Disk schreiwen",
"Files" => "Dateien",
"Delete" => "Läschen",
"already exists" => "existéiert schonn",
"replace" => "ersetzen",
"cancel" => "ofbriechen",
"replaced" => "ersat",
"undo" => "réckgängeg man",
"with" => "mat",
"deleted" => "geläscht",
"generating ZIP-file, it may take some time." => "Et gëtt eng ZIP-File generéiert, dëst ka bëssen daueren.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kann deng Datei net eroplueden well et en Dossier ass oder 0 byte grouss ass.",
"Upload Error" => "Fehler beim eroplueden",
"Upload cancelled." => "Upload ofgebrach.",
"File upload is in progress. Leaving the page now will cancel the upload." => "File Upload am gaang. Wann's de des Säit verléiss gëtt den Upload ofgebrach.",
"Invalid name, '/' is not allowed." => "Ongültege Numm, '/' net erlaabt.",
"Size" => "Gréisst",
"Modified" => "Geännert",
"folder" => "Dossier",
"folders" => "Dossieren",
"file" => "Datei",
"files" => "Dateien",
"File handling" => "Fichier handling",
"Maximum upload size" => "Maximum Upload Gréisst ",
"max. possible: " => "max. méiglech:",

View File

@ -1,6 +1,17 @@
<?php $TRANSLATIONS = array(
"No file was uploaded" => "Neviens fails netika augšuplādēts",
"Failed to write to disk" => "Nav iespējams saglabāt",
"Files" => "Faili",
"Delete" => "Izdzēst",
"already exists" => "tāds fails jau eksistē",
"replace" => "aizvietot",
"cancel" => "atcelt",
"replaced" => "aizvietots",
"undo" => "vienu soli atpakaļ",
"with" => "ar",
"deleted" => "izdzests",
"generating ZIP-file, it may take some time." => "lai uzģenerētu ZIP failu, kāds brīdis ir jāpagaida",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nav iespējams augšuplādēt jūsu failu, jo tāds jau eksistē vai arī failam nav izmēra (0 baiti)",
"Upload Error" => "Augšuplādēšanas laikā radās kļūda",
"Pending" => "Gaida savu kārtu",
"Upload cancelled." => "Augšuplāde ir atcelta",
@ -12,9 +23,20 @@
"file" => "fails",
"files" => "faili",
"Maximum upload size" => "Maksimālais failu augšuplādes apjoms",
"max. possible: " => "maksīmālais iespējamais:",
"Enable ZIP-download" => "Iespējot ZIP lejuplādi",
"0 is unlimited" => "0 ir neierobežots",
"New" => "Jauns",
"Text file" => "Teksta fails",
"Folder" => "Mape",
"From url" => "No URL saites",
"Upload" => "Augšuplādet",
"Cancel upload" => "Atcelt augšuplādi",
"Nothing in here. Upload something!" => "Te vēl nekas nav. Rīkojies, sāc augšuplādēt",
"Name" => "Nosaukums",
"Share" => "Līdzdalīt",
"Download" => "Lejuplādēt",
"Upload too large" => "Fails ir par lielu lai to augšuplādetu"
"Upload too large" => "Fails ir par lielu lai to augšuplādetu",
"Files are being scanned, please wait." => "Faili šobrīd tiek caurskatīti, nedaudz jāpagaida.",
"Current scanning" => "Šobrīd tiek pārbaudīti"
);

View File

@ -12,8 +12,8 @@
"replace" => "erstatt",
"cancel" => "avbryt",
"replaced" => "erstattet",
"with" => "med",
"undo" => "angre",
"with" => "med",
"deleted" => "slettet",
"generating ZIP-file, it may take some time." => "opprettet ZIP-fil, dette kan ta litt tid",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kan ikke laste opp filen din siden det er en mappe eller den har 0 bytes",

View File

@ -12,14 +12,15 @@
"replace" => "vervang",
"cancel" => "annuleren",
"replaced" => "vervangen",
"with" => "door",
"undo" => "ongedaan maken",
"with" => "door",
"deleted" => "verwijderd",
"generating ZIP-file, it may take some time." => "aanmaken ZIP-file, dit kan enige tijd duren.",
"Unable to upload your file as it is a directory or has 0 bytes" => "uploaden van de file mislukt, het is of een directory of de bestandsgrootte is 0 bytes",
"Upload Error" => "Upload Fout",
"Pending" => "Wachten",
"Upload cancelled." => "Uploaden geannuleerd.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Bestands upload is bezig. Wanneer de pagina nu verlaten wordt, stopt de upload.",
"Invalid name, '/' is not allowed." => "Ongeldige naam, '/' is niet toegestaan.",
"Size" => "Bestandsgrootte",
"Modified" => "Laatst aangepast",
@ -34,6 +35,7 @@
"Enable ZIP-download" => "Zet ZIP-download aan",
"0 is unlimited" => "0 is ongelimiteerd",
"Maximum input size for ZIP files" => "Maximale grootte voor ZIP bestanden",
"Save" => "Opslaan",
"New" => "Nieuw",
"Text file" => "Tekstbestand",
"Folder" => "Map",

View File

@ -10,16 +10,18 @@
"Delete" => "Usuwa element",
"already exists" => "Już istnieje",
"replace" => "zastap",
"suggest name" => "zasugeruj nazwę",
"cancel" => "anuluj",
"replaced" => "zastąpione",
"with" => "z",
"undo" => "wróć",
"with" => "z",
"deleted" => "skasuj",
"generating ZIP-file, it may take some time." => "Generowanie pliku ZIP, może potrwać pewien czas.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nie można wczytać pliku jeśli jest katalogiem lub ma 0 bajtów",
"Upload Error" => "Błąd wczytywania",
"Pending" => "Oczekujące",
"Upload cancelled." => "Wczytywanie anulowane.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Wysyłanie pliku jest w toku. Teraz opuszczając stronę wysyłanie zostanie anulowane.",
"Invalid name, '/' is not allowed." => "Nieprawidłowa nazwa '/' jest niedozwolone.",
"Size" => "Rozmiar",
"Modified" => "Czas modyfikacji",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Włącz pobieranie ZIP-paczki",
"0 is unlimited" => "0 jest nielimitowane",
"Maximum input size for ZIP files" => "Maksymalna wielkość pliku wejściowego ZIP ",
"Save" => "Zapisz",
"New" => "Nowy",
"Text file" => "Plik tekstowy",
"Folder" => "Katalog",

View File

@ -12,8 +12,8 @@
"replace" => "substituir",
"cancel" => "cancelar",
"replaced" => "substituido ",
"with" => "com",
"undo" => "desfazer",
"with" => "com",
"deleted" => "deletado",
"generating ZIP-file, it may take some time." => "gerando arquivo ZIP, isso pode levar um tempo.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Impossível enviar seus arquivo como diretório ou ele tem 0 bytes.",

View File

@ -12,8 +12,8 @@
"replace" => "substituir",
"cancel" => "cancelar",
"replaced" => "substituido",
"with" => "com",
"undo" => "desfazer",
"with" => "com",
"deleted" => "apagado",
"generating ZIP-file, it may take some time." => "a gerar o ficheiro ZIP, poderá demorar algum tempo.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Não é possivel fazer o upload do ficheiro devido a ser uma pasta ou ter 0 bytes",

View File

@ -12,14 +12,15 @@
"replace" => "заменить",
"cancel" => "отмена",
"replaced" => "заменён",
"with" => "с",
"undo" => "отмена",
"with" => "с",
"deleted" => "удален",
"generating ZIP-file, it may take some time." => "создание ZIP-файла, это может занять некоторое время.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Не удается загрузить файл размером 0 байт в каталог",
"Upload Error" => "Ошибка загрузки",
"Pending" => "Ожидание",
"Upload cancelled." => "Загрузка отменена.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Файл в процессе загрузки. Покинув страницу вы прервёте загрузку.",
"Invalid name, '/' is not allowed." => "Неверное имя, '/' не допускается.",
"Size" => "Размер",
"Modified" => "Изменён",

View File

@ -10,16 +10,18 @@
"Delete" => "Izbriši",
"already exists" => "že obstaja",
"replace" => "nadomesti",
"suggest name" => "predlagaj ime",
"cancel" => "ekliči",
"replaced" => "nadomeščen",
"with" => "z",
"undo" => "razveljavi",
"with" => "z",
"deleted" => "izbrisano",
"generating ZIP-file, it may take some time." => "Ustvarjam ZIP datoteko. To lahko traja nekaj časa.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Nalaganje ni mogoče, saj gre za mapo, ali pa ima datoteka velikost 0 bajtov.",
"Upload Error" => "Napaka pri nalaganju",
"Pending" => "Na čakanju",
"Upload cancelled." => "Nalaganje je bilo preklicano.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Nalaganje datoteke je v teku. Če zapustite to stran zdaj, boste nalaganje preklicali.",
"Invalid name, '/' is not allowed." => "Neveljavno ime. Znak '/' ni dovoljen.",
"Size" => "Velikost",
"Modified" => "Spremenjeno",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Omogoči ZIP-prejemanje",
"0 is unlimited" => "0 je neskončno",
"Maximum input size for ZIP files" => "Največja vhodna velikost za ZIP datoteke",
"Save" => "Shrani",
"New" => "Nova",
"Text file" => "Besedilna datoteka",
"Folder" => "Mapa",

View File

@ -10,16 +10,18 @@
"Delete" => "Radera",
"already exists" => "finns redan",
"replace" => "ersätt",
"suggest name" => "föreslå namn",
"cancel" => "avbryt",
"replaced" => "ersatt",
"with" => "med",
"undo" => "ångra",
"with" => "med",
"deleted" => "raderad",
"generating ZIP-file, it may take some time." => "genererar ZIP-fil, det kan ta lite tid.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Kunde inte ladda upp dina filer eftersom det antingen är en mapp eller har 0 bytes.",
"Upload Error" => "Uppladdningsfel",
"Pending" => "Väntar",
"Upload cancelled." => "Uppladdning avbruten.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Filuppladdning pågår. Lämnar du sidan så avbryts uppladdningen.",
"Invalid name, '/' is not allowed." => "Ogiltigt namn, '/' är inte tillåten.",
"Size" => "Storlek",
"Modified" => "Ändrad",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "Aktivera ZIP-nerladdning",
"0 is unlimited" => "0 är oändligt",
"Maximum input size for ZIP files" => "Största tillåtna storlek för ZIP-filer",
"Save" => "Spara",
"New" => "Ny",
"Text file" => "Textfil",
"Folder" => "Mapp",

View File

@ -10,16 +10,18 @@
"Delete" => "ลบ",
"already exists" => "มีอยู่แล้ว",
"replace" => "แทนที่",
"suggest name" => "แนะนำชื่อ",
"cancel" => "ยกเลิก",
"replaced" => "แทนที่แล้ว",
"with" => "กับ",
"undo" => "เลิกทำ",
"with" => "กับ",
"deleted" => "ลบแล้ว",
"generating ZIP-file, it may take some time." => "กำลังสร้างไฟล์บีบอัด ZIP อาจใช้เวลาสักครู่",
"Unable to upload your file as it is a directory or has 0 bytes" => "ไม่สามารถอัพโหลดไฟล์ของคุณได้ เนื่องจากไฟล์ดังกล่าวเป็นไดเร็กทอรี่หรือมีขนาด 0 ไบต์",
"Upload Error" => "เกิดข้อผิดพลาดในการอัพโหลด",
"Pending" => "อยู่ระหว่างดำเนินการ",
"Upload cancelled." => "การอัพโหลดถูกยกเลิก",
"File upload is in progress. Leaving the page now will cancel the upload." => "การอัพโหลดไฟล์กำลังอยู่ในระหว่างดำเนินการ การออกจากหน้าเว็บนี้จะทำให้การอัพโหลดถูกยกเลิก",
"Invalid name, '/' is not allowed." => "ชื่อที่ใช้ไม่ถูกต้อง '/' ไม่อนุญาตให้ใช้งาน",
"Size" => "ขนาด",
"Modified" => "ปรับปรุงล่าสุด",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "อนุญาตให้ดาวน์โหลดเป็นไฟล์ ZIP ได้",
"0 is unlimited" => "0 หมายถึงไม่จำกัด",
"Maximum input size for ZIP files" => "ขนาดไฟล์ ZIP สูงสุด",
"Save" => "บันทึก",
"New" => "อัพโหลดไฟล์ใหม่",
"Text file" => "ไฟล์ข้อความ",
"Folder" => "แฟ้มเอกสาร",

View File

@ -8,13 +8,19 @@
"Failed to write to disk" => "Diske yazılamadı",
"Files" => "Dosyalar",
"Delete" => "Sil",
"already exists" => "zaten mevcut",
"replace" => "değiştir",
"cancel" => "iptal",
"replaced" => "değiştirildi",
"undo" => "geri al",
"with" => "ile",
"deleted" => "silindi",
"generating ZIP-file, it may take some time." => "ZIP dosyası oluşturuluyor, biraz sürebilir.",
"Unable to upload your file as it is a directory or has 0 bytes" => "Dosyanızın boyutu 0 byte olduğundan veya bir dizin olduğundan yüklenemedi",
"Upload Error" => "Yükleme hatası",
"Pending" => "Bekliyor",
"Upload cancelled." => "Yükleme iptal edildi.",
"File upload is in progress. Leaving the page now will cancel the upload." => "Dosya yükleme işlemi sürüyor. Şimdi sayfadan ayrılırsanız işleminiz iptal olur.",
"Invalid name, '/' is not allowed." => "Geçersiz isim, '/' işaretine izin verilmiyor.",
"Size" => "Boyut",
"Modified" => "Değiştirilme",

View File

@ -12,8 +12,8 @@
"replace" => "替换",
"cancel" => "取消",
"replaced" => "替换过了",
"with" => "随着",
"undo" => "撤销",
"with" => "随着",
"deleted" => "删除",
"generating ZIP-file, it may take some time." => "正在生成ZIP文件,这可能需要点时间",
"Unable to upload your file as it is a directory or has 0 bytes" => "不能上传你指定的文件,可能因为它是个文件夹或者大小为0",

View File

@ -10,16 +10,18 @@
"Delete" => "删除",
"already exists" => "已经存在",
"replace" => "替换",
"suggest name" => "建议名称",
"cancel" => "取消",
"replaced" => "已经替换",
"with" => "随着",
"undo" => "撤销",
"with" => "随着",
"deleted" => "已经删除",
"generating ZIP-file, it may take some time." => "正在生成 ZIP 文件,可能需要一些时间",
"Unable to upload your file as it is a directory or has 0 bytes" => "无法上传文件,因为它是一个目录或者大小为 0 字节",
"Upload Error" => "上传错误",
"Pending" => "操作等待中",
"Upload cancelled." => "上传已取消",
"File upload is in progress. Leaving the page now will cancel the upload." => "文件正在上传中。现在离开此页会导致上传动作被取消。",
"Invalid name, '/' is not allowed." => "非法的名称,不允许使用‘/’。",
"Size" => "大小",
"Modified" => "修改日期",
@ -34,6 +36,7 @@
"Enable ZIP-download" => "启用 ZIP 下载",
"0 is unlimited" => "0 为无限制",
"Maximum input size for ZIP files" => "ZIP 文件的最大输入大小",
"Save" => "保存",
"New" => "新建",
"Text file" => "文本文件",
"Folder" => "文件夹",

View File

@ -8,6 +8,15 @@
"Failed to write to disk" => "寫入硬碟失敗",
"Files" => "檔案",
"Delete" => "刪除",
"already exists" => "已經存在",
"replace" => "取代",
"cancel" => "取消",
"generating ZIP-file, it may take some time." => "產生壓縮檔, 它可能需要一段時間.",
"Unable to upload your file as it is a directory or has 0 bytes" => "無法上傳您的檔案因為它可能是一個目錄或檔案大小為0",
"Upload Error" => "上傳發生錯誤",
"Upload cancelled." => "上傳取消",
"File upload is in progress. Leaving the page now will cancel the upload." => "檔案上傳中. 離開此頁面將會取消上傳.",
"Invalid name, '/' is not allowed." => "無效的名稱, '/'是不被允許的",
"Size" => "大小",
"Modified" => "修改",
"File handling" => "檔案處理",

View File

@ -36,7 +36,7 @@ OCP\Util::addscript( "files", "files" );
$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
$files = array();
foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
foreach( OC_Files::getdirectorycontent( $dir ) as $i ) {
$i["date"] = date( $CONFIG_DATEFORMAT, $i["mtime"] );
$files[] = $i;
}
@ -44,8 +44,8 @@ foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
// Make breadcrumb
$breadcrumb = array();
$pathtohere = "/";
foreach( explode( "/", $dir ) as $i ){
if( $i != "" ){
foreach( explode( "/", $dir ) as $i ) {
if( $i != "" ) {
$pathtohere .= "$i/";
$breadcrumb[] = array( "dir" => $pathtohere, "name" => $i );
}

View File

@ -11,6 +11,6 @@
<input name="maxZipInputSize" id="maxZipInputSize" style="width:180px;" value='<?php echo $_['maxZipInputSize'] ?>' title="<?php echo $l->t( '0 is unlimited' ); ?>"<?php if (!$_['allowZipDownload']) echo ' disabled="disabled"'; ?> />
<label for="maxZipInputSize"><?php echo $l->t( 'Maximum input size for ZIP files' ); ?> </label><br />
<input type="submit" name="submitFilesAdminSettings" id="submitFilesAdminSettings" value="Save"/>
<input type="submit" name="submitFilesAdminSettings" id="submitFilesAdminSettings" value="<?php echo $l->t( 'Save' ); ?>"/>
</fieldset>
</form>

View File

@ -32,6 +32,7 @@
<?php else:?>
<input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir">
<?php endif;?>
<input type="hidden" name="permissions" value="<?php echo $_['permissions']; ?>" id="permissions">
</div>
<div id='notification'></div>
@ -53,7 +54,17 @@
</span>
</th>
<th id="headerSize"><?php echo $l->t( 'Size' ); ?></th>
<th id="headerDate"><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class="selectedActions"><a href="" class="delete"><?php echo $l->t('Delete')?> <img class="svg" alt="<?php echo $l->t('Delete')?>" src="<?php echo OCP\image_path("core", "actions/delete.svg"); ?>" /></a></span></th>
<th id="headerDate">
<span id="modified"><?php echo $l->t( 'Modified' ); ?></span>
<?php if ($_['permissions'] & OCP\Share::PERMISSION_DELETE): ?>
<!-- NOTE: Temporary fix to allow unsharing of files in root of Shared folder -->
<?php if ($_['dir'] == '/Shared'): ?>
<span class="selectedActions"><a href="" class="delete"><?php echo $l->t('Unshare')?> <img class="svg" alt="<?php echo $l->t('Unshare')?>" src="<?php echo OCP\image_path("core", "actions/delete.svg"); ?>" /></a></span>
<?php else: ?>
<span class="selectedActions"><a href="" class="delete"><?php echo $l->t('Delete')?> <img class="svg" alt="<?php echo $l->t('Delete')?>" src="<?php echo OCP\image_path("core", "actions/delete.svg"); ?>" /></a></span>
<?php endif; ?>
<?php endif; ?>
</th>
</tr>
</thead>
<tbody id="fileList">

View File

@ -10,7 +10,7 @@ OCP\Util::connectHook('OC_User','post_login','OC_Crypt','loginListener');
stream_wrapper_register('crypt','OC_CryptStream');
if(!isset($_SESSION['enckey']) and OCP\User::isLoggedIn()){//force the user to re-loggin if the encryption key isn't unlocked (happens when a user is logged in before the encryption app is enabled)
if(!isset($_SESSION['enckey']) and OCP\User::isLoggedIn()) {//force the user to re-loggin if the encryption key isn't unlocked (happens when a user is logged in before the encryption app is enabled)
OCP\User::logout();
header("Location: ".OC::$WEBROOT.'/');
exit();

View File

@ -20,5 +20,5 @@ $(document).ready(function(){
$('#enable_encryption').change(function(){
var checked=$('#enable_encryption').is(':checked');
OC.AppConfig.setValue('files_encryption','enable_encryption',(checked)?'true':'false');
})
})
});
});

View File

@ -1,6 +1,6 @@
<?php $TRANSLATIONS = array(
"Encryption" => "Kryptování",
"Exclude the following file types from encryption" => "Při kryptování vynechat následující typy souborů",
"None" => "Žádný",
"Enable Encryption" => "Povolit kryptování"
"Encryption" => "Šifrování",
"Exclude the following file types from encryption" => "Při šifrování vynechat následující typy souborů",
"None" => "Žádné",
"Enable Encryption" => "Povolit šifrování"
);

View File

@ -0,0 +1,6 @@
<?php $TRANSLATIONS = array(
"Encryption" => "Šifrovanie",
"Exclude the following file types from encryption" => "Vynechať nasledujúce súbory pri šifrovaní",
"None" => "Žiadne",
"Enable Encryption" => "Zapnúť šifrovanie"
);

View File

@ -0,0 +1,5 @@
<?php $TRANSLATIONS = array(
"Encryption" => "加密",
"None" => "None",
"Enable Encryption" => "开启加密"
);

View File

@ -0,0 +1,6 @@
<?php $TRANSLATIONS = array(
"Encryption" => "加密",
"Exclude the following file types from encryption" => "下列的檔案類型不加密",
"None" => "",
"Enable Encryption" => "啟用加密"
);

View File

@ -31,7 +31,7 @@
// - IMPORTANT! Check if the block lenght of the encrypted data stays the same
require_once('Crypt_Blowfish/Blowfish.php');
require_once 'Crypt_Blowfish/Blowfish.php';
/**
* This class is for crypting and decrypting
@ -39,18 +39,18 @@ require_once('Crypt_Blowfish/Blowfish.php');
class OC_Crypt {
static private $bf = null;
public static function loginListener($params){
public static function loginListener($params) {
self::init($params['uid'],$params['password']);
}
public static function init($login,$password) {
$view=new OC_FilesystemView('/');
if(!$view->file_exists('/'.$login)){
if(!$view->file_exists('/'.$login)) {
$view->mkdir('/'.$login);
}
OC_FileProxy::$enabled=false;
if(!$view->file_exists('/'.$login.'/encryption.key')){// does key exist?
if(!$view->file_exists('/'.$login.'/encryption.key')) {// does key exist?
OC_Crypt::createkey($login,$password);
}
$key=$view->file_get_contents('/'.$login.'/encryption.key');
@ -66,14 +66,14 @@ class OC_Crypt {
*
* if the key is left out, the default handeler will be used
*/
public static function getBlowfish($key=''){
if($key){
public static function getBlowfish($key='') {
if($key) {
return new Crypt_Blowfish($key);
}else{
if(!isset($_SESSION['enckey'])){
if(!isset($_SESSION['enckey'])) {
return false;
}
if(!self::$bf){
if(!self::$bf) {
self::$bf=new Crypt_Blowfish($_SESSION['enckey']);
}
return self::$bf;
@ -96,7 +96,7 @@ class OC_Crypt {
}
public static function changekeypasscode($oldPassword, $newPassword) {
if(OCP\User::isLoggedIn()){
if(OCP\User::isLoggedIn()) {
$username=OCP\USER::getUser();
$view=new OC_FilesystemView('/'.$username);
@ -179,7 +179,7 @@ class OC_Crypt {
while (!feof($handleread)) {
$content = fread($handleread, 8192);
$enccontent=OC_CRYPT::decrypt( $content, $key);
if(feof($handleread)){
if(feof($handleread)) {
$enccontent=rtrim($enccontent, "\0");
}
fwrite($handlewrite, $enccontent);
@ -192,9 +192,9 @@ class OC_Crypt {
/**
* encrypt data in 8192b sized blocks
*/
public static function blockEncrypt($data, $key=''){
public static function blockEncrypt($data, $key='') {
$result='';
while(strlen($data)){
while(strlen($data)) {
$result.=self::encrypt(substr($data,0,8192),$key);
$data=substr($data,8192);
}
@ -204,13 +204,13 @@ class OC_Crypt {
/**
* decrypt data in 8192b sized blocks
*/
public static function blockDecrypt($data, $key='',$maxLength=0){
public static function blockDecrypt($data, $key='',$maxLength=0) {
$result='';
while(strlen($data)){
while(strlen($data)) {
$result.=self::decrypt(substr($data,0,8192),$key);
$data=substr($data,8192);
}
if($maxLength>0){
if($maxLength>0) {
return substr($result,0,$maxLength);
}else{
return rtrim($result, "\0");

View File

@ -36,18 +36,18 @@ class OC_CryptStream{
private $size;
private static $rootView;
public function stream_open($path, $mode, $options, &$opened_path){
if(!self::$rootView){
public function stream_open($path, $mode, $options, &$opened_path) {
if(!self::$rootView) {
self::$rootView=new OC_FilesystemView('');
}
$path=str_replace('crypt://','',$path);
if(dirname($path)=='streams' and isset(self::$sourceStreams[basename($path)])){
if(dirname($path)=='streams' and isset(self::$sourceStreams[basename($path)])) {
$this->source=self::$sourceStreams[basename($path)]['stream'];
$this->path=self::$sourceStreams[basename($path)]['path'];
$this->size=self::$sourceStreams[basename($path)]['size'];
}else{
$this->path=$path;
if($mode=='w' or $mode=='w+' or $mode=='wb' or $mode=='wb+'){
if($mode=='w' or $mode=='w+' or $mode=='wb' or $mode=='wb+') {
$this->size=0;
}else{
$this->size=self::$rootView->filesize($path,$mode);
@ -55,55 +55,55 @@ class OC_CryptStream{
OC_FileProxy::$enabled=false;//disable fileproxies so we can open the source file
$this->source=self::$rootView->fopen($path,$mode);
OC_FileProxy::$enabled=true;
if(!is_resource($this->source)){
if(!is_resource($this->source)) {
OCP\Util::writeLog('files_encryption','failed to open '.$path,OCP\Util::ERROR);
}
}
if(is_resource($this->source)){
if(is_resource($this->source)) {
$this->meta=stream_get_meta_data($this->source);
}
return is_resource($this->source);
}
public function stream_seek($offset, $whence=SEEK_SET){
public function stream_seek($offset, $whence=SEEK_SET) {
$this->flush();
fseek($this->source,$offset,$whence);
}
public function stream_tell(){
public function stream_tell() {
return ftell($this->source);
}
public function stream_read($count){
public function stream_read($count) {
//$count will always be 8192 https://bugs.php.net/bug.php?id=21641
//This makes this function a lot simpler but will breake everything the moment it's fixed
$this->writeCache='';
if($count!=8192){
if($count!=8192) {
OCP\Util::writeLog('files_encryption','php bug 21641 no longer holds, decryption will not work',OCP\Util::FATAL);
die();
}
$pos=ftell($this->source);
$data=fread($this->source,8192);
if(strlen($data)){
if(strlen($data)) {
$result=OC_Crypt::decrypt($data);
}else{
$result='';
}
$length=$this->size-$pos;
if($length<8192){
if($length<8192) {
$result=substr($result,0,$length);
}
return $result;
}
public function stream_write($data){
public function stream_write($data) {
$length=strlen($data);
$currentPos=ftell($this->source);
if($this->writeCache){
if($this->writeCache) {
$data=$this->writeCache.$data;
$this->writeCache='';
}
if($currentPos%8192!=0){
if($currentPos%8192!=0) {
//make sure we always start on a block start
fseek($this->source,-($currentPos%8192),SEEK_CUR);
$encryptedBlock=fread($this->source,8192);
@ -113,8 +113,8 @@ class OC_CryptStream{
fseek($this->source,-($currentPos%8192),SEEK_CUR);
}
$currentPos=ftell($this->source);
while($remainingLength=strlen($data)>0){
if($remainingLength<8192){
while($remainingLength=strlen($data)>0) {
if($remainingLength<8192) {
$this->writeCache=$data;
$data='';
}else{
@ -127,8 +127,8 @@ class OC_CryptStream{
return $length;
}
public function stream_set_option($option,$arg1,$arg2){
switch($option){
public function stream_set_option($option,$arg1,$arg2) {
switch($option) {
case STREAM_OPTION_BLOCKING:
stream_set_blocking($this->source,$arg1);
break;
@ -140,33 +140,33 @@ class OC_CryptStream{
}
}
public function stream_stat(){
public function stream_stat() {
return fstat($this->source);
}
public function stream_lock($mode){
public function stream_lock($mode) {
flock($this->source,$mode);
}
public function stream_flush(){
public function stream_flush() {
return fflush($this->source);
}
public function stream_eof(){
public function stream_eof() {
return feof($this->source);
}
private function flush(){
if($this->writeCache){
private function flush() {
if($this->writeCache) {
$encrypted=OC_Crypt::encrypt($this->writeCache);
fwrite($this->source,$encrypted);
$this->writeCache='';
}
}
public function stream_close(){
public function stream_close() {
$this->flush();
if($this->meta['mode']!='r' and $this->meta['mode']!='rb'){
if($this->meta['mode']!='r' and $this->meta['mode']!='rb') {
OC_FileCache::put($this->path,array('encrypted'=>true,'size'=>$this->size),'');
}
return fclose($this->source);

View File

@ -34,21 +34,21 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
* @param string $path
* @return bool
*/
private static function shouldEncrypt($path){
if(is_null(self::$enableEncryption)){
private static function shouldEncrypt($path) {
if(is_null(self::$enableEncryption)) {
self::$enableEncryption=(OCP\Config::getAppValue('files_encryption','enable_encryption','true')=='true');
}
if(!self::$enableEncryption){
if(!self::$enableEncryption) {
return false;
}
if(is_null(self::$blackList)){
if(is_null(self::$blackList)) {
self::$blackList=explode(',',OCP\Config::getAppValue('files_encryption','type_blacklist','jpg,png,jpeg,avi,mpg,mpeg,mkv,mp3,oga,ogv,ogg'));
}
if(self::isEncrypted($path)){
if(self::isEncrypted($path)) {
return true;
}
$extension=substr($path,strrpos($path,'.')+1);
if(array_search($extension,self::$blackList)===false){
if(array_search($extension,self::$blackList)===false) {
return true;
}
}
@ -58,13 +58,13 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
* @param string $path
* @return bool
*/
private static function isEncrypted($path){
private static function isEncrypted($path) {
$metadata=OC_FileCache_Cached::get($path,'');
return isset($metadata['encrypted']) and (bool)$metadata['encrypted'];
}
public function preFile_put_contents($path,&$data){
if(self::shouldEncrypt($path)){
public function preFile_put_contents($path,&$data) {
if(self::shouldEncrypt($path)) {
if (!is_resource($data)) {//stream put contents should have been converter to fopen
$size=strlen($data);
$data=OC_Crypt::blockEncrypt($data);
@ -73,24 +73,24 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
}
}
public function postFile_get_contents($path,$data){
if(self::isEncrypted($path)){
public function postFile_get_contents($path,$data) {
if(self::isEncrypted($path)) {
$cached=OC_FileCache_Cached::get($path,'');
$data=OC_Crypt::blockDecrypt($data,'',$cached['size']);
}
return $data;
}
public function postFopen($path,&$result){
if(!$result){
public function postFopen($path,&$result) {
if(!$result) {
return $result;
}
$meta=stream_get_meta_data($result);
if(self::isEncrypted($path)){
if(self::isEncrypted($path)) {
fclose($result);
$result=fopen('crypt://'.$path,$meta['mode']);
}elseif(self::shouldEncrypt($path) and $meta['mode']!='r' and $meta['mode']!='rb'){
if(OC_Filesystem::file_exists($path) and OC_Filesystem::filesize($path)>0){
}elseif(self::shouldEncrypt($path) and $meta['mode']!='r' and $meta['mode']!='rb') {
if(OC_Filesystem::file_exists($path) and OC_Filesystem::filesize($path)>0) {
//first encrypt the target file so we don't end up with a half encrypted file
OCP\Util::writeLog('files_encryption','Decrypting '.$path.' before writing',OCP\Util::DEBUG);
$tmp=fopen('php://temp');
@ -104,23 +104,23 @@ class OC_FileProxy_Encryption extends OC_FileProxy{
return $result;
}
public function postGetMimeType($path,$mime){
if(self::isEncrypted($path)){
public function postGetMimeType($path,$mime) {
if(self::isEncrypted($path)) {
$mime=OCP\Files::getMimeType('crypt://'.$path,'w');
}
return $mime;
}
public function postStat($path,$data){
if(self::isEncrypted($path)){
public function postStat($path,$data) {
if(self::isEncrypted($path)) {
$cached=OC_FileCache_Cached::get($path,'');
$data['size']=$cached['size'];
}
return $data;
}
public function postFileSize($path,$size){
if(self::isEncrypted($path)){
public function postFileSize($path,$size) {
if(self::isEncrypted($path)) {
$cached=OC_FileCache_Cached::get($path,'');
return $cached['size'];
}else{

View File

@ -7,6 +7,6 @@
<option selected="selected" value="<?php echo $type;?>"><?php echo $type;?></option>
<?php endforeach;?>
</select>
<input type='checkbox' id='enable_encryption' <?php if($_['encryption_enabled']){echo 'checked="checked"';} ?>></input><label for='enable_encryption'><?php echo $l->t('Enable Encryption')?></label>
<input type='checkbox' id='enable_encryption' <?php if($_['encryption_enabled']) {echo 'checked="checked"';} ?>></input><label for='enable_encryption'><?php echo $l->t('Enable Encryption')?></label>
</fieldset>
</form>

View File

@ -7,7 +7,7 @@
*/
class Test_Encryption extends UnitTestCase {
function testEncryption(){
function testEncryption() {
$key=uniqid();
$file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
$source=file_get_contents($file); //nice large text file
@ -54,7 +54,7 @@ class Test_Encryption extends UnitTestCase {
}
function testBinary(){
function testBinary() {
$key=uniqid();
$file=__DIR__.'/binary';

View File

@ -10,7 +10,7 @@ class Test_CryptProxy extends UnitTestCase {
private $oldConfig;
private $oldKey;
public function setUp(){
public function setUp() {
$user=OC_User::getUser();
$this->oldConfig=OCP\Config::getAppValue('files_encryption','enable_encryption','true');
@ -40,14 +40,14 @@ class Test_CryptProxy extends UnitTestCase {
$rootView->mkdir('/'.$user.'/files');
}
public function tearDown(){
public function tearDown() {
OCP\Config::setAppValue('files_encryption','enable_encryption',$this->oldConfig);
if(!is_null($this->oldKey)){
if(!is_null($this->oldKey)) {
$_SESSION['enckey']=$this->oldKey;
}
}
public function testSimple(){
public function testSimple() {
$file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
$original=file_get_contents($file);
@ -64,7 +64,7 @@ class Test_CryptProxy extends UnitTestCase {
}
public function testView(){
public function testView() {
$file=OC::$SERVERROOT.'/3rdparty/MDB2.php';
$original=file_get_contents($file);
@ -86,7 +86,7 @@ class Test_CryptProxy extends UnitTestCase {
$this->assertEqual($original,$fromFile);
}
public function testBinary(){
public function testBinary() {
$file=__DIR__.'/binary';
$original=file_get_contents($file);

View File

@ -9,7 +9,7 @@
class Test_CryptStream extends UnitTestCase {
private $tmpFiles=array();
function testStream(){
function testStream() {
$stream=$this->getStream('test1','w',strlen('foobar'));
fwrite($stream,'foobar');
fclose($stream);
@ -40,11 +40,11 @@ class Test_CryptStream extends UnitTestCase {
* @param int size
* @return resource
*/
function getStream($id,$mode,$size){
if($id===''){
function getStream($id,$mode,$size) {
if($id==='') {
$id=uniqid();
}
if(!isset($this->tmpFiles[$id])){
if(!isset($this->tmpFiles[$id])) {
$file=OCP\Files::tmpFile();
$this->tmpFiles[$id]=$file;
}else{
@ -55,7 +55,7 @@ class Test_CryptStream extends UnitTestCase {
return fopen('crypt://streams/'.$id,$mode);
}
function testBinary(){
function testBinary() {
$file=__DIR__.'/binary';
$source=file_get_contents($file);

View File

@ -10,7 +10,7 @@ $(document).ready(function() {
var app_secret = $(this).find('.configuration [data-parameter="app_secret"]').val();
var config = $(this).find('.configuration');
if (app_key != '' && app_secret != '') {
var pos = window.location.search.indexOf('oauth_token') + 12
var pos = window.location.search.indexOf('oauth_token') + 12;
var token = $(this).find('.configuration [data-parameter="token"]');
if (pos != -1 && window.location.search.substr(pos, $(token).val().length) == $(token).val()) {
var token_secret = $(this).find('.configuration [data-parameter="token_secret"]');
@ -73,7 +73,7 @@ $(document).ready(function() {
}
});
} else {
OC.dialogs.alert('Please provide a valid Dropbox app key and secret.', 'Error configuring Dropbox storage')
OC.dialogs.alert('Please provide a valid Dropbox app key and secret.', 'Error configuring Dropbox storage');
}
});

View File

@ -66,7 +66,7 @@ OC.MountConfig={
return true;
}
}
}
};
$(document).ready(function() {
$('.chzn-select').chosen();
@ -179,4 +179,4 @@ $(document).ready(function() {
}
});
});
});

View File

@ -1,18 +1,18 @@
<?php $TRANSLATIONS = array(
"External Storage" => "Externí úložiště",
"Mount point" => "Přípojný bod",
"Backend" => "Končící",
"Configuration" => "Konfigurace",
"Options" => "Nastavení",
"Backend" => "Podpůrná vrstva",
"Configuration" => "Nastavení",
"Options" => "Možnosti",
"Applicable" => "Platný",
"Add mount point" => "Přidat přípojný bod",
"Add mount point" => "Přidat bod připojení",
"None set" => "Nenastaveno",
"All Users" => "Všichni uživatelé",
"Groups" => "Skupiny",
"Users" => "Uživatelé",
"Delete" => "Smazat",
"SSL root certificates" => "Kořenové SSL certifikáty",
"Import Root Certificate" => "Import kořenového certifikátu",
"Enable User External Storage" => "Zapnout uživatelské externí úložiště",
"Allow users to mount their own external storage" => "Povolit uživatelů připojit jejich vlastní externí úložiště"
"SSL root certificates" => "Kořenové certifikáty SSL",
"Import Root Certificate" => "Importovat kořenového certifikátu",
"Enable User External Storage" => "Zapnout externí uživatelské úložiště",
"Allow users to mount their own external storage" => "Povolit uživatelům připojení jejich vlastních externích úložišť"
);

View File

@ -1,5 +1,6 @@
<?php $TRANSLATIONS = array(
"External Storage" => "Almacenamiento externo",
"Mount point" => "Punto de montaje",
"Backend" => "Motor",
"Configuration" => "Configuración",
"Options" => "Opciones",
@ -9,5 +10,9 @@
"All Users" => "Todos los usuarios",
"Groups" => "Grupos",
"Users" => "Usuarios",
"Delete" => "Eliiminar"
"Delete" => "Eliiminar",
"SSL root certificates" => "Raíz de certificados SSL ",
"Import Root Certificate" => "Importar certificado raíz",
"Enable User External Storage" => "Habilitar almacenamiento de usuario externo",
"Allow users to mount their own external storage" => "Permitir a los usuarios montar su propio almacenamiento externo"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"External Storage" => "Kanpoko Biltegiratzea",
"Mount point" => "Montatze puntua",
"Backend" => "Motorra",
"Configuration" => "Konfigurazioa",
"Options" => "Aukerak",
"Add mount point" => "Gehitu muntatze puntua",

View File

@ -4,6 +4,7 @@
"Backend" => "Taustaosa",
"Configuration" => "Asetukset",
"Options" => "Valinnat",
"Applicable" => "Sovellettavissa",
"Add mount point" => "Lisää liitospiste",
"None set" => "Ei asetettu",
"All Users" => "Kaikki käyttäjät",
@ -12,5 +13,6 @@
"Delete" => "Poista",
"SSL root certificates" => "SSL-juurivarmenteet",
"Import Root Certificate" => "Tuo juurivarmenne",
"Enable User External Storage" => "Ota käyttöön ulkopuoliset tallennuspaikat",
"Allow users to mount their own external storage" => "Salli käyttäjien liittää omia erillisiä tallennusvälineitä"
);

View File

@ -0,0 +1,13 @@
<?php $TRANSLATIONS = array(
"External Storage" => "אחסון חיצוני",
"Configuration" => "הגדרות",
"Options" => "אפשרויות",
"All Users" => "כל המשתמשים",
"Groups" => "קבוצות",
"Users" => "משתמשים",
"Delete" => "מחיקה",
"SSL root certificates" => "שורש אישורי אבטחת SSL ",
"Import Root Certificate" => "ייבוא אישור אבטחת שורש",
"Enable User External Storage" => "הפעלת אחסון חיצוני למשתמשים",
"Allow users to mount their own external storage" => "יאפשר למשתמשים לעגן את האחסון החיצוני שלהם"
);

View File

@ -11,8 +11,8 @@
"Groups" => "Gruppi",
"Users" => "Utenti",
"Delete" => "Elimina",
"SSL root certificates" => "Certificato principale per SSL",
"Import Root Certificate" => "Importa certificato principale",
"SSL root certificates" => "Certificati SSL radice",
"Import Root Certificate" => "Importa certificato radice",
"Enable User External Storage" => "Abilita la memoria esterna dell'utente",
"Allow users to mount their own external storage" => "Consente agli utenti di montare la propria memoria esterna"
"Allow users to mount their own external storage" => "Consenti agli utenti di montare la propria memoria esterna"
);

View File

@ -0,0 +1,18 @@
<?php $TRANSLATIONS = array(
"External Storage" => "Externé úložisko",
"Mount point" => "Prípojný bod",
"Backend" => "Backend",
"Configuration" => "Nastavenia",
"Options" => "Možnosti",
"Applicable" => "Aplikovateľné",
"Add mount point" => "Pridať prípojný bod",
"None set" => "Žiadne nastavené",
"All Users" => "Všetci užívatelia",
"Groups" => "Skupiny",
"Users" => "Užívatelia",
"Delete" => "Odstrániť",
"SSL root certificates" => "Koreňové SSL certifikáty",
"Import Root Certificate" => "Importovať koreňový certifikát",
"Enable User External Storage" => "Povoliť externé úložisko",
"Allow users to mount their own external storage" => "Povoliť užívateľom pripojiť ich vlastné externé úložisko"
);

View File

@ -1,283 +1,281 @@
<?php
/**
* ownCloud
*
* @author Michael Gapczynski
* @copyright 2012 Michael Gapczynski mtgap@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/>.
*/
/**
* Class to configure the config/mount.php and data/$user/mount.php files
*/
class OC_Mount_Config {
const MOUNT_TYPE_GLOBAL = 'global';
const MOUNT_TYPE_GROUP = 'group';
const MOUNT_TYPE_USER = 'user';
/**
* Get details on each of the external storage backends, used for the mount config UI
* If a custom UI is needed, add the key 'custom' and a javascript file with that name will be loaded
* If the configuration parameter should be secret, add a '*' to the beginning of the value
* If the configuration parameter is a boolean, add a '!' to the beginning of the value
* If the configuration parameter is optional, add a '&' to the beginning of the value
* If the configuration parameter is hidden, add a '#' to the begining of the value
* @return array
*/
public static function getBackends() {
return array(
'OC_Filestorage_Local' => array('backend' => 'Local', 'configuration' => array('datadir' => 'Location')),
'OC_Filestorage_AmazonS3' => array('backend' => 'Amazon S3', 'configuration' => array('key' => 'Key', 'secret' => '*Secret', 'bucket' => 'Bucket')),
'OC_Filestorage_Dropbox' => array('backend' => 'Dropbox', 'configuration' => array('configured' => '#configured','app_key' => 'App key', 'app_secret' => 'App secret', 'token' => '#token', 'token_secret' => '#token_secret'), 'custom' => 'dropbox'),
'OC_Filestorage_FTP' => array('backend' => 'FTP', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure ftps://')),
'OC_Filestorage_Google' => array('backend' => 'Google Drive', 'configuration' => array('configured' => '#configured', 'token' => '#token', 'token_secret' => '#token secret'), 'custom' => 'google'),
'OC_Filestorage_SWIFT' => array('backend' => 'OpenStack Swift', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'token' => '*Token', 'root' => '&Root', 'secure' => '!Secure ftps://')),
'OC_Filestorage_SMB' => array('backend' => 'SMB', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'share' => 'Share', 'root' => '&Root')),
'OC_Filestorage_DAV' => array('backend' => 'WebDAV', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure https://'))
);
}
/**
* Get the system mount points
* The returned array is not in the same format as getUserMountPoints()
* @return array
*/
public static function getSystemMountPoints() {
$mountPoints = self::readData(false);
$backends = self::getBackends();
$system = array();
if (isset($mountPoints[self::MOUNT_TYPE_GROUP])) {
foreach ($mountPoints[self::MOUNT_TYPE_GROUP] as $group => $mounts) {
foreach ($mounts as $mountPoint => $mount) {
// Remove '/$user/files/' from mount point
$mountPoint = substr($mountPoint, 13);
// Merge the mount point into the current mount points
if (isset($system[$mountPoint]) && $system[$mountPoint]['configuration'] == $mount['options']) {
$system[$mountPoint]['applicable']['groups'] = array_merge($system[$mountPoint]['applicable']['groups'], array($group));
} else {
$system[$mountPoint] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], 'applicable' => array('groups' => array($group), 'users' => array()));
}
}
}
}
if (isset($mountPoints[self::MOUNT_TYPE_USER])) {
foreach ($mountPoints[self::MOUNT_TYPE_USER] as $user => $mounts) {
foreach ($mounts as $mountPoint => $mount) {
// Remove '/$user/files/' from mount point
$mountPoint = substr($mountPoint, 13);
// Merge the mount point into the current mount points
if (isset($system[$mountPoint]) && $system[$mountPoint]['configuration'] == $mount['options']) {
$system[$mountPoint]['applicable']['users'] = array_merge($system[$mountPoint]['applicable']['users'], array($user));
} else {
$system[$mountPoint] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], 'applicable' => array('groups' => array(), 'users' => array($user)));
}
}
}
}
return $system;
}
/**
* Get the personal mount points of the current user
* The returned array is not in the same format as getUserMountPoints()
* @return array
*/
public static function getPersonalMountPoints() {
$mountPoints = self::readData(true);
$backends = self::getBackends();
$uid = OCP\User::getUser();
$personal = array();
if (isset($mountPoints[self::MOUNT_TYPE_USER][$uid])) {
foreach ($mountPoints[self::MOUNT_TYPE_USER][$uid] as $mountPoint => $mount) {
// Remove '/uid/files/' from mount point
$personal[substr($mountPoint, strlen($uid) + 8)] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options']);
}
}
return $personal;
}
/**
* Add a mount point to the filesystem
* @param string Mount point
* @param string Backend class
* @param array Backend parameters for the class
* @param string MOUNT_TYPE_GROUP | MOUNT_TYPE_USER
* @param string User or group to apply mount to
* @param bool Personal or system mount point i.e. is this being called from the personal or admin page
* @return bool
*/
public static function addMountPoint($mountPoint, $class, $classOptions, $mountType, $applicable, $isPersonal = false) {
if ($isPersonal) {
// Verify that the mount point applies for the current user
// Prevent non-admin users from mounting local storage
if ($applicable != OCP\User::getUser() || $class == 'OC_Filestorage_Local') {
return false;
}
$mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/');
} else {
$mountPoint = '/$user/files/'.ltrim($mountPoint, '/');
}
$mount = array($applicable => array($mountPoint => array('class' => $class, 'options' => $classOptions)));
$mountPoints = self::readData($isPersonal);
// Merge the new mount point into the current mount points
if (isset($mountPoints[$mountType])) {
if (isset($mountPoints[$mountType][$applicable])) {
$mountPoints[$mountType][$applicable] = array_merge($mountPoints[$mountType][$applicable], $mount[$applicable]);
} else {
$mountPoints[$mountType] = array_merge($mountPoints[$mountType], $mount);
}
} else {
$mountPoints[$mountType] = $mount;
}
self::writeData($isPersonal, $mountPoints);
return true;
}
/**
*
* @param string Mount point
* @param string MOUNT_TYPE_GROUP | MOUNT_TYPE_USER
* @param string User or group to remove mount from
* @param bool Personal or system mount point
* @return bool
*/
public static function removeMountPoint($mountPoint, $mountType, $applicable, $isPersonal = false) {
// Verify that the mount point applies for the current user
if ($isPersonal) {
if ($applicable != OCP\User::getUser()) {
return false;
}
$mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/');
} else {
$mountPoint = '/$user/files/'.ltrim($mountPoint, '/');
}
$mountPoints = self::readData($isPersonal);
// Remove mount point
unset($mountPoints[$mountType][$applicable][$mountPoint]);
// Unset parent arrays if empty
if (empty($mountPoints[$mountType][$applicable])) {
unset($mountPoints[$mountType][$applicable]);
if (empty($mountPoints[$mountType])) {
unset($mountPoints[$mountType]);
}
}
self::writeData($isPersonal, $mountPoints);
return true;
}
/**
* Read the mount points in the config file into an array
* @param bool Personal or system config file
* @return array
*/
private static function readData($isPersonal) {
if ($isPersonal) {
$file = OC::$SERVERROOT.'/data/'.OCP\User::getUser().'/mount.php';
} else {
$file = OC::$SERVERROOT.'/config/mount.php';
}
if (is_file($file)) {
$mountPoints = include($file);
if (is_array($mountPoints)) {
return $mountPoints;
}
}
return array();
}
/**
* Write the mount points to the config file
* @param bool Personal or system config file
* @param array Mount points
*/
private static function writeData($isPersonal, $data) {
if ($isPersonal) {
$file = OC::$SERVERROOT.'/data/'.OCP\User::getUser().'/mount.php';
} else {
$file = OC::$SERVERROOT.'/config/mount.php';
}
$content = "<?php return array (\n";
if (isset($data[self::MOUNT_TYPE_GROUP])) {
$content .= "\t'group' => array (\n";
foreach ($data[self::MOUNT_TYPE_GROUP] as $group => $mounts) {
$content .= "\t\t'".$group."' => array (\n";
foreach ($mounts as $mountPoint => $mount) {
$content .= "\t\t\t'".$mountPoint."' => ".str_replace("\n", '', var_export($mount, true)).",\n";
}
$content .= "\t\t),\n";
}
$content .= "\t),\n";
}
if (isset($data[self::MOUNT_TYPE_USER])) {
$content .= "\t'user' => array (\n";
foreach ($data[self::MOUNT_TYPE_USER] as $user => $mounts) {
$content .= "\t\t'".$user."' => array (\n";
foreach ($mounts as $mountPoint => $mount) {
$content .= "\t\t\t'".$mountPoint."' => ".str_replace("\n", '', var_export($mount, true)).",\n";
}
$content .= "\t\t),\n";
}
$content .= "\t),\n";
}
$content .= ");\n?>";
@file_put_contents($file, $content);
}
/**
* Returns all user uploaded ssl root certificates
* @return array
*/
public static function getCertificates() {
$view = \OCP\Files::getStorage('files_external');
$path=\OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").'uploads/';
if (!is_dir($path)) mkdir($path);
$result = array();
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if($file != '.' && $file != '..') $result[] = $file;
}
return $result;
}
/**
* creates certificate bundle
*/
public static function createCertificateBundle() {
$view = \OCP\Files::getStorage("files_external");
$path = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("");
$certs = OC_Mount_Config::getCertificates();
$fh_certs = fopen($path."/rootcerts.crt", 'w');
foreach ($certs as $cert) {
$file=$path.'/uploads/'.$cert;
$fh = fopen($file, "r");
$data = fread($fh, filesize($file));
fclose($fh);
if (strpos($data, 'BEGIN CERTIFICATE')) {
fwrite($fh_certs, $data);
}
}
fclose($fh_certs);
return true;
}
}
?>
<?php
/**
* ownCloud
*
* @author Michael Gapczynski
* @copyright 2012 Michael Gapczynski mtgap@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/>.
*/
/**
* Class to configure the config/mount.php and data/$user/mount.php files
*/
class OC_Mount_Config {
const MOUNT_TYPE_GLOBAL = 'global';
const MOUNT_TYPE_GROUP = 'group';
const MOUNT_TYPE_USER = 'user';
/**
* Get details on each of the external storage backends, used for the mount config UI
* If a custom UI is needed, add the key 'custom' and a javascript file with that name will be loaded
* If the configuration parameter should be secret, add a '*' to the beginning of the value
* If the configuration parameter is a boolean, add a '!' to the beginning of the value
* If the configuration parameter is optional, add a '&' to the beginning of the value
* If the configuration parameter is hidden, add a '#' to the begining of the value
* @return array
*/
public static function getBackends() {
return array(
'OC_Filestorage_Local' => array('backend' => 'Local', 'configuration' => array('datadir' => 'Location')),
'OC_Filestorage_AmazonS3' => array('backend' => 'Amazon S3', 'configuration' => array('key' => 'Key', 'secret' => '*Secret', 'bucket' => 'Bucket')),
'OC_Filestorage_Dropbox' => array('backend' => 'Dropbox', 'configuration' => array('configured' => '#configured','app_key' => 'App key', 'app_secret' => 'App secret', 'token' => '#token', 'token_secret' => '#token_secret'), 'custom' => 'dropbox'),
'OC_Filestorage_FTP' => array('backend' => 'FTP', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure ftps://')),
'OC_Filestorage_Google' => array('backend' => 'Google Drive', 'configuration' => array('configured' => '#configured', 'token' => '#token', 'token_secret' => '#token secret'), 'custom' => 'google'),
'OC_Filestorage_SWIFT' => array('backend' => 'OpenStack Swift', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'token' => '*Token', 'root' => '&Root', 'secure' => '!Secure ftps://')),
'OC_Filestorage_SMB' => array('backend' => 'SMB', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'share' => 'Share', 'root' => '&Root')),
'OC_Filestorage_DAV' => array('backend' => 'WebDAV', 'configuration' => array('host' => 'URL', 'user' => 'Username', 'password' => '*Password', 'root' => '&Root', 'secure' => '!Secure https://'))
);
}
/**
* Get the system mount points
* The returned array is not in the same format as getUserMountPoints()
* @return array
*/
public static function getSystemMountPoints() {
$mountPoints = self::readData(false);
$backends = self::getBackends();
$system = array();
if (isset($mountPoints[self::MOUNT_TYPE_GROUP])) {
foreach ($mountPoints[self::MOUNT_TYPE_GROUP] as $group => $mounts) {
foreach ($mounts as $mountPoint => $mount) {
// Remove '/$user/files/' from mount point
$mountPoint = substr($mountPoint, 13);
// Merge the mount point into the current mount points
if (isset($system[$mountPoint]) && $system[$mountPoint]['configuration'] == $mount['options']) {
$system[$mountPoint]['applicable']['groups'] = array_merge($system[$mountPoint]['applicable']['groups'], array($group));
} else {
$system[$mountPoint] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], 'applicable' => array('groups' => array($group), 'users' => array()));
}
}
}
}
if (isset($mountPoints[self::MOUNT_TYPE_USER])) {
foreach ($mountPoints[self::MOUNT_TYPE_USER] as $user => $mounts) {
foreach ($mounts as $mountPoint => $mount) {
// Remove '/$user/files/' from mount point
$mountPoint = substr($mountPoint, 13);
// Merge the mount point into the current mount points
if (isset($system[$mountPoint]) && $system[$mountPoint]['configuration'] == $mount['options']) {
$system[$mountPoint]['applicable']['users'] = array_merge($system[$mountPoint]['applicable']['users'], array($user));
} else {
$system[$mountPoint] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options'], 'applicable' => array('groups' => array(), 'users' => array($user)));
}
}
}
}
return $system;
}
/**
* Get the personal mount points of the current user
* The returned array is not in the same format as getUserMountPoints()
* @return array
*/
public static function getPersonalMountPoints() {
$mountPoints = self::readData(true);
$backends = self::getBackends();
$uid = OCP\User::getUser();
$personal = array();
if (isset($mountPoints[self::MOUNT_TYPE_USER][$uid])) {
foreach ($mountPoints[self::MOUNT_TYPE_USER][$uid] as $mountPoint => $mount) {
// Remove '/uid/files/' from mount point
$personal[substr($mountPoint, strlen($uid) + 8)] = array('class' => $mount['class'], 'backend' => $backends[$mount['class']]['backend'], 'configuration' => $mount['options']);
}
}
return $personal;
}
/**
* Add a mount point to the filesystem
* @param string Mount point
* @param string Backend class
* @param array Backend parameters for the class
* @param string MOUNT_TYPE_GROUP | MOUNT_TYPE_USER
* @param string User or group to apply mount to
* @param bool Personal or system mount point i.e. is this being called from the personal or admin page
* @return bool
*/
public static function addMountPoint($mountPoint, $class, $classOptions, $mountType, $applicable, $isPersonal = false) {
if ($isPersonal) {
// Verify that the mount point applies for the current user
// Prevent non-admin users from mounting local storage
if ($applicable != OCP\User::getUser() || $class == 'OC_Filestorage_Local') {
return false;
}
$mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/');
} else {
$mountPoint = '/$user/files/'.ltrim($mountPoint, '/');
}
$mount = array($applicable => array($mountPoint => array('class' => $class, 'options' => $classOptions)));
$mountPoints = self::readData($isPersonal);
// Merge the new mount point into the current mount points
if (isset($mountPoints[$mountType])) {
if (isset($mountPoints[$mountType][$applicable])) {
$mountPoints[$mountType][$applicable] = array_merge($mountPoints[$mountType][$applicable], $mount[$applicable]);
} else {
$mountPoints[$mountType] = array_merge($mountPoints[$mountType], $mount);
}
} else {
$mountPoints[$mountType] = $mount;
}
self::writeData($isPersonal, $mountPoints);
return true;
}
/**
*
* @param string Mount point
* @param string MOUNT_TYPE_GROUP | MOUNT_TYPE_USER
* @param string User or group to remove mount from
* @param bool Personal or system mount point
* @return bool
*/
public static function removeMountPoint($mountPoint, $mountType, $applicable, $isPersonal = false) {
// Verify that the mount point applies for the current user
if ($isPersonal) {
if ($applicable != OCP\User::getUser()) {
return false;
}
$mountPoint = '/'.$applicable.'/files/'.ltrim($mountPoint, '/');
} else {
$mountPoint = '/$user/files/'.ltrim($mountPoint, '/');
}
$mountPoints = self::readData($isPersonal);
// Remove mount point
unset($mountPoints[$mountType][$applicable][$mountPoint]);
// Unset parent arrays if empty
if (empty($mountPoints[$mountType][$applicable])) {
unset($mountPoints[$mountType][$applicable]);
if (empty($mountPoints[$mountType])) {
unset($mountPoints[$mountType]);
}
}
self::writeData($isPersonal, $mountPoints);
return true;
}
/**
* Read the mount points in the config file into an array
* @param bool Personal or system config file
* @return array
*/
private static function readData($isPersonal) {
if ($isPersonal) {
$file = OC_User::getHome(OCP\User::getUser()).'/mount.php';
} else {
$file = OC::$SERVERROOT.'/config/mount.php';
}
if (is_file($file)) {
$mountPoints = include($file);
if (is_array($mountPoints)) {
return $mountPoints;
}
}
return array();
}
/**
* Write the mount points to the config file
* @param bool Personal or system config file
* @param array Mount points
*/
private static function writeData($isPersonal, $data) {
if ($isPersonal) {
$file = OC_User::getHome(OCP\User::getUser()).'/mount.php';
} else {
$file = OC::$SERVERROOT.'/config/mount.php';
}
$content = "<?php return array (\n";
if (isset($data[self::MOUNT_TYPE_GROUP])) {
$content .= "\t'group' => array (\n";
foreach ($data[self::MOUNT_TYPE_GROUP] as $group => $mounts) {
$content .= "\t\t'".$group."' => array (\n";
foreach ($mounts as $mountPoint => $mount) {
$content .= "\t\t\t'".$mountPoint."' => ".str_replace("\n", '', var_export($mount, true)).",\n";
}
$content .= "\t\t),\n";
}
$content .= "\t),\n";
}
if (isset($data[self::MOUNT_TYPE_USER])) {
$content .= "\t'user' => array (\n";
foreach ($data[self::MOUNT_TYPE_USER] as $user => $mounts) {
$content .= "\t\t'".$user."' => array (\n";
foreach ($mounts as $mountPoint => $mount) {
$content .= "\t\t\t'".$mountPoint."' => ".str_replace("\n", '', var_export($mount, true)).",\n";
}
$content .= "\t\t),\n";
}
$content .= "\t),\n";
}
$content .= ");\n?>";
@file_put_contents($file, $content);
}
/**
* Returns all user uploaded ssl root certificates
* @return array
*/
public static function getCertificates() {
$view = \OCP\Files::getStorage('files_external');
$path=\OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("").'uploads/';
if (!is_dir($path)) mkdir($path);
$result = array();
$handle = opendir($path);
while (false !== ($file = readdir($handle))) {
if($file != '.' && $file != '..') $result[] = $file;
}
return $result;
}
/**
* creates certificate bundle
*/
public static function createCertificateBundle() {
$view = \OCP\Files::getStorage("files_external");
$path = \OCP\Config::getSystemValue('datadirectory').$view->getAbsolutePath("");
$certs = OC_Mount_Config::getCertificates();
$fh_certs = fopen($path."/rootcerts.crt", 'w');
foreach ($certs as $cert) {
$file=$path.'/uploads/'.$cert;
$fh = fopen($file, "r");
$data = fread($fh, filesize($file));
fclose($fh);
if (strpos($data, 'BEGIN CERTIFICATE')) {
fwrite($fh_certs, $data);
}
}
fclose($fh_certs);
return true;
}
}

View File

@ -15,13 +15,13 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
private static $tempFiles=array();
public function __construct($params){
public function __construct($params) {
$this->host=$params['host'];
$this->user=$params['user'];
$this->password=$params['password'];
$this->secure=isset($params['secure'])?(bool)$params['secure']:false;
$this->root=isset($params['root'])?$params['root']:'/';
if(!$this->root || $this->root[0]!='/'){
if(!$this->root || $this->root[0]!='/') {
$this->root='/'.$this->root;
}
//create the root folder if necesary
@ -35,16 +35,16 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
* @param string path
* @return string
*/
public function constructUrl($path){
public function constructUrl($path) {
$url='ftp';
if($this->secure){
if($this->secure) {
$url.='s';
}
$url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path;
return $url;
}
public function fopen($path,$mode){
switch($mode){
public function fopen($path,$mode) {
switch($mode) {
case 'r':
case 'rb':
case 'w':
@ -63,14 +63,14 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
case 'c':
case 'c+':
//emulate these
if(strrpos($path,'.')!==false){
if(strrpos($path,'.')!==false) {
$ext=substr($path,strrpos($path,'.'));
}else{
$ext='';
}
$tmpFile=OCP\Files::tmpFile($ext);
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack');
if($this->file_exists($path)){
if($this->file_exists($path)) {
$this->getFile($path,$tmpFile);
}
self::$tempFiles[$tmpFile]=$path;
@ -78,8 +78,8 @@ class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{
}
}
public function writeBack($tmpFile){
if(isset(self::$tempFiles[$tmpFile])){
public function writeBack($tmpFile) {
if(isset(self::$tempFiles[$tmpFile])) {
$this->uploadFile($tmpFile,self::$tempFiles[$tmpFile]);
unlink($tmpFile);
}

View File

@ -6,7 +6,7 @@
* See the COPYING-README file.
*/
require_once('smb4php/smb.php');
require_once 'smb4php/smb.php';
class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
private $password;
@ -15,40 +15,40 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
private $root;
private $share;
public function __construct($params){
public function __construct($params) {
$this->host=$params['host'];
$this->user=$params['user'];
$this->password=$params['password'];
$this->share=$params['share'];
$this->root=isset($params['root'])?$params['root']:'/';
if(!$this->root || $this->root[0]!='/'){
if(!$this->root || $this->root[0]!='/') {
$this->root='/'.$this->root;
}
if(substr($this->root,-1,1)!='/'){
if(substr($this->root,-1,1)!='/') {
$this->root.='/';
}
if(!$this->share || $this->share[0]!='/'){
if(!$this->share || $this->share[0]!='/') {
$this->share='/'.$this->share;
}
if(substr($this->share,-1,1)=='/'){
if(substr($this->share,-1,1)=='/') {
$this->share=substr($this->share,0,-1);
}
//create the root folder if necesary
if(!$this->is_dir('')){
if(!$this->is_dir('')) {
$this->mkdir('');
}
}
public function constructUrl($path){
if(substr($path,-1)=='/'){
public function constructUrl($path) {
if(substr($path,-1)=='/') {
$path=substr($path,0,-1);
}
return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path;
}
public function stat($path){
if(!$path and $this->root=='/'){//mtime doesn't work for shares
public function stat($path) {
if(!$path and $this->root=='/') {//mtime doesn't work for shares
$mtime=$this->shareMTime();
$stat=stat($this->constructUrl($path));
$stat['mtime']=$mtime;
@ -58,7 +58,7 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
}
}
public function filetype($path){
public function filetype($path) {
return (bool)@$this->opendir($path);//using opendir causes the same amount of requests and caches the content of the folder in one go
}
@ -67,8 +67,8 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
* @param int $time
* @return bool
*/
public function hasUpdated($path,$time){
if(!$path and $this->root=='/'){
public function hasUpdated($path,$time) {
if(!$path and $this->root=='/') {
//mtime doesn't work for shares, but giving the nature of the backend, doing a full update is still just fast enough
return true;
}else{
@ -80,13 +80,13 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{
/**
* get the best guess for the modification time of the share
*/
private function shareMTime(){
private function shareMTime() {
$dh=$this->opendir('');
$lastCtime=0;
while($file=readdir($dh)){
if($file!='.' and $file!='..'){
while($file=readdir($dh)) {
if($file!='.' and $file!='..') {
$ctime=$this->filemtime($file);
if($ctime>$lastCtime){
if($ctime>$lastCtime) {
$lastCtime=$ctime;
}
}

View File

@ -10,12 +10,12 @@
abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
abstract public function constructUrl($path);
public function mkdir($path){
public function mkdir($path) {
return mkdir($this->constructUrl($path));
}
public function rmdir($path){
if($this->file_exists($path)){
public function rmdir($path) {
if($this->file_exists($path)) {
$succes=rmdir($this->constructUrl($path));
clearstatcache();
return $succes;
@ -24,42 +24,42 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
}
}
public function opendir($path){
public function opendir($path) {
return opendir($this->constructUrl($path));
}
public function filetype($path){
public function filetype($path) {
return filetype($this->constructUrl($path));
}
public function isReadable($path){
public function isReadable($path) {
return true;//not properly supported
}
public function isUpdatable($path){
public function isUpdatable($path) {
return true;//not properly supported
}
public function file_exists($path){
public function file_exists($path) {
return file_exists($this->constructUrl($path));
}
public function unlink($path){
public function unlink($path) {
$succes=unlink($this->constructUrl($path));
clearstatcache();
return $succes;
}
public function fopen($path,$mode){
public function fopen($path,$mode) {
return fopen($this->constructUrl($path),$mode);
}
public function free_space($path){
public function free_space($path) {
return 0;
}
public function touch($path,$mtime=null){
if(is_null($mtime)){
public function touch($path,$mtime=null) {
if(is_null($mtime)) {
$fh=$this->fopen($path,'a');
fwrite($fh,'');
fclose($fh);
@ -68,19 +68,19 @@ abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{
}
}
public function getFile($path,$target){
public function getFile($path,$target) {
return copy($this->constructUrl($path),$target);
}
public function uploadFile($path,$target){
public function uploadFile($path,$target) {
return copy($path,$this->constructUrl($target));
}
public function rename($path1,$path2){
public function rename($path1,$path2) {
return rename($this->constructUrl($path1),$this->constructUrl($path2));
}
public function stat($path){
public function stat($path) {
return stat($this->constructUrl($path));
}

View File

@ -6,7 +6,7 @@
* See the COPYING-README file.
*/
require_once('php-cloudfiles/cloudfiles.php');
require_once 'php-cloudfiles/cloudfiles.php';
class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
private $host;
@ -38,7 +38,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string path
* @return string
*/
private function getContainerName($path){
private function getContainerName($path) {
$path=trim($this->root.$path,'/');
return str_replace('/','\\',$path);
}
@ -48,18 +48,18 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string path
* @return CF_Container
*/
private function getContainer($path){
if($path=='' or $path=='/'){
private function getContainer($path) {
if($path=='' or $path=='/') {
return $this->rootContainer;
}
if(isset($this->containers[$path])){
if(isset($this->containers[$path])) {
return $this->containers[$path];
}
try{
$container=$this->conn->get_container($this->getContainerName($path));
$this->containers[$path]=$container;
return $container;
}catch(NoSuchContainerException $e){
}catch(NoSuchContainerException $e) {
return null;
}
}
@ -69,15 +69,15 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string path
* @return CF_Container
*/
private function createContainer($path){
if($path=='' or $path=='/'){
private function createContainer($path) {
if($path=='' or $path=='/') {
return $this->conn->create_container($this->getContainerName($path));
}
$parent=dirname($path);
if($parent=='' or $parent=='/'){
if($parent=='' or $parent=='/') {
$parentContainer=$this->rootContainer;
}else{
if(!$this->containerExists($parent)){
if(!$this->containerExists($parent)) {
$parentContainer=$this->createContainer($parent);
}else{
$parentContainer=$this->getContainer($parent);
@ -92,19 +92,19 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string path
* @return CF_Object
*/
private function getObject($path){
if(isset($this->objects[$path])){
private function getObject($path) {
if(isset($this->objects[$path])) {
return $this->objects[$path];
}
$container=$this->getContainer(dirname($path));
if(is_null($container)){
if(is_null($container)) {
return null;
}else{
try{
$obj=$container->get_object(basename($path));
$this->objects[$path]=$obj;
return $obj;
}catch(NoSuchObjectException $e){
}catch(NoSuchObjectException $e) {
return null;
}
}
@ -115,12 +115,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param CF_Container
* @return array
*/
private function getObjects($container){
if(is_null($container)){
private function getObjects($container) {
if(is_null($container)) {
return array();
}else{
$files=$container->get_objects();
foreach($files as &$file){
foreach($files as &$file) {
$file=$file->name;
}
return $files;
@ -132,9 +132,9 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string path
* @return CF_Object
*/
private function createObject($path){
private function createObject($path) {
$container=$this->getContainer(dirname($path));
if(!is_null($container)){
if(!is_null($container)) {
$container=$this->createContainer($path);
}
return $container->create_object(basename($path));
@ -145,7 +145,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string
* @return bool
*/
private function objectExists($path){
private function objectExists($path) {
return !is_null($this->getObject($path));
}
@ -154,7 +154,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string path
* @return bool
*/
private function containerExists($path){
private function containerExists($path) {
return !is_null($this->getContainer($path));
}
@ -163,18 +163,18 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param CF_Container container
* @return array
*/
private function getSubContainers($container){
private function getSubContainers($container) {
$tmpFile=OCP\Files::tmpFile();
$obj=$this->getSubContainerFile($container);
try{
$obj->save_to_filename($tmpFile);
}catch(Exception $e){
}catch(Exception $e) {
return array();
}
$obj->save_to_filename($tmpFile);
$containers=file($tmpFile);
unlink($tmpFile);
foreach($containers as &$sub){
foreach($containers as &$sub) {
$sub=trim($sub);
}
return $containers;
@ -186,8 +186,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string name
* @return bool
*/
private function addSubContainer($container,$name){
if(!$name){
private function addSubContainer($container,$name) {
if(!$name) {
return false;
}
$tmpFile=OCP\Files::tmpFile();
@ -195,17 +195,17 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
try{
$obj->save_to_filename($tmpFile);
$containers=file($tmpFile);
foreach($containers as &$sub){
foreach($containers as &$sub) {
$sub=trim($sub);
}
if(array_search($name,$containers)!==false){
if(array_search($name,$containers)!==false) {
unlink($tmpFile);
return false;
}else{
$fh=fopen($tmpFile,'a');
fwrite($fh,$name."\n");
}
}catch(Exception $e){
}catch(Exception $e) {
$containers=array();
file_put_contents($tmpFile,$name."\n");
}
@ -221,8 +221,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param string name
* @return bool
*/
private function removeSubContainer($container,$name){
if(!$name){
private function removeSubContainer($container,$name) {
if(!$name) {
return false;
}
$tmpFile=OCP\Files::tmpFile();
@ -230,14 +230,14 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
try{
$obj->save_to_filename($tmpFile);
$containers=file($tmpFile);
}catch(Exception $e){
}catch(Exception $e) {
return false;
}
foreach($containers as &$sub){
foreach($containers as &$sub) {
$sub=trim($sub);
}
$i=array_search($name,$containers);
if($i===false){
if($i===false) {
unlink($tmpFile);
return false;
}else{
@ -255,21 +255,21 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* @param CF_Container container
* @return CF_Object
*/
private function getSubContainerFile($container){
private function getSubContainerFile($container) {
try{
return $container->get_object(self::SUBCONTAINER_FILE);
}catch(NoSuchObjectException $e){
}catch(NoSuchObjectException $e) {
return $container->create_object(self::SUBCONTAINER_FILE);
}
}
public function __construct($params){
public function __construct($params) {
$this->token=$params['token'];
$this->host=$params['host'];
$this->user=$params['user'];
$this->root=isset($params['root'])?$params['root']:'/';
$this->secure=isset($params['secure'])?(bool)$params['secure']:true;
if(!$this->root || $this->root[0]!='/'){
if(!$this->root || $this->root[0]!='/') {
$this->root='/'.$this->root;
}
$this->auth = new CF_Authentication($this->user, $this->token, null, $this->host);
@ -277,7 +277,7 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
$this->conn = new CF_Connection($this->auth);
if(!$this->containerExists($this->root)){
if(!$this->containerExists($this->root)) {
$this->rootContainer=$this->createContainer('/');
}else{
$this->rootContainer=$this->getContainer('/');
@ -285,8 +285,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
public function mkdir($path){
if($this->containerExists($path)){
public function mkdir($path) {
if($this->containerExists($path)) {
return false;
}else{
$this->createContainer($path);
@ -294,12 +294,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
}
public function rmdir($path){
if(!$this->containerExists($path)){
public function rmdir($path) {
if(!$this->containerExists($path)) {
return false;
}else{
$this->emptyContainer($path);
if($path!='' and $path!='/'){
if($path!='' and $path!='/') {
$parentContainer=$this->getContainer(dirname($path));
$this->removeSubContainer($parentContainer,basename($path));
}
@ -310,14 +310,14 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
}
private function emptyContainer($path){
private function emptyContainer($path) {
$container=$this->getContainer($path);
if(is_null($container)){
if(is_null($container)) {
return;
}
$subContainers=$this->getSubContainers($container);
foreach($subContainers as $sub){
if($sub){
foreach($subContainers as $sub) {
if($sub) {
$this->emptyContainer($path.'/'.$sub);
$this->conn->delete_container($this->getContainerName($path.'/'.$sub));
unset($this->containers[$path.'/'.$sub]);
@ -325,17 +325,17 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
$objects=$this->getObjects($container);
foreach($objects as $object){
foreach($objects as $object) {
$container->delete_object($object);
unset($this->objects[$path.'/'.$object]);
}
}
public function opendir($path){
public function opendir($path) {
$container=$this->getContainer($path);
$files=$this->getObjects($container);
$i=array_search(self::SUBCONTAINER_FILE,$files);
if($i!==false){
if($i!==false) {
unset($files[$i]);
}
$subContainers=$this->getSubContainers($container);
@ -345,43 +345,43 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
return opendir('fakedir://'.$id);
}
public function filetype($path){
if($this->containerExists($path)){
public function filetype($path) {
if($this->containerExists($path)) {
return 'dir';
}else{
return 'file';
}
}
public function isReadable($path){
public function isReadable($path) {
return true;
}
public function isUpdatable($path){
public function isUpdatable($path) {
return true;
}
public function file_exists($path){
if($this->is_dir($path)){
public function file_exists($path) {
if($this->is_dir($path)) {
return true;
}else{
return $this->objectExists($path);
}
}
public function file_get_contents($path){
public function file_get_contents($path) {
$obj=$this->getObject($path);
if(is_null($obj)){
if(is_null($obj)) {
return false;
}
return $obj->read();
}
public function file_put_contents($path,$content){
public function file_put_contents($path,$content) {
$obj=$this->getObject($path);
if(is_null($obj)){
if(is_null($obj)) {
$container=$this->getContainer(dirname($path));
if(is_null($container)){
if(is_null($container)) {
return false;
}
$obj=$container->create_object(basename($path));
@ -390,8 +390,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
return $obj->write($content);
}
public function unlink($path){
if($this->objectExists($path)){
public function unlink($path) {
if($this->objectExists($path)) {
$container=$this->getContainer(dirname($path));
$container->delete_object(basename($path));
unset($this->objects[$path]);
@ -400,12 +400,12 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
}
public function fopen($path,$mode){
public function fopen($path,$mode) {
$obj=$this->getObject($path);
if(is_null($obj)){
if(is_null($obj)) {
return false;
}
switch($mode){
switch($mode) {
case 'r':
case 'rb':
$fp = fopen('php://temp', 'r+');
@ -432,23 +432,23 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
}
public function writeBack($tmpFile){
if(isset(self::$tempFiles[$tmpFile])){
public function writeBack($tmpFile) {
if(isset(self::$tempFiles[$tmpFile])) {
$this->fromTmpFile($tmpFile,self::$tempFiles[$tmpFile]);
unlink($tmpFile);
}
}
public function free_space($path){
public function free_space($path) {
return 0;
}
public function touch($path,$mtime=null){
public function touch($path,$mtime=null) {
$obj=$this->getObject($path);
if(is_null($obj)){
if(is_null($obj)) {
return false;
}
if(is_null($mtime)){
if(is_null($mtime)) {
$mtime=time();
}
@ -457,36 +457,36 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
$obj->sync_metadata();
}
public function rename($path1,$path2){
public function rename($path1,$path2) {
$sourceContainer=$this->getContainer(dirname($path1));
$targetContainer=$this->getContainer(dirname($path2));
$result=$sourceContainer->move_object_to(basename($path1),$targetContainer,basename($path2));
unset($this->objects[$path1]);
if($result){
if($result) {
$targetObj=$this->getObject($path2);
$this->resetMTime($targetObj);
}
return $result;
}
public function copy($path1,$path2){
public function copy($path1,$path2) {
$sourceContainer=$this->getContainer(dirname($path1));
$targetContainer=$this->getContainer(dirname($path2));
$result=$sourceContainer->copy_object_to(basename($path1),$targetContainer,basename($path2));
if($result){
if($result) {
$targetObj=$this->getObject($path2);
$this->resetMTime($targetObj);
}
return $result;
}
public function stat($path){
public function stat($path) {
$obj=$this->getObject($path);
if(is_null($obj)){
if(is_null($obj)) {
return false;
}
if(isset($obj->metadata['Mtime']) and $obj->metadata['Mtime']>-1){
if(isset($obj->metadata['Mtime']) and $obj->metadata['Mtime']>-1) {
$mtime=$obj->metadata['Mtime'];
}else{
$mtime=strtotime($obj->last_modified);
@ -498,9 +498,9 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
);
}
private function getTmpFile($path){
private function getTmpFile($path) {
$obj=$this->getObject($path);
if(!is_null($obj)){
if(!is_null($obj)) {
$tmpFile=OCP\Files::tmpFile();
$obj->save_to_filename($tmpFile);
return $tmpFile;
@ -509,9 +509,9 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
}
}
private function fromTmpFile($tmpFile,$path){
private function fromTmpFile($tmpFile,$path) {
$obj=$this->getObject($path);
if(is_null($obj)){
if(is_null($obj)) {
$obj=$this->createObject($path);
}
$obj->load_from_filename($tmpFile);
@ -522,8 +522,8 @@ class OC_FileStorage_SWIFT extends OC_Filestorage_Common{
* remove custom mtime metadata
* @param CF_Object obj
*/
private function resetMTime($obj){
if(isset($obj->metadata['Mtime'])){
private function resetMTime($obj) {
if(isset($obj->metadata['Mtime'])) {
$obj->metadata['Mtime']=-1;
$obj->sync_metadata();
}

View File

@ -19,7 +19,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
private static $tempFiles=array();
public function __construct($params){
public function __construct($params) {
$host = $params['host'];
//remove leading http[s], will be generated in createBaseUri()
if (substr($host,0,8) == "https://") $host = substr($host, 8);
@ -29,10 +29,10 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$this->password=$params['password'];
$this->secure=(isset($params['secure']) && $params['secure'] == 'true')?true:false;
$this->root=isset($params['root'])?$params['root']:'/';
if(!$this->root || $this->root[0]!='/'){
if(!$this->root || $this->root[0]!='/') {
$this->root='/'.$this->root;
}
if(substr($this->root,-1,1)!='/'){
if(substr($this->root,-1,1)!='/') {
$this->root.='/';
}
@ -54,26 +54,26 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
$this->mkdir('');
}
private function createBaseUri(){
private function createBaseUri() {
$baseUri='http';
if($this->secure){
if($this->secure) {
$baseUri.='s';
}
$baseUri.='://'.$this->host.$this->root;
return $baseUri;
}
public function mkdir($path){
public function mkdir($path) {
$path=$this->cleanPath($path);
return $this->simpleResponse('MKCOL',$path,null,201);
}
public function rmdir($path){
public function rmdir($path) {
$path=$this->cleanPath($path);
return $this->simpleResponse('DELETE',$path,null,204);
}
public function opendir($path){
public function opendir($path) {
$path=$this->cleanPath($path);
try{
$response=$this->client->propfind($path, array(),1);
@ -81,54 +81,54 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
OC_FakeDirStream::$dirs[$id]=array();
$files=array_keys($response);
array_shift($files);//the first entry is the current directory
foreach($files as $file){
foreach($files as $file) {
$file = urldecode(basename($file));
OC_FakeDirStream::$dirs[$id][]=$file;
}
return opendir('fakedir://'.$id);
}catch(Exception $e){
}catch(Exception $e) {
return false;
}
}
public function filetype($path){
public function filetype($path) {
$path=$this->cleanPath($path);
try{
$response=$this->client->propfind($path, array('{DAV:}resourcetype'));
$responseType=$response["{DAV:}resourcetype"]->resourceType;
return (count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
}catch(Exception $e){
}catch(Exception $e) {
error_log($e->getMessage());
\OCP\Util::writeLog("webdav client", \OCP\Util::sanitizeHTML($e->getMessage()), \OCP\Util::ERROR);
return false;
}
}
public function isReadable($path){
public function isReadable($path) {
return true;//not properly supported
}
public function isUpdatable($path){
public function isUpdatable($path) {
return true;//not properly supported
}
public function file_exists($path){
public function file_exists($path) {
$path=$this->cleanPath($path);
try{
$this->client->propfind($path, array('{DAV:}resourcetype'));
return true;//no 404 exception
}catch(Exception $e){
}catch(Exception $e) {
return false;
}
}
public function unlink($path){
public function unlink($path) {
return $this->simpleResponse('DELETE',$path,null,204);
}
public function fopen($path,$mode){
public function fopen($path,$mode) {
$path=$this->cleanPath($path);
switch($mode){
switch($mode) {
case 'r':
case 'rb':
//straight up curl instead of sabredav here, sabredav put's the entire get result in memory
@ -155,14 +155,14 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
case 'c':
case 'c+':
//emulate these
if(strrpos($path,'.')!==false){
if(strrpos($path,'.')!==false) {
$ext=substr($path,strrpos($path,'.'));
}else{
$ext='';
}
$tmpFile=OCP\Files::tmpFile($ext);
OC_CloseStreamWrapper::$callBacks[$tmpFile]=array($this,'writeBack');
if($this->file_exists($path)){
if($this->file_exists($path)) {
$this->getFile($path,$tmpFile);
}
self::$tempFiles[$tmpFile]=$path;
@ -170,41 +170,41 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
}
public function writeBack($tmpFile){
if(isset(self::$tempFiles[$tmpFile])){
public function writeBack($tmpFile) {
if(isset(self::$tempFiles[$tmpFile])) {
$this->uploadFile($tmpFile,self::$tempFiles[$tmpFile]);
unlink($tmpFile);
}
}
public function free_space($path){
public function free_space($path) {
$path=$this->cleanPath($path);
try{
$response=$this->client->propfind($path, array('{DAV:}quota-available-bytes'));
if(isset($response['{DAV:}quota-available-bytes'])){
if(isset($response['{DAV:}quota-available-bytes'])) {
return (int)$response['{DAV:}quota-available-bytes'];
}else{
return 0;
}
}catch(Exception $e){
}catch(Exception $e) {
return 0;
}
}
public function touch($path,$mtime=null){
if(is_null($mtime)){
public function touch($path,$mtime=null) {
if(is_null($mtime)) {
$mtime=time();
}
$path=$this->cleanPath($path);
$this->client->proppatch($path, array('{DAV:}lastmodified' => $mtime));
}
public function getFile($path,$target){
public function getFile($path,$target) {
$source=$this->fopen($path,'r');
file_put_contents($target,$source);
}
public function uploadFile($path,$target){
public function uploadFile($path,$target) {
$source=fopen($path,'r');
$curl = curl_init();
@ -218,13 +218,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
curl_close ($curl);
}
public function rename($path1,$path2){
public function rename($path1,$path2) {
$path1=$this->cleanPath($path1);
$path2=$this->root.$this->cleanPath($path2);
try{
$response=$this->client->request('MOVE',$path1,null,array('Destination'=>$path2));
return true;
}catch(Exception $e){
}catch(Exception $e) {
echo $e;
echo 'fail';
var_dump($response);
@ -232,13 +232,13 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
}
public function copy($path1,$path2){
public function copy($path1,$path2) {
$path1=$this->cleanPath($path1);
$path2=$this->root.$this->cleanPath($path2);
try{
$response=$this->client->request('COPY',$path1,null,array('Destination'=>$path2));
return true;
}catch(Exception $e){
}catch(Exception $e) {
echo $e;
echo 'fail';
var_dump($response);
@ -246,7 +246,7 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
}
}
public function stat($path){
public function stat($path) {
$path=$this->cleanPath($path);
try{
$response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength'));
@ -255,43 +255,43 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0,
'ctime'=>-1,
);
}catch(Exception $e){
}catch(Exception $e) {
return array();
}
}
public function getMimeType($path){
public function getMimeType($path) {
$path=$this->cleanPath($path);
try{
$response=$this->client->propfind($path, array('{DAV:}getcontenttype','{DAV:}resourcetype'));
$responseType=$response["{DAV:}resourcetype"]->resourceType;
$type=(count($responseType)>0 and $responseType[0]=="{DAV:}collection")?'dir':'file';
if($type=='dir'){
if($type=='dir') {
return 'httpd/unix-directory';
}elseif(isset($response['{DAV:}getcontenttype'])){
}elseif(isset($response['{DAV:}getcontenttype'])) {
return $response['{DAV:}getcontenttype'];
}else{
return false;
}
}catch(Exception $e){
}catch(Exception $e) {
return false;
}
}
private function cleanPath($path){
if(!$path || $path[0]=='/'){
private function cleanPath($path) {
if(!$path || $path[0]=='/') {
return substr($path,1);
}else{
return $path;
}
}
private function simpleResponse($method,$path,$body,$expected){
private function simpleResponse($method,$path,$body,$expected) {
$path=$this->cleanPath($path);
try{
$response=$this->client->request($method,$path,$body);
return $response['statusCode']==$expected;
}catch(Exception $e){
}catch(Exception $e) {
return false;
}
}

View File

@ -7,21 +7,21 @@
*/
$config=include('apps/files_external/tests/config.php');
if(!is_array($config) or !isset($config['ftp']) or !$config['ftp']['run']){
if(!is_array($config) or !isset($config['ftp']) or !$config['ftp']['run']) {
abstract class Test_Filestorage_FTP extends Test_FileStorage{}
return;
}else{
class Test_Filestorage_FTP extends Test_FileStorage {
private $config;
public function setUp(){
public function setUp() {
$id=uniqid();
$this->config=include('apps/files_external/tests/config.php');
$this->config['ftp']['root'].='/'.$id;//make sure we have an new empty folder to work in
$this->instance=new OC_Filestorage_FTP($this->config['ftp']);
}
public function tearDown(){
public function tearDown() {
OCP\Files::rmdirr($this->instance->constructUrl(''));
}
}

View File

@ -21,7 +21,7 @@
*/
$config=include('apps/files_external/tests/config.php');
if(!is_array($config) or !isset($config['google']) or !$config['google']['run']){
if(!is_array($config) or !isset($config['google']) or !$config['google']['run']) {
abstract class Test_Filestorage_Google extends Test_FileStorage{}
return;
}else{
@ -29,14 +29,14 @@ if(!is_array($config) or !isset($config['google']) or !$config['google']['run'])
private $config;
public function setUp(){
public function setUp() {
$id=uniqid();
$this->config=include('apps/files_external/tests/config.php');
$this->config['google']['root'].='/'.$id;//make sure we have an new empty folder to work in
$this->instance=new OC_Filestorage_Google($this->config['google']);
}
public function tearDown(){
public function tearDown() {
$this->instance->rmdir('/');
}
}

View File

@ -8,21 +8,21 @@
$config=include('apps/files_external/tests/config.php');
if(!is_array($config) or !isset($config['smb']) or !$config['smb']['run']){
if(!is_array($config) or !isset($config['smb']) or !$config['smb']['run']) {
abstract class Test_Filestorage_SMB extends Test_FileStorage{}
return;
}else{
class Test_Filestorage_SMB extends Test_FileStorage {
private $config;
public function setUp(){
public function setUp() {
$id=uniqid();
$this->config=include('apps/files_external/tests/config.php');
$this->config['smb']['root'].=$id;//make sure we have an new empty folder to work in
$this->instance=new OC_Filestorage_SMB($this->config['smb']);
}
public function tearDown(){
public function tearDown() {
OCP\Files::rmdirr($this->instance->constructUrl(''));
}
}

View File

@ -7,14 +7,14 @@
*/
$config=include('apps/files_external/tests/config.php');
if(!is_array($config) or !isset($config['swift']) or !$config['swift']['run']){
if(!is_array($config) or !isset($config['swift']) or !$config['swift']['run']) {
abstract class Test_Filestorage_SWIFT extends Test_FileStorage{}
return;
}else{
class Test_Filestorage_SWIFT extends Test_FileStorage {
private $config;
public function setUp(){
public function setUp() {
$id=uniqid();
$this->config=include('apps/files_external/tests/config.php');
$this->config['swift']['root'].='/'.$id;//make sure we have an new empty folder to work in
@ -22,7 +22,7 @@ if(!is_array($config) or !isset($config['swift']) or !$config['swift']['run']){
}
public function tearDown(){
public function tearDown() {
$this->instance->rmdir('');
}

View File

@ -1,6 +0,0 @@
<?php
require_once 'files_external/lib/config.php';
echo "<pre>";
print_r(OC_Mount_Config::getSystemMountPoints());
echo "</pre>";
// OC_Mount_Config::addMountPoint('Photos', 'OC_Filestorage_SWIFT', array('host' => 'gapinthecloud.com', 'user' => 'Gap', 'token' => '23423afdasFJEW22', 'secure' => 'true', 'root' => ''), OC_Mount_Config::MOUNT_TYPE_GROUP, 'admin', false);

View File

@ -7,21 +7,21 @@
*/
$config=include('apps/files_external/tests/config.php');
if(!is_array($config) or !isset($config['webdav']) or !$config['webdav']['run']){
if(!is_array($config) or !isset($config['webdav']) or !$config['webdav']['run']) {
abstract class Test_Filestorage_DAV extends Test_FileStorage{}
return;
}else{
class Test_Filestorage_DAV extends Test_FileStorage {
private $config;
public function setUp(){
public function setUp() {
$id=uniqid();
$this->config=include('apps/files_external/tests/config.php');
$this->config['webdav']['root'].='/'.$id;//make sure we have an new empty folder to work in
$this->instance=new OC_Filestorage_DAV($this->config['webdav']);
}
public function tearDown(){
public function tearDown() {
$this->instance->rmdir('/');
}
}

View File

@ -1,7 +1,8 @@
body { background:#ddd; }
#header { position:fixed; top:0; left:0; right:0; z-index:100; height:2.5em; line-height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; box-shadow:0 0 10px rgba(0, 0, 0, .5), inset 0 -2px 10px #222; }
#details { color:#fff; }
#download { margin-left:2em; font-weight:bold; color:#fff; }
#preview { min-height:30em; margin:50px auto; border-bottom:1px solid #f8f8f8; background:#eee; text-align:center; }
#header #download { margin-left:2em; font-weight:bold; color:#fff; }
#preview { min-height:30em; margin:50px auto; padding-top:2em; border-bottom:1px solid #f8f8f8; background:#eee; text-align:center; }
#noPreview { display:none; padding-top:5em; }
p.info { width:22em; text-align: center; margin:2em auto; color:#777; text-shadow:#fff 0 1px 0; }
p.info a { font-weight:bold; color:#777; }

View File

@ -10,8 +10,12 @@ $(document).ready(function() {
// Show file preview if previewer is available, images are already handled by the template
if (mimetype.substr(0, mimetype.indexOf('/')) != 'image') {
// Trigger default action if not download TODO
var action = FileActions.getDefault(mimetype, 'file', FileActions.PERMISSION_READ);
action($('#filename').val());
var action = FileActions.getDefault(mimetype, 'file', OC.PERMISSION_READ);
if (typeof action === 'undefined') {
$('#noPreview').show();
} else {
action($('#filename').val());
}
}
}

View File

@ -2,7 +2,7 @@ $(document).ready(function() {
if (typeof OC.Share !== 'undefined' && typeof FileActions !== 'undefined') {
OC.Share.loadIcons('file');
FileActions.register('all', 'Share', FileActions.PERMISSION_READ, function(filename) {
FileActions.register('all', 'Share', OC.PERMISSION_READ, function(filename) {
// Return the correct sharing icon
if (scanFiles.scanning) { return; } // workaround to prevent additional http request block scanning feedback
if ($('#dir').val() == '/') {

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Mida",
"Modified" => "Modificat",
"Delete all" => "Esborra-ho tot",
"Delete" => "Elimina"
"Password" => "Contrasenya",
"Submit" => "Envia",
"Download" => "Baixa",
"No preview available for" => "No hi ha vista prèvia disponible per a",
"web services under your control" => "controleu els vostres serveis web"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Velikost",
"Modified" => "Upraveno",
"Delete all" => "Smazat vše",
"Delete" => "Smazat"
"Password" => "Heslo",
"Submit" => "Odeslat",
"Download" => "Stáhnout",
"No preview available for" => "Náhled není dostupný pro",
"web services under your control" => "služby webu pod Vaší kontrolou"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Größe",
"Modified" => "Geändert",
"Delete all" => "Alle löschen",
"Delete" => "Löschen"
"Password" => "Passwort",
"Submit" => "Absenden",
"Download" => "Download",
"No preview available for" => "Es ist keine Vorschau verfügbar für",
"web services under your control" => "Web-Services unter Ihrer Kontrolle"
);

View File

@ -1,6 +1,4 @@
<?php $TRANSLATIONS = array(
"Size" => "Μέγεθος",
"Modified" => "Τροποποιήθηκε",
"Delete all" => "Διαγραφή όλων",
"Delete" => "Διαγραφή"
"Password" => "Συνθηματικό",
"Submit" => "Καταχώρηση"
);

View File

@ -1,3 +1,4 @@
<?php $TRANSLATIONS = array(
"Delete" => "Forigi"
"Password" => "Pasvorto",
"Submit" => "Sendi"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Tamaño",
"Modified" => "Modificado",
"Delete all" => "Eliminar todo",
"Delete" => "Eliminar"
"Password" => "Contraseña",
"Submit" => "Enviar",
"Download" => "Descargar",
"No preview available for" => "No hay vista previa disponible para",
"web services under your control" => "Servicios web bajo su control"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Tamaina",
"Modified" => "Aldatuta",
"Delete all" => "Ezabatu dena",
"Delete" => "Ezabatu"
"Password" => "Pasahitza",
"Submit" => "Bidali",
"Download" => "Deskargatu",
"No preview available for" => "Ez dago aurrebista eskuragarririk hauentzat ",
"web services under your control" => "web zerbitzuak zure kontrolpean"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Koko",
"Modified" => "Muokattu",
"Delete all" => "Poista kaikki",
"Delete" => "Poista"
"Password" => "Salasana",
"Submit" => "Lähetä",
"Download" => "Lataa",
"No preview available for" => "Ei esikatselua kohteelle",
"web services under your control" => "verkkopalvelut hallinnassasi"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Taille",
"Modified" => "Modifié",
"Delete all" => "Tout effacer",
"Delete" => "Effacement"
"Password" => "Mot de passe",
"Submit" => "Envoyer",
"Download" => "Télécharger",
"No preview available for" => "Pas d'aperçu disponible pour",
"web services under your control" => "services web sous votre contrôle"
);

View File

@ -0,0 +1,7 @@
<?php $TRANSLATIONS = array(
"Password" => "ססמה",
"Submit" => "שליחה",
"Download" => "הורדה",
"No preview available for" => "אין תצוגה מקדימה זמינה עבור",
"web services under your control" => "שירותי רשת תחת השליטה שלך"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Dimensione",
"Modified" => "Modificato",
"Delete all" => "Elimina tutto",
"Delete" => "Eliminazione"
"Password" => "Password",
"Submit" => "Invia",
"Download" => "Scarica",
"No preview available for" => "Nessuna anteprima disponibile per",
"web services under your control" => "servizi web nelle tue mani"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "サイズ",
"Modified" => "変更",
"Delete all" => "すべて削除",
"Delete" => "削除"
"Password" => "パスワード",
"Submit" => "送信",
"Download" => "ダウンロード",
"No preview available for" => "プレビューはありません",
"web services under your control" => "管理下のウェブサービス"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Grootte",
"Modified" => "Aangepast",
"Delete all" => "Verwijder alles",
"Delete" => "Vewijder"
"Password" => "Wachtwoord",
"Submit" => "Verzenden",
"Download" => "Downloaden",
"No preview available for" => "Geen voorbeeldweergave beschikbaar voor",
"web services under your control" => "Webdiensten in eigen beheer"
);

View File

@ -1,6 +1,7 @@
<?php $TRANSLATIONS = array(
"Size" => "Rozmiar",
"Modified" => "Zmodyfikowane",
"Delete all" => "Usuń wszystko",
"Delete" => "Usuń"
"Password" => "Hasło",
"Submit" => "Wyślij",
"Download" => "Pobierz",
"No preview available for" => "Podgląd nie jest dostępny dla",
"web services under your control" => "Kontrolowane serwisy"
);

View File

@ -1,6 +1,6 @@
<?php $TRANSLATIONS = array(
"Size" => "Размер",
"Modified" => "Изменён",
"Delete all" => "Удалить все",
"Delete" => "Удалить"
"Password" => "Пароль",
"Submit" => "Отправить",
"Download" => "Скачать",
"web services under your control" => "веб-сервисы под вашим управлением"
);

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