diff --git a/apps/files_sharing/composer/composer/autoload_classmap.php b/apps/files_sharing/composer/composer/autoload_classmap.php index 0388c7990ec76..a68db3421b6b9 100644 --- a/apps/files_sharing/composer/composer/autoload_classmap.php +++ b/apps/files_sharing/composer/composer/autoload_classmap.php @@ -53,7 +53,5 @@ 'OCA\\Files_Sharing\\ShareBackend\\Folder' => $baseDir . '/../lib/ShareBackend/Folder.php', 'OCA\\Files_Sharing\\SharedMount' => $baseDir . '/../lib/SharedMount.php', 'OCA\\Files_Sharing\\SharedStorage' => $baseDir . '/../lib/SharedStorage.php', - 'OCA\\Files_Sharing\\Template\\ExternalShareMenuAction' => $baseDir . '/../lib/Template/ExternalShareMenuAction.php', - 'OCA\\Files_Sharing\\Template\\LinkMenuAction' => $baseDir . '/../lib/Template/LinkMenuAction.php', 'OCA\\Files_Sharing\\Updater' => $baseDir . '/../lib/Updater.php', ); diff --git a/apps/files_sharing/composer/composer/autoload_static.php b/apps/files_sharing/composer/composer/autoload_static.php index dd75dbaa18a73..328d6aca01d57 100644 --- a/apps/files_sharing/composer/composer/autoload_static.php +++ b/apps/files_sharing/composer/composer/autoload_static.php @@ -68,8 +68,6 @@ class ComposerStaticInitFiles_Sharing 'OCA\\Files_Sharing\\ShareBackend\\Folder' => __DIR__ . '/..' . '/../lib/ShareBackend/Folder.php', 'OCA\\Files_Sharing\\SharedMount' => __DIR__ . '/..' . '/../lib/SharedMount.php', 'OCA\\Files_Sharing\\SharedStorage' => __DIR__ . '/..' . '/../lib/SharedStorage.php', - 'OCA\\Files_Sharing\\Template\\ExternalShareMenuAction' => __DIR__ . '/..' . '/../lib/Template/ExternalShareMenuAction.php', - 'OCA\\Files_Sharing\\Template\\LinkMenuAction' => __DIR__ . '/..' . '/../lib/Template/LinkMenuAction.php', 'OCA\\Files_Sharing\\Updater' => __DIR__ . '/..' . '/../lib/Updater.php', ); diff --git a/apps/files_sharing/css/mobile.scss b/apps/files_sharing/css/mobile.scss index 56f57d53263f3..272dbbc0c34b4 100644 --- a/apps/files_sharing/css/mobile.scss +++ b/apps/files_sharing/css/mobile.scss @@ -46,10 +46,6 @@ table td.filename .nametext { text-overflow: ellipsis; } -// Hide Download label of 3-dot-menu on public share pages -.share-menutoggle-text { - display: none; -} #header .menutoggle { padding-right: 14px; background-position: center; diff --git a/apps/files_sharing/css/public.scss b/apps/files_sharing/css/public.scss index cc3788884e7bf..277814207b398 100644 --- a/apps/files_sharing/css/public.scss +++ b/apps/files_sharing/css/public.scss @@ -1,13 +1,3 @@ -#content { - height: initial; - min-height: calc(100vh - 160px); -} - -/* force layout to make sure the content element's height matches its contents' height */ -.ie #content { - display: inline-block; -} - #preview { background: #fff; text-align: center; @@ -105,10 +95,6 @@ thead { border-color: rgba(0,0,0,0.3) !important; } -#share-menu input[type='text'] { - width: 200px; -} - #public-upload .avatardiv { margin: 0 auto; } diff --git a/apps/files_sharing/js/public.js b/apps/files_sharing/js/public.js index 4b3ede243893b..33d8da0916664 100644 --- a/apps/files_sharing/js/public.js +++ b/apps/files_sharing/js/public.js @@ -263,15 +263,15 @@ OCA.Sharing.PublicApp = { var remote = $(this).find('#remote_address').val(); var token = $('#sharingToken').val(); - var owner = $('#save').data('owner'); - var ownerDisplayName = $('#save').data('owner-display-name'); - var name = $('#save').data('name'); - var isProtected = $('#save').data('protected') ? 1 : 0; + var owner = $('#save-external-share').data('owner'); + var ownerDisplayName = $('#save-external-share').data('owner-display-name'); + var name = $('#save-external-share').data('name'); + var isProtected = $('#save-external-share').data('protected') ? 1 : 0; OCA.Sharing.PublicApp._createFederatedShare(remote, token, owner, ownerDisplayName, name, isProtected); }); $('#remote_address').on("keyup paste", function() { - if ($(this).val() === '' || $('#save > .icon.icon-loading-small').length > 0) { + if ($(this).val() === '' || $('#save-external-share > .icon.icon-loading-small').length > 0) { $('#save-button-confirm').prop('disabled', true); } else { $('#save-button-confirm').prop('disabled', false); @@ -352,18 +352,18 @@ OCA.Sharing.PublicApp = { }, _toggleLoading: function() { - var loading = $('#save > .icon.icon-loading-small').length === 0; + var loading = $('#save-external-share > .icon.icon-loading-small').length === 0; if (loading) { - $('#save > .icon-external') + $('#save-external-share > .icon-external') .removeClass("icon-external") .addClass("icon-loading-small"); - $('#save #save-button-confirm').prop("disabled", true); + $('#save-external-share #save-button-confirm').prop("disabled", true); } else { - $('#save > .icon-loading-small') + $('#save-external-share > .icon-loading-small') .addClass("icon-external") .removeClass("icon-loading-small"); - $('#save #save-button-confirm').prop("disabled", false); + $('#save-external-share #save-button-confirm').prop("disabled", false); } }, @@ -423,20 +423,4 @@ $(document).ready(function () { }; } - $('#share-menutoggle').click(function() { - $('#share-menu').toggleClass('open'); - }); -}); - - -$(document).mouseup(function(e) { - var toggle = $('#share-menutoggle'); - var container = $('#share-menu'); - - // if the target of the click isn't the menu toggle, nor a descendant of the - // menu toggle, nor the container nor a descendant of the container - if (!toggle.is(e.target) && toggle.has(e.target).length === 0 && - !container.is(e.target) && container.has(e.target).length === 0) { - container.removeClass('open'); - } -}); +}); \ No newline at end of file diff --git a/apps/files_sharing/lib/Controller/ShareController.php b/apps/files_sharing/lib/Controller/ShareController.php index f793d35e3aec0..a196f552f6e32 100644 --- a/apps/files_sharing/lib/Controller/ShareController.php +++ b/apps/files_sharing/lib/Controller/ShareController.php @@ -38,9 +38,9 @@ use OC_Files; use OC_Util; use OCA\FederatedFileSharing\FederatedShareProvider; -use OCA\Files_Sharing\Template\ExternalShareMenuAction; -use OCA\Files_Sharing\Template\LinkMenuAction; use OCP\AppFramework\Http\Template\SimpleMenuAction; +use OCP\AppFramework\Http\Template\ExternalShareMenuAction; +use OCP\AppFramework\Http\Template\LinkMenuAction; use OCP\AppFramework\Http\Template\PublicTemplateResponse; use OCP\Defaults; use OCP\IL10N; diff --git a/apps/files_sharing/templates/public.php b/apps/files_sharing/templates/public.php index e8eb28f25c619..476f0851547f6 100644 --- a/apps/files_sharing/templates/public.php +++ b/apps/files_sharing/templates/public.php @@ -30,7 +30,7 @@ -
+
@@ -84,9 +84,3 @@ data-url="getURLGenerator()->linkTo('files', 'ajax/upload.php')); ?>" />
- -
-

