Merge pull request #9084 from nextcloud/public-page-template-extend

Public page template enhancements
This commit is contained in:
Morris Jobke 2018-04-06 13:16:26 +02:00 committed by GitHub
commit 2a2ab1b871
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 124 additions and 88 deletions

View file

@ -53,7 +53,5 @@ return array(
'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',
);

View file

@ -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',
);

View file

@ -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;

View file

@ -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;
}

View file

@ -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');
}
});
});

View file

@ -38,9 +38,9 @@ namespace OCA\Files_Sharing\Controller;
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;

View file

@ -30,7 +30,7 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
<?php endif; ?>
<input type="hidden" name="maxSizeAnimateGif" value="<?php p($_['maxSizeAnimateGif']); ?>" id="maxSizeAnimateGif">
<?php if (!isset($_['hideFileList']) || (isset($_['hideFileList']) && $_['hideFileList'] === false)) { ?>
<div id="content">
<div id="files-public-content">
<div id="preview">
<?php if (isset($_['folder'])): ?>
<?php print_unescaped($_['folder']); ?>
@ -84,9 +84,3 @@ $maxUploadFilesize = min($upload_max_filesize, $post_max_size);
data-url="<?php p(\OC::$server->getURLGenerator()->linkTo('files', 'ajax/upload.php')); ?>" />
</div>
<?php endif; ?>
<footer>
<p class="info">
<?php print_unescaped($theme->getLongFooter()); ?>
</p>
</footer>

View file

@ -34,9 +34,9 @@ namespace OCA\Files_Sharing\Tests\Controllers;
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;

View file

@ -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;
}
}

View file

@ -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');
}
});

View file

@ -50,13 +50,13 @@
<div class="header-right">
<span id="header-primary-action" class="<?php if($template->getActionCount() === 1) { p($primary->getIcon()); } ?>">
<a href="<?php p($primary->getLink()); ?>">
<span class="share-menutoggle-text"><?php p($primary->getLabel()) ?></span>
<span><?php p($primary->getLabel()) ?></span>
</a>
</span>
<?php if($template->getActionCount()>1) { ?>
<div id="header-secondary-action">
<span id="header-actions-toggle" class="menutoggle icon-more-white"></span>
<div id="share-menu" class="popovermenu menu">
<div id="header-actions-menu" class="popovermenu menu">
<ul>
<?php
/** @var \OCP\AppFramework\Http\Template\IMenuAction $action */
@ -76,6 +76,11 @@
<div id="content" class="app-<?php p($_['appid']) ?>" role="main">
<?php print_unescaped($_['content']); ?>
</div>
<?php if($template->getFooterVisible()) { ?>
<footer>
<p class="info"><?php print_unescaped($theme->getLongFooter()); ?></p>
</footer>
<?php } ?>
</div>
</body>

View file

@ -40,7 +40,9 @@ return array(
'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',

View file

@ -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',

View file

@ -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 <http://www.gnu.org/licenses/>.
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
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 @@ class ExternalShareMenuAction extends SimpleMenuAction {
$this->shareName = $shareName;
}
/**
* @since 14.0.0
*/
public function render(): string {
return '<li>' .
'<a id="save" data-protected="false" data-owner-display-name="' . Util::sanitizeHTML($this->displayname) . '" data-owner="' . Util::sanitizeHTML($this->owner) . '" data-name="' . Util::sanitizeHTML($this->shareName) . '">' .
'<a id="save-external-share" data-protected="false" data-owner-display-name="' . Util::sanitizeHTML($this->displayname) . '" data-owner="' . Util::sanitizeHTML($this->owner) . '" data-name="' . Util::sanitizeHTML($this->shareName) . '">' .
'<span class="icon ' . Util::sanitizeHTML($this->getIcon()) . '"></span>' .
'<label for="remote_address">' . Util::sanitizeHTML($this->getLabel()) . '</label>' .
'</a>' .
'</li>' .
'<li>' .
'<span class="menuitem">' .
'<form class="save-form" action="#">' .
'<form class="save-form hidden" action="#">' .
'<input type="text" id="remote_address" placeholder="user@yourNextcloud.org">' .
'<input type="submit" value=" " id="save-button-confirm" class="icon-confirm" disabled="disabled"></button>' .
'</form>' .
'</span>' .
'</a>' .
'</li>';
}
}

View file

@ -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 @@ class LinkMenuAction extends SimpleMenuAction {
/**
* @return string
* @since 14.0.0
*/
public function render(): string {
return '<li>' .

View file

@ -37,6 +37,7 @@ class PublicTemplateResponse extends TemplateResponse {
private $headerTitle = '';
private $headerDetails = '';
private $headerActions = [];
private $footerVisible = true;
/**
* PublicTemplateResponse constructor.
@ -128,6 +129,20 @@ class PublicTemplateResponse extends TemplateResponse {
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

View file

@ -64,7 +64,7 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
* @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 @@ class FilesSharingAppContext implements Context, ActorAwareInterface {
* @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");
}