public function __construct($mask, $metadata = [], Languages $languages) { if (count($languages->getLanguages()) > 1) { $mask = $this->languageMask . $mask; if (!isset(Route::$styles['lang'])) { Route::addStyle('lang'); Route::setStyleProperty('lang', Route::FILTER_IN, function ($code) use($languages) { $languages->setCurrent($code); return $languages->getCurrent()->code; }); } } parent::__construct($mask, $metadata); }
/** * @return \Nette\Application\IRouter */ public static function createRouter() { Route::addStyle('itemname'); Route::setStyleProperty('itemname', Route::FILTER_OUT, function ($url) { return Strings::webalize($url); }); Route::addStyle('category'); Route::setStyleProperty('category', Route::FILTER_OUT, function ($url) { return Strings::webalize($url); }); $router = new RouteList(); $router[] = new Route('//api.%domain%/%basePath%/<action>[/<id>]', 'Api:default'); //$router[] = new Route('//api.%domain%/%basePath%/v1/user[/<user>]/<action>[/<id>]', 'Api:user'); $router[] = new Route('//api.%domain%/%basePath%/v2/<action>[/<id>]', 'Api:default'); $router[] = new Route('item[/<item>-<itemname>]', 'Item:default', Route::SECURED); $router[] = new Route('category[/<id>-<category_name>]', 'Category:default', Route::SECURED); $router[] = new Route('login', 'Login:default', Route::SECURED . Route::SECURED); $router[] = new Route('register', 'Register:default', Route::SECURED); $router[] = new Route('<presenter>/<action>[/<id>]', 'Main:default', Route::SECURED); //$router[] = new Route('api/<presenter>/<action>[/<id>]', 'Api:default'); return $router; }
// trigger_error(__FUNCTION__ . '() is deprecated; use __(array(\$single, \$plural), array(\$number, $args[0], $args[1], ...) instead.', E_USER_DEPRECATED); return Nette\Environment::getService('translator')->translate(array($single, $plural), array_merge(array($number), $args)); } // ----------------------------------------------------------------------------- // Extension methods // ----------------------------------------------------------------------------- Nette\Application\UI\Form::extensionMethod('loadFromEntity', 'vBuilder\\Orm\\FormHelper::loadFromEntity'); Nette\Application\UI\Form::extensionMethod('fillInEntity', 'vBuilder\\Orm\\FormHelper::fillInEntity'); Nette\Forms\Container::extensionMethod('addBootstrapSelect', 'vBuilder\\Forms\\Controls\\BootstrapSelect::addToContainer'); // ----------------------------------------------------------------------------- // Some predefines Route classes // ----------------------------------------------------------------------------- Route::addStyle('#month'); /// @todo this should accept all translations (because we don't know the language yet) Route::setStyleProperty('#month', Route::FILTER_IN, function ($val) { if (preg_match('/^([a-z]+)-([1-9][0-9]{3})/i', $val, $m)) { $months = array_flip(array_map('Nette\\Utils\\Strings::webalize', vBuilder\Utils\DateTime::monthName())); if (isset($months[$m[1]])) { return $m[2] . '-' . str_pad($months[$m[1]], 2, "0", STR_PAD_LEFT); } } return NULL; }); // This knows the language so it's ok Route::setStyleProperty('#month', Route::FILTER_OUT, function ($val) { if (preg_match('/^([1-9][0-9]{3})-([0-9]{1,2})/i', $val, $m)) { $months = array_map('Nette\\Utils\\Strings::webalize', vBuilder\Utils\DateTime::monthName()); return $months[(int) $m[2]] . '-' . $m[1]; } return NULL; });
/** * @return \Nette\Application\IRouter */ public function createRouter() { $router = new RouteList(); $context = $this->context; Route::$styles['path'] = array(Route::PATTERN => '.*?'); Route::setStyleProperty('presenter', Route::FILTER_TABLE, array('profil' => 'User:User', 'moje-akce' => 'User:Events', 'moje-mista' => 'User:Places', 'katalog' => 'Catalog', 'akce-pro-deti' => 'Calendar', 'clanky' => 'Articles', 'newsletter' => 'Newsletter', 'admin' => 'Admin:Default', 'ucet' => 'Account', 'o' => 'About', 'souteze' => 'Competitions', 'reklama' => 'Advertising', 'odkazy' => 'Links', 'partneri' => 'Partners', 'vyhledavani' => 'Search')); Route::setStyleProperty('action', Route::FILTER_TABLE, array('lokalita' => 'locality', 'mesto' => 'district', 'kraj' => 'shire', 'komentare' => 'comments', 'nas' => 'us')); Route::addStyle('timeframe'); Route::setStyleProperty('timeframe', Route::FILTER_TABLE, array('vikend' => 'weekend', 'pristi-vikend' => 'next weekend', 'tyden' => 'week', 'pristi-tyden' => 'next week', 'tento-mesic' => 'month', 'pristi-mesic' => 'next month', 'dnes' => 'today', 'zitra' => 'tomorrow')); Route::addStyle('title'); Route::setStyleProperty('title', Route::FILTER_OUT, function ($url) { return Strings::webalize($url); }); Route::setStyleProperty('title', Route::FILTER_IN, function ($url) { return Strings::webalize($url); }); $router[] = new Route('index.php', 'Service:default', Route::ONE_WAY); // @deprecated $router[] = new Route('akce-pro-deti.php', 'Calendar:default', Route::ONE_WAY); // @deprecated $router[] = new Route('kalendar.php', 'Calendar:default', Route::ONE_WAY); // @deprecated $router[] = new Route('infoservis[/<code>].php', 'Articles:default', Route::ONE_WAY); // @deprecated $router[] = new Route('odkazy.php', 'Links:default', Route::ONE_WAY); // @deprecated $router[] = new Route('partneri.php', 'Partners:default', Route::ONE_WAY); // @deprecated $router[] = new Route('inzerce.php', 'Advertising:default', Route::ONE_WAY); // @deprecated $router[] = new Route('souteze.php', 'Competitions:default', Route::ONE_WAY); // @deprecated $router[] = new Route('sdruzeni_pro_aktivni_rodinu.php', 'About:us', Route::ONE_WAY); // @deprecated $router[] = new Route('tipy/', 'Catalog:default', Route::ONE_WAY); // @deprecated $router[] = new Route('katalog_formular.php', 'Homepage:default', Route::ONE_WAY); // @deprecated $router[] = new Route('kalendar_formular.php', 'Homepage:default', Route::ONE_WAY); // @deprecated $router[] = new Route('katalog/kategorie/detska-predstaveni/', array('presenter' => "Calendar", 'action' => 'default', 'category' => 'detska-predstaveni'), Route::ONE_WAY); // @deprecated $router[] = new Route('<presenter clanky>/<code>/', 'Articles:detail'); $router[] = new Route('<presenter souteze>/<code>/', 'Competitions:detail'); $router[] = new Route('<presenter image>/<action [a-z]+>-<x [0-9]+>x<y [0-9]+>/<code>', 'Image:default'); $router[] = new Route('<presenter katalog>/kategorie/<category>/', 'Catalog:default'); $router[] = new Route('<presenter katalog>/aktivita/<category>/', 'Catalog:default'); // @deprecated $router[] = new Route('<presenter katalog>/aktivita/<category>/kraj/<shire>', 'Catalog:default'); // @deprecated $router[] = new Route('<presenter katalog>/lokalita/<locality>/', 'Catalog:default'); $router[] = new Route('<presenter katalog>/mesto/<district>/', 'Catalog:default'); $router[] = new Route('<presenter katalog>/kraj/<shire>/', 'Catalog:default'); $router[] = new Route('<presenter katalog>[/detail]/<code>/', 'Catalog:detail'); $router[] = new Route('<presenter akce-pro-deti>/kategorie/<category>/', 'Calendar:default'); $router[] = new Route('<presenter akce-pro-deti>/lokalita/<locality>/', 'Calendar:default'); $router[] = new Route('<presenter akce-pro-deti>/kraj/<shire>/', 'Calendar:default'); //$router[] = new Route('<presenter akce-pro-deti>[/detail]/<id>/', 'Calendar:detail'); $router[] = new Route('<presenter akce-pro-deti>[/detail]/<id>/', array('presenter' => "Calendar", 'action' => 'detail', 'id' => array(Route::FILTER_IN => function ($id) use($context) { if (is_numeric($id)) { return $id; } else { $code = substr($id, strpos($id, '-') + 1); $id = substr($id, 0, strpos($id, '-')); $pages = $context->createServiceEvents()->where('code', $code)->where('id', $id)->fetch(); if (!$pages) { throw new \Nette\Application\BadRequestException("Tato stránka neexistuje.", 404); } if ($pages->deleted == 1) { throw new \Nette\Application\BadRequestException("Tato stránka byla odstraněna.", 410); } return $pages->id; } }, Route::FILTER_OUT => function ($id) use($context) { if (!is_numeric($id)) { return $id; } else { $pages = $context->createServiceEvents()->where('id', $id)->fetch(); return $pages->id . '-' . $pages->code; } }))); $router[] = new Route('<presenter akce-pro-deti>/kdy/<timeframe>/', 'Calendar:default'); $router[] = new Route('<presenter>/<action>[/<id [0-9]+>/]', 'Homepage:default'); $router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default'); return $router; }