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