diff options
-rw-r--r-- | apps/files/ajax/upload.php | 51 | ||||
-rw-r--r-- | apps/files/css/files.css | 7 | ||||
-rw-r--r-- | apps/files/js/file-upload.js | 9 | ||||
-rw-r--r-- | apps/files/templates/index.php | 1 | ||||
-rw-r--r-- | apps/files_trashbin/templates/index.php | 1 | ||||
-rw-r--r-- | lib/private/connector/sabre/exception/entitytoolarge.php | 22 | ||||
-rw-r--r-- | lib/private/connector/sabre/exception/unsupportedmediatype.php | 22 | ||||
-rw-r--r-- | lib/private/connector/sabre/file.php | 16 | ||||
-rw-r--r-- | lib/public/files/entitytoolargeexception.php | 11 | ||||
-rw-r--r-- | lib/public/files/invalidcontentexception.php | 11 | ||||
-rw-r--r-- | lib/public/files/invalidpathexception.php | 11 | ||||
-rw-r--r-- | settings/js/personal.js | 4 | ||||
-rw-r--r-- | settings/templates/personal.php | 4 |
13 files changed, 131 insertions, 39 deletions
diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 0920bf62109..45fb17de94a 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -110,30 +110,35 @@ if (strpos($dir, '..') === false) { || (isset($_POST['resolution']) && $_POST['resolution']==='replace') ) { // upload and overwrite file - if (is_uploaded_file($files['tmp_name'][$i]) and \OC\Files\Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) { - - // updated max file size after upload - $storageStats = \OCA\Files\Helper::buildFileStorageStatistics($dir); - - $meta = \OC\Files\Filesystem::getFileInfo($target); - if ($meta === false) { - $error = $l->t('Upload failed. Could not get file info.'); + try + { + if (is_uploaded_file($files['tmp_name'][$i]) and \OC\Files\Filesystem::fromTmpFile($files['tmp_name'][$i], $target)) { + + // updated max file size after upload + $storageStats = \OCA\Files\Helper::buildFileStorageStatistics($dir); + + $meta = \OC\Files\Filesystem::getFileInfo($target); + if ($meta === false) { + $error = $l->t('Upload failed. Could not get file info.'); + } else { + $result[] = array('status' => 'success', + 'mime' => $meta['mimetype'], + 'mtime' => $meta['mtime'], + 'size' => $meta['size'], + 'id' => $meta['fileid'], + 'name' => basename($target), + 'originalname' => $files['tmp_name'][$i], + 'uploadMaxFilesize' => $maxUploadFileSize, + 'maxHumanFilesize' => $maxHumanFileSize, + 'permissions' => $meta['permissions'], + ); + } + } else { - $result[] = array('status' => 'success', - 'mime' => $meta['mimetype'], - 'mtime' => $meta['mtime'], - 'size' => $meta['size'], - 'id' => $meta['fileid'], - 'name' => basename($target), - 'originalname' => $files['tmp_name'][$i], - 'uploadMaxFilesize' => $maxUploadFileSize, - 'maxHumanFilesize' => $maxHumanFileSize, - 'permissions' => $meta['permissions'], - ); + $error = $l->t('Upload failed. Could not find uploaded file'); } - - } else { - $error = $l->t('Upload failed. Could not find uploaded file'); + } catch(Exception $ex) { + $error = $ex->getMessage(); } } else { @@ -164,5 +169,5 @@ if ($error === false) { OCP\JSON::encodedPrint($result); exit(); } else { - OCP\JSON::error(array('data' => array_merge(array('message' => $error), $storageStats))); + OCP\JSON::error(array(array('data' => array_merge(array('message' => $error), $storageStats)))); } diff --git a/apps/files/css/files.css b/apps/files/css/files.css index a0a3ec26ce1..c4a231551b1 100644 --- a/apps/files/css/files.css +++ b/apps/files/css/files.css @@ -174,6 +174,9 @@ table td.filename .nametext { table td.filename .uploadtext { font-weight:normal; margin-left:.5em; } table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; } +.ie8 input[type="checkbox"]{ + padding: 0; +} /* File checkboxes */ #fileList tr td.filename>input[type="checkbox"]:first-child { @@ -249,9 +252,7 @@ table td.filename form { font-size:.85em; margin-left:3em; margin-right:3em; } #fileList a.action.delete { position: absolute; right: 0; - top: 0; - margin: 0; - padding: 15px 14px 19px !important; + padding: 9px 14px 19px !important; } a.action>img { max-height:16px; max-width:16px; vertical-align:text-bottom; } diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index f1ef485fc3d..c03e9037cec 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -345,7 +345,7 @@ $(document).ready(function() { } else if (result[0].status !== 'success') { //delete data.jqXHR; data.textStatus = 'servererror'; - data.errorThrown = result.data.message; // error message has been translated on server + data.errorThrown = result[0].data.message; // error message has been translated on server var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload'); fu._trigger('fail', e, data); } @@ -523,8 +523,10 @@ $(document).ready(function() { function(result){ if (result.status == 'success') { var date=new Date(); - FileList.addFile(name,0,date,false,hidden); - var tr=$('tr').filterAttr('data-file',name); + // TODO: ideally addFile should be able to receive + // all attributes and set them automatically, + // and also auto-load the preview + var tr = FileList.addFile(name,0,date,false,hidden); tr.attr('data-size',result.data.size); tr.attr('data-mime',result.data.mime); tr.attr('data-id', result.data.id); @@ -533,6 +535,7 @@ $(document).ready(function() { lazyLoadPreview(path, result.data.mime, function(previewpath){ tr.find('td.filename').attr('style','background-image:url('+previewpath+')'); }); + FileActions.display(tr.find('td.filename')); } else { OC.dialogs.alert(result.data.message, t('core', 'Error')); } diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php index ebdca097e74..32a59f1e1a6 100644 --- a/apps/files/templates/index.php +++ b/apps/files/templates/index.php @@ -1,4 +1,3 @@ -<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}table td{position:static !important;}</style><![endif]--> <div id="controls"> <?php print_unescaped($_['breadcrumb']); ?> <div class="actions creatable <?php if (!$_['isCreatable']):?>hidden<?php endif; ?> <?php if (isset($_['files']) and count($_['files'])==0):?>emptycontent<?php endif; ?>"> diff --git a/apps/files_trashbin/templates/index.php b/apps/files_trashbin/templates/index.php index 9b01a2589a5..15ba074e45e 100644 --- a/apps/files_trashbin/templates/index.php +++ b/apps/files_trashbin/templates/index.php @@ -1,4 +1,3 @@ -<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}table td{position:static !important;}</style><![endif]--> <div id="controls"> <?php print_unescaped($_['breadcrumb']); ?> <div id="file_action_panel"></div> diff --git a/lib/private/connector/sabre/exception/entitytoolarge.php b/lib/private/connector/sabre/exception/entitytoolarge.php new file mode 100644 index 00000000000..2bda51f2f3e --- /dev/null +++ b/lib/private/connector/sabre/exception/entitytoolarge.php @@ -0,0 +1,22 @@ +<?php + +/** + * Entity Too Large + * + * This exception is thrown whenever a user tries to upload a file which exceeds hard limitations + * + */ +class OC_Connector_Sabre_Exception_EntityTooLarge extends Sabre_DAV_Exception { + + /** + * Returns the HTTP status code for this exception + * + * @return int + */ + public function getHTTPCode() { + + return 413; + + } + +} diff --git a/lib/private/connector/sabre/exception/unsupportedmediatype.php b/lib/private/connector/sabre/exception/unsupportedmediatype.php new file mode 100644 index 00000000000..95d6a8cc651 --- /dev/null +++ b/lib/private/connector/sabre/exception/unsupportedmediatype.php @@ -0,0 +1,22 @@ +<?php + +/** + * Unsupported Media Type + * + * This exception is thrown whenever a user tries to upload a file which holds content which is not allowed + * + */ +class OC_Connector_Sabre_Exception_UnsupportedMediaType extends Sabre_DAV_Exception { + + /** + * Returns the HTTP status code for this exception + * + * @return int + */ + public function getHTTPCode() { + + return 415; + + } + +} diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php index 037dba7f37b..667f7407f75 100644 --- a/lib/private/connector/sabre/file.php +++ b/lib/private/connector/sabre/file.php @@ -98,7 +98,21 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D throw new Sabre_DAV_Exception(); } } catch (\OCP\Files\NotPermittedException $e) { - throw new Sabre_DAV_Exception_Forbidden(); + // a more general case - due to whatever reason the content could not be written + throw new Sabre_DAV_Exception_Forbidden($e->getMessage()); + + } catch (\OCP\Files\EntityTooLargeException $e) { + // the file is too big to be stored + throw new OC_Connector_Sabre_Exception_EntityTooLarge($e->getMessage()); + + } catch (\OCP\Files\InvalidContentException $e) { + // the file content is not permitted + throw new OC_Connector_Sabre_Exception_UnsupportedMediaType($e->getMessage()); + + } catch (\OCP\Files\InvalidPathException $e) { + // the path for the file was not valid + // TODO: find proper http status code for this case + throw new Sabre_DAV_Exception_Forbidden($e->getMessage()); } // rename to correct path diff --git a/lib/public/files/entitytoolargeexception.php b/lib/public/files/entitytoolargeexception.php new file mode 100644 index 00000000000..3dff41bca02 --- /dev/null +++ b/lib/public/files/entitytoolargeexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Thomas Müller <thomas.mueller@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class EntityTooLargeException extends \Exception {} diff --git a/lib/public/files/invalidcontentexception.php b/lib/public/files/invalidcontentexception.php new file mode 100644 index 00000000000..184ec4d06d6 --- /dev/null +++ b/lib/public/files/invalidcontentexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Thomas Müller <thomas.mueller@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class InvalidContentException extends \Exception {} diff --git a/lib/public/files/invalidpathexception.php b/lib/public/files/invalidpathexception.php new file mode 100644 index 00000000000..36090ae5b48 --- /dev/null +++ b/lib/public/files/invalidpathexception.php @@ -0,0 +1,11 @@ +<?php +/** + * Copyright (c) 2013 Thomas Müller <thomas.mueller@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace OCP\Files; + +class InvalidPathException extends \Exception {} diff --git a/settings/js/personal.js b/settings/js/personal.js index e3a53181199..cdf7d0e9631 100644 --- a/settings/js/personal.js +++ b/settings/js/personal.js @@ -171,10 +171,6 @@ $(document).ready(function(){ } }); - // Show only the not selectable optgroup - // Choosen only shows optgroup-labels if there are options in the optgroup - $(".languagedivider").hide(); - $("#languageinput").change( function(){ // Serialize the data var post = $( "#languageinput" ).serialize(); diff --git a/settings/templates/personal.php b/settings/templates/personal.php index d10413dac3d..1be7be578d3 100644 --- a/settings/templates/personal.php +++ b/settings/templates/personal.php @@ -113,9 +113,7 @@ if($_['passwordChangeSupported']) { <?php p($language['name']);?> </option> <?php endforeach;?> - <optgroup label="––––––––––"> - <option class="languagedivider">-</option> - </optgroup> + <optgroup label="––––––––––"></optgroup> <?php foreach($_['languages'] as $language):?> <option value="<?php p($language['code']);?>"> <?php p($language['name']);?> |