/** * @return Nette\Templates\ITemplate */ protected function createTemplate() { $template = new Nette\Templates\FileTemplate(); $presenter = $this->getPresenter(FALSE); $template->onPrepareFilters[] = callback($this, 'templatePrepareFilters'); // default parameters $template->control = $this; $template->presenter = $presenter; $template->user = Nette\Environment::getUser(); $template->baseUri = Nette\Environment::getVariable('baseUri', NULL); $template->basePath = rtrim($template->baseUri, '/'); // flash message if ($presenter !== NULL && $presenter->hasFlashSession()) { $id = $this->getParamId('flash'); $template->flashes = $presenter->getFlashSession()->{$id}; } if (!isset($template->flashes) || !is_array($template->flashes)) { $template->flashes = array(); } // default helpers $template->registerHelper('escape', 'Nette\\Templates\\TemplateHelpers::escapeHtml'); $template->registerHelper('escapeUrl', 'rawurlencode'); $template->registerHelper('stripTags', 'strip_tags'); $template->registerHelper('nl2br', 'nl2br'); $template->registerHelper('substr', 'iconv_substr'); $template->registerHelper('repeat', 'str_repeat'); $template->registerHelper('replaceRE', 'Nette\\String::replace'); $template->registerHelper('implode', 'implode'); $template->registerHelper('number', 'number_format'); $template->registerHelperLoader('Nette\\Templates\\TemplateHelpers::loader'); return $template; }
public function initialize() { $phoneNoLength = 12; $emailLength = 32; $nameLength = 32; $surnameLength = 32; $this->addHidden('id'); $this->addHidden("password"); $this->addHidden("leagueId"); $this->addSubmit('submitButton', "system.forms.submitButton.label"); $this->addGroup('Osobní údaje'); $this->addText('nick', 'Přezdívka', 16, 16)->addRule(Form::FILLED, 'Není zadáno příjmení')->setRequired(TRUE); $this->addText('name', 'Jméno', $nameLength, $nameLength)->addRule(Form::FILLED, 'Není zadáno jméno')->setRequired(TRUE); $this->addText('surname', 'Příjmení', $surnameLength, $surnameLength)->addRule(Form::FILLED, 'Není zadáno příjmení')->setRequired(TRUE); $this->addText('birthNumber', 'Rodné číslo', 10, 10)->addRule(Form::FILLED, 'Není zadáno rodné číslo')->addRule(Form::NUMERIC, 'Rodné číslo musí obsahovat pouze čísla')->addRule(Form::LENGTH, 'Rodné číslo musí být dlouhé 10 znaků', 10)->setRequired(TRUE); $this->addGroup('Adresa trvalého bydliště'); $this->addText('street', 'Ulice')->addRule(Form::FILLED, 'Pole "Adresa" je povinné')->setRequired(TRUE); $this->addText('number', 'Číslo popisné a orientační')->addRule(Form::FILLED, "Pole 'Číslo popisné a orientační' je povinné")->setRequired(TRUE); $this->addText('city', 'Město/Obec')->addRule(Form::FILLED, 'Pole "Město" je povinné')->setRequired(TRUE); $this->addText('postCode', 'PSČ', 5, 5)->addRule(Form::FILLED, 'Pole "PSČ" je povinné')->addRule(Form::NUMERIC, 'PSČ musí obsahovat pouze čísla')->addRule(Form::LENGTH, 'PSČ musí být dlouhé 5 znaků', 5)->setRequired(TRUE); $this->addGroup('Kontakt'); $this->addText('phone', 'Telefon', $phoneNoLength, $phoneNoLength)->addRule(Form::FILLED, 'Není zadáno telefonní číslo')->addRule(Form::NUMERIC, 'Telefonní číslo musí obsahovat pouze čísla')->addRule(Form::LENGTH, "Telefon musí obsahovat {$phoneNoLength} znaků", $phoneNoLength)->setRequired(TRUE); $this->addText('email', 'E-mail', $emailLength, $emailLength)->addRule(Form::FILLED, 'Není zadáno příjmení')->addRule(Form::EMAIL, 'Špatný formát emailu')->setRequired(TRUE); $this->addText('job', 'Zaměstnání')->addRule(Form::FILLED, 'Není zadáné zaměstnání')->setRequired(TRUE); $this->addGroup('Kontaktní osoba'); $this->addText('contPersonName', 'Jméno', $surnameLength, $surnameLength); $this->addText('contPersonPhone', 'Telefon', $phoneNoLength, $phoneNoLength)->addCondition(Form::FILLED)->addRule(Form::LENGTH, "Telefonní číslo musí mít max {$phoneNoLength} znaků", $phoneNoLength)->addRule(Form::NUMERIC, 'Telefonní číslo musí obsahovat pouze čísla'); $this->addText('contPersonMail', 'E-mail', $emailLength, $emailLength)->addCondition(Form::FILLED)->addRule(Form::EMAIL, 'Špatný formát emailu'); $this->onSuccess[] = callback($this->presenter, 'userFormSuccess'); }
/** * Call to undefined method. * @param object * @param string method name * @param array arguments * @return mixed * @throws MemberAccessException */ public static function call($_this, $name, $args) { $class = new NClassReflection($_this); if ($name === '') { throw new MemberAccessException("Call to class '$class->name' method without name."); } // event functionality if ($class->hasEventProperty($name)) { if (is_array($list = $_this->$name) || $list instanceof Traversable) { foreach ($list as $handler) { callback($handler)->invokeArgs($args); } } return NULL; } // extension methods if ($cb = $class->getExtensionMethod($name)) { array_unshift($args, $_this); return $cb->invokeArgs($args); } throw new MemberAccessException("Call to undefined method $class->name::$name()."); }
protected function createComponentForm() { $form = new Nette\Application\UI\Form(); $addEventHandler = callback($this, 'handleAddItem'); $removeEventHandler = callback($this, 'handleRemoveItem'); $form->addGroup('Footer menu'); $form->addDynamic('sections', function (Container $column) use($removeEventHandler, $addEventHandler) { $column->addText('title', 'Column Title')->getControlPrototype()->addClass('col-sm-5')->addAttributes(['placeholder' => 'Column Title']); $column->addDynamic('menuItems', function (Container $menuItems) use($removeEventHandler) { $menuItems->addText('text', 'Text')->getControlPrototype()->addClass('col-sm-5')->addAttributes(['placeholder' => 'Text']); $menuItems->addText('url', 'Url')->getControlPrototype()->addClass('col-sm-5')->addAttributes(['placeholder' => 'Url']); $menuItems->addSubmit('remove', '-')->setValidationScope(false)->setAttribute('class', 'btn-danger btn-sm')->setAttribute('data-replicator-item-remove', 'yes')->addRemoveOnClick($removeEventHandler); $this->controlsInit($menuItems); }, 1, true)->addSubmit('add', '+')->setValidationScope(false)->setAttribute('class', 'btn btn-success btn-sm')->addCreateOnClick(true, $addEventHandler); $column->addSubmit('remove', '-')->setValidationScope(false)->setAttribute('class', 'btn-sm btn-danger')->setAttribute('data-replicator-item-remove', 'yes')->addRemoveOnClick($removeEventHandler); $this->controlsInit($column); }, 2, true)->addSubmit('add', '+')->setValidationScope(false)->setAttribute('class', 'btn btn-sm btn-success')->addCreateOnClick(true, $addEventHandler); $form->addGroup(); $form->addSubmit('submit', 'Save'); $form->addSubmit('cancel', 'Cancel'); $this->controlsInit($form); $form->getElementPrototype()->addClass('form-horizontal'); $form->onSuccess[] = $this->processForm; $form->setRenderer(new Bs3FormRenderer()); return $form; }
protected function createComponentCourseRegistration() { $msgNameReq = "Zadejte prosím jméno a příjmení."; $msgEmailReq = "Zadejte prosím emailovou adresu."; $msgPhoneReq = "Zadejte prosím telefonní číslo."; $msgPhoneBad = "Telefon není správně vyplněn."; $msgDateReq = "Vyberte prosím termín akce."; $persons = array('1 osoba', '2 osoby', '3 osoby', '4 osoby', '5 osob'); $dates = array(); foreach ($this->context->parameters['courses'][$this->course]['dates'] as $date) { $dates[] = $this->template->date($date['date'], '%d.%m.%Y'); } $form = new Form(); $form->addText('name', 'Jméno', NULL, 60)->setAttribute('placeholder', 'Jméno a příjmení')->setAttribute('tabindex', 1)->addRule(~$form::EQUAL, $msgNameReq, $form['name']->control->attrs['placeholder'])->setRequired($msgNameReq); $form->addText('email', 'Email', NULL, 40)->setAttribute('placeholder', 'Email')->setAttribute('tabindex', 2)->addRule(~$form::EQUAL, $msgEmailReq, $form['email']->control->attrs['placeholder'])->setRequired($msgEmailReq)->addRule(Form::EMAIL, '%label není správně vyplněn.'); $form->addText('phone', 'Telefon', NULL, 9)->setAttribute('placeholder', 'Telefon')->setAttribute('tabindex', 3)->addRule(~$form::EQUAL, $msgPhoneReq, $form['phone']->control->attrs['placeholder'])->setRequired($msgPhoneReq)->addRule(Form::INTEGER, $msgPhoneBad)->addRule(Form::LENGTH, $msgPhoneBad, 9); $form->addSelect('date', 'Termín konání')->setPrompt('Zvolte termín konání')->setItems($dates)->setRequired($msgDateReq); if (count($dates) == 1) { $form['date']->setDefaultValue(0); } $form->addSelect('person', 'Počet')->setItems($persons, FALSE); $form->addTextArea('note', 'Poznámka', NULL)->setAttribute('placeholder', 'Jakýkoli dotaz nebo zpráva.')->setAttribute('tabindex', 4)->addRule(Form::MAX_LENGTH, 'Poznámka může obsahovat maximálně 1000 znaků.', 1000); $form->addSubmit('send', 'Odeslat')->setAttribute('tabindex', 5)->setAttribute('class', 'button'); $form->addSubmit('storno', 'Storno')->setAttribute('tabindex', 6)->setValidationScope(NULL)->setAttribute('class', 'button'); $form->addHidden('spamtest')->addRule($form::EQUAL, 'Robot', array(NULL)); $form->onSuccess[] = callback($this, 'submitRegistration'); return $form; }
public function __construct($parent, $name) { parent::__construct($parent, $name); $roles = $parent->getModelAcl()->getRolesSelectData(); $this->addText('login', 'Login')->addRule(Form::FILLED, 'Zadejte login'); $this->addText('email', 'E-mail')->addRule(Form::FILLED, 'Zadejte email')->addRule(Form::EMAIL); $this->addSelect('role', 'Role', $roles)->setRequired('Vyberte roli'); $this->addPassword('password', 'Heslo'); $this->addPassword('passwordVerify', 'Heslo znovu'); switch ($this->getPresenter()->getAction()) { case 'add': $this->addSubmit('send', 'Vytvořit'); $this['password']->addRule(Form::FILLED); $this['passwordVerify']->setRequired('Zadejte prosím heslo ještě jednou pro kontrolu')->addRule(Form::EQUAL, 'Hesla se neshodují', $this['password']); $validatorParams = array('userId' => NULL); $this['login']->addRule(callback($this, 'loginUniqueValidator'), 'Login musí být unikátní', $validatorParams); $this->onSuccess[] = array($this, 'addformSubmited'); break; case 'edit': // edit $this['passwordVerify']->addConditionOn($this['password'], Form::FILLED, TRUE)->addRule(Form::EQUAL, 'Hesla se neshodují', $this['password']); $userId = $this->presenter->getParam('user_id'); $this->addHidden('user_id', $userId); $validatorParams = array('userId' => $this['user_id']->value); $this['login']->addRule(callback($this, 'loginUniqueValidator'), 'Login musí být unikátní', $validatorParams); $defaults = $this->getPresenter()->getModelUser()->getUserDefaults($userId); $this->addSubmit('send', 'Upravit'); $this->onSuccess[] = array($this, 'editFormSubmited'); $this->setDefaults($defaults); break; } $this['send']->getControlPrototype()->class = "submit"; }
/** * Register MFU into Nette */ public static function register() { self::init(); $application = Environment::getApplication(); $application->onStartup[] = callback(__CLASS__, "handleUploads"); $application->onShutdown[] = callback(__CLASS__, "cleanCache"); }
/** * @param Nette\Application\Request * @return Nette\Application\IResponse */ public function run(Application\Request $request) { $this->request = $request; $httpRequest = $this->context->httpRequest; if (!$httpRequest->isAjax() && ($request->isMethod('get') || $request->isMethod('head'))) { $refUrl = clone $httpRequest->getUrl(); $url = $this->context->router->constructUrl($request, $refUrl->setPath($refUrl->getScriptPath())); if ($url !== NULL && !$httpRequest->getUrl()->isEqual($url)) { return new Responses\RedirectResponse($url, Http\IResponse::S301_MOVED_PERMANENTLY); } } $params = $request->getParams(); if (!isset($params['callback'])) { return; } $params['presenter'] = $this; $response = callback($params['callback'])->invokeNamedArgs($params); if (is_string($response)) { $response = array($response, array()); } if (is_array($response)) { if ($response instanceof \SplFileInfo) { $response = $this->createTemplate('Nette\\Templating\\FileTemplate')->setParams($response[1])->setFile($response[0]); } else { $response = $this->createTemplate('Nette\\Templating\\Template')->setParams($response[1])->setSource($response[0]); } } if ($response instanceof Nette\Templating\ITemplate) { return new Responses\TextResponse($response); } else { return $response; } }
/** * HelperLoader */ public static function loader($helper) { $callback = callback(__CLASS__, $helper); if ($callback->isCallable()) { return $callback; } }
protected function createComponentGrid($name) { $grid = new \App\Grids\baseGrid($this, $name); $grid->model = $this->model; $grid->addColumnText('firstname', 'Jméno')->setSortable()->setFilterText(); $grid->addColumnText('lastname', 'Příjmení')->setSortable()->setFilterText(); $grid->addColumnText('gender', 'Pohlaví')->setSortable()->setReplacement($grid::$genderReplacements)->setFilterSelect($grid::$genderFilters); $grid->addColumnDate('birthdate', 'Narození')->setSortable()->setFilterDate(); $grid->addColumnText('email', 'Email')->setSortable()->setFilterText(); $grid->addColumnText('imap_username', 'Školní login')->setSortable()->setFilterText(); $grid->addColumnText('active', 'Aktivní')->setSortable()->setReplacement($grid::$booleanReplacements)->setFilterSelect($grid::$booleanFilters); $grid->addColumnText('enabled', 'Povolený')->setSortable()->setReplacement($grid::$booleanReplacements)->setFilterSelect($grid::$booleanFilters); $grid->addActionHref("id", "Detail"); $grid->addActionHref("delete", "Odstranit")->setConfirm(function ($item) { return "Opravdu chcete odstranit uživatele {$item->firstname} {$item->lastname}?"; }); $grid->addActionHref('activate', 'Aktivovat')->setDisable(function ($item) { return $item->active == 1; }); $grid->addActionHref('deactivate', 'Deaktivovat')->setDisable(function ($item) { return $item->active == 0; }); $grid->addActionHref('enable', 'Povolit')->setDisable(function ($item) { return $item->enabled == 1; }); $grid->addActionHref('disable', 'Zablokovat')->setDisable(function ($item) { return $item->enabled == 0; }); $operations = array('delete' => 'Odstranit', 'enable' => 'Povolit', 'disable' => 'Zablokovat'); $grid->setOperation($operations, callback($this, 'gridOperationsHandler'))->setConfirm('delete', 'Opravdu chcete smazat všech %i uživatelů?'); $grid->setDefaultSort(array('lastname' => 'ASC')); return $grid; }
protected function attachHandlers($form) { if (method_exists($this, 'handleCatchError')) { $this->onCatchError[] = callback($this, 'handleCatchError'); } return parent::attachHandlers($form); }
public function initialize() { parent::initialize(); $wpStates = WebProfileStatus::getOptions(); $rows = 2; $cols = 50; $this->addHidden('id'); $this->addGroup('usersModule.admin.profileEdit'); $this->addTextArea('personalLikes', 'usersModule.webProfForm.personalLikes.label', $cols, $rows); $this->addTextArea('personalDislikes', 'usersModule.webProfForm.personalDisLikes.label', $cols, $rows); $this->addTextArea('personalInterests', 'usersModule.webProfForm.personalInterests.label', $cols, $rows); $this->addText('jerseyNumber', 'usersModule.webProfForm.jerseyNumber.label')->addRule(Form::NUMERIC, "usersModule.webProfForm.jerseyNumber.mustNumber"); $this->addTextArea('equipment', 'usersModule.webProfForm.equipment.label', $cols, $rows); $this->addTextArea('favouriteBrand', 'usersModule.webProfForm.favBrand.label', $cols, $rows); $this->addTextArea('favouriteClub', 'usersModule.webProfForm.favClub.label', $cols, $rows); $this->addTextArea('sportExperience', 'usersModule.webProfForm.experience.label', $cols, $rows); $this->addTextArea('howGotThere', 'usersModule.webProfForm.howGotThere.label', $cols, $rows); $this->addTextArea('aditionalInfo', 'usersModule.webProfForm.moreAboutMe.label', $cols, $rows); $this->addUpload("picture", "usersModule.webProfForm.picture.label"); $this->addTextArea('signature', 'usersModule.webProfForm.signature.label', $cols, $rows); $this->addCheckbox("publish", 'usersModule.webProfForm.publish.label'); $this->addSelect("status", "usersModule.webProfForm.status.label", $wpStates); $this->addSubmit('submitButton', 'system.forms.submitButton.label'); $this->onSuccess[] = callback($this->presenter, 'webProfileFormSuccess'); }
public function createComponentSearchForm($name) { $form = new Form($this, $name); $form->onSuccess[] = callback($this, $name . 'Submitted'); $form->addText('query')->setDefaultValue($this->query ?: 'Hledat...'); $form->addSubmit('s', 'Search!'); }
protected function createComponentGrid($name) { $grid = new \App\Grids\baseGrid($this, $name); if ($this->user->isInRole("administrator") || $this->user->isInRole("teacher")) { $grid->model = $this->model; } else { $grid->model = $this->model->getSelection()->where("user_id = " . $this->user->id); } $grid->addColumnText('name', 'Název')->setSortable()->setFilterText(); $grid->addColumnText('firstname', 'Jméno autora')->setSortable()->setFilterText(); $grid->addColumnText('lastname', 'Příjmení autora')->setSortable()->setFilterText(); $grid->addColumnText('class', 'Třída')->setSortable()->setFilterText(); $grid->addColumnText('year', 'Školní rok')->setSortable()->setFilterText(); $grid->addColumnText('set_name', 'Sada prací')->setSortable()->setFilterText(); $grid->addColumnText('status', 'Stav')->setSortable()->setReplacement($this->statuses)->setFilterSelect($this->statuses); $grid->addColumnDate('created_date', 'Vytvořeno')->setSortable()->setFilterDate(); $grid->addActionHref("id", "Detail"); $grid->addActionHref("application", "Přihláška"); $grid->addActionHref("delete", "Odstranit")->setConfirm(function ($item) { return "Opravdu chcete odstranit zadání práce {$item->name}?"; })->setDisable(function ($item) { if ($item->status > 0) { return true; } if (!($this->user->isInRole("administrator") || $this->user->id == $item->created_by)) { return true; } return false; }); $operations = array('delete' => 'Odstranit'); $grid->setOperation($operations, callback($this, 'gridOperationsHandler'))->setConfirm('delete', 'Opravdu chcete smazat všech %i prací?'); $grid->setDefaultSort(array('name' => 'ASC')); return $grid; }
/** * Fifteen game control factory. * @return mixed */ protected function createComponentFifteen() { $fifteen = new FifteenControl; $fifteen->onGameOver[] = callback($this, 'gameOver'); $fifteen->invalidateControl(); return $fifteen; }
protected function createComponentLoginForm($name) { $form = new MyAppForm($this, $name); if ($this->useAjax) { $form->enableAjax(); } if (!$this->useAutocomplete) { $form->getElementPrototype()->autocomplete('off'); } if (isset($this->getPresenter()->translator)) { $form->setTranslator($this->getPresenter()->translator); } if ($this->errorsAsFlashMessages) { $form->setErrorsAsFlashMessages(); } $form->addClass('loginFrm'); $form->addText('username', $this->labels['username'])->addRule(Form::FILLED, 'Enter your username!'); $form->addPassword('password', $this->labels['password'])->addRule(Form::FILLED, 'Enter your password!'); if ($this->useRemember) { $form->addCheckbox('remember', $this->labels['remember']); } // if using labelOver we need to add class to ensure label is visible with javascript disabled if ($this->useLabelOver) { $form['password']->getLabelPrototype()->class('onlyJS'); $form['username']->getLabelPrototype()->class('onlyJS'); } $form->addHidden('key'); $form->addHidden('anchor'); $form->addSubmit('ok', $this->labels['submit'])->getControlPrototype()->class[] = 'ok-button'; if ($this->useProtection) { $form->addProtection('Form validity time expired. Please send the form again.'); } $form->onSubmit[] = callback($this, 'loginFormSubmitted'); return $form; }
/** * @return string */ public function getPanel() { if (!$this->queries) { return NULL; } ob_start(); $esc = callback('Nette\\Templating\\Helpers::escapeHtml'); $click = class_exists('\\Tracy\\Dumper') ? function ($o, $c = FALSE, $d = 4) { return \Tracy\Dumper::toHtml($o, array('collapse' => $c, 'depth' => $d)); } : callback('\\Tracy\\Helpers::clickableDump'); $totalTime = $this->totalTime ? sprintf('%0.3f', $this->totalTime * 1000) . ' ms' : 'none'; $extractData = function ($object) { if ($object instanceof Elastica\Request) { $data = $object->getData(); } elseif ($object instanceof Elastica\Response) { $data = $object->getData(); } else { return array(); } try { return !is_array($data) ? Json::decode($data, Json::FORCE_ARRAY) : $data; } catch (Nette\Utils\JsonException $e) { try { return array_map(function ($row) { return Json::decode($row, Json::FORCE_ARRAY); }, explode("\n", trim($data))); } catch (Nette\Utils\JsonException $e) { return $data; } } }; $processedQueries = array(); $allQueries = $this->queries; foreach ($allQueries as $authority => $requests) { /** @var Elastica\Request[] $item */ foreach ($requests as $i => $item) { $processedQueries[$authority][$i] = $item; if (isset($item[3])) { continue; // exception, do not re-execute } if (stripos($item[0]->getPath(), '_search') === FALSE || $item[0]->getMethod() !== 'GET') { continue; // explain only search queries } if (!is_array($data = $extractData($item[0]))) { continue; } try { $response = $this->client->request($item[0]->getPath(), $item[0]->getMethod(), $item[0]->getData(), array('explain' => 1) + $item[0]->getQuery()); // replace the search response with the explained response $processedQueries[$authority][$i][1] = $response; } catch (\Exception $e) { // ignore } } } require __DIR__ . '/panel.phtml'; return ob_get_clean(); }
/** * @return Form */ protected function createComponentForm() { $form = new Form(); $form->onError[] = callback($this, "Error"); $form->onSuccess[] = callback($this, "Submit"); return $form; }
protected function createComponentPotvrditZmenuHeslaForm() { $values = array('id_osoby' => $this->id, 'klic' => $this->klic); $form = new PotvrditZmenuHeslaForm($values); $form->onSuccess[] = callback($this, 'potvrditZmenuHeslaFormSubmitted'); return $form; }
public function __construct(Presenter $parent = null, $name = null) { parent::__construct($parent, $name); $this->addText('from', 'From')->addRule(Form::EMAIL, 'Please enter a valid email.'); $this->addTextArea('text', 'Message'); $this->addSubmit('btnSend', 'Send')->onClick[] = callback($this, 'FormSent'); }
/** * @return Template */ protected function createTemplate() { /** @var Template $template */ $template = parent::createTemplate(); $template->getLatte()->addFilter('base', callback($this->helpers, 'loader')); return $template; }
/** * @param null $class * @return \Nette\Templating\ITemplate */ protected function createTemplate($class = NULL) { $template = parent::createTemplate($class); $template->setTranslator($this->translator); $template->registerHelperLoader(callback($this->helpers, 'loader')); return $template; }
/** * Adds a method to class. * @param string method name * @param mixed callback or closure * @return ClassType provides a fluent interface */ public function setExtensionMethod($name, $callback) { $l =& self::$extMethods[strtolower($name)]; $l[strtolower($this->getName())] = callback($callback); $l[''] = NULL; return $this; }
public static function addControls($container, $config) { foreach ($config as $name => $control) { if (!isset($control['type'])) { continue; } $type = $control['type']; if (isset(self::$controls[$type])) { $params = array($name); $setters = array(); foreach (self::$controls[$type] as $key => $param) { if (is_numeric($key)) { $params[] = isset($control[$param]) ? $control[$param] : null; } elseif (isset($control[$param])) { $setters[$key] = $control[$param]; } } $fctrl = call_user_func_array(callback($container, 'add' . ucfirst($type)), $params); foreach ($setters as $method => $value) { call_user_func(array($fctrl, $method), $value); } if (isset($control['required'])) { $fctrl->setRequired($control['required']); } } elseif ($type == 'container') { self::addControls($container->addContainer($name), $control); } elseif ($type == 'group') { $container->addGroup($name); } } }
/** * @param string|NULL * @return Nette\Templating\ITemplate */ protected function createTemplate($class = NULL) { $template = $class ? new $class() : new Nette\Templating\FileTemplate(); $presenter = $this->getPresenter(FALSE); $template->onPrepareFilters[] = callback($this, 'templatePrepareFilters'); $template->registerHelperLoader('Nette\\Templating\\Helpers::loader'); // default parameters $template->control = $template->_control = $this; $template->presenter = $template->_presenter = $presenter; if ($presenter instanceof Presenter) { $template->setCacheStorage($presenter->getContext()->nette->templateCacheStorage); $template->user = $presenter->getUser(); $template->netteHttpResponse = $presenter->getHttpResponse(); $template->netteCacheStorage = $presenter->getContext()->getByType('Nette\\Caching\\IStorage'); $template->baseUri = $template->baseUrl = rtrim($presenter->getHttpRequest()->getUrl()->getBaseUrl(), '/'); $template->basePath = preg_replace('#https?://[^/]+#A', '', $template->baseUrl); // flash message if ($presenter->hasFlashSession()) { $id = $this->getParameterId('flash'); $template->flashes = $presenter->getFlashSession()->{$id}; } } if (!isset($template->flashes) || !is_array($template->flashes)) { $template->flashes = array(); } return $template; }
public function __construct() { parent::__construct(); $this->tags = array(); $tags = PagesModel::getPageById(27)->getMeta('tag_options'); foreach (explode("\n", $tags) as $t) { $t = trim($t); $this->tags[$t] = $t; } $this->projects = PagesModel::getPagesByMeta("project_tag")->getPairs(''); $this->addText('username', 'OSM.org username')->setDisabled(); $this->addText('fullname', 'Celé jméno')->setOption('description', 'Ať se poznáme!')->addRule(Form::FILLED, '%label není vyplněn.')->addRule(Form::MIN_LENGTH, '%label musí mít alespoň 5 znaků.', 5); $this->addText('email', 'Talk-cz')->setOption('description', 'Email použivaný pro spočítání příspěvků v talk-cz (neveřejný)')->addRule(Form::FILLED, '%label není vyplněn.')->addRule(Form::EMAIL, '%label není validní.'); $this->addText('contact', 'Veřejný e-mail')->setOption('description', '(nepovinné)')->addCondition(Form::FILLED)->addRule(Form::EMAIL, '%label není validní.'); $this->addText('twitter', 'Twitter')->setOption('description', '(nepovinné) Uživatelské jméno bez zavináče'); $this->addText('github', 'Github')->setOption('description', '(nepovinné) Uživatelské jméno'); $this->addText('places', 'Výskyt')->setOption('description', '(nepovinné) Kde se vyskystuju - typicky jaká města.'); $this['places']->getControlPrototype()->placeholder = 'oddělené čárkou'; $this['places']->getControlPrototype()->style = 'width: 40%'; $this->addText('tags', 'Oblasti zájmu')->setOption('description', '(nepovinné)'); $this['tags']->getControlPrototype()->placeholder = 'oddělené čárkou'; $this['tags']->getControlPrototype()->style = 'width: 60%'; $this['tags']->getControlPrototype()->{'data-options'} = Json::encode(array_values($this->tags)); $this->addMultiSelect('projects', 'Projekty', $this->projects)->setOption('description', '(nepovinné) Projektovou stránku možno přidat v administraci. Případně napiš na dev@openstreetmap.cz')->getControlPrototype()->style = 'height:150px;width:40%'; $this->addCheckbox('public', 'Zveřejnit údaje na openstreetmap.cz'); $this->addSubmit('submit', 'Uložit údaje'); $this->onSuccess[] = callback($this, 'submitted'); $renderer = $this->getRenderer(); $renderer->wrappers['controls']['container'] = 'table class="table form-inline"'; $renderer->wrappers['error']['container'] = 'ul class="bg-danger"'; $renderer->wrappers['control']['.text'] = 'form-control'; $renderer->wrappers['control']['.email'] = 'form-control'; $renderer->wrappers['control']['.submit'] = 'btn btn-primary'; }
public function notifyRule(Rule $rule) { if (is_string($rule->operation) && strcasecmp($rule->operation, ':float') === 0) { $this->addFilter(callback(__CLASS__, 'filterFloat')); } parent::notifyRule($rule); }
protected function createTemplate($class = NULL) { $template = parent::createTemplate($class); $template->addFilter('texy', callback($this->texy, 'process')); $template->addFilter('timeAgo', 'Helpers::timeAgoInWords'); return $template; }
/** * Invoke all cron methods */ private function invoke(array $methods) { foreach ($methods as $method) { Debugger::barDump($method->annotations, $method->name); $instance = $this->context->createInstance($method->class); callback($instance, $method->name)->invokeArgs([$this->context, $this->getParameters()]); } }
protected function createComponentPolozkaForm($name) { $form = new Form(); $form->addText('nazov', 'Nazov'); $form->addSubmit('uloz', 'Uloz')->onClick[] = callback($this, 'nazovFormSubmitted'); $form->addSubmit('cancel', 'Storno')->onClick[] = callback($this, 'cancelFormSubmitted'); return $form; }