Source for file Control.php
Documentation is available at Control.php
6: * Copyright (c) 2004, 2009 David Grudl (http://davidgrudl.com)
8: * This source file is subject to the "Nette license" that is bundled
9: * with this package in the file license.txt.
11: * For more information please see https://nette.org
13: * @copyright Copyright (c) 2004, 2009 David Grudl
14: * @license https://nette.org/license Nette license
15: * @link https://nette.org
17: * @package Nette\Application
23: require_once dirname(__FILE__) .
'/../Application/PresenterComponent.php';
25: require_once dirname(__FILE__) .
'/../Application/IRenderable.php';
30: * Control is renderable component.
32: * @author David Grudl
33: * @copyright Copyright (c) 2004, 2009 David Grudl
34: * @package Nette\Application
38: /** @var ITemplate */
42: private $invalidSnippets =
array();
46: /********************* template factory ****************d*g**/
55: if ($this->template ===
NULL) {
57: if (!($value instanceof
ITemplate ||
$value ===
NULL)) {
59: throw new UnexpectedValueException("Object returned by $this->class::createTemplate() must be instance of Nette\\Templates\\ITemplate, '$class' given.");
61: $this->template =
$value;
63: return $this->template;
76: // default parameters
77: $template->component =
$this; // DEPRECATED!
78: $template->control =
$this;
79: $template->presenter =
$presenter;
83: if ($presenter !==
NULL &&
$presenter->hasFlashSession()) {
85: $template->flashes =
$presenter->getFlashSession()->$id;
87: if (!isset($template->flashes) ||
!is_array($template->flashes)) {
88: $template->flashes =
array();
92: $template->registerHelper('escape', 'Nette\Templates\TemplateHelpers::escapeHtml');
93: $template->registerHelper('cache', 'Nette\Templates\CachingHelper::create');
94: $template->registerHelper('snippet', 'Nette\Templates\SnippetHelper::create');
95: $template->registerHelper('stripTags', 'strip_tags');
96: $template->registerHelper('nl2br', 'nl2br');
97: $template->registerHelperLoader('Nette\Templates\TemplateHelpers::loader');
105: * Saves the message to template, that can be displayed after redirect.
114: $messages[] =
$flash = (object)
array(
115: 'message' =>
$message,
125: /********************* rendering ****************d*g**/
130: * Forces control or its snippet to repaint.
136: $this->invalidSnippets[$snippet] =
TRUE;
142: * Allows control or its snippet to not repaint.
148: if ($snippet ===
NULL) {
149: $this->invalidSnippets =
array();
152: unset($this->invalidSnippets[$snippet]);
159: * Is required to repaint the control or its snippet?
160: * @param string snippet name
165: if ($snippet ===
NULL) {
166: if (count($this->invalidSnippets) >
0) {
171: if ($component instanceof
IRenderable &&
$component->isControlInvalid()) {
172: // $this->invalidSnippets['__child'] = TRUE; // as cache
180: return isset($this->invalidSnippets[NULL]) ||
isset($this->invalidSnippets[$snippet]);
187: * Returns snippet HTML ID.
188: * @param string snippet name
193: // HTML 4 ID & NAME: [A-Za-z][A-Za-z0-9:_.-]*