- getLongFooter()); ?> -

-
diff --git a/apps/files_sharing/tests/Controller/ShareControllerTest.php b/apps/files_sharing/tests/Controller/ShareControllerTest.php index a977a422e7d69..be99c5ee1944d 100644 --- a/apps/files_sharing/tests/Controller/ShareControllerTest.php +++ b/apps/files_sharing/tests/Controller/ShareControllerTest.php @@ -34,9 +34,9 @@ use OC\Files\Filesystem; use OCA\FederatedFileSharing\FederatedShareProvider; use OCA\Files_Sharing\Controller\ShareController; -use OCA\Files_Sharing\Template\ExternalShareMenuAction; -use OCA\Files_Sharing\Template\LinkMenuAction; use OCP\AppFramework\Http\DataResponse; +use OCP\AppFramework\Http\Template\ExternalShareMenuAction; +use OCP\AppFramework\Http\Template\LinkMenuAction; use OCP\AppFramework\Http\Template\PublicTemplateResponse; use OCP\AppFramework\Http\Template\SimpleMenuAction; use OCP\IConfig; diff --git a/core/css/public.scss b/core/css/public.scss index 6a175de64317b..cc2c6bd0826cb 100644 --- a/core/css/public.scss +++ b/core/css/public.scss @@ -1,7 +1,7 @@ #body-public { .header-right { - span:not(.popovermenu) a { + #header-primary-action a { color: $color-primary-text; } @@ -16,7 +16,32 @@ #header-secondary-action { margin-right: 13px; + + ul li { + min-width: 270px; + } + #save-external-share { + form { + display: flex; + margin: 0; + } + .hidden { + display: none; + } + #save-button-confirm { + flex-grow: 0; + } + } } + } + + #content { + height: initial; + min-height: calc(100vh - 160px); + } + /* force layout to make sure the content element's height matches its contents' height */ + .ie #content { + display: inline-block; } } diff --git a/core/js/public/publicpage.js b/core/js/public/publicpage.js index 31b862ba12a42..e71bdff12ae37 100644 --- a/core/js/public/publicpage.js +++ b/core/js/public/publicpage.js @@ -22,8 +22,26 @@ $(document).ready(function () { - console.log('public'); - $('#body-public .header-right .menutoggle').click(function() { + $('#body-public').find('.header-right .menutoggle').click(function() { $(this).next('.popovermenu').toggleClass('open'); }); + + $('#save-external-share').find('label').click(function () { + $(this).toggleClass('hidden'); + $('.save-form').toggleClass('hidden') + $('#remote_address').focus(); + }); + +}); + +$(document).mouseup(function(e) { + var toggle = $('#body-public').find('.header-right .menutoggle'); + var container = toggle.next('.popovermenu'); + + // if the target of the click isn't the menu toggle, nor a descendant of the + // menu toggle, nor the container nor a descendant of the container + if (!toggle.is(e.target) && toggle.has(e.target).length === 0 && + !container.is(e.target) && container.has(e.target).length === 0) { + container.removeClass('open'); + } }); diff --git a/core/templates/layout.public.php b/core/templates/layout.public.php index d3c12f8fd9640..2317a7b36ef5c 100644 --- a/core/templates/layout.public.php +++ b/core/templates/layout.public.php @@ -50,13 +50,13 @@
- + getLabel()) ?> getActionCount()>1) { ?>
- diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index 320113612d647..4a19fe49457ff 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -40,7 +40,9 @@ 'OCP\\AppFramework\\Http\\Response' => $baseDir . '/lib/public/AppFramework/Http/Response.php', 'OCP\\AppFramework\\Http\\StreamResponse' => $baseDir . '/lib/public/AppFramework/Http/StreamResponse.php', 'OCP\\AppFramework\\Http\\TemplateResponse' => $baseDir . '/lib/public/AppFramework/Http/TemplateResponse.php', + 'OCP\\AppFramework\\Http\\Template\\ExternalShareMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php', 'OCP\\AppFramework\\Http\\Template\\IMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/IMenuAction.php', + 'OCP\\AppFramework\\Http\\Template\\LinkMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/LinkMenuAction.php', 'OCP\\AppFramework\\Http\\Template\\PublicTemplateResponse' => $baseDir . '/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php', 'OCP\\AppFramework\\Http\\Template\\SimpleMenuAction' => $baseDir . '/lib/public/AppFramework/Http/Template/SimpleMenuAction.php', 'OCP\\AppFramework\\IAppContainer' => $baseDir . '/lib/public/AppFramework/IAppContainer.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index ee94cd3ee81e2..fde2d26f8917d 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -70,7 +70,9 @@ class ComposerStaticInit53792487c5a8370acc0b06b1a864ff4c 'OCP\\AppFramework\\Http\\Response' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Response.php', 'OCP\\AppFramework\\Http\\StreamResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/StreamResponse.php', 'OCP\\AppFramework\\Http\\TemplateResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/TemplateResponse.php', + 'OCP\\AppFramework\\Http\\Template\\ExternalShareMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php', 'OCP\\AppFramework\\Http\\Template\\IMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/IMenuAction.php', + 'OCP\\AppFramework\\Http\\Template\\LinkMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/LinkMenuAction.php', 'OCP\\AppFramework\\Http\\Template\\PublicTemplateResponse' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php', 'OCP\\AppFramework\\Http\\Template\\SimpleMenuAction' => __DIR__ . '/../../..' . '/lib/public/AppFramework/Http/Template/SimpleMenuAction.php', 'OCP\\AppFramework\\IAppContainer' => __DIR__ . '/../../..' . '/lib/public/AppFramework/IAppContainer.php', diff --git a/apps/files_sharing/lib/Template/ExternalShareMenuAction.php b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php similarity index 54% rename from apps/files_sharing/lib/Template/ExternalShareMenuAction.php rename to lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php index e30a77cb2e699..4d455a9a755a0 100644 --- a/apps/files_sharing/lib/Template/ExternalShareMenuAction.php +++ b/lib/public/AppFramework/Http/Template/ExternalShareMenuAction.php @@ -6,26 +6,31 @@ * * @license GNU AGPL version 3 or any later version * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. * - * This program 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. + * This program 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 program. If not, see . + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . * */ -namespace OCA\Files_Sharing\Template; +namespace OCP\AppFramework\Http\Template; use OCP\AppFramework\Http\Template\SimpleMenuAction; use OCP\Util; - +/** + * Class LinkMenuAction + * + * @package OCP\AppFramework\Http\Template + * @since 14.0.0 + */ class ExternalShareMenuAction extends SimpleMenuAction { /** @var string */ @@ -45,6 +50,7 @@ class ExternalShareMenuAction extends SimpleMenuAction { * @param string $owner * @param string $displayname * @param string $shareName + * @since 14.0.0 */ public function __construct(string $label, string $icon, string $owner, string $displayname, string $shareName) { parent::__construct('save', $label, $icon); @@ -53,20 +59,19 @@ public function __construct(string $label, string $icon, string $owner, string $ $this->shareName = $shareName; } + /** + * @since 14.0.0 + */ public function render(): string { return '
  • ' . - '' . + '' . '' . '' . - '' . - '
  • ' . - '
  • ' . - '' . - '
    ' . + '' . '' . '' . '
    ' . - '
    ' . + '' . '
  • '; } } diff --git a/apps/files_sharing/lib/Template/LinkMenuAction.php b/lib/public/AppFramework/Http/Template/LinkMenuAction.php similarity index 90% rename from apps/files_sharing/lib/Template/LinkMenuAction.php rename to lib/public/AppFramework/Http/Template/LinkMenuAction.php index 519bc553228dd..c2b432f7d2a55 100644 --- a/apps/files_sharing/lib/Template/LinkMenuAction.php +++ b/lib/public/AppFramework/Http/Template/LinkMenuAction.php @@ -21,11 +21,17 @@ * */ -namespace OCA\Files_Sharing\Template; +namespace OCP\AppFramework\Http\Template; use OCP\AppFramework\Http\Template\SimpleMenuAction; use OCP\Util; +/** + * Class LinkMenuAction + * + * @package OCP\AppFramework\Http\Template + * @since 14.0.0 + */ class LinkMenuAction extends SimpleMenuAction { /** @@ -34,6 +40,7 @@ class LinkMenuAction extends SimpleMenuAction { * @param string $label * @param string $icon * @param string $link + * @since 14.0.0 */ public function __construct(string $label, string $icon, string $link) { parent::__construct('directLink-container', $label, $icon, $link); @@ -41,6 +48,7 @@ public function __construct(string $label, string $icon, string $link) { /** * @return string + * @since 14.0.0 */ public function render(): string { return '
  • ' . diff --git a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php index 3409d5aae5379..a520748a9ea0b 100644 --- a/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php +++ b/lib/public/AppFramework/Http/Template/PublicTemplateResponse.php @@ -37,6 +37,7 @@ class PublicTemplateResponse extends TemplateResponse { private $headerTitle = ''; private $headerDetails = ''; private $headerActions = []; + private $footerVisible = true; /** * PublicTemplateResponse constructor. @@ -128,6 +129,20 @@ public function getOtherActions(): array { return array_slice($this->headerActions, 1); } + /** + * @since 14.0.0 + */ + public function setFooterVisible(bool $visible = false) { + $this->footerVisible = $visible; + } + + /** + * @since 14.0.0 + */ + public function getFooterVisible(): bool { + return $this->footerVisible; + } + /** * @return string * @since 14.0.0 diff --git a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php index 4f9dabc60e674..61357142ae481 100644 --- a/tests/acceptance/features/bootstrap/FilesSharingAppContext.php +++ b/tests/acceptance/features/bootstrap/FilesSharingAppContext.php @@ -64,7 +64,7 @@ public static function shareMenuButton() { * @return Locator */ public static function shareMenu() { - return Locator::forThe()->id("share-menu")-> + return Locator::forThe()->id("header-actions-menu")-> describedAs("Share menu in Shared file page"); } @@ -90,7 +90,7 @@ public static function directLinkItemInShareMenu() { * @return Locator */ public static function saveItemInShareMenu() { - return Locator::forThe()->id("save")-> + return Locator::forThe()->id("save-external-share")-> descendantOf(self::shareMenu())-> describedAs("Save item in Share menu in Shared file page"); }