diff options
author | Morris Jobke <hey@morrisjobke.de> | 2016-09-08 09:13:59 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2016-09-08 18:44:27 +0200 |
commit | 6bb95de1c50208d6cbaf1242f86a2fdab09c2246 (patch) | |
tree | 47fa17b753a672e6d93c2186c517df2fd5b355b2 | |
parent | b3d3a95bf3e11a4689884f72f6d6021d4dcff97c (diff) | |
download | nextcloud-server-6bb95de1c50208d6cbaf1242f86a2fdab09c2246.tar.gz nextcloud-server-6bb95de1c50208d6cbaf1242f86a2fdab09c2246.zip |
Adding a optional disclaimer to the anonymous upload page
-rw-r--r-- | apps/files_sharing/css/public.css | 11 | ||||
-rw-r--r-- | apps/files_sharing/lib/Controllers/ShareController.php | 1 | ||||
-rw-r--r-- | apps/files_sharing/templates/public.php | 5 | ||||
-rw-r--r-- | lib/private/Settings/Admin/Sharing.php | 1 | ||||
-rw-r--r-- | settings/css/settings.css | 8 | ||||
-rw-r--r-- | settings/js/admin.js | 41 | ||||
-rw-r--r-- | settings/templates/admin/sharing.php | 10 | ||||
-rw-r--r-- | tests/lib/Settings/Admin/SharingTest.php | 12 |
8 files changed, 86 insertions, 3 deletions
diff --git a/apps/files_sharing/css/public.css b/apps/files_sharing/css/public.css index 4c5f847f9ff..3e3d13cebf0 100644 --- a/apps/files_sharing/css/public.css +++ b/apps/files_sharing/css/public.css @@ -168,6 +168,10 @@ thead { margin: 0 auto; } +#emptycontent.has-disclaimer { + margin-top: 10vh; +} + #public-upload #emptycontent h2 { margin: 10px 0 5px 0; } @@ -222,3 +226,10 @@ thead { padding-left: 18px; margin-right: 7px; } + + +.disclaimer { + margin: -20px auto 30px; + max-width: 400px; + text-align: left; +}
\ No newline at end of file diff --git a/apps/files_sharing/lib/Controllers/ShareController.php b/apps/files_sharing/lib/Controllers/ShareController.php index cd0d40048cf..5ccaab746fc 100644 --- a/apps/files_sharing/lib/Controllers/ShareController.php +++ b/apps/files_sharing/lib/Controllers/ShareController.php @@ -357,6 +357,7 @@ class ShareController extends Controller { $shareTmpl['previewEnabled'] = $this->config->getSystemValue('enable_previews', true); $shareTmpl['previewMaxX'] = $this->config->getSystemValue('preview_max_x', 1024); $shareTmpl['previewMaxY'] = $this->config->getSystemValue('preview_max_y', 1024); + $shareTmpl['disclaimer'] = $this->config->getAppValue('core', 'shareapi_public_link_disclaimertext', null); // Load files we need \OCP\Util::addScript('files', 'file-upload'); diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index 1b282f04a7a..bdedb04d244 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -104,10 +104,13 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size); <?php } else { ?> <input type="hidden" id="upload-only-interface" value="1"/> <div id="public-upload"> - <div id="emptycontent" class=""> + <div id="emptycontent" class="<?php if (!empty($_['disclaimer'])) { ?>has-disclaimer<?php } ?>"> <div id="displayavatar"><div class="avatardiv"></div></div> <h2><?php p($l->t('Upload files to %s', [$_['shareOwner']])) ?></h2> <p><span class="icon-folder"></span> <?php p($_['filename']) ?></p> + <?php if (!empty($_['disclaimer'])) { ?> + <p class="disclaimer"><?php p($_['disclaimer']); ?></p> + <?php } ?> <input type="file" name="files[]" class="hidden" multiple> <a href="#" class="button icon-upload"><?php p($l->t('Select or drop files')) ?></a> diff --git a/lib/private/Settings/Admin/Sharing.php b/lib/private/Settings/Admin/Sharing.php index 8d3ddc9b3b5..59821044605 100644 --- a/lib/private/Settings/Admin/Sharing.php +++ b/lib/private/Settings/Admin/Sharing.php @@ -65,6 +65,7 @@ class Sharing implements ISettings { 'shareEnforceExpireDate' => $this->config->getAppValue('core', 'shareapi_enforce_expire_date', 'no'), 'shareExcludeGroups' => $this->config->getAppValue('core', 'shareapi_exclude_groups', 'no') === 'yes' ? true : false, 'shareExcludedGroupsList' => $excludeGroupsList, + 'publicShareDisclaimerText' => $this->config->getAppValue('core', 'shareapi_public_link_disclaimertext', null), ]; return new TemplateResponse('settings', 'admin/sharing', $parameters, ''); diff --git a/settings/css/settings.css b/settings/css/settings.css index 6ed707f7c45..d66b0f82b55 100644 --- a/settings/css/settings.css +++ b/settings/css/settings.css @@ -499,6 +499,14 @@ table.grid td.date{ display: inline-block; } +#publicShareDisclaimerText { + width: calc(100% - 23px); /* 20 px left margin, 3 px right margin */ + max-width: 600px; + height: 150px; + margin-left: 20px; + box-sizing: border-box; +} + /* correctly display help icons next to headings */ .icon-info { padding: 11px 20px; diff --git a/settings/js/admin.js b/settings/js/admin.js index fb59b3ba026..a2a1cef531c 100644 --- a/settings/js/admin.js +++ b/settings/js/admin.js @@ -90,7 +90,7 @@ $(document).ready(function(){ } }); - $('#shareAPI input:not(#excludedGroups)').change(function() { + $('#shareAPI input:not(.noJSAutoUpdate)').change(function() { var value = $(this).val(); if ($(this).attr('type') === 'checkbox') { if (this.checked) { @@ -106,6 +106,45 @@ $(document).ready(function(){ $("#setDefaultExpireDate").toggleClass('hidden', !this.checked); }); + $('#publicShareDisclaimer').change(function() { + $("#publicShareDisclaimerText").toggleClass('hidden', !this.checked); + if(!this.checked) { + savePublicShareDisclaimerText(''); + } + }); + + var savePublicShareDisclaimerText = _.debounce(function(value) { + var data = { + app:'core', + key:'shareapi_public_link_disclaimertext' + }; + if (_.isString(value) && value !== '') { + data['action'] = 'setValue'; + data['value'] = value; + } else { + data['action'] = 'deleteKey'; + $('#publicShareDisclaimerText').val(''); + } + + OC.msg.startSaving('#publicShareDisclaimerStatus'); + $.post( + OC.AppConfig.url, + data, + function(result){ + if(result.status === 'success'){ + OC.msg.finishedSuccess('#publicShareDisclaimerStatus', t('core', 'Saved')) + } else { + OC.msg.finishedError('#publicShareDisclaimerStatus', t('core', 'Not saved')) + } + }, + 'json' + ); + }, 500); + + $('#publicShareDisclaimerText').on('change, keyup', function() { + savePublicShareDisclaimerText(this.value); + }); + $('#allowLinks').change(function() { $("#publicLinkSettings").toggleClass('hidden', !this.checked); $('#setDefaultExpireDate').toggleClass('hidden', !(this.checked && $('#shareapiDefaultExpireDate')[0].checked)); diff --git a/settings/templates/admin/sharing.php b/settings/templates/admin/sharing.php index b8f8e920246..1c47d74770f 100644 --- a/settings/templates/admin/sharing.php +++ b/settings/templates/admin/sharing.php @@ -95,7 +95,7 @@ <label for="shareapiExcludeGroups"><?php p($l->t('Exclude groups from sharing'));?></label><br/> </p> <p id="selectExcludedGroups" class="indent <?php if (!$_['shareExcludeGroups'] || $_['shareAPIEnabled'] === 'no') p('hidden'); ?>"> - <input name="shareapi_exclude_groups_list" type="hidden" id="excludedGroups" value="<?php p($_['shareExcludedGroupsList']) ?>" style="width: 400px"/> + <input name="shareapi_exclude_groups_list" type="hidden" id="excludedGroups" value="<?php p($_['shareExcludedGroupsList']) ?>" style="width: 400px" class="noJSAutoUpdate"/> <br /> <em><?php p($l->t('These groups will still be able to receive shares, but not to initiate them.')); ?></em> </p> @@ -104,4 +104,12 @@ <?php if ($_['allowShareDialogUserEnumeration'] === 'yes') print_unescaped('checked="checked"'); ?> /> <label for="shareapi_allow_share_dialog_user_enumeration"><?php p($l->t('Allow username autocompletion in share dialog. If this is disabled the full username needs to be entered.'));?></label><br /> </p> + <p> + <input type="checkbox" id="publicShareDisclaimer" class="checkbox noJSAutoUpdate" + <?php if ($_['publicShareDisclaimerText'] !== null) print_unescaped('checked="checked"'); ?> /> + <label for="publicShareDisclaimer"><?php p($l->t('Show disclaimer text on the public link upload page. (Only shown when the file list is hidden.)'));?></label> + <span id="publicShareDisclaimerStatus" class="msg" style="display:none"></span> + <br/> + <textarea placeholder="This text will be shown on the public link upload page when the file list is hidden." id="publicShareDisclaimerText" <?php if ($_['publicShareDisclaimerText'] === null) { print_unescaped('class="hidden"'); } ?>><?php p($_['publicShareDisclaimerText']) ?></textarea> + </p> </div> diff --git a/tests/lib/Settings/Admin/SharingTest.php b/tests/lib/Settings/Admin/SharingTest.php index 38ab7614d1c..86bbdcbbfb0 100644 --- a/tests/lib/Settings/Admin/SharingTest.php +++ b/tests/lib/Settings/Admin/SharingTest.php @@ -109,6 +109,11 @@ class SharingTest extends TestCase { ->method('getAppValue') ->with('core', 'shareapi_exclude_groups', 'no') ->willReturn('no'); + $this->config + ->expects($this->at(13)) + ->method('getAppValue') + ->with('core', 'shareapi_public_link_disclaimertext', null) + ->willReturn('Lorem ipsum'); $expected = new TemplateResponse( 'settings', @@ -129,6 +134,7 @@ class SharingTest extends TestCase { 'shareEnforceExpireDate' => 'no', 'shareExcludeGroups' => false, 'shareExcludedGroupsList' => '', + 'publicShareDisclaimer' => 'Lorem ipsum', ], '' ); @@ -202,6 +208,11 @@ class SharingTest extends TestCase { ->method('getAppValue') ->with('core', 'shareapi_exclude_groups', 'no') ->willReturn('yes'); + $this->config + ->expects($this->at(13)) + ->method('getAppValue') + ->with('core', 'shareapi_public_link_disclaimertext', null) + ->willReturn('Lorem ipsum'); $expected = new TemplateResponse( 'settings', @@ -222,6 +233,7 @@ class SharingTest extends TestCase { 'shareEnforceExpireDate' => 'no', 'shareExcludeGroups' => true, 'shareExcludedGroupsList' => 'NoSharers|OtherNoSharers', + 'publicShareDisclaimer' => 'Lorem ipsum', ], '' ); |