From 49970639faecbf5acd24b2b84e5df1a8fa9c746a Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Thu, 16 Jul 2020 15:47:28 +0200 Subject: [PATCH] Add constants for the magic strings of template rendering Signed-off-by: Joas Schilling --- lib/private/TemplateLayout.php | 13 ++++--- lib/private/legacy/OC_Template.php | 5 ++- .../AppFramework/Http/TemplateResponse.php | 37 +++++++++++++++++-- 3 files changed, 44 insertions(+), 11 deletions(-) diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 1fbf0acb99c..69eb26ab8b2 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -48,6 +48,7 @@ use OC\AppFramework\Http\Request; use OC\Template\JSCombiner; use OC\Template\JSConfigHelper; use OC\Template\SCSSCacher; +use OCP\AppFramework\Http\TemplateResponse; use OCP\Defaults; use OCP\IInitialStateService; use OCP\Support\Subscription\IRegistry; @@ -74,7 +75,7 @@ class TemplateLayout extends \OC_Template { } // Decide which page we show - if ($renderAs === 'user') { + if ($renderAs === TemplateResponse::RENDER_AS_USER) { parent::__construct('core', 'layout.user'); if (in_array(\OC_App::getCurrentApp(), ['settings','admin', 'help']) !== false) { $this->assign('bodyid', 'body-settings'); @@ -123,12 +124,12 @@ class TemplateLayout extends \OC_Template { } catch (\OCP\AutoloadNotAllowedException $e) { $this->assign('themingInvertMenu', false); } - } elseif ($renderAs === 'error') { + } elseif ($renderAs === TemplateResponse::RENDER_AS_ERROR) { parent::__construct('core', 'layout.guest', '', false); $this->assign('bodyid', 'body-login'); $this->assign('user_displayname', ''); $this->assign('user_uid', ''); - } elseif ($renderAs === 'guest') { + } elseif ($renderAs === TemplateResponse::RENDER_AS_GUEST) { parent::__construct('core', 'layout.guest'); \OC_Util::addStyle('guest'); $this->assign('bodyid', 'body-login'); @@ -136,7 +137,7 @@ class TemplateLayout extends \OC_Template { $userDisplayName = \OC_User::getDisplayName(); $this->assign('user_displayname', $userDisplayName); $this->assign('user_uid', \OC_User::getUser()); - } elseif ($renderAs === 'public') { + } elseif ($renderAs === TemplateResponse::RENDER_AS_PUBLIC) { parent::__construct('core', 'layout.public'); $this->assign('appid', $appId); $this->assign('bodyid', 'body-public'); @@ -172,7 +173,7 @@ class TemplateLayout extends \OC_Template { // Add the js files $jsFiles = self::findJavascriptFiles(\OC_Util::$scripts); $this->assign('jsfiles', []); - if ($this->config->getSystemValue('installed', false) && $renderAs != 'error') { + if ($this->config->getSystemValue('installed', false) && $renderAs != TemplateResponse::RENDER_AS_ERROR) { if (\OC::$server->getContentSecurityPolicyNonceManager()->browserSupportsCspV3()) { $jsConfigHelper = new JSConfigHelper( \OC::$server->getL10N('lib'), @@ -210,7 +211,7 @@ class TemplateLayout extends \OC_Template { && !\OCP\Util::needUpgrade() && $pathInfo !== '' && !preg_match('/^\/login/', $pathInfo) - && $renderAs !== 'error' + && $renderAs !== TemplateResponse::RENDER_AS_ERROR ) { $cssFiles = self::findStylesheetFiles(\OC_Util::$styles); } else { diff --git a/lib/private/legacy/OC_Template.php b/lib/private/legacy/OC_Template.php index 856d5491090..32d185d25fd 100644 --- a/lib/private/legacy/OC_Template.php +++ b/lib/private/legacy/OC_Template.php @@ -39,6 +39,7 @@ */ use OC\TemplateLayout; +use OCP\AppFramework\Http\TemplateResponse; require_once __DIR__.'/template/functions.php'; @@ -72,7 +73,7 @@ class OC_Template extends \OC\Template\Base { * "admin". * @param bool $registerCall = true */ - public function __construct($app, $name, $renderAs = "", $registerCall = true) { + public function __construct($app, $name, $renderAs = TemplateResponse::RENDER_AS_BLANK, $registerCall = true) { // Read the selected theme from the config file self::initTemplateEngine($renderAs); @@ -104,7 +105,7 @@ class OC_Template extends \OC\Template\Base { //apps that started before the template initialization can load their own scripts/styles //so to make sure this scripts/styles here are loaded first we use OC_Util::addScript() with $prepend=true //meaning the last script/style in this list will be loaded first - if (\OC::$server->getSystemConfig()->getValue('installed', false) && $renderAs !== 'error' && !\OCP\Util::needUpgrade()) { + if (\OC::$server->getSystemConfig()->getValue('installed', false) && $renderAs !== TemplateResponse::RENDER_AS_ERROR && !\OCP\Util::needUpgrade()) { if (\OC::$server->getConfig()->getAppValue('core', 'backgroundjobs_mode', 'ajax') == 'ajax') { OC_Util::addScript('backgroundjobs', null, true); } diff --git a/lib/public/AppFramework/Http/TemplateResponse.php b/lib/public/AppFramework/Http/TemplateResponse.php index 48e6c43411f..9622d9696dc 100644 --- a/lib/public/AppFramework/Http/TemplateResponse.php +++ b/lib/public/AppFramework/Http/TemplateResponse.php @@ -38,6 +38,27 @@ namespace OCP\AppFramework\Http; * @since 6.0.0 */ class TemplateResponse extends Response { + /** + * @since 20.0.0 + */ + public const RENDER_AS_GUEST = 'guest'; + /** + * @since 20.0.0 + */ + public const RENDER_AS_BLANK = ''; + /** + * @since 20.0.0 + */ + public const RENDER_AS_USER = 'user'; + /** + * @since 20.0.0 + */ + public const RENDER_AS_ERROR = 'error'; + /** + * @since 20.0.0 + */ + public const RENDER_AS_PUBLIC = 'public'; + /** * @deprecated 20.0.0 use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent */ @@ -81,7 +102,7 @@ class TemplateResponse extends Response { * @since 6.0.0 - parameters $params and $renderAs were added in 7.0.0 */ public function __construct($appName, $templateName, array $params=[], - $renderAs='user') { + $renderAs = self::RENDER_AS_USER) { parent::__construct(); $this->templateName = $templateName; @@ -160,8 +181,18 @@ class TemplateResponse extends Response { * @since 6.0.0 */ public function render() { - // \OCP\Template needs an empty string instead of 'blank' for an unwrapped response - $renderAs = $this->renderAs === 'blank' ? '' : $this->renderAs; + $renderAs = self::RENDER_AS_USER; + if ($this->renderAs === 'blank') { + // Legacy fallback as \OCP\Template needs an empty string instead of 'blank' for an unwrapped response + $renderAs = self::RENDER_AS_BLANK; + } elseif (in_array($this->renderAs, [ + self::RENDER_AS_GUEST, + self::RENDER_AS_BLANK, + self::RENDER_AS_ERROR, + self::RENDER_AS_PUBLIC, + self::RENDER_AS_USER], true)) { + $renderAs = $this->renderAs; + } \OCP\Util::addHeader('meta', ['name' => 'robots', 'content' => 'noindex, nofollow']); $template = new \OCP\Template($this->appName, $this->templateName, $renderAs); -- 2.39.5