From 5fdde426eb416b470bc37c86a518c49767a55251 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Thu, 9 Jun 2016 12:05:02 +0200 Subject: Add fancy layout --- apps/files_sharing/js/files_drop.js | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 apps/files_sharing/js/files_drop.js (limited to 'apps/files_sharing/js/files_drop.js') diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js new file mode 100644 index 00000000000..ced26fda220 --- /dev/null +++ b/apps/files_sharing/js/files_drop.js @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2016 Lukas Reschke + * + * This file is licensed under the Affero General Public License version 3 + * or later. + * + * See the COPYING-README file. + * + */ + +(function ($) { + var Drop = { + initialize: function () { + $(document).bind('drop dragover', function (e) { + // Prevent the default browser drop action: + e.preventDefault(); + }); + $('#publicUploadDiv').fileupload({ + url: OC.linkTo('files', 'ajax/upload.php'), + dataType: 'json', + //maxFileSize: fileUploadContainer.data('maxupload'), + messages: { + maxFileSize: t('files_sharing', 'File is bigger than allowed.') + }, + dropZone: $('#publicUploadDiv'), + formData: { + dirToken: $('#sharingToken').val() + } + }); + + } + }; + + $(document).ready(function() { + if($('#uploadOnlyInterface').val() === "1") { + $('.avatardiv').avatar($('#sharingUserId').val(), 128, true); + } + + OCA.Files_Sharing_Drop = Drop; + OCA.Files_Sharing_Drop.initialize(); + }); + + +})(jQuery); + -- cgit v1.2.3 From 6e99b0f59d3b0278c45d42dcec01ff554a89d979 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Thu, 9 Jun 2016 17:45:16 +0200 Subject: Make uploading possible via select and cleanup CSS --- apps/files/ajax/upload.php | 23 +++++++++++++++ apps/files_sharing/css/public.css | 51 +++++++++++++++++++++++++-------- apps/files_sharing/js/files_drop.js | 25 ++++++++++------ apps/files_sharing/js/public.js | 10 +------ apps/files_sharing/templates/public.php | 14 ++++++--- 5 files changed, 90 insertions(+), 33 deletions(-) (limited to 'apps/files_sharing/js/files_drop.js') diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index 9cc9c279700..98066845734 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -161,6 +161,15 @@ if (\OC\Files\Filesystem::isValidPath($dir) === true) { $resolution = null; } + if(isset($_POST['dirToken'])) { + // If it is a read only share the resolution will always be autorename + $shareManager = \OC::$server->getShareManager(); + $share = $shareManager->getShareByToken((string)$_POST['dirToken']); + if (!($share->getPermissions() & \OCP\Constants::PERMISSION_READ)) { + $resolution = 'autorename'; + } + } + // target directory for when uploading folders $relativePath = ''; if(!empty($_POST['file_directory'])) { @@ -247,6 +256,20 @@ if (\OC\Files\Filesystem::isValidPath($dir) === true) { } if ($error === false) { + // Do not leak file information if it is a read-only share + if(isset($_POST['dirToken'])) { + $shareManager = \OC::$server->getShareManager(); + $share = $shareManager->getShareByToken((string)$_POST['dirToken']); + if (!($share->getPermissions() & \OCP\Constants::PERMISSION_READ)) { + $newResults = []; + foreach($result as $singleResult) { + $fileName = $singleResult['originalname']; + $newResults['filename'] = $fileName; + $newResults['mimetype'] = \OC::$server->getMimeTypeDetector()->detectPath($fileName); + } + $result = $newResults; + } + } OCP\JSON::encodedPrint($result); } else { OCP\JSON::error(array(array('data' => array_merge(array('message' => $error, 'code' => $errorCode), $storageStats)))); diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 18c8781a469..a644b850556 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -159,36 +159,63 @@ thead { cursor: pointer; } -#body-public #emptycontent h2 { + + +#public-upload .avatardiv { + margin: 0 auto; +} + +#public-upload #emptycontent h2 { margin: 10px 0 5px 0; } -#body-public #emptycontent h2+p { +#public-upload #emptycontent h2+p { margin-bottom: 30px; } -#body-public #emptycontent .icon-folder { +#public-upload #emptycontent .icon-folder { height: 16px; width: 16px; background-size: 16px; display: inline-block; vertical-align: text-top; margin-bottom: 0; + margin-right: 5px; opacity: 1; } -#body-public #emptycontent .button { - background-size: 32px; - height: 32px; - width: 32px; - background-position: 16px; +#public-upload #emptycontent .button { + background-size: 16px; + height: 16px; + width: 16px; + background-position: 16px; opacity: .7; font-size: 20px; margin: 20px; padding: 10px 20px; - padding-left: 64px; + padding-left: 42px; + font-weight: normal; } -#body-public .avatardiv { - margin: 0 auto; -} \ No newline at end of file +#public-upload #emptycontent ul { + width: 160px; + margin: 25px auto; + text-align: left; +} + +#public-upload #emptycontent li { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + padding: 7px 0; +} + +#public-upload #emptycontent li img { + vertical-align: text-bottom; + margin-right: 5px; +} + +#public-upload li span.icon-loading-small { + padding-left: 18px; + margin-right: 7px; +} diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index ced26fda220..3c1ccd63da5 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -15,24 +15,33 @@ // Prevent the default browser drop action: e.preventDefault(); }); - $('#publicUploadDiv').fileupload({ + $('#public-upload').fileupload({ url: OC.linkTo('files', 'ajax/upload.php'), dataType: 'json', - //maxFileSize: fileUploadContainer.data('maxupload'), - messages: { - maxFileSize: t('files_sharing', 'File is bigger than allowed.') - }, - dropZone: $('#publicUploadDiv'), + dropZone: $('#public-upload'), formData: { dirToken: $('#sharingToken').val() + }, + add: function(e, data) { + _.each(data['files'], function(file) { + $('#public-upload ul').append('
  • '+escapeHTML(file.name)+'
  • '); + }); + data.submit(); + }, + success: function (response) { + var mimeTypeUrl = OC.MimeType.getIconUrl(response['mimetype']); + $('#public-upload ul li[data-name="'+escapeHTML(response['filename'])+'"]').html(' '+escapeHTML(response['filename'])); } }); - + $('#public-upload .button.icon-upload').click(function(e) { + e.preventDefault(); + $('#public-upload #emptycontent input').focus().trigger('click'); + }); } }; $(document).ready(function() { - if($('#uploadOnlyInterface').val() === "1") { + if($('#upload-only-interface').val() === "1") { $('.avatardiv').avatar($('#sharingUserId').val(), 128, true); } diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index 7f780fd09e7..bf06b2cd55b 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -238,11 +238,6 @@ OCA.Sharing.PublicApp = { $(this).select(); }); - $(document).on('click', '.content-wrapper-upload', function (e) { - //e.preventDefault(); - $('#file_upload_start').focus().trigger('click'); - }); - $('.save-form').submit(function (event) { event.preventDefault(); @@ -307,9 +302,7 @@ OCA.Sharing.PublicApp = { $('#save-button-confirm') .removeClass("icon-loading-small") .addClass("icon-confirm"); - - } - else { + } else { $('#save-button-confirm') .removeClass("icon-confirm") .addClass("icon-loading-small"); @@ -319,7 +312,6 @@ OCA.Sharing.PublicApp = { toggleLoading(); var location = window.location.protocol + '//' + window.location.host + OC.webroot; - if(remote.substr(-1) !== '/') { remote += '/' }; diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 0989b35f3b1..f4c954c76d5 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -41,7 +41,9 @@ OCP\Util::addscript('files', 'keyboardshortcuts'); - + + + @@ -89,7 +91,7 @@ OCP\Util::addscript('files', 'keyboardshortcuts');
    > - +
    @@ -117,13 +119,17 @@ OCP\Util::addscript('files', 'keyboardshortcuts');
    - -
    + +

    t('Upload files to %s', [$_['shareOwner']])) ?>

    + + t('Select')) ?> +
      +
    -- cgit v1.2.3 From c49402d26640df2adfdf3201cfc9c4c1456b7a66 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Thu, 9 Jun 2016 21:44:54 +0200 Subject: Add some error handling --- apps/files_sharing/js/files_drop.js | 24 ++++++++++++++++++++---- apps/files_sharing/templates/public.php | 7 +++++++ 2 files changed, 27 insertions(+), 4 deletions(-) (limited to 'apps/files_sharing/js/files_drop.js') diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index 3c1ccd63da5..c9dafb0564f 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -23,14 +23,30 @@ dirToken: $('#sharingToken').val() }, add: function(e, data) { + var errors = []; + if(data.files[0]['size'] && data.files[0]['size'] > $('#maxFilesizeUpload').val()) { + errors.push('File is too big'); + } + _.each(data['files'], function(file) { - $('#public-upload ul').append('
  • '+escapeHTML(file.name)+'
  • '); + if(errors.length === 0) { + $('#public-upload ul').append('
  • '+escapeHTML(file.name)+'
  • '); + $('[data-toggle="tooltip"]').tooltip(); + data.submit(); + } else { + OC.Notification.showTemporary(OC.L10N.translate('files_sharing', 'Could not upload "{filename}"', {filename: file.name})); + $('#public-upload ul').append('
  • '+escapeHTML(file.name)+'
  • '); + $('[data-toggle="tooltip"]').tooltip(); + + } }); - data.submit(); }, success: function (response) { - var mimeTypeUrl = OC.MimeType.getIconUrl(response['mimetype']); - $('#public-upload ul li[data-name="'+escapeHTML(response['filename'])+'"]').html(' '+escapeHTML(response['filename'])); + if(response.status !== 'error') { + var mimeTypeUrl = OC.MimeType.getIconUrl(response['mimetype']); + $('#public-upload ul li[data-name="' + escapeHTML(response['filename']) + '"]').html(' ' + escapeHTML(response['filename'])); + $('[data-toggle="tooltip"]').tooltip(); + } } }); $('#public-upload .button.icon-upload').click(function(e) { diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index ef9e4bfa574..35adb240022 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -41,6 +41,13 @@ OCP\Util::addscript('files', 'keyboardshortcuts'); +getIniWrapper()->getBytes('upload_max_filesize'); +$post_max_size = OC::$server->getIniWrapper()->getBytes('post_max_size'); +$maxUploadFilesize = min($upload_max_filesize, $post_max_size); +?> + + -- cgit v1.2.3 From 54e2ac57130666add0ad5d3c583c6f29527b4ebc Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Fri, 10 Jun 2016 14:47:40 +0200 Subject: Add text about uploaded files --- apps/files_sharing/css/public.css | 2 +- apps/files_sharing/js/files_drop.js | 13 ++++++++++++- apps/files_sharing/templates/public.php | 4 +++- 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'apps/files_sharing/js/files_drop.js') diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 628fd45f242..c998501dad6 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -197,7 +197,7 @@ thead { #public-upload #emptycontent ul { width: 160px; - margin: 25px auto; + margin: 5px auto; text-align: left; } diff --git a/apps/files_sharing/js/files_drop.js b/apps/files_sharing/js/files_drop.js index c9dafb0564f..0a6a1c7567f 100644 --- a/apps/files_sharing/js/files_drop.js +++ b/apps/files_sharing/js/files_drop.js @@ -28,6 +28,8 @@ errors.push('File is too big'); } + $('#drop-upload-done-indicator').addClass('hidden'); + $('#drop-upload-progress-indicator').removeClass('hidden'); _.each(data['files'], function(file) { if(errors.length === 0) { $('#public-upload ul').append('
  • '+escapeHTML(file.name)+'
  • '); @@ -37,7 +39,6 @@ OC.Notification.showTemporary(OC.L10N.translate('files_sharing', 'Could not upload "{filename}"', {filename: file.name})); $('#public-upload ul').append('
  • '+escapeHTML(file.name)+'
  • '); $('[data-toggle="tooltip"]').tooltip(); - } }); }, @@ -47,6 +48,16 @@ $('#public-upload ul li[data-name="' + escapeHTML(response['filename']) + '"]').html(' ' + escapeHTML(response['filename'])); $('[data-toggle="tooltip"]').tooltip(); } + }, + progressall: function (e, data) { + var progress = parseInt(data.loaded / data.total * 100, 10); + if(progress === 100) { + $('#drop-upload-done-indicator').removeClass('hidden'); + $('#drop-upload-progress-indicator').addClass('hidden'); + } else { + $('#drop-upload-done-indicator').addClass('hidden'); + $('#drop-upload-progress-indicator').removeClass('hidden'); + } } }); $('#public-upload .button.icon-upload').click(function(e) { diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 35adb240022..c15001ad24b 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -135,7 +135,9 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);

    - t('Select')) ?> + t('Select or drop files')) ?> + +
    -- cgit v1.2.3