2013-08-17 13:16:48 +04:00
|
|
|
<?php
|
|
|
|
/**
|
2016-07-21 18:07:57 +03:00
|
|
|
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
|
|
|
*
|
2015-03-26 13:44:34 +03:00
|
|
|
* @author Bernhard Posselt <dev@bernhard-posselt.com>
|
2020-03-31 11:49:10 +03:00
|
|
|
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
2020-08-24 15:54:25 +03:00
|
|
|
* @author Joas Schilling <coding@schilljs.com>
|
2019-12-03 21:57:53 +03:00
|
|
|
* @author Julius Härtl <jus@bitgrid.net>
|
2015-03-26 13:44:34 +03:00
|
|
|
* @author Morris Jobke <hey@morrisjobke.de>
|
2019-12-03 21:57:53 +03:00
|
|
|
* @author Roeland Jago Douma <roeland@famdouma.nl>
|
2015-03-26 13:44:34 +03:00
|
|
|
* @author Thomas Müller <thomas.mueller@tmit.eu>
|
|
|
|
* @author Thomas Tanghus <thomas@tanghus.net>
|
2013-08-17 13:16:48 +04:00
|
|
|
*
|
2015-03-26 13:44:34 +03:00
|
|
|
* @license AGPL-3.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*
|
2015-03-26 13:44:34 +03:00
|
|
|
* This code is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Affero General Public License, version 3,
|
|
|
|
* as published by the Free Software Foundation.
|
2013-08-17 13:16:48 +04:00
|
|
|
*
|
2015-03-26 13:44:34 +03:00
|
|
|
* This program is distributed in the hope that it will be useful,
|
2013-08-17 13:16:48 +04:00
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2015-03-26 13:44:34 +03:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Affero General Public License for more details.
|
2013-08-17 13:16:48 +04:00
|
|
|
*
|
2015-03-26 13:44:34 +03:00
|
|
|
* You should have received a copy of the GNU Affero General Public License, version 3,
|
2019-12-03 21:57:53 +03:00
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
2013-08-17 13:16:48 +04:00
|
|
|
*
|
|
|
|
*/
|
2015-02-26 13:37:37 +03:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Public interface of ownCloud for apps to use.
|
|
|
|
* AppFramework\HTTP\TemplateResponse class
|
|
|
|
*/
|
|
|
|
|
2013-08-21 03:00:26 +04:00
|
|
|
namespace OCP\AppFramework\Http;
|
2013-08-17 13:16:48 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Response for a normal template
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
|
|
|
class TemplateResponse extends Response {
|
2020-07-16 16:47:28 +03:00
|
|
|
/**
|
|
|
|
* @since 20.0.0
|
|
|
|
*/
|
|
|
|
public const RENDER_AS_GUEST = 'guest';
|
|
|
|
/**
|
|
|
|
* @since 20.0.0
|
|
|
|
*/
|
|
|
|
public const RENDER_AS_BLANK = '';
|
2020-08-04 08:51:14 +03:00
|
|
|
/**
|
|
|
|
* @since 20.0.0
|
|
|
|
*/
|
|
|
|
public const RENDER_AS_BASE = 'base';
|
2020-07-16 16:47:28 +03:00
|
|
|
/**
|
|
|
|
* @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';
|
|
|
|
|
2020-07-13 23:29:14 +03:00
|
|
|
/**
|
|
|
|
* @deprecated 20.0.0 use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent
|
|
|
|
*/
|
2020-04-10 17:54:27 +03:00
|
|
|
public const EVENT_LOAD_ADDITIONAL_SCRIPTS = self::class . '::loadAdditionalScripts';
|
2020-07-13 23:29:14 +03:00
|
|
|
/**
|
|
|
|
* @deprecated 20.0.0 use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent
|
|
|
|
*/
|
2020-04-10 17:54:27 +03:00
|
|
|
public const EVENT_LOAD_ADDITIONAL_SCRIPTS_LOGGEDIN = self::class . '::loadAdditionalScriptsLoggedIn';
|
2019-01-29 23:23:59 +03:00
|
|
|
|
2013-11-25 19:28:24 +04:00
|
|
|
/**
|
|
|
|
* name of the template
|
|
|
|
* @var string
|
|
|
|
*/
|
2013-08-17 13:16:48 +04:00
|
|
|
protected $templateName;
|
2013-11-25 19:28:24 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* parameters
|
|
|
|
* @var array
|
|
|
|
*/
|
2013-08-17 13:16:48 +04:00
|
|
|
protected $params;
|
2013-11-25 19:28:24 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* rendering type (admin, user, blank)
|
|
|
|
* @var string
|
|
|
|
*/
|
2013-08-17 13:16:48 +04:00
|
|
|
protected $renderAs;
|
2013-11-25 19:28:24 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* app name
|
|
|
|
* @var string
|
|
|
|
*/
|
2013-08-17 13:16:48 +04:00
|
|
|
protected $appName;
|
|
|
|
|
|
|
|
/**
|
2013-11-25 19:28:24 +04:00
|
|
|
* constructor of TemplateResponse
|
2013-10-07 02:33:54 +04:00
|
|
|
* @param string $appName the name of the app to load the template from
|
2013-11-25 19:28:24 +04:00
|
|
|
* @param string $templateName the name of the template
|
2014-05-06 18:29:19 +04:00
|
|
|
* @param array $params an array of parameters which should be passed to the
|
|
|
|
* template
|
|
|
|
* @param string $renderAs how the page should be rendered, defaults to user
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0 - parameters $params and $renderAs were added in 7.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-03-26 11:30:18 +03:00
|
|
|
public function __construct($appName, $templateName, array $params=[],
|
2020-07-16 16:47:28 +03:00
|
|
|
$renderAs = self::RENDER_AS_USER) {
|
2019-04-03 19:42:34 +03:00
|
|
|
parent::__construct();
|
|
|
|
|
2013-08-17 13:16:48 +04:00
|
|
|
$this->templateName = $templateName;
|
|
|
|
$this->appName = $appName;
|
2014-05-06 18:29:19 +04:00
|
|
|
$this->params = $params;
|
|
|
|
$this->renderAs = $renderAs;
|
2019-04-03 19:42:34 +03:00
|
|
|
|
|
|
|
$this->setContentSecurityPolicy(new ContentSecurityPolicy());
|
2019-07-27 16:33:55 +03:00
|
|
|
$this->setFeaturePolicy(new FeaturePolicy());
|
2013-08-17 13:16:48 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets template parameters
|
|
|
|
* @param array $params an array with key => value structure which sets template
|
|
|
|
* variables
|
2014-03-10 12:31:30 +04:00
|
|
|
* @return TemplateResponse Reference to this object
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0 - return value was added in 7.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-04-09 14:53:40 +03:00
|
|
|
public function setParams(array $params) {
|
2013-08-17 13:16:48 +04:00
|
|
|
$this->params = $params;
|
2014-03-10 02:01:16 +04:00
|
|
|
|
|
|
|
return $this;
|
2013-08-17 13:16:48 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Used for accessing the set parameters
|
|
|
|
* @return array the params
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-04-09 14:53:40 +03:00
|
|
|
public function getParams() {
|
2013-08-17 13:16:48 +04:00
|
|
|
return $this->params;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Used for accessing the name of the set template
|
|
|
|
* @return string the name of the used template
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-04-09 14:53:40 +03:00
|
|
|
public function getTemplateName() {
|
2013-08-17 13:16:48 +04:00
|
|
|
return $this->templateName;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the template page
|
|
|
|
* @param string $renderAs admin, user or blank. Admin also prints the admin
|
|
|
|
* settings header and footer, user renders the normal
|
|
|
|
* normal page including footer and header and blank
|
|
|
|
* just renders the plain template
|
2014-03-10 12:31:30 +04:00
|
|
|
* @return TemplateResponse Reference to this object
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0 - return value was added in 7.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-04-09 14:53:40 +03:00
|
|
|
public function renderAs($renderAs) {
|
2013-08-17 13:16:48 +04:00
|
|
|
$this->renderAs = $renderAs;
|
2014-03-10 02:01:16 +04:00
|
|
|
|
|
|
|
return $this;
|
2013-08-17 13:16:48 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the set renderAs
|
|
|
|
* @return string the renderAs value
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-04-09 14:53:40 +03:00
|
|
|
public function getRenderAs() {
|
2013-08-17 13:16:48 +04:00
|
|
|
return $this->renderAs;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the rendered html
|
|
|
|
* @return string the rendered html
|
2015-04-16 18:00:08 +03:00
|
|
|
* @since 6.0.0
|
2013-08-17 13:16:48 +04:00
|
|
|
*/
|
2020-04-09 14:53:40 +03:00
|
|
|
public function render() {
|
2020-07-16 16:47:28 +03:00
|
|
|
$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,
|
2020-08-04 08:51:14 +03:00
|
|
|
self::RENDER_AS_BASE,
|
2020-07-16 16:47:28 +03:00
|
|
|
self::RENDER_AS_ERROR,
|
|
|
|
self::RENDER_AS_PUBLIC,
|
|
|
|
self::RENDER_AS_USER], true)) {
|
|
|
|
$renderAs = $this->renderAs;
|
|
|
|
}
|
2013-08-17 13:16:48 +04:00
|
|
|
|
2020-06-15 14:50:30 +03:00
|
|
|
\OCP\Util::addHeader('meta', ['name' => 'robots', 'content' => 'noindex, nofollow']);
|
2014-07-26 02:04:49 +04:00
|
|
|
$template = new \OCP\Template($this->appName, $this->templateName, $renderAs);
|
2013-08-17 13:16:48 +04:00
|
|
|
|
2020-04-10 15:19:56 +03:00
|
|
|
foreach ($this->params as $key => $value) {
|
2013-08-17 13:16:48 +04:00
|
|
|
$template->assign($key, $value);
|
|
|
|
}
|
|
|
|
|
2018-01-25 21:14:27 +03:00
|
|
|
return $template->fetchPage($this->params);
|
2013-08-17 13:16:48 +04:00
|
|
|
}
|
|
|
|
}
|