diff options
Diffstat (limited to 'apps/files')
68 files changed, 2767 insertions, 0 deletions
diff --git a/apps/files/admin.php b/apps/files/admin.php new file mode 100644 index 00000000000..4ae3ee51236 --- /dev/null +++ b/apps/files/admin.php @@ -0,0 +1,60 @@ +<?php + +/** +* ownCloud - ajax frontend +* +* @author Robin Appelman +* @copyright 2010 Robin Appelman icewind1991@gmail.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/>. +* +*/ + + +// Init owncloud +require_once('../lib/base.php'); + +OC_Util::checkAdminUser(); + +$htaccessWorking=(getenv('htaccessWorking')=='true'); + +$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize')); +$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size')); +$maxUploadFilesize = OC_Helper::humanFileSize(min($upload_max_filesize, $post_max_size)); +if($_POST) { + if(isset($_POST['maxUploadSize'])){ + if(($setMaxSize = OC_Files::setUploadLimit(OC_Helper::computerFileSize($_POST['maxUploadSize']))) !== false) { + $maxUploadFilesize = OC_Helper::humanFileSize($setMaxSize); + } + } + if(isset($_POST['maxZipInputSize'])) { + $maxZipInputSize=$_POST['maxZipInputSize']; + OC_Config::setValue('maxZipInputSize', OC_Helper::computerFileSize($maxZipInputSize)); + } + if(isset($_POST['submitFilesAdminSettings'])) { + OC_Config::setValue('allowZipDownload', isset($_POST['allowZipDownload'])); + } +} +$maxZipInputSize = OC_Helper::humanFileSize(OC_Config::getValue('maxZipInputSize', OC_Helper::computerFileSize('800 MB'))); +$allowZipDownload = intval(OC_Config::getValue('allowZipDownload', true)); + +OC_App::setActiveNavigationEntry( "files_administration" ); + +$tmpl = new OC_Template( 'files', 'admin' ); +$tmpl->assign( 'htaccessWorking', $htaccessWorking ); +$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize); +$tmpl->assign( 'maxPossibleUploadSize', OC_Helper::humanFileSize(PHP_INT_MAX)); +$tmpl->assign( 'allowZipDownload', $allowZipDownload); +$tmpl->assign( 'maxZipInputSize', $maxZipInputSize); +return $tmpl->fetchPage();
\ No newline at end of file diff --git a/apps/files/ajax/autocomplete.php b/apps/files/ajax/autocomplete.php new file mode 100644 index 00000000000..8cdb6188a02 --- /dev/null +++ b/apps/files/ajax/autocomplete.php @@ -0,0 +1,56 @@ +<?php +//provide auto completion of paths for use with jquer ui autocomplete + + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Get data +$query = $_GET['term']; +$dirOnly=(isset($_GET['dironly']))?($_GET['dironly']=='true'):false; + +if($query[0]!='/'){ + $query='/'.$query; +} + +if(substr($query,-1,1)=='/'){ + $base=$query; +}else{ + $base=dirname($query); +} + +$query=substr($query,strlen($base)); + +if($base!='/'){ + $query=substr($query,1); +} +$queryLen=strlen($query); +$query=strtolower($query); + +// echo "$base - $query"; + +$files=array(); + +if(OC_Filesystem::file_exists($base) and OC_Filesystem::is_dir($base)){ + $dh = OC_Filesystem::opendir($base); + if($dh){ + if(substr($base,-1,1)!='/'){ + $base=$base.'/'; + } + while (($file = readdir($dh)) !== false) { + if ($file != "." && $file != ".."){ + if(substr(strtolower($file),0,$queryLen)==$query){ + $item=$base.$file; + if((!$dirOnly or OC_Filesystem::is_dir($item))){ + $files[]=(object)array('id'=>$item,'label'=>$item,'name'=>$item); + } + } + } + } + } +} +OC_JSON::encodedPrint($files); + +?> diff --git a/apps/files/ajax/delete.php b/apps/files/ajax/delete.php new file mode 100644 index 00000000000..d8a01d7acf1 --- /dev/null +++ b/apps/files/ajax/delete.php @@ -0,0 +1,29 @@ +<?php + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Get data +$dir = stripslashes($_GET["dir"]); +$files = isset($_GET["file"]) ? stripslashes($_GET["file"]) : stripslashes($_GET["files"]); + +$files = explode(';', $files); +$filesWithError = ''; +$success = true; +//Now delete +foreach($files as $file) { + if( !OC_Files::delete( $dir, $file )){ + $filesWithError .= $file . "\n"; + $success = false; + } +} + +if($success) { + OC_JSON::success(array("data" => array( "dir" => $dir, "files" => $files ))); +} else { + OC_JSON::error(array("data" => array( "message" => "Could not delete:\n" . $filesWithError ))); +} + +?> diff --git a/apps/files/ajax/download.php b/apps/files/ajax/download.php new file mode 100644 index 00000000000..65c04c36faf --- /dev/null +++ b/apps/files/ajax/download.php @@ -0,0 +1,37 @@ +<?php + +/** +* ownCloud - ajax frontend +* +* @author Robin Appelman +* @copyright 2010 Robin Appelman icewind1991@gmail.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/>. +* +*/ + +// only need filesystem apps +$RUNTIME_APPTYPES=array('filesystem'); + +// Init owncloud + + +// Check if we are a user +OC_Util::checkLoggedIn(); + +$files = $_GET["files"]; +$dir = $_GET["dir"]; + +OC_Files::get($dir,$files); +?> diff --git a/apps/files/ajax/list.php b/apps/files/ajax/list.php new file mode 100644 index 00000000000..83914332a7d --- /dev/null +++ b/apps/files/ajax/list.php @@ -0,0 +1,46 @@ +<?php + +// only need filesystem apps +$RUNTIME_APPTYPES=array('filesystem'); + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Load the files +$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; +$doBreadcrumb = isset( $_GET['breadcrumb'] ) ? true : false; +$data = array(); + +// Make breadcrumb +if($doBreadcrumb){ + $breadcrumb = array(); + $pathtohere = "/"; + foreach( explode( "/", $dir ) as $i ){ + if( $i != "" ){ + $pathtohere .= "$i/"; + $breadcrumb[] = array( "dir" => $pathtohere, "name" => $i ); + } + } + + $breadcrumbNav = new OC_Template( "files", "part.breadcrumb", "" ); + $breadcrumbNav->assign( "breadcrumb", $breadcrumb ); + + $data['breadcrumb'] = $breadcrumbNav->fetchPage(); +} + +// make filelist +$files = array(); +foreach( OC_Files::getdirectorycontent( $dir ) as $i ){ + $i["date"] = OC_Util::formatDate($i["mtime"] ); + $files[] = $i; +} + +$list = new OC_Template( "files", "part.list", "" ); +$list->assign( "files", $files ); +$data = array('files' => $list->fetchPage()); + +OC_JSON::success(array('data' => $data)); + +?> diff --git a/apps/files/ajax/mimeicon.php b/apps/files/ajax/mimeicon.php new file mode 100644 index 00000000000..57898cd82d9 --- /dev/null +++ b/apps/files/ajax/mimeicon.php @@ -0,0 +1,11 @@ +<?php + +// no need for apps +$RUNTIME_NOAPPS=false; + +// Init owncloud + + +print OC_Helper::mimetypeIcon($_GET['mime']); + +?> diff --git a/apps/files/ajax/move.php b/apps/files/ajax/move.php new file mode 100644 index 00000000000..0ad314f873c --- /dev/null +++ b/apps/files/ajax/move.php @@ -0,0 +1,20 @@ +<?php + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Get data +$dir = stripslashes($_GET["dir"]); +$file = stripslashes($_GET["file"]); +$target = stripslashes($_GET["target"]); + + +if(OC_Files::move($dir,$file,$target,$file)){ + OC_JSON::success(array("data" => array( "dir" => $dir, "files" => $file ))); +}else{ + OC_JSON::error(array("data" => array( "message" => "Could not move $file" ))); +} + +?> diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php new file mode 100644 index 00000000000..472b577a32a --- /dev/null +++ b/apps/files/ajax/newfile.php @@ -0,0 +1,47 @@ +<?php + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Get the params +$dir = isset( $_POST['dir'] ) ? stripslashes($_POST['dir']) : ''; +$filename = isset( $_POST['filename'] ) ? stripslashes($_POST['filename']) : ''; +$content = isset( $_POST['content'] ) ? $_POST['content'] : ''; +$source = isset( $_POST['source'] ) ? stripslashes($_POST['source']) : ''; + +if($filename == '') { + OC_JSON::error(array("data" => array( "message" => "Empty Filename" ))); + exit(); +} + +if($source){ + if(substr($source,0,8)!='https://' and substr($source,0,7)!='http://'){ + OC_JSON::error(array("data" => array( "message" => "Not a valid source" ))); + exit(); + } + $sourceStream=fopen($source,'rb'); + $target=$dir.'/'.$filename; + $result=OC_Filesystem::file_put_contents($target,$sourceStream); + if($result){ + $mime=OC_Filesystem::getMimetype($target); + OC_JSON::success(array("data" => array('mime'=>$mime))); + exit(); + }else{ + OC_JSON::error(array("data" => array( "message" => "Error while downloading ".$source. ' to '.$target ))); + exit(); + } +} + + +if(OC_Files::newFile($dir, $filename, 'file')) { + if($content){ + OC_Filesystem::file_put_contents($dir.'/'.$filename,$content); + } + OC_JSON::success(array("data" => array('content'=>$content))); + exit(); +} + + +OC_JSON::error(array("data" => array( "message" => "Error when creating the file" ))); diff --git a/apps/files/ajax/newfolder.php b/apps/files/ajax/newfolder.php new file mode 100644 index 00000000000..2aff95e5b35 --- /dev/null +++ b/apps/files/ajax/newfolder.php @@ -0,0 +1,22 @@ +<?php + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Get the params +$dir = isset( $_POST['dir'] ) ? stripslashes($_POST['dir']) : ''; +$foldername = isset( $_POST['foldername'] ) ? stripslashes($_POST['foldername']) : ''; + +if(trim($foldername) == '') { + OC_JSON::error(array("data" => array( "message" => "Empty Foldername" ))); + exit(); +} + +if(OC_Files::newFile($dir, stripslashes($foldername), 'dir')) { + OC_JSON::success(array("data" => array())); + exit(); +} + +OC_JSON::error(array("data" => array( "message" => "Error when creating the folder" ))); diff --git a/apps/files/ajax/rawlist.php b/apps/files/ajax/rawlist.php new file mode 100644 index 00000000000..8f1990d1b8f --- /dev/null +++ b/apps/files/ajax/rawlist.php @@ -0,0 +1,26 @@ +<?php + +// only need filesystem apps +$RUNTIME_APPTYPES=array('filesystem'); + +// Init owncloud + +require_once('../../lib/template.php'); + +OC_JSON::checkLoggedIn(); + +// Load the files +$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; +$mimetype = isset($_GET['mimetype']) ? $_GET['mimetype'] : ''; + +// make filelist +$files = array(); +foreach( OC_Files::getdirectorycontent( $dir, $mimetype ) as $i ){ + $i["date"] = OC_Util::formatDate($i["mtime"] ); + $i['mimetype_icon'] = $i['type'] == 'dir' ? mimetype_icon('dir'): mimetype_icon($i['mimetype']); + $files[] = $i; +} + +OC_JSON::success(array('data' => $files)); + +?> diff --git a/apps/files/ajax/rename.php b/apps/files/ajax/rename.php new file mode 100644 index 00000000000..dc5d3962abd --- /dev/null +++ b/apps/files/ajax/rename.php @@ -0,0 +1,21 @@ +<?php + +// Init owncloud + + +OC_JSON::checkLoggedIn(); + +// Get data +$dir = stripslashes($_GET["dir"]); +$file = stripslashes($_GET["file"]); +$newname = stripslashes($_GET["newname"]); + +// Delete +if( OC_Files::move( $dir, $file, $dir, $newname )) { + OC_JSON::success(array("data" => array( "dir" => $dir, "file" => $file, "newname" => $newname ))); +} +else{ + OC_JSON::error(array("data" => array( "message" => "Unable to rename file" ))); +} + +?> diff --git a/apps/files/ajax/scan.php b/apps/files/ajax/scan.php new file mode 100644 index 00000000000..db09b7d5c64 --- /dev/null +++ b/apps/files/ajax/scan.php @@ -0,0 +1,38 @@ +<?php + +require_once '../../lib/base.php'; + +set_time_limit(0);//scanning can take ages + +$force=isset($_GET['force']) and $_GET['force']=='true'; +$checkOnly=isset($_GET['checkonly']) and $_GET['checkonly']=='true'; + +if(!$checkOnly){ + $eventSource=new OC_EventSource(); +} + + +//create the file cache if necesary +if($force or !OC_FileCache::inCache('')){ + if(!$checkOnly){ + OC_DB::beginTransaction(); + OC_FileCache::scan('',$eventSource); + OC_FileCache::clean(); + OC_DB::commit(); + $eventSource->send('success',true); + }else{ + OC_JSON::success(array('data'=>array('done'=>true))); + exit; + } +}else{ + if($checkOnly){ + OC_JSON::success(array('data'=>array('done'=>false))); + exit; + } + if(isset($eventSource)){ + $eventSource->send('success',false); + }else{ + exit; + } +} +$eventSource->close();
\ No newline at end of file diff --git a/apps/files/ajax/timezone.php b/apps/files/ajax/timezone.php new file mode 100644 index 00000000000..8e1d2aa1ec1 --- /dev/null +++ b/apps/files/ajax/timezone.php @@ -0,0 +1,6 @@ +<?php + // FIXME: this should start a secure session if forcessl is enabled + // see lib/base.php for an example + session_start(); + $_SESSION['timezone'] = $_GET['time']; +?> diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php new file mode 100644 index 00000000000..c60e1a3752a --- /dev/null +++ b/apps/files/ajax/upload.php @@ -0,0 +1,64 @@ +<?php + +// Init owncloud + + +// Firefox and Konqueror tries to download application/json for me. --Arthur +OC_JSON::setContentTypeHeader('text/plain'); + +OC_JSON::checkLoggedIn(); + +if (!isset($_FILES['files'])) { + OC_JSON::error(array("data" => array( "message" => "No file was uploaded. Unknown error" ))); + exit(); +} +foreach ($_FILES['files']['error'] as $error) { + if ($error != 0) { + $l=OC_L10N::get('files'); + $errors = array( + UPLOAD_ERR_OK=>$l->t("There is no error, the file uploaded with success"), + UPLOAD_ERR_INI_SIZE=>$l->t("The uploaded file exceeds the upload_max_filesize directive in php.ini").ini_get('upload_max_filesize'), + UPLOAD_ERR_FORM_SIZE=>$l->t("The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form"), + UPLOAD_ERR_PARTIAL=>$l->t("The uploaded file was only partially uploaded"), + UPLOAD_ERR_NO_FILE=>$l->t("No file was uploaded"), + UPLOAD_ERR_NO_TMP_DIR=>$l->t("Missing a temporary folder"), + UPLOAD_ERR_CANT_WRITE=>$l->t('Failed to write to disk'), + ); + OC_JSON::error(array("data" => array( "message" => $errors[$error] ))); + exit(); + } +} +$files=$_FILES['files']; + +$dir = $_POST['dir']; +$dir .= '/'; +$error=''; + +$totalSize=0; +foreach($files['size'] as $size){ + $totalSize+=$size; +} +if($totalSize>OC_Filesystem::free_space('/')){ + OC_JSON::error(array("data" => array( "message" => "Not enough space available" ))); + exit(); +} + +$result=array(); +if(strpos($dir,'..') === false){ + $fileCount=count($files['name']); + for($i=0;$i<$fileCount;$i++){ + $target = OC_Helper::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::getCached($target); + $result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'],'name'=>basename($target)); + } + } + OC_JSON::encodedPrint($result); + exit(); +}else{ + $error='invalid dir'; +} + +OC_JSON::error(array('data' => array('error' => $error, "file" => $fileName))); + +?> diff --git a/apps/files/appinfo/app.php b/apps/files/appinfo/app.php new file mode 100644 index 00000000000..c4a2ee7407a --- /dev/null +++ b/apps/files/appinfo/app.php @@ -0,0 +1,10 @@ +<?php + + +$l=OC_L10N::get('files'); + +OC_App::register( array( "order" => 2, "id" => "files", "name" => "Files" )); + +OC_App::addNavigationEntry( array( "id" => "files_index", "order" => 0, "href" => OC_Helper::linkTo( "files", "index.php" ), "icon" => OC_Helper::imagePath( "core", "places/home.svg" ), "name" => $l->t("Files") )); + +OC_Search::registerProvider('OC_Search_Provider_File'); diff --git a/apps/files/css/files.css b/apps/files/css/files.css new file mode 100644 index 00000000000..713adf7b5fd --- /dev/null +++ b/apps/files/css/files.css @@ -0,0 +1,87 @@ +/* Copyright (c) 2011, Jan-Christoph Borchardt + This file is licensed under the Affero General Public License version 3 or later. + See the COPYING-README file. */ + +/* FILE MENU */ +.actions { padding:.3em; float:left; height:2em; } +.actions input, .actions button, .actions .button { margin:0; } +#file_menu { right:0; position:absolute; top:0; } +#file_menu a { display:block; float:left; background-image:none; text-decoration:none; } +.file_upload_form, #file_newfolder_form { display:inline; float: left; margin-left:0; } +#fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; } +.file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .5em; padding-left:2em; } +.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin:0;} +.file_upload_wrapper .file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; } +#new { float:left; border-top-right-radius:0; border-bottom-right-radius:0; margin:0 0 0 1em; border-right:none; z-index:1010; height:1.3em; } +#new.active { border-bottom-left-radius:0; border-bottom:none; background:#f8f8f8 } +#new>a{ padding-left:1em; padding-right:1em; } +#new>ul { display:none; position:fixed; text-align:left; padding:.5em; background:#f8f8f8; margin-top:0.075em; border:1px solid #ddd; min-width:7em; margin-left:-.5em; z-index:-1; } +#new>ul>li { margin:.3em; padding-left:2em; background-repeat:no-repeat; cursor:pointer; padding-bottom:0.1em } +#new>ul>li>p { cursor:pointer; } +#new>ul>li>input { padding:0.3em; margin:-0.3em; } + +#file_newfolder_name { background-image:url('../../core/img/places/folder.svg'); font-weight:normal; width:7em; } +.file_upload_start, .file_upload_filename { font-size:1em; } +#file_newfolder_submit, #file_upload_submit { width:3em; } +.file_upload_target { display:none; } + +.file_upload_start { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; z-index:1; position:absolute; left:0; top:0; width:100%; cursor:pointer;} +.file_upload_filename.active { border-bottom-right-radius:0 } +.file_upload_filename { position: relative; z-index:100; padding-left: 0.8em; padding-right: 0.8em; cursor:pointer; border-top-left-radius:0; border-bottom-left-radius:0; } +.file_upload_filename img { position: absolute; top: 0.4em; left: 0.4em; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } + + +.file_upload_form, .file_upload_wrapper, .file_upload_start, .file_upload_filename, #file_upload_submit { cursor:pointer; } + +/* FILE TABLE */ +#emptyfolder { position:absolute; margin:10em 0 0 10em; font-size:1.5em; font-weight:bold; color:#888; text-shadow:#fff 0 1px 0; } +.emptyfolder #new, .emptyfolder .file_upload_filename { background:#66f866; border:1px solid #5e5; -moz-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; -webkit-box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; box-shadow:0 1px 1px #f8f8f8, 0 1px 1px #cfc inset; } +table { position:relative; top:37px; width:100%; } +tbody tr { background-color:#fff; height:2.5em; } +tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#f8f8f8; } +tbody tr.selected { background-color:#eee; } +tbody a { color:#000; } +span.extension, td.date { color:#999; } +span.extension { text-transform:lowercase; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; -webkit-transition:opacity 300ms; -moz-transition:opacity 300ms; -o-transition:opacity 300ms; transition:opacity 300ms; } +tr:hover span.extension { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } +div.crumb { float:left; display:block; background:no-repeat right 0; padding:.75em 1.5em 0 1em; height:2.9em; } +div.crumb:first-child { padding-left:1em; } +div.crumb.last { font-weight:bold; } +table tr.mouseOver td { background-color:#eee; } +table th { height:2em; padding:0 .5em; color:#999; } +table th .name { float:left; margin-left:.5em; } +table th.multiselect { background:#ddd; color:#000; font-weight:bold; } +table th, table td { border-bottom:1px solid #ddd; text-align:left; font-weight:normal; } +table td { border-bottom:1px solid #eee; font-style:normal; background-position:1em .5em; background-repeat:no-repeat; } +table th#headerSize, table td.filesize { width:3em; padding:0 1em; text-align:right; } +table th#headerDate, table td.date { width:11em; padding:0 .1em 0 1em; text-align:left; } +table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; } +table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; } +table tr[data-type="dir"] td.filename a.name span.nametext {font-weight:bold; } +table td.filename a.name input, table td.filename a.name form { width:100%; cursor:text; } +table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:.2em .5em .5em 0; } +table td.filename .nametext, .modified { float:left; padding:.3em 0; } +table td.filename .nametext { width:70%; overflow:hidden; } +table td.filename form { float:left; font-size:.85em; } +table thead.fixed tr{ position:fixed; top:6.5em; z-index:49; -moz-box-shadow:0 -3px 7px #ddd; -webkit-box-shadow:0 -3px 7px #ddd; box-shadow:0 -3px 7px #ddd; } +table thead.fixed { height:2em; } +#fileList tr td.filename>input[type=checkbox]:first-child { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; filter:alpha(opacity=0); opacity:0; float:left; margin:.7em 0 0 1em; /* bigger clickable area doesn’t work in FF width:2.8em; height:2.4em;*/ -webkit-transition:opacity 200ms; -moz-transition:opacity 200ms; -o-transition:opacity 200ms; transition:opacity 200ms; } +#fileList tr td.filename>input[type="checkbox"]:hover:first-child { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; filter:alpha(opacity=80); opacity:.8; } +#fileList tr td.filename>input[type="checkbox"]:checked:first-child { -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter:alpha(opacity=100); opacity:1; } +#fileList tr td.filename { -webkit-transition:background-image 500ms; -moz-transition:background-image 500ms; -o-transition:background-image 500ms; transition:background-image 500ms; } +#select_all { float:left; margin:.3em 0.6em 0 .5em; } +#uploadsize-message,#delete-confirm { display:none; } +.fileactions { position:relative; top:.3em; right:-4em; font-size:.8em; } +#fileList .fileactions a.action img { position:relative; top:.2em; } +#fileList a.action { display:inline; margin:-.5em 0; padding:1em .5em 1em .5em !important; } +a.action.delete { float:right; } +a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; } +.selectedActions { display:none; float:right; } +.selectedActions a { display:inline; margin:-.5em 0; padding:.5em !important; } +.selectedActions a img { position:relative; top:.3em; } + +/* add breadcrumb divider to the File item in navigation panel */ +#navigation>ul>li:first-child { background:url('../../core/img/breadcrumb-start.svg') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; position:fixed; } +#navigation>ul>li:first-child+li { padding-top:2.9em; } + +#scanning-message{ top:40%; left:40%; position:absolute; display:none } diff --git a/apps/files/download.php b/apps/files/download.php new file mode 100644 index 00000000000..d1f5ba486d7 --- /dev/null +++ b/apps/files/download.php @@ -0,0 +1,49 @@ +<?php + +/** +* ownCloud - ajax frontend +* +* @author Robin Appelman +* @copyright 2010 Robin Appelman icewind1991@gmail.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/>. +* +*/ + +// Init owncloud +require_once('../lib/base.php'); + +// Check if we are a user +OC_Util::checkLoggedIn(); + +$filename = $_GET["file"]; + +if(!OC_Filesystem::file_exists($filename)){ + header("HTTP/1.0 404 Not Found"); + $tmpl = new OC_Template( '', '404', 'guest' ); + $tmpl->assign('file',$filename); + $tmpl->printPage(); + exit; +} + +$ftype=OC_Filesystem::getMimeType( $filename ); + +header('Content-Type:'.$ftype); +header('Content-Disposition: attachment; filename="'.basename($filename).'"'); +OC_Response::disableCaching(); +header('Content-Length: '.OC_Filesystem::filesize($filename)); + +@ob_end_clean(); +OC_Filesystem::readfile( $filename ); +?> diff --git a/apps/files/index.php b/apps/files/index.php new file mode 100644 index 00000000000..aea91542db6 --- /dev/null +++ b/apps/files/index.php @@ -0,0 +1,104 @@ +<?php + +/** +* ownCloud - ajax frontend +* +* @author Robin Appelman +* @copyright 2010 Robin Appelman icewind1991@gmail.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/>. +* +*/ + + +// Init owncloud +require_once('../lib/base.php'); + +// Check if we are a user +OC_Util::checkLoggedIn(); + +// Load the files we need +OC_Util::addStyle( "files", "files" ); +OC_Util::addScript( "files", "files" ); +OC_Util::addScript( 'files', 'filelist' ); +OC_Util::addScript( 'files', 'fileactions' ); +if(!isset($_SESSION['timezone'])){ + OC_Util::addScript( 'files', 'timezone' ); +} +OC_App::setActiveNavigationEntry( "files_index" ); +// Load the files +$dir = isset( $_GET['dir'] ) ? stripslashes($_GET['dir']) : ''; +// Redirect if directory does not exist +if(!OC_Filesystem::is_dir($dir.'/')) { + header("Location: ".$_SERVER['PHP_SELF'].""); +} + +$files = array(); +foreach( OC_Files::getdirectorycontent( $dir ) as $i ){ + $i["date"] = OC_Util::formatDate($i["mtime"] ); + if($i['type']=='file'){ + $fileinfo=pathinfo($i['name']); + $i['basename']=$fileinfo['filename']; + if (!empty($fileinfo['extension'])) { + $i['extension']='.' . $fileinfo['extension']; + } + else { + $i['extension']=''; + } + } + if($i['directory']=='/'){ + $i['directory']=''; + } + $files[] = $i; +} + +// Make breadcrumb +$breadcrumb = array(); +$pathtohere = ""; +foreach( explode( "/", $dir ) as $i ){ + if( $i != "" ){ + $pathtohere .= "/".str_replace('+','%20', urlencode($i)); + $breadcrumb[] = array( "dir" => $pathtohere, "name" => $i ); + } +} + +// make breadcrumb und filelist markup +$list = new OC_Template( "files", "part.list", "" ); +$list->assign( "files", $files ); +$list->assign( "baseURL", OC_Helper::linkTo("files", "index.php")."?dir="); +$list->assign( "downloadURL", OC_Helper::linkTo("files", "download.php")."?file="); +$breadcrumbNav = new OC_Template( "files", "part.breadcrumb", "" ); +$breadcrumbNav->assign( "breadcrumb", $breadcrumb ); +$breadcrumbNav->assign( "baseURL", OC_Helper::linkTo("files", "index.php")."?dir="); + +$upload_max_filesize = OC_Helper::computerFileSize(ini_get('upload_max_filesize')); +$post_max_size = OC_Helper::computerFileSize(ini_get('post_max_size')); +$maxUploadFilesize = min($upload_max_filesize, $post_max_size); + +$freeSpace=OC_Filesystem::free_space('/'); +$freeSpace=max($freeSpace,0); +$maxUploadFilesize = min($maxUploadFilesize ,$freeSpace); + +$tmpl = new OC_Template( "files", "index", "user" ); +$tmpl->assign( "fileList", $list->fetchPage() ); +$tmpl->assign( "breadcrumb", $breadcrumbNav->fetchPage() ); +$tmpl->assign( 'dir', $dir); +$tmpl->assign( 'readonly', !OC_Filesystem::is_writable($dir)); +$tmpl->assign( "files", $files ); +$tmpl->assign( 'uploadMaxFilesize', $maxUploadFilesize); +$tmpl->assign( 'uploadMaxHumanFilesize', OC_Helper::humanFileSize($maxUploadFilesize)); +$tmpl->assign( 'allowZipDownload', intval(OC_Config::getValue('allowZipDownload', true))); +$tmpl->printPage(); + +?> diff --git a/apps/files/js/admin.js b/apps/files/js/admin.js new file mode 100644 index 00000000000..bfa96670635 --- /dev/null +++ b/apps/files/js/admin.js @@ -0,0 +1,23 @@ +function switchPublicFolder() +{ + var publicEnable = $('#publicEnable').is(':checked'); + var sharingaimGroup = $('input:radio[name=sharingaim]'); //find all radiobuttons of that group + $.each(sharingaimGroup, function(index, sharingaimItem) { + sharingaimItem.disabled = !publicEnable; //set all buttons to the correct state + }); +} + +$(document).ready(function(){ + switchPublicFolder(); // Execute the function after loading DOM tree + $('#publicEnable').click(function(){ + switchPublicFolder(); // To get rid of onClick() + }); + + $('#allowZipDownload').bind('change', function() { + if($('#allowZipDownload').attr('checked')) { + $('#maxZipInputSize').removeAttr('disabled'); + } else { + $('#maxZipInputSize').attr('disabled', 'disabled'); + } + }); +}); diff --git a/apps/files/js/fileactions.js b/apps/files/js/fileactions.js new file mode 100644 index 00000000000..80e918a455c --- /dev/null +++ b/apps/files/js/fileactions.js @@ -0,0 +1,154 @@ +FileActions={ + actions:{}, + defaults:{}, + icons:{}, + currentFile:null, + register:function(mime,name,icon,action){ + if(!FileActions.actions[mime]){ + FileActions.actions[mime]={}; + } + FileActions.actions[mime][name]=action; + FileActions.icons[name]=icon; + }, + setDefault:function(mime,name){ + FileActions.defaults[mime]=name; + }, + get:function(mime,type){ + var actions={}; + if(FileActions.actions.all){ + actions=$.extend( actions, FileActions.actions.all ) + } + if(mime){ + if(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] ) + } + } + if(type){//type is 'dir' or 'file' + if(FileActions.actions[type]){ + actions=$.extend( actions, FileActions.actions[type] ) + } + } + return actions; + }, + getDefault:function(mime,type){ + if(mime){ + var mimePart=mime.substr(0,mime.indexOf('/')); + } + var name=false; + if(mime && FileActions.defaults[mime]){ + name=FileActions.defaults[mime]; + }else if(mime && FileActions.defaults[mimePart]){ + name=FileActions.defaults[mimePart]; + }else if(type && FileActions.defaults[type]){ + name=FileActions.defaults[type]; + }else{ + name=FileActions.defaults.all; + } + var actions=this.get(mime,type); + return actions[name]; + }, + display:function(parent){ + FileActions.currentFile=parent; + $('#fileList span.fileactions, #fileList td.date a.action').remove(); + var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); + var file=FileActions.getCurrentFile(); + if($('tr').filterAttr('data-file',file).data('renaming')){ + return; + } + parent.children('a.name').append('<span class="fileactions" />'); + var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType()); + for(name in actions){ + if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){ + var img=FileActions.icons[name]; + if(img.call){ + img=img(file); + } + var html='<a href="#" class="action" style="display:none">'; + if(img) { html+='<img src="'+img+'"/> '; } + html += name+'</a>'; + var element=$(html); + element.data('action',name); + element.click(function(event){ + event.stopPropagation(); + event.preventDefault(); + var action=actions[$(this).data('action')]; + var currentFile=FileActions.getCurrentFile(); + FileActions.hide(); + action(currentFile); + }); + element.hide(); + parent.find('a.name>span.fileactions').append(element); + } + } + if(actions['Delete']){ + var img=FileActions.icons['Delete']; + if(img.call){ + img=img(file); + } + var html='<a href="#" original-title="Delete" class="action delete" style="display:none" />'; + var element=$(html); + if(img){ + element.append($('<img src="'+img+'"/>')); + } + element.data('action','Delete'); + element.click(function(event){ + event.stopPropagation(); + event.preventDefault(); + var action=actions[$(this).data('action')]; + var currentFile=FileActions.getCurrentFile(); + FileActions.hide(); + action(currentFile); + }); + element.hide(); + parent.parent().children().last().append(element); + } + $('#fileList .action').css('-o-transition-property','none');//temporarly disable + $('#fileList .action').fadeIn(200,function(){ + $('#fileList .action').css('-o-transition-property','opacity'); + }); + return false; + }, + hide:function(){ + $('#fileList span.fileactions, #fileList td.date a.action').fadeOut(200,function(){ + $(this).remove(); + }); + }, + getCurrentFile:function(){ + return FileActions.currentFile.parent().attr('data-file'); + }, + getCurrentMimeType:function(){ + return FileActions.currentFile.parent().attr('data-mime'); + }, + getCurrentType:function(){ + return FileActions.currentFile.parent().attr('data-type'); + } +} + +$(document).ready(function(){ + if($('#allowZipDownload').val() == 1){ + var downloadScope = 'all'; + } else { + var downloadScope = 'file'; + } + FileActions.register(downloadScope,'Download',function(){return OC.imagePath('core','actions/download')},function(filename){ + window.location='ajax/download.php?files='+encodeURIComponent(filename)+'&dir='+encodeURIComponent($('#dir').val()); + }); +}); + +FileActions.register('all','Delete',function(){return OC.imagePath('core','actions/delete')},function(filename){ + FileList.do_delete(filename); +}); + +FileActions.register('all','Rename',function(){return OC.imagePath('core','actions/rename')},function(filename){ + FileList.rename(filename); +}); + +FileActions.register('dir','Open','',function(filename){ + window.location='index.php?dir='+encodeURIComponent($('#dir').val()).replace(/%2F/g, '/')+'/'+encodeURIComponent(filename); +}); + +FileActions.setDefault('dir','Open'); diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js new file mode 100644 index 00000000000..5bd85fc29ef --- /dev/null +++ b/apps/files/js/filelist.js @@ -0,0 +1,232 @@ +FileList={ + useUndo:true, + update:function(fileListHtml) { + $('#fileList').empty().html(fileListHtml); + }, + addFile:function(name,size,lastModified,loading){ + var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file.png'); + var html='<tr data-type="file" data-size="'+size+'">'; + if(name.indexOf('.')!=-1){ + var basename=name.substr(0,name.lastIndexOf('.')); + var extension=name.substr(name.lastIndexOf('.')); + }else{ + var basename=name; + 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()+'/'+name+'"><span class="nametext">'+basename + if(extension){ + html+='<span class="extension">'+extension+'</span>'; + } + html+='</span></a></td>'; + if(size!='Pending'){ + simpleSize=simpleFileSize(size); + }else{ + simpleSize='Pending'; + } + sizeColor = Math.round(200-size/(1024*1024)*2); + lastModifiedTime=Math.round(lastModified.getTime() / 1000); + modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*14); + html+='<td class="filesize" title="'+humanFileSize(size)+'" style="color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')">'+simpleSize+'</td>'; + html+='<td class="date"><span class="modified" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</span></td>'; + html+='</tr>'; + FileList.insertElement(name,'file',$(html).attr('data-file',name)); + if(loading){ + $('tr').filterAttr('data-file',name).data('loading',true); + }else{ + $('tr').filterAttr('data-file',name).find('td.filename').draggable(dragOptions); + } + }, + addDir:function(name,size,lastModified){ + html = $('<tr></tr>').attr({ "data-type": "dir", "data-size": size, "data-file": name}); + 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": "index.php?dir="+ encodeURIComponent($('#dir').val()+'/'+name).replace(/%2F/g, '/') }); + link_elem.append($('<span></span>').addClass('nametext').text(name)); + td.append(link_elem); + html.append(td); + if(size!='Pending'){ + simpleSize=simpleFileSize(size); + }else{ + simpleSize='Pending'; + } + sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2)); + lastModifiedTime=Math.round(lastModified.getTime() / 1000); + modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5); + td = $('<td></td>').attr({ "class": "filesize", "title": humanFileSize(size), "style": 'color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')'}).text(simpleSize); + html.append(td); + + td = $('<td></td>').attr({ "class": "date" }); + td.append($('<span></span>').attr({ "class": "modified", "title": formatDate(lastModified), "style": 'color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')' }).text( relative_modified_date(lastModified.getTime() / 1000) )); + html.append(td); + 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); + }, + refresh:function(data) { + result = jQuery.parseJSON(data.responseText); + if(typeof(result.data.breadcrumb) != 'undefined'){ + updateBreadcrumb(result.data.breadcrumb); + } + FileList.update(result.data.files); + resetFileActionPanel(); + }, + remove:function(name){ + $('tr').filterAttr('data-file',name).find('td.filename').draggable('destroy'); + $('tr').filterAttr('data-file',name).remove(); + if($('tr[data-file]').length==0){ + $('#emptyfolder').show(); + $('.file_upload_filename').addClass('highlight'); + } + }, + insertElement:function(name,type,element){ + //find the correct spot to insert the file or folder + var fileElements=$('tr[data-file][data-type="'+type+'"]'); + var pos; + if(name.localeCompare($(fileElements[0]).attr('data-file'))<0){ + pos=-1; + }else if(name.localeCompare($(fileElements[fileElements.length-1]).attr('data-file'))>0){ + pos=fileElements.length-1; + }else{ + for(var pos=0;pos<fileElements.length-1;pos++){ + if(name.localeCompare($(fileElements[pos]).attr('data-file'))>0 && name.localeCompare($(fileElements[pos+1]).attr('data-file'))<0){ + break; + } + } + } + if(fileElements.length){ + if(pos==-1){ + $(fileElements[0]).before(element); + }else{ + $(fileElements[pos]).after(element); + } + }else if(type=='dir' && $('tr[data-file]').length>0){ + $('tr[data-file]').first().before(element); + }else{ + $('#fileList').append(element); + } + $('#emptyfolder').hide(); + $('.file_upload_filename').removeClass('highlight'); + }, + loadingDone:function(name){ + var tr=$('tr').filterAttr('data-file',name); + tr.data('loading',false); + var mime=tr.data('mime'); + tr.attr('data-mime',mime); + getMimeIcon(mime,function(path){ + tr.find('td.filename').attr('style','background-image:url('+path+')'); + }); + tr.find('td.filename').draggable(dragOptions); + }, + isLoading:function(name){ + return $('tr').filterAttr('data-file',name).data('loading'); + }, + rename:function(name){ + var tr=$('tr').filterAttr('data-file',name); + tr.data('renaming',true); + var td=tr.children('td.filename'); + var input=$('<input class="filename"></input>').val(name); + var form=$('<form></form>') + form.append(input); + td.children('a.name').text(''); + td.children('a.name').append(form) + input.focus(); + form.submit(function(event){ + event.stopPropagation(); + event.preventDefault(); + var newname=input.val(); + tr.attr('data-file',newname); + td.children('a.name').empty(); + var path = td.children('a.name').attr('href'); + td.children('a.name').attr('href', path.replace(encodeURIComponent(name), encodeURIComponent(newname))); + if(newname.indexOf('.')>0){ + basename=newname.substr(0,newname.lastIndexOf('.')); + }else{ + basename=newname; + } + 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>')); + } + $.get(OC.filePath('files','ajax','rename.php'), { dir : $('#dir').val(), newname: newname, file: name },function(){ + tr.data('renaming',false); + }); + return false; + }); + input.click(function(event){ + event.stopPropagation(); + event.preventDefault(); + }); + input.blur(function(){ + form.trigger('submit'); + }); + }, + do_delete:function(files){ + if(FileList.deleteFiles || !FileList.useUndo){//finish any ongoing deletes first + FileList.finishDelete(function(){ + FileList.do_delete(files); + }); + return; + } + if(files.substr){ + files=[files]; + } + $.each(files,function(index,file){ + var files = $('tr').filterAttr('data-file',file); + files.hide(); + files.find('input[type="checkbox"]').removeAttr('checked'); + files.removeClass('selected'); + }); + procesSelection(); + FileList.deleteCanceled=false; + FileList.deleteFiles=files; + $('#notification').text(t('files','undo deletion')); + $('#notification').data('deletefile',true); + $('#notification').fadeIn(); + }, + finishDelete:function(ready,sync){ + if(!FileList.deleteCanceled && FileList.deleteFiles){ + var fileNames=FileList.deleteFiles.join(';'); + $.ajax({ + url: 'ajax/delete.php', + async:!sync, + data: "dir="+$('#dir').val()+"&files="+encodeURIComponent(fileNames), + complete: function(data){ + boolOperationFinished(data, function(){ + $('#notification').fadeOut(); + $.each(FileList.deleteFiles,function(index,file){ + FileList.remove(file); + }); + FileList.deleteCanceled=true; + FileList.deleteFiles=null; + if(ready){ + ready(); + } + }); + } + }); + } + } +} + +$(document).ready(function(){ + $('#notification').hide(); + $('#notification').click(function(){ + if($('#notification').data('deletefile')) + { + $.each(FileList.deleteFiles,function(index,file){ + $('tr').filterAttr('data-file',file).show(); +// alert(file); + }); + FileList.deleteCanceled=true; + FileList.deleteFiles=null; + } + $('#notification').fadeOut(); + }); + FileList.useUndo=('onbeforeunload' in window) + $(window).bind('beforeunload', function (){ + FileList.finishDelete(null,true); + }); +}); diff --git a/apps/files/js/files.js b/apps/files/js/files.js new file mode 100644 index 00000000000..3ce95f992d0 --- /dev/null +++ b/apps/files/js/files.js @@ -0,0 +1,591 @@ +$(document).ready(function() { + $('#fileList tr').each(function(){ + //little hack to set unescape filenames in attribute + $(this).attr('data-file',decodeURIComponent($(this).attr('data-file'))); + }); + + if($('tr[data-file]').length==0){ + $('.file_upload_filename').addClass('highlight'); + } + + $('#file_action_panel').attr('activeAction', false); + + //drag/drop of files + $('#fileList tr td.filename').draggable(dragOptions); + $('#fileList tr[data-type="dir"][data-write="true"] td.filename').droppable(folderDropOptions); + $('div.crumb:not(.last)').droppable(crumbDropOptions); + $('ul#apps>li:first-child').data('dir',''); + if($('div.crumb').length){ + $('ul#apps>li:first-child').droppable(crumbDropOptions); + } + + // Triggers invisible file input + $('.file_upload_button_wrapper').live('click', function() { + $(this).parent().children('.file_upload_start').trigger('click'); + return false; + }); + + // Sets the file-action buttons behaviour : + $('tr').live('mouseenter',function(event) { + FileActions.display($(this).children('td.filename')); + }); + $('tr').live('mouseleave',function(event) { + FileActions.hide(); + }); + + var lastChecked; + + // Sets the file link behaviour : + $('td.filename a').live('click',function(event) { + event.preventDefault(); + if (event.ctrlKey || event.shiftKey) { + if (event.shiftKey) { + var last = $(lastChecked).parent().parent().prevAll().length; + var first = $(this).parent().parent().prevAll().length; + var start = Math.min(first, last); + var end = Math.max(first, last); + var rows = $(this).parent().parent().parent().children('tr'); + for (var i = start; i < end; i++) { + $(rows).each(function(index) { + if (index == i) { + var checkbox = $(this).children().children('input:checkbox'); + $(checkbox).attr('checked', 'checked'); + $(checkbox).parent().parent().addClass('selected'); + } + }); + } + } + var checkbox = $(this).parent().children('input:checkbox'); + lastChecked = checkbox; + if ($(checkbox).attr('checked')) { + $(checkbox).removeAttr('checked'); + $(checkbox).parent().parent().removeClass('selected'); + $('#select_all').removeAttr('checked'); + } else { + $(checkbox).attr('checked', 'checked'); + $(checkbox).parent().parent().toggleClass('selected'); + var selectedCount=$('td.filename input:checkbox:checked').length; + if (selectedCount == $('td.filename input:checkbox').length) { + $('#select_all').attr('checked', 'checked'); + } + } + procesSelection(); + } else { + var filename=$(this).parent().parent().attr('data-file'); + var tr=$('tr').filterAttr('data-file',filename); + var renaming=tr.data('renaming'); + if(!renaming && !FileList.isLoading(filename)){ + var mime=$(this).parent().parent().data('mime'); + var type=$(this).parent().parent().data('type'); + var action=FileActions.getDefault(mime,type); + if(action){ + action(filename); + } + } + } + + }); + + // Sets the select_all checkbox behaviour : + $('#select_all').click(function() { + if($(this).attr('checked')){ + // Check all + $('td.filename input:checkbox').attr('checked', true); + $('td.filename input:checkbox').parent().parent().addClass('selected'); + }else{ + // Uncheck all + $('td.filename input:checkbox').attr('checked', false); + $('td.filename input:checkbox').parent().parent().removeClass('selected'); + } + procesSelection(); + }); + + $('td.filename input:checkbox').live('change',function(event) { + if (event.shiftKey) { + var last = $(lastChecked).parent().parent().prevAll().length; + var first = $(this).parent().parent().prevAll().length; + var start = Math.min(first, last); + var end = Math.max(first, last); + var rows = $(this).parent().parent().parent().children('tr'); + for (var i = start; i < end; i++) { + $(rows).each(function(index) { + if (index == i) { + var checkbox = $(this).children().children('input:checkbox'); + $(checkbox).attr('checked', 'checked'); + $(checkbox).parent().parent().addClass('selected'); + } + }); + } + } + var selectedCount=$('td.filename input:checkbox:checked').length; + $(this).parent().parent().toggleClass('selected'); + if(!$(this).attr('checked')){ + $('#select_all').attr('checked',false); + }else{ + if(selectedCount==$('td.filename input:checkbox').length){ + $('#select_all').attr('checked',true); + } + } + procesSelection(); + }); + + $('#file_newfolder_name').click(function(){ + if($('#file_newfolder_name').val() == 'New Folder'){ + $('#file_newfolder_name').val(''); + } + }); + + $('.download').click('click',function(event) { + var files=getSelectedFiles('name').join(';'); + var dir=$('#dir').val()||'/'; + $('#notification').text(t('files','generating ZIP-file, it may take some time.')); + $('#notification').fadeIn(); + window.location='ajax/download.php?files='+encodeURIComponent(files)+'&dir='+encodeURIComponent(dir); + return false; + }); + + $('.delete').click(function(event) { + var files=getSelectedFiles('name'); + event.preventDefault(); + FileList.do_delete(files); + return false; + }); + + $('.file_upload_start').live('change',function(){ + var form=$(this).closest('form'); + var that=this; + var uploadId=form.attr('data-upload-id'); + var files=this.files; + var target=form.children('iframe'); + var totalSize=0; + if(files){ + for(var i=0;i<files.length;i++){ + totalSize+=files[i].size; + if(FileList.deleteFiles && FileList.deleteFiles.indexOf(files[i].name)!=-1){//finish delete if we are uploading a deleted file + FileList.finishDelete(function(){ + $(that).change(); + }); + return; + } + } + } + if(totalSize>$('#max_upload').val()){ + $( "#uploadsize-message" ).dialog({ + modal: true, + buttons: { + Close: function() { + $( this ).dialog( "close" ); + } + } + }); + }else{ + target.load(function(){ + var response=jQuery.parseJSON(target.contents().find('body').text()); + //set mimetype and if needed filesize + if(response){ + if(response[0] != undefined && response[0].status == 'success'){ + for(var i=0;i<response.length;i++){ + var file=response[i]; + $('tr').filterAttr('data-file',file.name).data('mime',file.mime); + if(size=='Pending'){ + $('tr').filterAttr('data-file',file.name).find('td.filesize').text(file.size); + } + FileList.loadingDone(file.name); + } + } + else{ + $('#notification').text(t('files',response.data.message)); + $('#notification').fadeIn(); + $('#fileList > tr').not('[data-mime]').fadeOut(); + $('#fileList > tr').not('[data-mime]').remove(); + } + } + }); + form.submit(); + var date=new Date(); + if(files){ + for(var i=0;i<files.length;i++){ + if(files[i].size>0){ + var size=files[i].size; + }else{ + var size=t('files','Pending'); + } + if(files){ + FileList.addFile(getUniqueName(files[i].name),size,date,true); + } + } + }else{ + var filename=this.value.split('\\').pop(); //ie prepends C:\fakepath\ in front of the filename + FileList.addFile(getUniqueName(filename),'Pending',date,true); + } + + //clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading + var clone=form.clone(); + uploadId++; + clone.attr('data-upload-id',uploadId); + clone.attr('target','file_upload_target_'+uploadId); + clone.children('iframe').attr('name','file_upload_target_'+uploadId) + clone.insertBefore(form); + form.hide(); + } + }); + + //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') + } + + //if the breadcrumb is to long, start by replacing foldernames with '...' except for the current folder + var crumb=$('div.crumb').first(); + while($('div.controls').height()>40 && crumb.next('div.crumb').length>0){ + crumb.children('a').text('...'); + crumb=crumb.next('div.crumb'); + } + //if that isn't enough, start removing items from the breacrumb except for the current folder and it's parent + var crumb=$('div.crumb').first(); + var next=crumb.next('div.crumb'); + while($('div.controls').height()>40 && next.next('div.crumb').length>0){ + crumb.remove(); + crumb=next; + next=crumb.next('div.crumb'); + } + //still not enough, start shorting down the current folder name + var crumb=$('div.crumb>a').last(); + while($('div.controls').height()>40 && crumb.text().length>6){ + var text=crumb.text() + text=text.substr(0,text.length-6)+'...'; + crumb.text(text); + } + + $(window).click(function(){ + $('#new>ul').hide(); + $('#new').removeClass('active'); + $('button.file_upload_filename').removeClass('active'); + $('#new li').each(function(i,element){ + if($(element).children('p').length==0){ + $(element).children('input').remove(); + $(element).append('<p>'+$(element).data('text')+'</p>'); + } + }); + }); + $('#new').click(function(event){ + event.stopPropagation(); + }); + $('#new>a').click(function(){ + $('#new>ul').toggle(); + $('#new').toggleClass('active'); + $('button.file_upload_filename').toggleClass('active'); + }); + $('#new li').click(function(){ + if($(this).children('p').length==0){ + return; + } + + $('#new li').each(function(i,element){ + if($(element).children('p').length==0){ + $(element).children('input').remove(); + $(element).append('<p>'+$(element).data('text')+'</p>'); + } + }); + + var type=$(this).data('type'); + var text=$(this).children('p').text(); + $(this).data('text',text); + $(this).children('p').remove(); + var input=$('<input>'); + $(this).append(input); + input.focus(); + input.change(function(){ + var name=$(this).val(); + switch(type){ + case 'file': + $.post( + OC.filePath('files','ajax','newfile.php'), + {dir:$('#dir').val(),filename:name,content:" \n"}, + function(data){ + var date=new Date(); + FileList.addFile(name,0,date); + var tr=$('tr').filterAttr('data-file',name); + tr.data('mime','text/plain'); + getMimeIcon('text/plain',function(path){ + tr.find('td.filename').attr('style','background-image:url('+path+')'); + }); + } + ); + break; + case 'folder': + $.post( + OC.filePath('files','ajax','newfolder.php'), + {dir:$('#dir').val(),foldername:name}, + function(data){ + var date=new Date(); + FileList.addDir(name,0,date); + } + ); + break; + case 'web': + if(name.substr(0,8)!='https://' && name.substr(0,7)!='http://'){ + name='http://'.name; + } + var localName=name; + if(localName.substr(localName.length-1,1)=='/'){//strip / + localName=localName.substr(0,localName.length-1) + } + if(localName.indexOf('/')){//use last part of url + localName=localName.split('/').pop(); + }else{//or the domain + localName=(localName.match(/:\/\/(.[^/]+)/)[1]).replace('www.',''); + } + $.post( + OC.filePath('files','ajax','newfile.php'), + {dir:$('#dir').val(),source:name,filename:localName}, + function(result){ + if(result.status == 'success'){ + var date=new Date(); + FileList.addFile(localName,0,date); + var tr=$('tr').filterAttr('data-file',localName); + tr.data('mime',result.data.mime); + getMimeIcon(result.data.mime,function(path){ + tr.find('td.filename').attr('style','background-image:url('+path+')'); + }); + }else{ + + } + } + ); + break; + } + var li=$(this).parent(); + $(this).remove(); + li.append('<p>'+li.data('text')+'</p>'); + $('#new>a').click(); + }); + }); + + //check if we need to scan the filesystem + $.get(OC.filePath('files','ajax','scan.php'),{checkonly:'true'}, function(response) { + if(response.data.done){ + scanFiles(); + } + }, "json"); +}); + +function scanFiles(force){ + force=!!force; //cast to bool + scanFiles.scanning=true; + $('#scanning-message').show(); + $('#fileList').remove(); + var scannerEventSource=new OC.EventSource(OC.filePath('files','ajax','scan.php'),{force:force}); + scanFiles.cancel=scannerEventSource.close.bind(scannerEventSource); + scannerEventSource.listen('scanning',function(data){ + $('#scan-count').text(data.count+' files scanned'); + $('#scan-current').text(data.file+'/'); + }); + scannerEventSource.listen('success',function(success){ + scanFiles.scanning=false; + if(success){ + window.location.reload(); + }else{ + alert('error while scanning'); + } + }); +} +scanFiles.scanning=false; + +function boolOperationFinished(data, callback) { + result = jQuery.parseJSON(data.responseText); + if(result.status == 'success'){ + callback.call(); + } else { + alert(result.data.message); + } +} + +function updateBreadcrumb(breadcrumbHtml) { + $('p.nav').empty().html(breadcrumbHtml); +} + +//options for file drag/dropp +var dragOptions={ + distance: 20, revert: 'invalid', opacity: 0.7, + stop: function(event, ui) { + $('#fileList tr td.filename').addClass('ui-draggable'); + } +}; +var folderDropOptions={ + drop: function( event, ui ) { + var file=ui.draggable.parent().data('file'); + var target=$(this).text().trim(); + var dir=$('#dir').val(); + $.ajax({ + url: 'ajax/move.php', + data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(dir)+'/'+encodeURIComponent(target), + complete: function(data){boolOperationFinished(data, function(){ + var el = $('#fileList tr').filterAttr('data-file',file).find('td.filename'); + el.draggable('destroy'); + FileList.remove(file); + });} + }); + } +} +var crumbDropOptions={ + drop: function( event, ui ) { + var file=ui.draggable.text().trim(); + var target=$(this).data('dir'); + var dir=$('#dir').val(); + while(dir.substr(0,1)=='/'){//remove extra leading /'s + dir=dir.substr(1); + } + dir='/'+dir; + if(dir.substr(-1,1)!='/'){ + dir=dir+'/'; + } + if(target==dir || target+'/'==dir){ + return; + } + $.ajax({ + url: 'ajax/move.php', + data: "dir="+encodeURIComponent(dir)+"&file="+encodeURIComponent(file)+'&target='+encodeURIComponent(target), + complete: function(data){boolOperationFinished(data, function(){ + FileList.remove(file); + });} + }); + }, + tolerance: 'pointer' +} + +function procesSelection(){ + var selected=getSelectedFiles(); + var selectedFiles=selected.filter(function(el){return el.type=='file'}); + var selectedFolders=selected.filter(function(el){return el.type=='dir'}); + if(selectedFiles.length==0 && selectedFolders.length==0){ + $('#headerName>span.name').text(t('files','Name')); + $('#headerSize').text(t('files','Size')); + $('#modified').text(t('files','Modified')); + $('th').removeClass('multiselect'); + $('.selectedActions').hide(); + $('thead').removeClass('fixed'); + $('#headerName').css('width','auto'); + $('#headerSize').css('width','auto'); + $('#headerDate').css('width','auto'); + $('table').css('padding-top','0'); + }else{ + var width={name:$('#headerName').css('width'),size:$('#headerSize').css('width'),date:$('#headerDate').css('width')}; + $('#headerName').css('width',width.name); + $('#headerSize').css('width',width.size); + $('#headerDate').css('width',width.date); + $('.selectedActions').show(); + var totalSize=0; + for(var i=0;i<selectedFiles.length;i++){ + totalSize+=selectedFiles[i].size; + }; + for(var i=0;i<selectedFolders.length;i++){ + totalSize+=selectedFolders[i].size; + }; + simpleSize=simpleFileSize(totalSize); + $('#headerSize').text(simpleSize); + $('#headerSize').attr('title',humanFileSize(totalSize)); + var selection=''; + if(selectedFolders.length>0){ + if(selectedFolders.length==1){ + selection+='1 '+t('files','folder'); + }else{ + selection+=selectedFolders.length+' '+t('files','folders'); + } + if(selectedFiles.length>0){ + selection+=' & '; + } + } + if(selectedFiles.length>0){ + if(selectedFiles.length==1){ + selection+='1 '+t('files','file'); + }else{ + selection+=selectedFiles.length+' '+t('files','files'); + } + } + $('#headerName>span.name').text(selection); + $('#modified').text(''); + $('th').addClass('multiselect'); + } +} + +/** + * @brief get a list of selected files + * @param string property (option) the property of the file requested + * @return array + * + * possible values for property: name, mime, size and type + * if property is set, an array with that property for each file is returnd + * if it's ommited an array of objects with all properties is returned + */ +function getSelectedFiles(property){ + var elements=$('td.filename input:checkbox:checked').parent().parent(); + var files=[]; + elements.each(function(i,element){ + var file={ + name:$(element).attr('data-file'), + mime:$(element).data('mime'), + type:$(element).data('type'), + size:$(element).data('size'), + }; + if(property){ + files.push(file[property]); + }else{ + files.push(file); + } + }); + return files; +} + +function relative_modified_date(timestamp) { + var timediff = Math.round((new Date()).getTime() / 1000) - timestamp; + var diffminutes = Math.round(timediff/60); + var diffhours = Math.round(diffminutes/60); + var diffdays = Math.round(diffhours/24); + var diffmonths = Math.round(diffdays/31); + var diffyears = Math.round(diffdays/365); + if(timediff < 60) { return t('files','seconds ago'); } + else if(timediff < 120) { return '1 '+t('files','minute ago'); } + else if(timediff < 3600) { return diffminutes+' '+t('files','minutes ago'); } + //else if($timediff < 7200) { return '1 hour ago'; } + //else if($timediff < 86400) { return $diffhours.' hours ago'; } + else if(timediff < 86400) { return t('files','today'); } + else if(timediff < 172800) { return t('files','yesterday'); } + else if(timediff < 2678400) { return diffdays+' '+t('files','days ago'); } + else if(timediff < 5184000) { return t('files','last month'); } + //else if($timediff < 31556926) { return $diffmonths.' months ago'; } + else if(timediff < 31556926) { return t('files','months ago'); } + else if(timediff < 63113852) { return t('files','last year'); } + else { return diffyears+' '+t('files','years ago'); } +} + +function getMimeIcon(mime, ready){ + if(getMimeIcon.cache[mime]){ + ready(getMimeIcon.cache[mime]); + }else{ + $.get( OC.filePath('files','ajax','mimeicon.php')+'?mime='+mime, function(path){ + getMimeIcon.cache[mime]=path; + ready(getMimeIcon.cache[mime]); + }); + } +} +getMimeIcon.cache={}; + +function getUniqueName(name){ + if($('tr').filterAttr('data-file',name).length>0){ + var parts=name.split('.'); + var extension=parts.pop(); + var base=parts.join('.'); + numMatch=base.match(/\((\d+)\)/); + var num=2; + if(numMatch && numMatch.length>0){ + num=parseInt(numMatch[numMatch.length-1])+1; + base=base.split('(') + base.pop(); + base=base.join('(').trim(); + } + name=base+' ('+num+').'+extension; + return getUniqueName(name); + } + return name; +} diff --git a/apps/files/js/timezone.js b/apps/files/js/timezone.js new file mode 100644 index 00000000000..d569683f210 --- /dev/null +++ b/apps/files/js/timezone.js @@ -0,0 +1,12 @@ +//send the clients time zone to the server +$(document).ready(function() { + var visitortimezone = (-new Date().getTimezoneOffset()/60); + $.ajax({ + type: "GET", + url: "ajax/timezone.php", + data: 'time='+ visitortimezone, + success: function(){ + location.reload(); + } + }); +});
\ No newline at end of file diff --git a/apps/files/l10n/ar.php b/apps/files/l10n/ar.php new file mode 100644 index 00000000000..50edc0d6979 --- /dev/null +++ b/apps/files/l10n/ar.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "تم ترفيع الملفات بنجاح.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "حجم الملف الذي تريد ترفيعه أعلى مما upload_max_filesize يسمح به في ملف php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "حجم الملف الذي تريد ترفيعه أعلى مما MAX_FILE_SIZE يسمح به في واجهة ال HTML.", +"The uploaded file was only partially uploaded" => "تم ترفيع جزء من الملفات الذي تريد ترفيعها فقط", +"No file was uploaded" => "لم يتم ترفيع أي من الملفات", +"Missing a temporary folder" => "المجلد المؤقت غير موجود", +"Files" => "الملفات", +"Maximum upload size" => "الحد الأقصى لحجم الملفات التي يمكن رفعها", +"New" => "جديد", +"Text file" => "ملف", +"Folder" => "مجلد", +"From the web" => "من الوب", +"Upload" => "إرفع", +"Nothing in here. Upload something!" => "لا يوجد شيء هنا. إرفع بعض الملفات!", +"Name" => "الاسم", +"Download" => "تحميل", +"Size" => "حجم", +"Modified" => "معدل", +"Delete" => "محذوف", +"Upload too large" => "حجم الترفيع أعلى من المسموح", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "حجم الملفات التي تريد ترفيعها أعلى من المسموح على الخادم." +); diff --git a/apps/files/l10n/bg_BG.php b/apps/files/l10n/bg_BG.php new file mode 100644 index 00000000000..027a7698203 --- /dev/null +++ b/apps/files/l10n/bg_BG.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Файлът е качен успешно", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Файлът който се опитвате да качите, надвишава зададените стойности в upload_max_filesize в PHP.INI", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Файлът който се опитвате да качите надвишава стойностите в MAX_FILE_SIZE в HTML формата.", +"The uploaded file was only partially uploaded" => "Файлът е качен частично", +"No file was uploaded" => "Фахлът не бе качен", +"Missing a temporary folder" => "Липсва временната папка", +"Files" => "Файлове", +"Maximum upload size" => "Макс. размер за качване", +"Upload" => "Качване", +"Nothing in here. Upload something!" => "Няма нищо, качете нещо!", +"Name" => "Име", +"Download" => "Изтегляне", +"Size" => "Размер", +"Modified" => "Променено", +"Delete" => "Изтриване", +"Upload too large" => "Файлът е прекалено голям", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файловете които се опитвате да качите са по-големи от позволеното за сървъра." +); diff --git a/apps/files/l10n/ca.php b/apps/files/l10n/ca.php new file mode 100644 index 00000000000..b85b36f5c02 --- /dev/null +++ b/apps/files/l10n/ca.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "El fitxer s'ha pujat correctament", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El fitxer de pujada excedeix la directiva upload_max_filesize establerta a php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El fitxer de pujada excedeix la directiva MAX_FILE_SIZE especificada al formulari HTML", +"The uploaded file was only partially uploaded" => "El fitxer només s'ha pujat parcialment", +"No file was uploaded" => "El fitxer no s'ha pujat", +"Missing a temporary folder" => "S'ha perdut un fitxer temporal", +"Files" => "Fitxers", +"Maximum upload size" => "Mida màxima de pujada", +"New" => "Nou", +"Text file" => "Fitxer de text", +"Folder" => "Carpeta", +"From the web" => "Des de la web", +"Upload" => "Puja", +"Nothing in here. Upload something!" => "Res per aquí. Pugeu alguna cosa!", +"Name" => "Nom", +"Download" => "Baixa", +"Size" => "Mida", +"Modified" => "Modificat", +"Delete" => "Esborra", +"Upload too large" => "La pujada és massa gran", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Els fitxers que esteu intentant pujar excedeixen la mida màxima de pujada del servidor" +); diff --git a/apps/files/l10n/cs_CZ.php b/apps/files/l10n/cs_CZ.php new file mode 100644 index 00000000000..5d26b26604a --- /dev/null +++ b/apps/files/l10n/cs_CZ.php @@ -0,0 +1,23 @@ +<?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 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", +"Files" => "Soubory", +"Maximum upload size" => "Maximální velikost ukládaných souborů", +"New" => "Nový", +"Text file" => "Textový soubor", +"Folder" => "Adresář", +"From the web" => "Z webu", +"Upload" => "Uložit", +"Nothing in here. Upload something!" => "Žádný obsah. Uložte si něco!", +"Name" => "Název", +"Download" => "Stáhnout", +"Size" => "Velikost", +"Modified" => "Změněno", +"Delete" => "Vymazat", +"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." +); diff --git a/apps/files/l10n/da.php b/apps/files/l10n/da.php new file mode 100644 index 00000000000..f86a98d44c1 --- /dev/null +++ b/apps/files/l10n/da.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Der er ingen fejl, filen blev uploadet med success", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uploadede fil overskrider upload_max_filesize direktivet i php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uploadede fil overskrider MAX_FILE_SIZE -direktivet som er specificeret i HTML-formularen", +"The uploaded file was only partially uploaded" => "Den uploadede file blev kun delvist uploadet", +"No file was uploaded" => "Ingen fil blev uploadet", +"Missing a temporary folder" => "Mangler en midlertidig mappe", +"Files" => "Filer", +"Maximum upload size" => "Maksimal upload-størrelse", +"New" => "Ny", +"Text file" => "Tekstfil", +"Folder" => "Mappe", +"From the web" => "Fra nettet", +"Upload" => "Upload", +"Nothing in here. Upload something!" => "Her er tomt. Upload noget!", +"Name" => "Navn", +"Download" => "Download", +"Size" => "Størrelse", +"Modified" => "Ændret", +"Delete" => "Slet", +"Upload too large" => "Upload for stor", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerne, du prøver at uploade, er større end den maksimale størrelse for fil-upload på denne server." +); diff --git a/apps/files/l10n/de.php b/apps/files/l10n/de.php new file mode 100644 index 00000000000..94d312c3e9e --- /dev/null +++ b/apps/files/l10n/de.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Datei hochgeladen.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Die hochgeladene Datei ist zu groß.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Die hochgeladene Datei ist zu groß.", +"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.", +"Files" => "Dateien", +"Maximum upload size" => "Maximale Größe", +"New" => "Neu", +"Text file" => "Text Datei", +"Folder" => "Ordner", +"From the web" => "Aus dem Netz", +"Upload" => "Hochladen", +"Nothing in here. Upload something!" => "Alles leer. Lad’ was hoch!", +"Name" => "Name", +"Download" => "Herunterladen", +"Size" => "Größe", +"Modified" => "Bearbeitet", +"Delete" => "Löschen", +"Upload too large" => "Upload zu groß", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Die Datei überschreitet die Maximalgröße für Uploads auf diesem Server." +); diff --git a/apps/files/l10n/el.php b/apps/files/l10n/el.php new file mode 100644 index 00000000000..27a80fcc98c --- /dev/null +++ b/apps/files/l10n/el.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Δεν υπάρχει λάθος, το αρχείο που μεταφορτώθηκε επιτυχώς", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Το αρχείο που μεταφορτώθηκε υπερβαίνει την οδηγία μέγιστου επιτρεπτού μεγέθους \"upload_max_filesize\" του php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Το αρχείο υπερβαίνει την οδηγία μέγιστου επιτρεπτού μεγέθους \"MAX_FILE_SIZE\" που έχει οριστεί στην html φόρμα", +"The uploaded file was only partially uploaded" => "Το αρχείο μεταφορώθηκε μόνο εν μέρει", +"No file was uploaded" => "Το αρχείο δεν μεταφορτώθηκε", +"Missing a temporary folder" => "Λείπει ένας προσωρινός φάκελος", +"Files" => "Αρχεία", +"Maximum upload size" => "Μέγιστο μέγεθος μεταφόρτωσης", +"New" => "Νέο", +"Text file" => "Αρχείο κειμένου", +"Folder" => "Φάκελος", +"From the web" => "Από τον ιστό", +"Upload" => "Μεταφόρτωση", +"Nothing in here. Upload something!" => "Δεν υπάρχει τίποτα εδώ. Ανέβασε κάτι!", +"Name" => "Όνομα", +"Download" => "Λήψη", +"Size" => "Μέγεθος", +"Modified" => "Τροποποιήθηκε", +"Delete" => "Διαγραφή", +"Upload too large" => "Πολύ μεγάλο το αρχείο προς μεταφόρτωση", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Τα αρχεία που προσπαθείτε να ανεβάσετε υπερβαίνουν το μέγιστο μέγεθος μεταφόρτωσης αρχείων σε αυτόν το διακομιστή." +); diff --git a/apps/files/l10n/eo.php b/apps/files/l10n/eo.php new file mode 100644 index 00000000000..42dc4f1280e --- /dev/null +++ b/apps/files/l10n/eo.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Ne estas eraro, la dosiero alŝutiĝis sukcese", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "La dosiero alŝutita superas la regulon upload_max_filesize el php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "La dosiero alŝutita superas laregulon MAX_FILE_SIZE, kiu estas difinita en la HTML-formularo", +"The uploaded file was only partially uploaded" => "La alŝutita dosiero nur parte alŝutiĝis", +"No file was uploaded" => "Neniu dosiero estas alŝutita", +"Missing a temporary folder" => "Mankas tempa dosierujo", +"Files" => "Dosieroj", +"Maximum upload size" => "Maksimuma alŝutogrando", +"Upload" => "Alŝuti", +"Nothing in here. Upload something!" => "Nenio estas ĉi tie. Alŝutu ion!", +"Name" => "Nomo", +"Download" => "Elŝuti", +"Size" => "Grando", +"Modified" => "Modifita", +"Delete" => "Forigi", +"Upload too large" => "Elŝuto tro larĝa", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "La dosieroj, kiujn vi provas alŝuti, transpasas la maksimuman grandon por dosieralŝutoj en ĉi tiu servilo." +); diff --git a/apps/files/l10n/es.php b/apps/files/l10n/es.php new file mode 100644 index 00000000000..11665ac3c32 --- /dev/null +++ b/apps/files/l10n/es.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "No hubo ningún error, el archivo se subió con éxito", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "El archivo que intentas subir sobrepasa el tamaño definido por la variable upload_max_filesize en php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "El archivo que intentas subir sobrepasa el tamaño definido por la variable MAX_FILE_SIZE especificada en el formulario HTML", +"The uploaded file was only partially uploaded" => "El archivo que intentas subir solo se subió parcialmente", +"No file was uploaded" => "No se subió ningún archivo", +"Missing a temporary folder" => "Falta un directorio temporal", +"Files" => "Archivos", +"Maximum upload size" => "Tamaño máximo de subida", +"New" => "Nuevo", +"Text file" => "Archivo de texto", +"Folder" => "Carpeta", +"From the web" => "Desde la web", +"Upload" => "Subir", +"Nothing in here. Upload something!" => "Aquí no hay nada. ¡Sube algo!", +"Name" => "Nombre", +"Download" => "Descargar", +"Size" => "Tamaño", +"Modified" => "Modificado", +"Delete" => "Eliminado", +"Upload too large" => "El archivo es demasiado grande", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Los archivos que estás intentando subir sobrepasan el tamaño máximo permitido por este servidor." +); diff --git a/apps/files/l10n/et_EE.php b/apps/files/l10n/et_EE.php new file mode 100644 index 00000000000..415eb632312 --- /dev/null +++ b/apps/files/l10n/et_EE.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Ühtegi viga pole, fail on üles laetud", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Üles laetud faili suurus ületab php.ini määratud upload_max_filesize suuruse", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Üles laetud faili suurus ületab HTML vormis määratud upload_max_filesize suuruse", +"The uploaded file was only partially uploaded" => "Fail laeti üles ainult osaliselt", +"No file was uploaded" => "Ühtegi faili ei laetud üles", +"Missing a temporary folder" => "Ajutiste failide kaust puudub", +"Files" => "Failid", +"Maximum upload size" => "Maksimaalne üleslaadimise suurus", +"New" => "Uus", +"Text file" => "Tekstifail", +"Folder" => "Kaust", +"From the web" => "Veebist", +"Upload" => "Lae üles", +"Nothing in here. Upload something!" => "Siin pole midagi. Lae midagi üles!", +"Name" => "Nimi", +"Download" => "Lae alla", +"Size" => "Suurus", +"Modified" => "Muudetud", +"Delete" => "Kustuta", +"Upload too large" => "Üleslaadimine on liiga suur", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Failid, mida sa proovid üles laadida, ületab serveri poolt üleslaetavatele failidele määratud maksimaalse suuruse." +); diff --git a/apps/files/l10n/eu.php b/apps/files/l10n/eu.php new file mode 100644 index 00000000000..b9873e6c3fa --- /dev/null +++ b/apps/files/l10n/eu.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Ez da arazorik izan, fitxategia ongi igo da", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Igotako fitxategiaren tamaina php.ini-ko upload_max_filesize direktiban adierazitakoa baino handiagoa da", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Igotako fitxategiaren tamaina HTML inprimakiko MAX_FILESIZE direktiban adierazitakoa baino handiagoa da", +"The uploaded file was only partially uploaded" => "Igotako fitxategiaren zati bat baino gehiago ez da igo", +"No file was uploaded" => "Ez da fitxategirik igo", +"Missing a temporary folder" => "Aldi baterako karpeta falta da", +"Files" => "Fitxategiak", +"Maximum upload size" => "Igo daitekeen gehienezko tamaina", +"Upload" => "Igo", +"Nothing in here. Upload something!" => "Ez dago ezer. Igo zerbait!", +"Name" => "Izena", +"Download" => "Deskargatu", +"Size" => "Tamaina", +"Modified" => "Aldatuta", +"Delete" => "Ezabatu", +"Upload too large" => "Igotakoa handiegia da", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Igotzen saiatzen ari zaren fitxategiak zerbitzari honek igotzeko onartzen duena baino handiagoak dira." +); diff --git a/apps/files/l10n/fr.php b/apps/files/l10n/fr.php new file mode 100644 index 00000000000..cf90223a06a --- /dev/null +++ b/apps/files/l10n/fr.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Aucune erreur, le fichier a été téléversé avec succès", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Le fichier téléversé excède la valeur de upload_max_filesize spécifiée dans php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Le fichier téléversé excède la valeur de MAX_FILE_SIZE spécifiée dans le formulaire HTML", +"The uploaded file was only partially uploaded" => "Le fichier n'a été que partiellement téléversé", +"No file was uploaded" => "Aucun fichier n'a été téléversé", +"Missing a temporary folder" => "Il manque un répertoire temporaire", +"Files" => "Fichiers", +"Maximum upload size" => "Taille max. d'envoi", +"New" => "Nouveau", +"Text file" => "Fichier texte", +"Folder" => "Dossier", +"From the web" => "Depuis le web", +"Upload" => "Envoyer", +"Nothing in here. Upload something!" => "Il n'y a rien ici ! Envoyez donc quelque chose :)", +"Name" => "Nom", +"Download" => "Téléchargement", +"Size" => "Taille", +"Modified" => "Modifié", +"Delete" => "Supprimer", +"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." +); diff --git a/apps/files/l10n/gl.php b/apps/files/l10n/gl.php new file mode 100644 index 00000000000..83cf93be795 --- /dev/null +++ b/apps/files/l10n/gl.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Non hai erros, o ficheiro subeuse con éxito", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O ficheiro subido supera a directiva upload_max_filesize no php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O ficheiro subido supera a directiva MAX_FILE_SIZE que foi indicada no formulario HTML", +"The uploaded file was only partially uploaded" => "O ficheiro subido foi só parcialmente subido", +"No file was uploaded" => "Non se subeu ningún ficheiro", +"Missing a temporary folder" => "Falta un cartafol temporal", +"Files" => "Ficheiros", +"Maximum upload size" => "Tamaño máximo de subida", +"New" => "Novo", +"Text file" => "Ficheiro de texto", +"Folder" => "Cartafol", +"From the web" => "Desde a rede", +"Upload" => "Subir", +"Nothing in here. Upload something!" => "Nada por aquí. Sube algo!", +"Name" => "Nome", +"Download" => "Baixar", +"Size" => "Tamaño", +"Modified" => "Modificado", +"Delete" => "Eliminar", +"Upload too large" => "Subida demasiado grande", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os ficheiros que tratas de subir superan o tamaño máximo permitido neste servidor" +); diff --git a/apps/files/l10n/he.php b/apps/files/l10n/he.php new file mode 100644 index 00000000000..79ae1edb7a5 --- /dev/null +++ b/apps/files/l10n/he.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "לא אירעה תקלה, הקבצים הועלו בהצלחה", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "הקובץ שהועלה חרג מההנחיה upload_max_filesize בקובץ php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "הקובץ שהועלה חרג מההנחיה MAX_FILE_SIZE שצוינה בטופס ה־HTML", +"The uploaded file was only partially uploaded" => "הקובץ שהועלה הועלה בצורה חלקית", +"No file was uploaded" => "לא הועלו קבצים", +"Missing a temporary folder" => "תיקייה זמנית חסרה", +"Files" => "קבצים", +"Maximum upload size" => "גודל העלאה מקסימלי", +"Upload" => "העלאה", +"Nothing in here. Upload something!" => "אין כאן שום דבר. אולי ברצונך להעלות משהו?", +"Name" => "שם", +"Download" => "הורדה", +"Size" => "גודל", +"Modified" => "זמן שינוי", +"Delete" => "מחיקה", +"Upload too large" => "העלאה גדולה מידי", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "הקבצים שניסית להעלות חרגו מהגודל המקסימלי להעלאת קבצים על שרת זה." +); diff --git a/apps/files/l10n/hr.php b/apps/files/l10n/hr.php new file mode 100644 index 00000000000..670e87f6557 --- /dev/null +++ b/apps/files/l10n/hr.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Datoteka je poslana uspješno i bez pogrešaka", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Poslana datoteka izlazi iz okvira upload_max_size direktive postavljene u php.ini konfiguracijskoj datoteci", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslana datoteka izlazi iz okvira MAX_FILE_SIZE direktive postavljene u HTML obrascu", +"The uploaded file was only partially uploaded" => "Datoteka je poslana samo djelomično", +"No file was uploaded" => "Ni jedna datoteka nije poslana", +"Missing a temporary folder" => "Nedostaje privremena mapa", +"Files" => "Datoteke", +"Maximum upload size" => "Maksimalna veličina prijenosa", +"Upload" => "Pošalji", +"Nothing in here. Upload something!" => "Nema ničega u ovoj mapi. Pošalji nešto!", +"Name" => "Naziv", +"Download" => "Preuzmi", +"Size" => "Veličina", +"Modified" => "Zadnja promjena", +"Delete" => "Briši", +"Upload too large" => "Prijenos je preobiman", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke koje pokušavate prenijeti prelaze maksimalnu veličinu za prijenos datoteka na ovom poslužitelju." +); diff --git a/apps/files/l10n/hu_HU.php b/apps/files/l10n/hu_HU.php new file mode 100644 index 00000000000..a176ffce647 --- /dev/null +++ b/apps/files/l10n/hu_HU.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Nincs hiba, a fájl sikeresen feltöltve.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "A feltöltött file meghaladja az upload_max_filesize direktívát a php.ini-ben.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "A feltöltött fájl meghaladja a MAX_FILE_SIZE direktívát ami meghatározott a HTML form-ban.", +"The uploaded file was only partially uploaded" => "Az eredeti fájl csak részlegesen van feltöltve.", +"No file was uploaded" => "Nem lett fájl feltöltve.", +"Missing a temporary folder" => "Hiányzik az ideiglenes könyvtár", +"Files" => "Fájlok", +"Maximum upload size" => "Maximális feltölthető fájlméret", +"Upload" => "Feltöltés", +"Nothing in here. Upload something!" => "Töltsön fel egy fájlt.", +"Name" => "Név", +"Download" => "Letöltés", +"Size" => "Méret", +"Modified" => "Módosítva", +"Delete" => "Törlés", +"Upload too large" => "Feltöltés túl nagy", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "A fájlokat amit próbálsz feltölteni meghaladta a legnagyobb fájlméretet ezen a szerveren." +); diff --git a/apps/files/l10n/ia.php b/apps/files/l10n/ia.php new file mode 100644 index 00000000000..8753b871c9e --- /dev/null +++ b/apps/files/l10n/ia.php @@ -0,0 +1,17 @@ +<?php $TRANSLATIONS = array( +"The uploaded file was only partially uploaded" => "Le file incargate solmente esseva incargate partialmente", +"No file was uploaded" => "Nulle file esseva incargate", +"Files" => "Files", +"Maximum upload size" => "Dimension maxime de incargamento", +"New" => "Nove", +"Text file" => "File de texto", +"Folder" => "Dossier", +"Upload" => "Incargar", +"Nothing in here. Upload something!" => "Nihil hic. Incarga alcun cosa!", +"Name" => "Nomine", +"Download" => "Discargar", +"Size" => "Dimension", +"Modified" => "Modificate", +"Delete" => "Deler", +"Upload too large" => "Incargamento troppo longe" +); diff --git a/apps/files/l10n/id.php b/apps/files/l10n/id.php new file mode 100644 index 00000000000..902eeeb4ec2 --- /dev/null +++ b/apps/files/l10n/id.php @@ -0,0 +1,13 @@ +<?php $TRANSLATIONS = array( +"Files" => "Berkas", +"Maximum upload size" => "Ukuran unggah maksimum", +"Upload" => "Unggah", +"Nothing in here. Upload something!" => "Tidak ada apa-apa di sini. Unggah sesuatu!", +"Name" => "Nama", +"Download" => "Unduh", +"Size" => "Ukuran", +"Modified" => "Dimodifikasi", +"Delete" => "Hapus", +"Upload too large" => "Unggahan terlalu besar", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Berkas yang anda coba unggah melebihi ukuran maksimum untuk pengunggahan berkas di server ini." +); diff --git a/apps/files/l10n/it.php b/apps/files/l10n/it.php new file mode 100644 index 00000000000..919ff0b5aae --- /dev/null +++ b/apps/files/l10n/it.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Non ci sono errori, file caricato con successo", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Il file caricato supera il valore upload_max_filesize in php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Il file caricato supera il valore MAX_FILE_SIZE definito nel form HTML", +"The uploaded file was only partially uploaded" => "Il file è stato parzialmente caricato", +"No file was uploaded" => "Nessun file è stato caricato", +"Missing a temporary folder" => "Cartella temporanea mancante", +"Files" => "File", +"Maximum upload size" => "Dimensione massima upload", +"New" => "Nuovo", +"Text file" => "File di testo", +"Folder" => "Cartella", +"From the web" => "Dal web", +"Upload" => "Carica", +"Nothing in here. Upload something!" => "Non c'è niente qui. Carica qualcosa!", +"Name" => "Nome", +"Download" => "Scarica", +"Size" => "Dimensione", +"Modified" => "Modificato", +"Delete" => "Cancella", +"Upload too large" => "Il file caricato è troppo grande", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "I file che stai provando a caricare superano la dimensione massima consentita su questo server." +); diff --git a/apps/files/l10n/ja_JP.php b/apps/files/l10n/ja_JP.php new file mode 100644 index 00000000000..24c4e36ee6e --- /dev/null +++ b/apps/files/l10n/ja_JP.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "エラーはありません。ファイルのアップロードは成功しました。", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "アップロードされたファイルはphp.iniのupload_max_filesizeに設定されたサイズを超えています", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "アップロードされたファイルはHTMLのフォームに設定されたMAX_FILE_SIZEに設定されたサイズを超えています", +"The uploaded file was only partially uploaded" => "ファイルは一部分しかアップロードされませんでした", +"No file was uploaded" => "ファイルはアップロードされませんでした", +"Missing a temporary folder" => "テンポラリフォルダが見つかりません", +"Files" => "ファイル", +"Maximum upload size" => "最大アップロードサイズ", +"New" => "新規作成", +"Text file" => "テキストファイル", +"Folder" => "フォルダ", +"From the web" => "ウェブ経由", +"Upload" => "アップロード", +"Nothing in here. Upload something!" => "ここには何もありません。何かアップロードしてください。", +"Name" => "名前", +"Download" => "ダウンロード", +"Size" => "サイズ", +"Modified" => "更新日時", +"Delete" => "削除", +"Upload too large" => "ファイルサイズが大きすぎます", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "アップロードしようとしているファイルはサーバで規定された最大サイズを超えています" +); diff --git a/apps/files/l10n/lb.php b/apps/files/l10n/lb.php new file mode 100644 index 00000000000..43956fcd63e --- /dev/null +++ b/apps/files/l10n/lb.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Keen Feeler, Datei ass komplett ropgelueden ginn", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Déi ropgelueden Datei ass méi grouss wei d'upload_max_filesize Eegenschaft an der php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Déi ropgelueden Datei ass méi grouss wei d'MAX_FILE_SIZE Eegenschaft déi an der HTML form uginn ass", +"The uploaded file was only partially uploaded" => "Déi ropgelueden Datei ass nëmmen hallef ropgelueden ginn", +"No file was uploaded" => "Et ass keng Datei ropgelueden ginn", +"Missing a temporary folder" => "Et feelt en temporären Dossier", +"Files" => "Dateien", +"Maximum upload size" => "Maximum Upload Gréisst ", +"Upload" => "Eroplueden", +"Nothing in here. Upload something!" => "Hei ass näischt. Lued eppes rop!", +"Name" => "Numm", +"Download" => "Eroflueden", +"Size" => "Gréisst", +"Modified" => "Geännert", +"Delete" => "Läschen", +"Upload too large" => "Upload ze grouss", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Déi Dateien déi Dir probéiert erop ze lueden sinn méi grouss wei déi Maximal Gréisst déi op dësem Server erlaabt ass." +); diff --git a/apps/files/l10n/lt_LT.php b/apps/files/l10n/lt_LT.php new file mode 100644 index 00000000000..1bec35e0f8c --- /dev/null +++ b/apps/files/l10n/lt_LT.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Klaidų nėra, failas įkeltas sėkmingai", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Įkeliamo failo dydis viršija upload_max_filesize parametrą php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Įkeliamo failo dydis viršija MAX_FILE_SIZE parametrą, kuris yra nustatytas HTML formoje", +"The uploaded file was only partially uploaded" => "Failas buvo įkeltas tik dalinai", +"No file was uploaded" => "Nebuvo įkeltas nė vienas failas", +"Missing a temporary folder" => "Nėra laikinojo katalogo", +"Files" => "Failai", +"Maximum upload size" => "Maksimalus failo dydis", +"Upload" => "Įkelti", +"Nothing in here. Upload something!" => "Čia tuščia. Įkelkite ką nors!", +"Name" => "Pavadinimas", +"Download" => "Atsisiųsti", +"Size" => "Dydis", +"Modified" => "Pakeista", +"Delete" => "Ištrinti", +"Upload too large" => "Įkėlimui failas per didelis", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Bandomų įkelti failų dydis viršija maksimalų leidžiamą šiame serveryje" +); diff --git a/apps/files/l10n/ms_MY.php b/apps/files/l10n/ms_MY.php new file mode 100644 index 00000000000..038ffd521a0 --- /dev/null +++ b/apps/files/l10n/ms_MY.php @@ -0,0 +1,13 @@ +<?php $TRANSLATIONS = array( +"Files" => "fail", +"Maximum upload size" => "Saiz maksimum muat naik", +"Upload" => "Muat naik", +"Nothing in here. Upload something!" => "Tiada apa-apa di sini. Muat naik sesuatu!", +"Name" => "Nama ", +"Download" => "Muat turun", +"Size" => "Saiz", +"Modified" => "Dimodifikasi", +"Delete" => "Padam", +"Upload too large" => "Muat naik terlalu besar", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fail yang cuba dimuat naik melebihi saiz maksimum fail upload server" +); diff --git a/apps/files/l10n/nb_NO.php b/apps/files/l10n/nb_NO.php new file mode 100644 index 00000000000..c4ef4989a58 --- /dev/null +++ b/apps/files/l10n/nb_NO.php @@ -0,0 +1,13 @@ +<?php $TRANSLATIONS = array( +"Files" => "Filer", +"Maximum upload size" => "Maksimum opplastingsstørrelse", +"Upload" => "Last opp", +"Nothing in here. Upload something!" => "Ingenting her. Last opp noe!", +"Name" => "Navn", +"Download" => "Last ned", +"Size" => "Størrelse", +"Modified" => "Endret", +"Delete" => "Slett", +"Upload too large" => "Opplasting for stor", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er for store for å laste opp til denne serveren." +); diff --git a/apps/files/l10n/nl.php b/apps/files/l10n/nl.php new file mode 100644 index 00000000000..36b4695a476 --- /dev/null +++ b/apps/files/l10n/nl.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Geen fout opgetreden, bestand successvol geupload.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Het geüploade bestand is groter dan de upload_max_filesize instelling in php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Het geüploade bestand is groter dan de MAX_FILE_SIZE richtlijn die is opgegeven in de HTML-formulier", +"The uploaded file was only partially uploaded" => "Het bestand is slechts gedeeltelijk geupload", +"No file was uploaded" => "Geen bestand geüpload", +"Missing a temporary folder" => "Een tijdelijke map mist", +"Files" => "Bestanden", +"Maximum upload size" => "Maximale bestandsgrootte voor uploads", +"New" => "Nieuw", +"Text file" => "Tekstbestand", +"Folder" => "Map", +"From the web" => "Van het internet", +"Upload" => "Upload", +"Nothing in here. Upload something!" => "Er bevindt zich hier niets. Upload een bestand!", +"Name" => "Naam", +"Download" => "Download", +"Size" => "Bestandsgrootte", +"Modified" => "Laatst aangepast", +"Delete" => "Verwijder", +"Upload too large" => "Bestanden te groot", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "De bestanden die u probeert te uploaden zijn groter dan de maximaal toegestane bestandsgrootte voor deze server." +); diff --git a/apps/files/l10n/nn_NO.php b/apps/files/l10n/nn_NO.php new file mode 100644 index 00000000000..34f2f6be960 --- /dev/null +++ b/apps/files/l10n/nn_NO.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Ingen feil, fila vart lasta opp", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den opplasta fila er større enn variabelen upload_max_filesize i php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den opplasta fila er større enn variabelen MAX_FILE_SIZE i HTML-skjemaet", +"The uploaded file was only partially uploaded" => "Fila vart berre delvis lasta opp", +"No file was uploaded" => "Ingen filer vart lasta opp", +"Missing a temporary folder" => "Manglar ei mellombels mappe", +"Files" => "Filer", +"Maximum upload size" => "Maksimal opplastingsstorleik", +"Upload" => "Last opp", +"Nothing in here. Upload something!" => "Ingenting her. Last noko opp!", +"Name" => "Namn", +"Download" => "Last ned", +"Size" => "Storleik", +"Modified" => "Endra", +"Delete" => "Slett", +"Upload too large" => "For stor opplasting", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filene du prøver å laste opp er større enn maksgrensa til denne tenaren." +); diff --git a/apps/files/l10n/pl.php b/apps/files/l10n/pl.php new file mode 100644 index 00000000000..d110f52ab1d --- /dev/null +++ b/apps/files/l10n/pl.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Brak błędu, plik przesłany z sukcesem", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Przesłany plik przekracza ustawienie upload_max_filesize w pliku php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Przesłany plik przekracza MAX_FILE_SIZE ustawienia, które zostało określono w formularzu HTML", +"The uploaded file was only partially uploaded" => "Plik został przesłany tylko częściowo.", +"No file was uploaded" => "Żaden plik nie został przesłany", +"Missing a temporary folder" => "Brakuje folderu tymczasowego", +"Files" => "Pliki", +"Maximum upload size" => "Maksymalna wielkość przesyłanego pliku", +"New" => "Nowy", +"Text file" => "Plik tekstowy", +"Folder" => "Katalog", +"From the web" => "Z Internetu", +"Upload" => "Prześlij", +"Nothing in here. Upload something!" => "Nic tu nie ma. Prześlij jakieś pliki!", +"Name" => "Nazwa", +"Download" => "Ściąganie", +"Size" => "Wielkość", +"Modified" => "Zmodyfikowano", +"Delete" => "Skasuj", +"Upload too large" => "Przesyłany plik jest za duży", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Pliki które próbujesz przesłać, przekraczają maksymalną, dopuszczalną wielkość." +); diff --git a/apps/files/l10n/pt_BR.php b/apps/files/l10n/pt_BR.php new file mode 100644 index 00000000000..57b1af2ae6d --- /dev/null +++ b/apps/files/l10n/pt_BR.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Não houve nenhum erro, o arquivo foi transferido com sucesso", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "O tamanho do arquivo excede o limed especifiicado em upload_max_filesize no php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "O arquivo carregado excede o MAX_FILE_SIZE que foi especificado no formulário HTML", +"The uploaded file was only partially uploaded" => "O arquivo foi transferido parcialmente", +"No file was uploaded" => "Nenhum arquivo foi transferido", +"Missing a temporary folder" => "Pasta temporária não encontrada", +"Files" => "Arquivos", +"Maximum upload size" => "Tamanho máximo para carregar", +"Upload" => "Carregar", +"Nothing in here. Upload something!" => "Nada aqui.Carregar alguma coisa!", +"Name" => "Nome", +"Download" => "Baixar", +"Size" => "Tamanho", +"Modified" => "Modificado", +"Delete" => "Excluir", +"Upload too large" => "Arquivo muito grande", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Os arquivos que você está tentando carregar excedeu o tamanho máximo para arquivos no servidor." +); diff --git a/apps/files/l10n/ro.php b/apps/files/l10n/ro.php new file mode 100644 index 00000000000..9d8d6e2d5df --- /dev/null +++ b/apps/files/l10n/ro.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Nu am întâmpinat nici eroare, fișierul a fost încărcat cu success", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Fișierul are o dimensiune mai mare decât cea specificată în variabila upload_max_filesize din php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Fișierul are o dimensiune mai mare decât variabile MAX_FILE_SIZE specificată în formularul HTML", +"The uploaded file was only partially uploaded" => "Fișierul a fost încărcat doar parțial", +"No file was uploaded" => "Nu a fost încărcat nici un fișier", +"Missing a temporary folder" => "Lipsă folder temporar", +"Files" => "Fișiere", +"Maximum upload size" => "Dimensiunea maximă", +"New" => "Nou", +"Text file" => "Fișier text", +"Folder" => "Dosar", +"From the web" => "De pe internet", +"Upload" => "Încarcă", +"Nothing in here. Upload something!" => "Nici un fișier, încarcă ceva!", +"Name" => "Nume", +"Download" => "Descarcă", +"Size" => "Dimensiune", +"Modified" => "Modificat", +"Delete" => "Șterge", +"Upload too large" => "Fișierul este prea mare", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "A fost depășită limita maximă pentru încărcare." +); diff --git a/apps/files/l10n/ru.php b/apps/files/l10n/ru.php new file mode 100644 index 00000000000..88a6d8ee19c --- /dev/null +++ b/apps/files/l10n/ru.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Файл успешно загружен", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Файл превышает допустимые размеры (описаны как upload_max_filesize в php.ini)", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Файл превышает размер MAX_FILE_SIZE, указаный в HTML-форме", +"The uploaded file was only partially uploaded" => "Файл был частично загружен", +"No file was uploaded" => "Файл не был загружен", +"Missing a temporary folder" => "Невозможно найти временную директорию", +"Files" => "Файлы", +"Maximum upload size" => "Максимальный размер файла", +"New" => "Новый", +"Text file" => "Текстовый файл", +"Folder" => "Папка", +"From the web" => "Из интернета", +"Upload" => "Закачать", +"Nothing in here. Upload something!" => "Здесь ничего нет. Закачайте что-нибудь!", +"Name" => "Название", +"Download" => "Скачать", +"Size" => "Размер", +"Modified" => "Изменен", +"Delete" => "Удалить", +"Upload too large" => "Файл слишком большой", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Файлы, которые Вы пытаетесь закачать, превышают лимит для файлов на этом сервере." +); diff --git a/apps/files/l10n/sk_SK.php b/apps/files/l10n/sk_SK.php new file mode 100644 index 00000000000..0d91ae35a51 --- /dev/null +++ b/apps/files/l10n/sk_SK.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Nenastala žiadna chyba, súbor bol úspešne nahraný", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Nahraný súbor presiahol direktívu upload_max_filesize v php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Nahrávaný súbor presiahol MAX_FILE_SIZE direktívu, ktorá bola špecifikovaná v HTML formulári", +"The uploaded file was only partially uploaded" => "Nahrávaný súbor bol iba čiastočne nahraný", +"No file was uploaded" => "Žiaden súbor nebol nahraný", +"Missing a temporary folder" => "Chýbajúci dočasný priečinok", +"Files" => "Súbory", +"Maximum upload size" => "Maximálna veľkosť nahratia", +"New" => "Nový", +"Text file" => "Textový súbor", +"Folder" => "Priečinok", +"From the web" => "Z webu", +"Upload" => "Nahrať", +"Nothing in here. Upload something!" => "Nič tu nie je. Nahrakte niečo!", +"Name" => "Meno", +"Download" => "Stiahnuť", +"Size" => "Veľkosť", +"Modified" => "Upravené", +"Delete" => "Odstrániť", +"Upload too large" => "Nahrávanie príliš veľké", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Súbory ktoré sa snažíte nahrať presahujú maximálnu veľkosť pre nahratie súborov na tento server." +); diff --git a/apps/files/l10n/sl.php b/apps/files/l10n/sl.php new file mode 100644 index 00000000000..5a09e0fe20b --- /dev/null +++ b/apps/files/l10n/sl.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "datoteka je bila naložena uspešno.", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Velikost željene naložene datoteke je prevelika. (upload_max_filesize - php.ini) Kontaktirajte Administratorja.", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Velikost željene naložene datoteke je prevelika. (MAX_FILE_SIZE - html formi) Kontaktirajte Administratorja.", +"The uploaded file was only partially uploaded" => "Datoteka je bila le delno naložena.", +"No file was uploaded" => "Naloženih ni bilo nič Datotek.", +"Missing a temporary folder" => "Ni potrebne začasne datoteke. (temporary folder)", +"Files" => "Datoteke", +"Maximum upload size" => "Maksimalna velikost", +"Upload" => "Naloži gor", +"Nothing in here. Upload something!" => "Naloženih še ni bilo nič datotek.", +"Name" => "Ime", +"Download" => "Naloži dol", +"Size" => "Velikost", +"Modified" => "Urejeno", +"Delete" => "Izbriši", +"Upload too large" => "Nalaganje ni mogoče, ker je preveliko.", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Datoteke ki jih želiš naložiti presegajo maksimalno velikost na tem strežniku. Kontaktirajte Administratorja." +); diff --git a/apps/files/l10n/sr.php b/apps/files/l10n/sr.php new file mode 100644 index 00000000000..7e2ac3b1366 --- /dev/null +++ b/apps/files/l10n/sr.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Нема грешке, фајл је успешно послат", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Послати фајл превазилази директиву upload_max_filesize из ", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Послати фајл превазилази директиву MAX_FILE_SIZE која је наведена у ХТМЛ форми", +"The uploaded file was only partially uploaded" => "Послати фајл је само делимично отпремљен!", +"No file was uploaded" => "Ниједан фајл није послат", +"Missing a temporary folder" => "Недостаје привремена фасцикла", +"Files" => "Фајлови", +"Maximum upload size" => "Максимална величина пошиљке", +"New" => "Нови", +"Text file" => "текстуални фајл", +"Folder" => "фасцикла", +"From the web" => "са веба", +"Upload" => "Пошаљи", +"Nothing in here. Upload something!" => "Овде нема ничег. Пошаљите нешто!", +"Name" => "Име", +"Download" => "Преузми", +"Size" => "Величина", +"Modified" => "Задња измена", +"Delete" => "Обриши", +"Upload too large" => "Пошиљка је превелика", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Фајлови које желите да пошаљете превазилазе ограничење максималне величине пошиљке на овом серверу." +); diff --git a/apps/files/l10n/sr@latin.php b/apps/files/l10n/sr@latin.php new file mode 100644 index 00000000000..1b5addbc571 --- /dev/null +++ b/apps/files/l10n/sr@latin.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Nema greške, fajl je uspešno poslat", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Poslati fajl prevazilazi direktivu upload_max_filesize iz ", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Poslati fajl prevazilazi direktivu MAX_FILE_SIZE koja je navedena u HTML formi", +"The uploaded file was only partially uploaded" => "Poslati fajl je samo delimično otpremljen!", +"No file was uploaded" => "Nijedan fajl nije poslat", +"Missing a temporary folder" => "Nedostaje privremena fascikla", +"Files" => "Fajlovi", +"Maximum upload size" => "Maksimalna veličina pošiljke", +"Upload" => "Pošalji", +"Nothing in here. Upload something!" => "Ovde nema ničeg. Pošaljite nešto!", +"Name" => "Ime", +"Download" => "Preuzmi", +"Size" => "Veličina", +"Modified" => "Zadnja izmena", +"Delete" => "Obriši", +"Upload too large" => "Pošiljka je prevelika", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Fajlovi koje želite da pošaljete prevazilaze ograničenje maksimalne veličine pošiljke na ovom serveru." +); diff --git a/apps/files/l10n/sv.php b/apps/files/l10n/sv.php new file mode 100644 index 00000000000..dfd32f3f5c2 --- /dev/null +++ b/apps/files/l10n/sv.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Inga fel uppstod. Filen laddades upp utan problem", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Den uppladdade filen överskrider upload_max_filesize direktivet i php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Den uppladdade filen överstiger MAX_FILE_SIZE direktivet som anges i HTML-formulär", +"The uploaded file was only partially uploaded" => "Den uppladdade filen var endast delvist uppladdad", +"No file was uploaded" => "Ingen fil blev uppladdad", +"Missing a temporary folder" => "Saknar en tillfällig mapp", +"Files" => "Filer", +"Maximum upload size" => "Maximal storlek att lägga upp", +"Upload" => "Ladda upp", +"Nothing in here. Upload something!" => "Ingenting här. Ladda upp något!", +"Name" => "Namn", +"Download" => "Ladda ned", +"Size" => "Storlek", +"Modified" => "Ändrad", +"Delete" => "Ta bort", +"Upload too large" => "För stor uppladdning", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Filerna du försöker ladda upp överstiger den maximala storleken för filöverföringar på servern." +); diff --git a/apps/files/l10n/th_TH.php b/apps/files/l10n/th_TH.php new file mode 100644 index 00000000000..e7e2fb94b1e --- /dev/null +++ b/apps/files/l10n/th_TH.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "ไม่มีข้อผิดพลาดใดๆ ไฟล์ถูกอัพโหลดเรียบร้อยแล้ว", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "ไฟล์ที่อัพโหลดมีขนาดเกินคำสั่ง upload_max_filesize ที่ระบุเอาไว้ในไฟล์ php.ini", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "ไฟล์ที่อัพโหลดมีขนาดเกินคำสั่ง MAX_FILE_SIZE ที่ระบุเอาไว้ในรูปแบบคำสั่งในภาษา HTML", +"The uploaded file was only partially uploaded" => "ไฟล์ที่อัพโหลดยังไม่ได้ถูกอัพโหลดอย่างสมบูรณ์", +"No file was uploaded" => "ยังไม่มีไฟล์ที่ถูกอัพโหลด", +"Missing a temporary folder" => "แฟ้มเอกสารชั่วคราวเกิดการสูญหาย", +"Files" => "ไฟล์", +"Maximum upload size" => "ขนาดไฟล์สูงสุดที่อัพโหลดได้", +"New" => "อัพโหลดไฟล์ใหม่", +"Text file" => "ไฟล์ข้อความ", +"Folder" => "แฟ้มเอกสาร", +"From the web" => "จากเวป", +"Upload" => "อัพโหลด", +"Nothing in here. Upload something!" => "ยังไม่มีไฟล์ใดๆอยู่ที่นี่ กรุณาอัพโหลดไฟล์!", +"Name" => "ชื่อ", +"Download" => "ดาวน์โหลด", +"Size" => "ขนาด", +"Modified" => "ปรับปรุงล่าสุด", +"Delete" => "ลบ", +"Upload too large" => "ไฟล์ที่อัพโหลดมีขนาดใหญ่เกินไป", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "ไฟล์ที่คุณพยายามที่จะอัพโหลดมีขนาดเกินกว่าขนาดสูงสุดที่กำหนดไว้ให้อัพโหลดได้สำหรับเซิร์ฟเวอร์นี้" +); diff --git a/apps/files/l10n/tr.php b/apps/files/l10n/tr.php new file mode 100644 index 00000000000..5fc46056175 --- /dev/null +++ b/apps/files/l10n/tr.php @@ -0,0 +1,19 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "Bir hata yok, dosya başarıyla yüklendi", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "Yüklenen dosya php.ini de belirtilen upload_max_filesize sınırını aşıyor", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "Yüklenen dosya HTML formundaki MAX_FILE_SIZE sınırını aşıyor", +"The uploaded file was only partially uploaded" => "Yüklenen dosyanın sadece bir kısmı yüklendi", +"No file was uploaded" => "Hiç dosya yüklenmedi", +"Missing a temporary folder" => "Geçici bir klasör eksik", +"Files" => "Dosyalar", +"Maximum upload size" => "Maksimum yükleme boyutu", +"Upload" => "Yükle", +"Nothing in here. Upload something!" => "Burada hiçbir şey yok. Birşeyler yükleyin!", +"Name" => "Ad", +"Download" => "İndir", +"Size" => "Boyut", +"Modified" => "Değiştirilme", +"Delete" => "Sil", +"Upload too large" => "Yüklemeniz çok büyük", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "Yüklemeye çalıştığınız dosyalar bu sunucudaki maksimum yükleme boyutunu aşıyor." +); diff --git a/apps/files/l10n/xgettextfiles b/apps/files/l10n/xgettextfiles new file mode 100644 index 00000000000..9e22680e455 --- /dev/null +++ b/apps/files/l10n/xgettextfiles @@ -0,0 +1,5 @@ +../appinfo/app.php +../templates/index.php +../templates/part.list.php +../js/filelist.js +../js/files.js diff --git a/apps/files/l10n/zh_CN.php b/apps/files/l10n/zh_CN.php new file mode 100644 index 00000000000..ab23a55d29e --- /dev/null +++ b/apps/files/l10n/zh_CN.php @@ -0,0 +1,23 @@ +<?php $TRANSLATIONS = array( +"There is no error, the file uploaded with success" => "没有发生错误,文件上传成功。", +"The uploaded file exceeds the upload_max_filesize directive in php.ini" => "上传的文件大小超过了php.ini 中指定的upload_max_filesize", +"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" => "上传的文件超过了在HTML 表单中指定的MAX_FILE_SIZE", +"The uploaded file was only partially uploaded" => "只上传了文件的一部分", +"No file was uploaded" => "文件没有上传", +"Missing a temporary folder" => "缺少临时目录", +"Files" => "文件", +"Maximum upload size" => "最大上传大小", +"New" => "新建", +"Text file" => "文本文件", +"Folder" => "文件夹", +"From the web" => "来自网络", +"Upload" => "上传", +"Nothing in here. Upload something!" => "这里还什么都没有。上传些东西吧!", +"Name" => "名称", +"Download" => "下载", +"Size" => "大小", +"Modified" => "修改日期", +"Delete" => "删除", +"Upload too large" => "上传文件过大", +"The files you are trying to upload exceed the maximum size for file uploads on this server." => "您正尝试上传的文件超过了此服务器可以上传的最大大小" +); diff --git a/apps/files/settings.php b/apps/files/settings.php new file mode 100644 index 00000000000..c47eb130095 --- /dev/null +++ b/apps/files/settings.php @@ -0,0 +1,60 @@ +<?php + +/** +* ownCloud - ajax frontend +* +* @author Robin Appelman +* @copyright 2010 Robin Appelman icewind1991@gmail.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/>. +* +*/ + + +// Init owncloud +require_once('../lib/base.php'); + +// Check if we are a user +OC_Util::checkLoggedIn(); + +// Load the files we need +OC_Util::addStyle( "files", "files" ); +OC_Util::addScript( "files", "files" ); + +// Load the files +$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : ''; + +$files = array(); +foreach( OC_Files::getdirectorycontent( $dir ) as $i ){ + $i["date"] = date( $CONFIG_DATEFORMAT, $i["mtime"] ); + $files[] = $i; +} + +// Make breadcrumb +$breadcrumb = array(); +$pathtohere = "/"; +foreach( explode( "/", $dir ) as $i ){ + if( $i != "" ){ + $pathtohere .= "$i/"; + $breadcrumb[] = array( "dir" => $pathtohere, "name" => $i ); + } +} + +// return template +$tmpl = new OC_Template( "files", "index", "user" ); +$tmpl->assign( 'files', $files ); +$tmpl->assign( "breadcrumb", $breadcrumb ); +$tmpl->printPage(); + +?> diff --git a/apps/files/templates/admin.php b/apps/files/templates/admin.php new file mode 100644 index 00000000000..9bcc40e9361 --- /dev/null +++ b/apps/files/templates/admin.php @@ -0,0 +1,15 @@ +<?php OC_Util::addScript('files','admin'); ?> + +<form name="filesForm" action='#' method='post'> + <fieldset class="personalblock"> + <legend><strong><?php echo $l->t('File handling');?></strong></legend> + <?php if($_['htaccessWorking']):?> + <label for="maxUploadSize"><?php echo $l->t( 'Maximum upload size' ); ?> </label><input name='maxUploadSize' id="maxUploadSize" value='<?php echo $_['uploadMaxFilesize'] ?>'/>(<?php echo $l->t('max. possible: '); echo $_['maxPossibleUploadSize'] ?>)<br/> + <?php endif;?> + <input type="checkbox" name="allowZipDownload" id="allowZipDownload" value="1" title="<?php echo $l->t( 'Needed for multi-file and folder downloads.' ); ?>"<?php if ($_['allowZipDownload']) echo ' checked="checked"'; ?> /> <label for="allowZipDownload"><?php echo $l->t( 'Enable ZIP-download' ); ?></label> <br/> + <fieldset class="personalblock"> + <label for="maxZipInputSize"><?php echo $l->t( 'Maximum input size for ZIP files:' ); ?> </label><input name="maxZipInputSize" id="maxZipInputSize" value='<?php echo $_['maxZipInputSize'] ?>' title="<?php echo $l->t( '0 is unlimited' ); ?>"<?php if (!$_['allowZipDownload']) echo ' disabled="disabled"'; ?> /><br/> + </fieldset> + <input type="submit" name="submitFilesAdminSettings" id="submitFilesAdminSettings" value="Save"/> + </fieldset> +</form> diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php new file mode 100644 index 00000000000..b21cf0aeb02 --- /dev/null +++ b/apps/files/templates/index.php @@ -0,0 +1,74 @@ +<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}table td{position:static !important;}</style><![endif]--> +<div id="controls"> + <?php echo($_['breadcrumb']); ?> + <?php if (!isset($_['readonly']) || !$_['readonly']):?> + <div class="actions <?php if (isset($_['files']) and ! $_['readonly'] and count($_['files'])==0):?>emptyfolder<?php endif; ?>"> + <div id='new' class='button'> + <a><?php echo $l->t('New');?></a> + <ul class="popup popupTop"> + <li style="background-image:url('<?php echo mimetype_icon('text/plain') ?>')" data-type='file'><p><?php echo $l->t('Text file');?></p></li> + <li style="background-image:url('<?php echo mimetype_icon('dir') ?>')" data-type='folder'><p><?php echo $l->t('Folder');?></p></li> + <li style="background-image:url('<?php echo image_path('core','actions/public.png') ?>')" data-type='web'><p><?php echo $l->t('From url');?></p></li> + </ul> + </div> + <div class="file_upload_wrapper svg"> + <form data-upload-id='1' class="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target_1"> + <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload"> + <input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)"> + <input type="hidden" name="dir" value="<?php echo htmlentities($_['dir']) ?>" id="dir"> + <button class="file_upload_filename"> <img class='svg action' alt="Upload" src="<?php echo image_path("core", "actions/upload.svg"); ?>" /></button> + <input class="file_upload_start" type="file" name='files[]'/> + <a href="#" class="file_upload_button_wrapper" onclick="return false;" title="<?php echo $l->t('Upload'); echo ' max. '.$_['uploadMaxHumanFilesize'] ?>"></a> + <iframe name="file_upload_target_1" class='file_upload_target' src=""></iframe> + </form> + </div> + </div> + <div id="file_action_panel"></div> + <?php else:?> + <input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir"> + <?php endif;?> +</div> +<div id='notification'></div> + +<?php if (isset($_['files']) and ! $_['readonly'] and count($_['files'])==0):?> + <div id="emptyfolder"><?php echo $l->t('Nothing in here. Upload something!')?></div> +<?php endif; ?> + +<table> + <thead> + <tr> + <th id='headerName'> + <?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" id="select_all" /><?php } ?> + <span class='name'><?php echo $l->t( 'Name' ); ?></span> + <span class='selectedActions'> + <a href="" class="share"><img class='svg' alt="Share" src="<?php echo image_path("core", "actions/share.svg"); ?>" /> <?php echo $l->t('Share')?></a> + <?php if($_['allowZipDownload']) : ?> + <a href="" class="download"><img class='svg' alt="Download" src="<?php echo image_path("core", "actions/download.svg"); ?>" /> <?php echo $l->t('Download')?></a> + <?php endif; ?> + </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 all')?> <img class="svg" alt="<?php echo $l->t('Delete')?>" src="<?php echo image_path("core", "actions/delete.svg"); ?>" /></a></span></th> + </tr> + </thead> + <tbody id="fileList" data-readonly="<?php echo $_['readonly'];?>"> + <?php echo($_['fileList']); ?> + </tbody> +</table> +<div id="editor"></div> +<div id="uploadsize-message" title="<?php echo $l->t('Upload too large')?>"> + <p> + <?php echo $l->t('The files you are trying to upload exceed the maximum size for file uploads on this server.');?> + </p> +</div> +<div id="scanning-message"> + <h3> + <?php echo $l->t('Files are being scanned, please wait.');?> <span id='scan-count'></span> + </h3> + <p> + <?php echo $l->t('Current scanning');?> <span id='scan-current'></span> + </p> +</div> + +<!-- config hints for javascript --> +<input type="hidden" name="allowZipDownload" id="allowZipDownload" value="<?php echo $_['allowZipDownload']; ?>" /> diff --git a/apps/files/templates/part.breadcrumb.php b/apps/files/templates/part.breadcrumb.php new file mode 100644 index 00000000000..16da6bb97b4 --- /dev/null +++ b/apps/files/templates/part.breadcrumb.php @@ -0,0 +1,6 @@ + <?php for($i=0; $i<count($_["breadcrumb"]); $i++): + $crumb = $_["breadcrumb"][$i]; ?> + <div class="crumb <?php if($i == count($_["breadcrumb"])-1) echo 'last';?> svg" data-dir='<?php echo $crumb["dir"];?>' style='background-image:url("<?php echo image_path('core','breadcrumb.png');?>")'> + <a href="<?php echo $_['baseURL'].$crumb["dir"]; ?>"><?php echo htmlentities($crumb["name"]); ?></a> + </div> + <?php endfor;?>
\ No newline at end of file diff --git a/apps/files/templates/part.list.php b/apps/files/templates/part.list.php new file mode 100644 index 00000000000..5a5941fc7ae --- /dev/null +++ b/apps/files/templates/part.list.php @@ -0,0 +1,29 @@ + <?php foreach($_['files'] as $file): + $write = ($file['writable']) ? 'true' : 'false'; + $simple_file_size = simple_file_size($file['size']); + $simple_size_color = intval(200-$file['size']/(1024*1024)*2); // the bigger the file, the darker the shade of grey; megabytes*2 + if($simple_size_color<0) $simple_size_color = 0; + $relative_modified_date = relative_modified_date($file['mtime']); + $relative_date_color = round((time()-$file['mtime'])/60/60/24*14); // the older the file, the brighter the shade of grey; days*14 + if($relative_date_color>200) $relative_date_color = 200; + $name = str_replace('+','%20',urlencode($file['name'])); + $name = str_replace('%2F','/', $name); + $directory = str_replace('+','%20',urlencode($file['directory'])); + $directory = str_replace('%2F','/', $directory); ?> + <tr data-file="<?php echo $name;?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mimetype']?>" data-size='<?php echo $file['size'];?>' data-write='<?php echo $write;?>'> + <td class="filename svg" style="background-image:url(<?php if($file['type'] == 'dir') echo mimetype_icon('dir'); else echo mimetype_icon($file['mimetype']); ?>)"> + <?php if(!isset($_['readonly']) || !$_['readonly']) { ?><input type="checkbox" /><?php } ?> + <a class="name" href="<?php if($file['type'] == 'dir') echo $_['baseURL'].$directory.'/'.$name; else echo $_['downloadURL'].$directory.'/'.$name; ?>" title=""> + <span class="nametext"> + <?php if($file['type'] == 'dir'):?> + <?php echo htmlspecialchars($file['name']);?> + <?php else:?> + <?php echo htmlspecialchars($file['basename']);?><span class='extension'><?php echo $file['extension'];?></span> + <?php endif;?> + </span> + </a> + </td> + <td class="filesize" title="<?php echo human_file_size($file['size']); ?>" style="color:rgb(<?php echo $simple_size_color.','.$simple_size_color.','.$simple_size_color ?>)"><?php echo $simple_file_size; ?></td> + <td class="date"><span class="modified" title="<?php echo $file['date']; ?>" style="color:rgb(<?php echo $relative_date_color.','.$relative_date_color.','.$relative_date_color ?>)"><?php echo $relative_modified_date; ?></span></td> + </tr> + <?php endforeach; ?> diff --git a/apps/files/webdav.php b/apps/files/webdav.php new file mode 100644 index 00000000000..25e33024470 --- /dev/null +++ b/apps/files/webdav.php @@ -0,0 +1,51 @@ +<?php + +/** + * ownCloud + * + * @author Frank Karlitschek + * @author Jakob Sack + * @copyright 2010 Frank Karlitschek karlitschek@kde.org + * @copyright 2011 Jakob Sack kde@jakobsack.de + * + * 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/>. + * + */ + +// Do not load FS ... +$RUNTIME_NOSETUPFS = true; + +// only need filesystem apps +$RUNTIME_APPTYPES=array('filesystem','authentication'); + +require_once('../lib/base.php'); + +// Backends +$authBackend = new OC_Connector_Sabre_Auth(); +$lockBackend = new OC_Connector_Sabre_Locks(); + +// Create ownCloud Dir +$publicDir = new OC_Connector_Sabre_Directory(''); + +// Fire up server +$server = new Sabre_DAV_Server($publicDir); +$server->setBaseUri(OC::$WEBROOT.'/files/webdav.php'); + +// Load plugins +$server->addPlugin(new Sabre_DAV_Auth_Plugin($authBackend,'ownCloud')); +$server->addPlugin(new Sabre_DAV_Locks_Plugin($lockBackend)); +$server->addPlugin(new Sabre_DAV_Browser_Plugin(false)); // Show something in the Browser, but no upload + +// And off we go! +$server->exec(); |