Source for file Control.php
Documentation is available at Control.php
6: * @copyright Copyright (c) 2004, 2010 David Grudl
7: * @license http://nettephp.com/license Nette license
8: * @link http://nettephp.com
10: * @package Nette\Application
16: * Control is renderable component.
18: * @copyright Copyright (c) 2004, 2010 David Grudl
19: * @package Nette\Application
21: * @property-read ITemplate $template
25: /** @var ITemplate */
29: private $invalidSnippets =
array();
33: /********************* template factory ****************d*g**/
42: if ($this->template ===
NULL) {
44: if (!($value instanceof
ITemplate ||
$value ===
NULL)) {
46: throw new UnexpectedValueException("Object returned by {$this->reflection->name}::createTemplate() must be instance of Nette\\Templates\\ITemplate, '
$class' given.
");
48: $this->template =
$value;
50: return $this->template;
62: $template->onPrepareFilters[] =
array($this, 'templatePrepareFilters');
64: // default parameters
65: $template->component =
$this; // DEPRECATED!
66: $template->control =
$this;
67: $template->presenter =
$presenter;
69: $template->basePath =
rtrim($template->baseUri, '/');
72: if ($presenter !==
NULL &&
$presenter->hasFlashSession()) {
74: $template->flashes =
$presenter->getFlashSession()->$id;
76: if (!isset($template->flashes) ||
!is_array($template->flashes)) {
77: $template->flashes =
array();
81: $template->registerHelper('escape', 'Nette\Templates\TemplateHelpers::escapeHtml');
82: $template->registerHelper('escapeUrl', 'rawurlencode');
83: $template->registerHelper('stripTags', 'strip_tags');
84: $template->registerHelper('nl2br', 'nl2br');
85: $template->registerHelper('substr', 'iconv_substr');
86: $template->registerHelper('repeat', 'str_repeat');
87: $template->registerHelper('implode', 'implode');
88: $template->registerHelper('number', 'number_format');
89: $template->registerHelperLoader('Nette\Templates\TemplateHelpers::loader');
97: * Descendant can override this method to customize template compile-time filters.
110: * Returns widget component specified by name.
112: * @return IComponent
122: * Saves the message to template, that can be displayed after redirect.
131: $messages[] =
$flash = (object)
array(
132: 'message' =>
$message,
142: /********************* rendering ****************d*g**/
147: * Forces control or its snippet to repaint.
153: $this->invalidSnippets[$snippet] =
TRUE;
159: * Allows control or its snippet to not repaint.
165: if ($snippet ===
NULL) {
166: $this->invalidSnippets =
array();
169: unset($this->invalidSnippets[$snippet]);
176: * Is required to repaint the control or its snippet?
177: * @param string snippet name
182: if ($snippet ===
NULL) {
183: if (count($this->invalidSnippets) >
0) {
188: if ($component instanceof
IRenderable &&
$component->isControlInvalid()) {
189: // $this->invalidSnippets['__child'] = TRUE; // as cache
197: return isset($this->invalidSnippets[NULL]) ||
isset($this->invalidSnippets[$snippet]);
204: * Returns snippet HTML ID.
205: * @param string snippet name
210: // HTML 4 ID & NAME: [A-Za-z][A-Za-z0-9:_.-]*