diff options
author | Thomas Citharel <tcit@tcit.fr> | 2021-09-14 19:30:21 +0200 |
---|---|---|
committer | Thomas Citharel <tcit@tcit.fr> | 2021-09-15 16:33:03 +0200 |
commit | b3c79272609c8cd6d8245f6653b2645180635214 (patch) | |
tree | 87883a2185ac0621be1ba188735ef6b76b2a3ac5 | |
parent | 58891a965537bc2865cf710c2c33655124b12940 (diff) | |
download | nextcloud-server-b3c79272609c8cd6d8245f6653b2645180635214.tar.gz nextcloud-server-b3c79272609c8cd6d8245f6653b2645180635214.zip |
Show warning on the share settings when the File Shares app is disabled
Closes #3706
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
-rw-r--r-- | apps/settings/lib/Settings/Admin/Sharing.php | 13 | ||||
-rw-r--r-- | apps/settings/templates/settings/admin/sharing.php | 281 | ||||
-rw-r--r-- | apps/settings/tests/Settings/Admin/SharingTest.php | 30 |
3 files changed, 173 insertions, 151 deletions
diff --git a/apps/settings/lib/Settings/Admin/Sharing.php b/apps/settings/lib/Settings/Admin/Sharing.php index 85d3e4d8d40..24be9f1426a 100644 --- a/apps/settings/lib/Settings/Admin/Sharing.php +++ b/apps/settings/lib/Settings/Admin/Sharing.php @@ -12,6 +12,7 @@ * @author Roeland Jago Douma <roeland@famdouma.nl> * @author Sascha Wiswedel <sascha.wiswedel@nextcloud.com> * @author Vincent Petry <vincent@nextcloud.com> + * @author Thomas Citharel <nextcloud@tcit.fr> * * @license GNU AGPL version 3 or any later version * @@ -31,7 +32,7 @@ */ namespace OCA\Settings\Settings\Admin; -use OC\Share\Share; +use OCP\App\IAppManager; use OCP\AppFramework\Http\TemplateResponse; use OCP\Constants; use OCP\IConfig; @@ -50,13 +51,14 @@ class Sharing implements ISettings { /** @var IManager */ private $shareManager; - /** - * @param IConfig $config - */ - public function __construct(IConfig $config, IL10N $l, IManager $shareManager) { + /** @var IAppManager */ + private $appManager; + + public function __construct(IConfig $config, IL10N $l, IManager $shareManager, IAppManager $appManager) { $this->config = $config; $this->l = $l; $this->shareManager = $shareManager; + $this->appManager = $appManager; } /** @@ -72,6 +74,7 @@ class Sharing implements ISettings { $parameters = [ // Built-In Sharing + 'sharingAppEnabled' => $this->appManager->isEnabledForUser('files_sharing'), 'allowGroupSharing' => $this->config->getAppValue('core', 'shareapi_allow_group_sharing', 'yes'), 'allowLinks' => $this->config->getAppValue('core', 'shareapi_allow_links', 'yes'), 'allowLinksExcludeGroups' => $linksExcludeGroupsList, diff --git a/apps/settings/templates/settings/admin/sharing.php b/apps/settings/templates/settings/admin/sharing.php index 75ad6f76d23..62be48dc99d 100644 --- a/apps/settings/templates/settings/admin/sharing.php +++ b/apps/settings/templates/settings/admin/sharing.php @@ -3,6 +3,7 @@ * @copyright Copyright (c) 2016 Arthur Schiwon <blizzz@arthur-schiwon.de> * * @author Arthur Schiwon <blizzz@arthur-schiwon.de> + * @author Thomas Citharel <nextcloud@tcit.fr> * * @license GNU AGPL version 3 or any later version * @@ -28,234 +29,240 @@ <div class="section" id="shareAPI"> <h2><?php p($l->t('Sharing'));?></h2> - <a target="_blank" rel="noreferrer noopener" class="icon-info" - title="<?php p($l->t('Open documentation'));?>" - href="<?php p(link_to_docs('admin-sharing')); ?>"></a> - <p class="settings-hint"><?php p($l->t('As admin you can fine-tune the sharing behavior. Please see the documentation for more information.'));?></p> - <p id="enable"> - <input type="checkbox" name="shareapi_enabled" id="shareAPIEnabled" class="checkbox" - value="1" <?php if ($_['shareAPIEnabled'] === 'yes') { + <?php if ($_['sharingAppEnabled'] === false) { ?> + <p class="warning"><?php p($l->t('You need to enable the File sharing App.')); ?></p> + <?php } else { ?> + <div> + <a target="_blank" rel="noreferrer noopener" class="icon-info" + title="<?php p($l->t('Open documentation'));?>" + href="<?php p(link_to_docs('admin-sharing')); ?>"></a> + <p class="settings-hint"><?php p($l->t('As admin you can fine-tune the sharing behavior. Please see the documentation for more information.'));?></p> + <p id="enable"> + <input type="checkbox" name="shareapi_enabled" id="shareAPIEnabled" class="checkbox" + value="1" <?php if ($_['shareAPIEnabled'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareAPIEnabled"><?php p($l->t('Allow apps to use the Share API'));?></label><br/> - </p> + <label for="shareAPIEnabled"><?php p($l->t('Allow apps to use the Share API'));?></label><br/> + </p> - <p id="internalShareSettings" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { + <p id="internalShareSettings" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); } ?>"> - <input type="checkbox" name="shareapi_default_internal_expire_date" id="shareapiDefaultInternalExpireDate" class="checkbox" - value="1" <?php if ($_['shareDefaultInternalExpireDateSet'] === 'yes') { + <input type="checkbox" name="shareapi_default_internal_expire_date" id="shareapiDefaultInternalExpireDate" class="checkbox" + value="1" <?php if ($_['shareDefaultInternalExpireDateSet'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiDefaultInternalExpireDate"><?php p($l->t('Set default expiration date for shares'));?></label><br/> - </p> - <p id="setDefaultInternalExpireDate" class="double-indent <?php if ($_['shareDefaultInternalExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') { + <label for="shareapiDefaultInternalExpireDate"><?php p($l->t('Set default expiration date for shares'));?></label><br/> + </p> + <p id="setDefaultInternalExpireDate" class="double-indent <?php if ($_['shareDefaultInternalExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <?php p($l->t('Expire after') . ' '); ?> - <input type="text" name='shareapi_internal_expire_after_n_days' id="shareapiInternalExpireAfterNDays" placeholder="<?php p('7')?>" - value='<?php p($_['shareInternalExpireAfterNDays']) ?>' /> - <?php p($l->t('day(s)')); ?> - <input type="checkbox" name="shareapi_enforce_internal_expire_date" id="shareapiInternalEnforceExpireDate" class="checkbox" - value="1" <?php if ($_['shareInternalEnforceExpireDate'] === 'yes') { + <?php p($l->t('Expire after') . ' '); ?> + <input type="text" name='shareapi_internal_expire_after_n_days' id="shareapiInternalExpireAfterNDays" placeholder="<?php p('7')?>" + value='<?php p($_['shareInternalExpireAfterNDays']) ?>' /> + <?php p($l->t('day(s)')); ?> + <input type="checkbox" name="shareapi_enforce_internal_expire_date" id="shareapiInternalEnforceExpireDate" class="checkbox" + value="1" <?php if ($_['shareInternalEnforceExpireDate'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiInternalEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> - </p> + <label for="shareapiInternalEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> + </p> - <p id="remoteShareSettings" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { + <p id="remoteShareSettings" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); } ?>"> - <input type="checkbox" name="shareapi_default_remote_expire_date" id="shareapiDefaultRemoteExpireDate" class="checkbox" - value="1" <?php if ($_['shareDefaultRemoteExpireDateSet'] === 'yes') { + <input type="checkbox" name="shareapi_default_remote_expire_date" id="shareapiDefaultRemoteExpireDate" class="checkbox" + value="1" <?php if ($_['shareDefaultRemoteExpireDateSet'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiDefaultRemoteExpireDate"><?php p($l->t('Set default expiration date for shares to other servers'));?></label><br/> - </p> - <p id="setDefaultRemoteExpireDate" class="double-indent <?php if ($_['shareDefaultRemoteExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') { + <label for="shareapiDefaultRemoteExpireDate"><?php p($l->t('Set default expiration date for shares to other servers'));?></label><br/> + </p> + <p id="setDefaultRemoteExpireDate" class="double-indent <?php if ($_['shareDefaultRemoteExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <?php p($l->t('Expire after'). ' '); ?> - <input type="text" name='shareapi_remote_expire_after_n_days' id="shareapiRemoteExpireAfterNDays" placeholder="<?php p('7')?>" - value='<?php p($_['shareRemoteExpireAfterNDays']) ?>' /> - <?php p($l->t('day(s)')); ?> - <input type="checkbox" name="shareapi_enforce_remote_expire_date" id="shareapiRemoteEnforceExpireDate" class="checkbox" - value="1" <?php if ($_['shareRemoteEnforceExpireDate'] === 'yes') { + <?php p($l->t('Expire after'). ' '); ?> + <input type="text" name='shareapi_remote_expire_after_n_days' id="shareapiRemoteExpireAfterNDays" placeholder="<?php p('7')?>" + value='<?php p($_['shareRemoteExpireAfterNDays']) ?>' /> + <?php p($l->t('day(s)')); ?> + <input type="checkbox" name="shareapi_enforce_remote_expire_date" id="shareapiRemoteEnforceExpireDate" class="checkbox" + value="1" <?php if ($_['shareRemoteEnforceExpireDate'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiRemoteEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> - </p> + <label for="shareapiRemoteEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> + </p> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') { + <p class="<?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_allow_links" id="allowLinks" class="checkbox" - value="1" <?php if ($_['allowLinks'] === 'yes') { + <input type="checkbox" name="shareapi_allow_links" id="allowLinks" class="checkbox" + value="1" <?php if ($_['allowLinks'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="allowLinks"><?php p($l->t('Allow users to share via link and emails'));?></label><br/> - </p> + <label for="allowLinks"><?php p($l->t('Allow users to share via link and emails'));?></label><br/> + </p> - <p id="publicLinkSettings" class="indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareAPIEnabled'] === 'no') { + <p id="publicLinkSettings" class="indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareAPIEnabled'] === 'no') { p('hidden'); } ?>"> - <input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload" class="checkbox" - value="1" <?php if ($_['allowPublicUpload'] == 'yes') { + <input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload" class="checkbox" + value="1" <?php if ($_['allowPublicUpload'] == 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="allowPublicUpload"><?php p($l->t('Allow public uploads'));?></label><br/> - <input type="checkbox" name="shareapi_enable_link_password_by_default" id="enableLinkPasswordByDefault" class="checkbox" - value="1" <?php if ($_['enableLinkPasswordByDefault'] === 'yes') { + <label for="allowPublicUpload"><?php p($l->t('Allow public uploads'));?></label><br/> + <input type="checkbox" name="shareapi_enable_link_password_by_default" id="enableLinkPasswordByDefault" class="checkbox" + value="1" <?php if ($_['enableLinkPasswordByDefault'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="enableLinkPasswordByDefault"><?php p($l->t('Always ask for a password'));?></label><br/> - <input type="checkbox" name="shareapi_enforce_links_password" id="enforceLinkPassword" class="checkbox" - value="1" <?php if ($_['enforceLinkPassword']) { + <label for="enableLinkPasswordByDefault"><?php p($l->t('Always ask for a password'));?></label><br/> + <input type="checkbox" name="shareapi_enforce_links_password" id="enforceLinkPassword" class="checkbox" + value="1" <?php if ($_['enforceLinkPassword']) { print_unescaped('checked="checked"'); } ?> /> - <label for="enforceLinkPassword"><?php p($l->t('Enforce password protection'));?></label><br/> + <label for="enforceLinkPassword"><?php p($l->t('Enforce password protection'));?></label><br/> - <input type="checkbox" name="shareapi_default_expire_date" id="shareapiDefaultExpireDate" class="checkbox" - value="1" <?php if ($_['shareDefaultExpireDateSet'] === 'yes') { + <input type="checkbox" name="shareapi_default_expire_date" id="shareapiDefaultExpireDate" class="checkbox" + value="1" <?php if ($_['shareDefaultExpireDateSet'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiDefaultExpireDate"><?php p($l->t('Set default expiration date'));?></label><br/> + <label for="shareapiDefaultExpireDate"><?php p($l->t('Set default expiration date'));?></label><br/> - </p> - <p id="setDefaultExpireDate" class="double-indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareDefaultExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') { + </p> + <p id="setDefaultExpireDate" class="double-indent <?php if ($_['allowLinks'] !== 'yes' || $_['shareDefaultExpireDateSet'] === 'no' || $_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <?php p($l->t('Expire after'). ' '); ?> - <input type="text" name='shareapi_expire_after_n_days' id="shareapiExpireAfterNDays" placeholder="<?php p('7')?>" - value='<?php p($_['shareExpireAfterNDays']) ?>' /> - <?php p($l->t('day(s)')); ?> - <input type="checkbox" name="shareapi_enforce_expire_date" id="shareapiEnforceExpireDate" class="checkbox" - value="1" <?php if ($_['shareEnforceExpireDate'] === 'yes') { + <?php p($l->t('Expire after'). ' '); ?> + <input type="text" name='shareapi_expire_after_n_days' id="shareapiExpireAfterNDays" placeholder="<?php p('7')?>" + value='<?php p($_['shareExpireAfterNDays']) ?>' /> + <?php p($l->t('day(s)')); ?> + <input type="checkbox" name="shareapi_enforce_expire_date" id="shareapiEnforceExpireDate" class="checkbox" + value="1" <?php if ($_['shareEnforceExpireDate'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> - </p> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') { + <label for="shareapiEnforceExpireDate"><?php p($l->t('Enforce expiration date'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <p class="indent"> - <?php p($l->t('Exclude groups from creating link shares:'));?> - </p> - <p id="selectLinksExcludedGroups" class="indent <?php if ($_['allowLinks'] === 'no') { + <p class="indent"> + <?php p($l->t('Exclude groups from creating link shares:'));?> + </p> + <p id="selectLinksExcludedGroups" class="indent <?php if ($_['allowLinks'] === 'no') { p('hidden'); } ?>"> - <input name="shareapi_allow_links_exclude_groups" type="hidden" id="linksExcludedGroups" value="<?php p($_['allowLinksExcludeGroups']) ?>" style="width: 400px" class="noJSAutoUpdate"/> - </p> - <input type="checkbox" name="shareapi_allow_resharing" id="allowResharing" class="checkbox" - value="1" <?php if ($_['allowResharing'] === 'yes') { + <input name="shareapi_allow_links_exclude_groups" type="hidden" id="linksExcludedGroups" value="<?php p($_['allowLinksExcludeGroups']) ?>" style="width: 400px" class="noJSAutoUpdate"/> + </p> + <input type="checkbox" name="shareapi_allow_resharing" id="allowResharing" class="checkbox" + value="1" <?php if ($_['allowResharing'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="allowResharing"><?php p($l->t('Allow resharing'));?></label><br/> - </p> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') { + <label for="allowResharing"><?php p($l->t('Allow resharing'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_allow_group_sharing" id="allowGroupSharing" class="checkbox" - value="1" <?php if ($_['allowGroupSharing'] === 'yes') { + <input type="checkbox" name="shareapi_allow_group_sharing" id="allowGroupSharing" class="checkbox" + value="1" <?php if ($_['allowGroupSharing'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="allowGroupSharing"><?php p($l->t('Allow sharing with groups'));?></label><br /> - </p> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') { + <label for="allowGroupSharing"><?php p($l->t('Allow sharing with groups'));?></label><br /> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_only_share_with_group_members" id="onlyShareWithGroupMembers" class="checkbox" - value="1" <?php if ($_['onlyShareWithGroupMembers']) { + <input type="checkbox" name="shareapi_only_share_with_group_members" id="onlyShareWithGroupMembers" class="checkbox" + value="1" <?php if ($_['onlyShareWithGroupMembers']) { print_unescaped('checked="checked"'); } ?> /> - <label for="onlyShareWithGroupMembers"><?php p($l->t('Restrict users to only share with users in their groups'));?></label><br/> - </p> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') { + <label for="onlyShareWithGroupMembers"><?php p($l->t('Restrict users to only share with users in their groups'));?></label><br/> + </p> + <p class="<?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_exclude_groups" id="shareapiExcludeGroups" class="checkbox" - value="1" <?php if ($_['shareExcludeGroups']) { + <input type="checkbox" name="shareapi_exclude_groups" id="shareapiExcludeGroups" class="checkbox" + value="1" <?php if ($_['shareExcludeGroups']) { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapiExcludeGroups"><?php p($l->t('Exclude groups from sharing'));?></label><br/> - </p> - <p id="selectExcludedGroups" class="indent <?php if (!$_['shareExcludeGroups'] || $_['shareAPIEnabled'] === 'no') { + <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" class="noJSAutoUpdate"/> - <br /> - <em><?php p($l->t('These groups will still be able to receive shares, but not to initiate them.')); ?></em> - </p> + <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> - <p class="<?php if ($_['shareAPIEnabled'] === 'no') { + <p class="<?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_allow_share_dialog_user_enumeration" value="1" id="shareapi_allow_share_dialog_user_enumeration" class="checkbox" - <?php if ($_['allowShareDialogUserEnumeration'] === 'yes') { + <input type="checkbox" name="shareapi_allow_share_dialog_user_enumeration" value="1" id="shareapi_allow_share_dialog_user_enumeration" class="checkbox" + <?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'));?></label><br /> - </p> + <label for="shareapi_allow_share_dialog_user_enumeration"><?php p($l->t('Allow username autocompletion in share dialog'));?></label><br /> + </p> - <p id="shareapi_restrict_user_enumeration_to_group_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') { + <p id="shareapi_restrict_user_enumeration_to_group_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_restrict_user_enumeration_to_group" value="1" id="shareapi_restrict_user_enumeration_to_group" class="checkbox" - <?php if ($_['restrictUserEnumerationToGroup'] === 'yes') { + <input type="checkbox" name="shareapi_restrict_user_enumeration_to_group" value="1" id="shareapi_restrict_user_enumeration_to_group" class="checkbox" + <?php if ($_['restrictUserEnumerationToGroup'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapi_restrict_user_enumeration_to_group"><?php p($l->t('Allow username autocompletion to users within the same groups'));?></label><br /> - </p> + <label for="shareapi_restrict_user_enumeration_to_group"><?php p($l->t('Allow username autocompletion to users within the same groups'));?></label><br /> + </p> - <p id="shareapi_restrict_user_enumeration_to_phone_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') { + <p id="shareapi_restrict_user_enumeration_to_phone_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_restrict_user_enumeration_to_phone" value="1" id="shareapi_restrict_user_enumeration_to_phone" class="checkbox" - <?php if ($_['restrictUserEnumerationToPhone'] === 'yes') { + <input type="checkbox" name="shareapi_restrict_user_enumeration_to_phone" value="1" id="shareapi_restrict_user_enumeration_to_phone" class="checkbox" + <?php if ($_['restrictUserEnumerationToPhone'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapi_restrict_user_enumeration_to_phone"><?php p($l->t('Allow username autocompletion to users based on phone number integration'));?></label><br /> - </p> - <p id="shareapi_restrict_user_enumeration_combinewarning_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') { + <label for="shareapi_restrict_user_enumeration_to_phone"><?php p($l->t('Allow username autocompletion to users based on phone number integration'));?></label><br /> + </p> + <p id="shareapi_restrict_user_enumeration_combinewarning_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no' || $_['allowShareDialogUserEnumeration'] === 'no') { p('hidden'); }?>"> - <em><?php p($l->t('If autocompletion "same group" and "phone number integration" are enabled a match in either is enough to show the user.'));?></em><br /> - </p> - <p id="shareapi_restrict_user_enumeration_full_match_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { + <em><?php p($l->t('If autocompletion "same group" and "phone number integration" are enabled a match in either is enough to show the user.'));?></em><br /> + </p> + <p id="shareapi_restrict_user_enumeration_full_match_setting" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); }?>"> - <input type="checkbox" name="shareapi_restrict_user_enumeration_full_match" value="1" id="shareapi_restrict_user_enumeration_full_match" class="checkbox" - <?php if ($_['restrictUserEnumerationFullMatch'] === 'yes') { + <input type="checkbox" name="shareapi_restrict_user_enumeration_full_match" value="1" id="shareapi_restrict_user_enumeration_full_match" class="checkbox" + <?php if ($_['restrictUserEnumerationFullMatch'] === 'yes') { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapi_restrict_user_enumeration_full_match"><?php p($l->t('Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)'));?></label><br /> - </p> + <label for="shareapi_restrict_user_enumeration_full_match"><?php p($l->t('Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)'));?></label><br /> + </p> - <p> - <input type="checkbox" id="publicShareDisclaimer" class="checkbox noJSAutoUpdate" - <?php if ($_['publicShareDisclaimerText'] !== null) { + <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="<?php p($l->t('This text will be shown on the public link upload page when the file list is hidden.')) ?>" id="publicShareDisclaimerText" <?php if ($_['publicShareDisclaimerText'] === null) { + <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="<?php p($l->t('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> + </p> - <h3><?php p($l->t('Default share permissions'));?></h3> - <input type="hidden" name="shareapi_default_permissions" id="shareApiDefaultPermissions" class="checkbox" - value="<?php p($_['shareApiDefaultPermissions']) ?>" /> - <p id="shareApiDefaultPermissionsSection" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { + <h3><?php p($l->t('Default share permissions'));?></h3> + <input type="hidden" name="shareapi_default_permissions" id="shareApiDefaultPermissions" class="checkbox" + value="<?php p($_['shareApiDefaultPermissions']) ?>" /> + <p id="shareApiDefaultPermissionsSection" class="indent <?php if ($_['shareAPIEnabled'] === 'no') { p('hidden'); } ?>"> - <?php foreach ($_['shareApiDefaultPermissionsCheckboxes'] as $perm): ?> - <input type="checkbox" name="shareapi_default_permission_<?php p($perm['id']) ?>" id="shareapi_default_permission_<?php p($perm['id']) ?>" - class="noautosave checkbox" value="<?php p($perm['value']) ?>" <?php if (($_['shareApiDefaultPermissions'] & $perm['value']) !== 0) { + <?php foreach ($_['shareApiDefaultPermissionsCheckboxes'] as $perm): ?> + <input type="checkbox" name="shareapi_default_permission_<?php p($perm['id']) ?>" id="shareapi_default_permission_<?php p($perm['id']) ?>" + class="noautosave checkbox" value="<?php p($perm['value']) ?>" <?php if (($_['shareApiDefaultPermissions'] & $perm['value']) !== 0) { print_unescaped('checked="checked"'); } ?> /> - <label for="shareapi_default_permission_<?php p($perm['id']) ?>"><?php p($perm['label']);?></label> - <?php endforeach ?> - </p> + <label for="shareapi_default_permission_<?php p($perm['id']) ?>"><?php p($perm['label']);?></label> + <?php endforeach ?> + </p> + </div> + <?php } ?> </div> diff --git a/apps/settings/tests/Settings/Admin/SharingTest.php b/apps/settings/tests/Settings/Admin/SharingTest.php index ff25c717498..c90429f6dd8 100644 --- a/apps/settings/tests/Settings/Admin/SharingTest.php +++ b/apps/settings/tests/Settings/Admin/SharingTest.php @@ -32,11 +32,13 @@ namespace OCA\Settings\Tests\Settings\Admin; use OCA\Settings\Settings\Admin\Sharing; +use OCP\App\IAppManager; use OCP\AppFramework\Http\TemplateResponse; use OCP\Constants; use OCP\IConfig; use OCP\IL10N; use OCP\Share\IManager; +use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SharingTest extends TestCase { @@ -44,10 +46,12 @@ class SharingTest extends TestCase { private $admin; /** @var IConfig */ private $config; - /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IL10N|MockObject */ private $l10n; - /** @var IManager|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IManager|MockObject */ private $shareManager; + /** @var IAppManager|MockObject */ + private $appManager; protected function setUp(): void { parent::setUp(); @@ -55,15 +59,17 @@ class SharingTest extends TestCase { $this->l10n = $this->getMockBuilder(IL10N::class)->getMock(); $this->shareManager = $this->getMockBuilder(IManager::class)->getMock(); + $this->appManager = $this->getMockBuilder(IAppManager::class)->getMock(); $this->admin = new Sharing( $this->config, $this->l10n, - $this->shareManager + $this->shareManager, + $this->appManager ); } - public function testGetFormWithoutExcludedGroups() { + public function testGetFormWithoutExcludedGroups(): void { $this->config ->method('getAppValue') ->willReturnMap([ @@ -94,10 +100,13 @@ class SharingTest extends TestCase { $this->shareManager->method('shareWithGroupMembersOnly') ->willReturn(false); + $this->appManager->method('isEnabledForUser')->with('files_sharing')->willReturn(false); + $expected = new TemplateResponse( 'settings', 'settings/admin/sharing', [ + 'sharingAppEnabled' => false, 'allowGroupSharing' => 'yes', 'allowLinks' => 'yes', 'allowPublicUpload' => 'yes', @@ -117,7 +126,7 @@ class SharingTest extends TestCase { 'publicShareDisclaimerText' => 'Lorem ipsum', 'enableLinkPasswordByDefault' => 'yes', 'shareApiDefaultPermissions' => Constants::PERMISSION_ALL, - 'shareApiDefaultPermissionsCheckboxes' => $this->invokePrivate($this->admin, 'getSharePermissionList', []), + 'shareApiDefaultPermissionsCheckboxes' => self::invokePrivate($this->admin, 'getSharePermissionList', []), 'shareDefaultInternalExpireDateSet' => 'no', 'shareInternalExpireAfterNDays' => '7', 'shareInternalEnforceExpireDate' => 'no', @@ -132,7 +141,7 @@ class SharingTest extends TestCase { $this->assertEquals($expected, $this->admin->getForm()); } - public function testGetFormWithExcludedGroups() { + public function testGetFormWithExcludedGroups(): void { $this->config ->method('getAppValue') ->willReturnMap([ @@ -163,10 +172,13 @@ class SharingTest extends TestCase { $this->shareManager->method('shareWithGroupMembersOnly') ->willReturn(false); + $this->appManager->method('isEnabledForUser')->with('files_sharing')->willReturn(true); + $expected = new TemplateResponse( 'settings', 'settings/admin/sharing', [ + 'sharingAppEnabled' => true, 'allowGroupSharing' => 'yes', 'allowLinks' => 'yes', 'allowPublicUpload' => 'yes', @@ -186,7 +198,7 @@ class SharingTest extends TestCase { 'publicShareDisclaimerText' => 'Lorem ipsum', 'enableLinkPasswordByDefault' => 'yes', 'shareApiDefaultPermissions' => Constants::PERMISSION_ALL, - 'shareApiDefaultPermissionsCheckboxes' => $this->invokePrivate($this->admin, 'getSharePermissionList', []), + 'shareApiDefaultPermissionsCheckboxes' => self::invokePrivate($this->admin, 'getSharePermissionList', []), 'shareDefaultInternalExpireDateSet' => 'no', 'shareInternalExpireAfterNDays' => '7', 'shareInternalEnforceExpireDate' => 'no', @@ -201,11 +213,11 @@ class SharingTest extends TestCase { $this->assertEquals($expected, $this->admin->getForm()); } - public function testGetSection() { + public function testGetSection(): void { $this->assertSame('sharing', $this->admin->getSection()); } - public function testGetPriority() { + public function testGetPriority(): void { $this->assertSame(0, $this->admin->getPriority()); } } |