public function init(array $params = array()) { // Create top parent container $this->workspace = new Container($this); // Create main UI menu $menu = new Menu($this, $this->workspace); $menu->set('class', 'main-menu'); // Create home item $homeItem = new MenuItem($menu); $homeItem->set('title', 'Home')->set('class', 'btn-home')->set('content', '<a href="/"><i class="sprite sprite-header_home" href="/"></i></a>'); // Create site item $siteItem = new MenuItem($menu); $siteItem->set('title', t('Перейти на веб-сайт', true))->set('class', 'btn-site')->set('content', '<a href="/"><i class="sprite sprite-header_site" href="/"></i></a>'); // Fire event that ui menu left container has been created Event::fire('cms_ui.mainmenu_leftcreated', array(&$menu, &$this)); // Create exit item $exitItem = new MenuItem($menu); $exitItem->set('title', t('Выйти', true))->set('class', 'btn-icon-right btn-logout')->set('content', '<a href="signin/logout"><i class="sprite sprite-header_logout" href="/"></i></a>'); // Create settings item $settingsItem = new MenuItem($menu); $settingsItem->set('title', t('Выйти', true))->set('class', 'btn-icon-right btn-settings')->set('content', '<a href="settings"><i class="sprite sprite-header_settings" href="/"></i></a>'); // Create i18n menu $i18nMenu = new Menu($this, $menu); $i18nMenu->set('title', t('Выберите язык', true))->set('class', 'i18n-list'); // Iterate all supported locales foreach (\samson\core\SamsonLocale::get() as $locale) { $localeItem = new MenuItem($i18nMenu); $url = $locale == DEFAULT_LOCALE ? '' : '/' . $locale; $localeItem->set('class', 'i18n_item-' . $locale . ' ' . ($locale == \samson\core\SamsonLocale::current() ? 'i18n-active' : ''))->set('content', '<a href="' . $url . '">' . $locale . '</a>'); } // Fire event that ui menu container has been created Event::fire('cms_ui.mainmenu_created', array(&$menu, &$this)); // Create main UI menu $subMenu = new Menu($this, $menu); $subMenu->set('class', 'sub-menu'); // Fire event that ui sub-menu container has been created Event::fire('cms_ui.submenu_created', array(&$subMenu, &$this)); // Create main-content panel $mainPanel = new Container($this, $this->workspace); $mainPanel->set('class', 'mainPanel ' . (sizeof($subMenu->children()) ? 'with-sub-menu' : '')); /*// Create form with tabs $form = new Form($this, $mainPanel); // Create form tab view $tabs = new TabView($form); // Add tab $tab = new Tab($tabs); $tab->header->set('content', '<span>Описание</span>'); // Create localized tabs foreach (\samson\core\SamsonLocale::get() as $locale) { (new Tab($tab))->header->set('content', '<span>'.$locale.'</span>'); }*/ // Fire event that ui workspace container has been created Event::fire('cms_ui.workspace_created', array(&$this->workspace, &$this)); return parent::init($params); }
/** * Handle core main template rendered event to * add SEO needed localization metatags to HTML markup * @param string $html Rendered HTML template from core * @param array $parameters Collection of data passed to current view * @param Module $module Pointer to active core module */ public function templateRenderer(&$html) { $html = str_ireplace('</head>', $this->renderMetaTags(SamsonLocale::current(), SamsonLocale::$defaultLocale, url()->text) . '</head>', $html); $html = str_ireplace('<html>', '<html lang="' . SamsonLocale::current() . '">', $html); }
/** * Module initialization. * * @param array $params Initialization parameters collection * @return bool Initialization result */ public function init(array $params = array()) { //[PHPCOMPRESSOR(remove,start)] // Create SamsonPHP routing table from loaded modules $rg = new GenericRouteGenerator($this->system->module_stack); // Generate web-application routes $routes = $rg->generate(); $routes->add($this->findGenericDefaultAction()); // Create cache marker $this->cacheFile = $routes->hash() . '.php'; // If we need to refresh cache if ($this->cache_refresh($this->cacheFile)) { $generator = new Structure($routes, new \samsonphp\generator\Generator()); // Generate routing logic function $routerLogic = $generator->generate(); // Store router logic in cache file_put_contents($this->cacheFile, '<?php ' . "\n" . $routerLogic); } require $this->cacheFile; //[PHPCOMPRESSOR(remove,end)] // Set locale resolver mode SamsonLocale::$leaveDefaultLocale = $this->browserLocaleRedirect; // This should be change to receive path as a parameter on initialization $pathParts = array_values(array_filter(explode(Route::DELIMITER, $_SERVER['REQUEST_URI']))); // Parse URL and store locale found bug $localeFound = SamsonLocale::parseURL($pathParts, $this->browserLocaleRedirect); // Gather URL path parts with removed locale placeholder $this->requestURI = implode(Route::DELIMITER, $pathParts); // Get localization data $current = SamsonLocale::current(); $default = SamsonLocale::$defaultLocale; // Browser agent language detection logic if ($this->browserLocaleRedirect && !$localeFound) { // Redirect to browser language $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); // Is browser language supported by application $langSupport = in_array($lang, SamsonLocale::get(), true); /** * If browser language header is supported by our web-application and we are already not on that locale * and current locale is not default. */ if ($current === $default && $current !== $lang && $langSupport) { header('Location: http://' . $_SERVER['HTTP_HOST'] . '/' . $lang . '/' . $this->requestURI); exit; } elseif (!$langSupport || $lang === $current) { SamsonLocale::$leaveDefaultLocale = false; } } // Subscribe to samsonphp\core routing event \samsonphp\event\Event::subscribe('core.routing', array($this, 'router')); // Continue initialization return parent::init($params); }
/** * Build URL relative to current web-application, method accepts any number of arguments, * every argument starting from 2-nd firstly considered as module view parameter, if no such * parameters is found - its used as string. * * If current locale differs from default locale, current locale prepended to the beginning of URL * * @see URL::build() * * @return string Builded URL */ function url_build() { // Get cached URL builder for speedup static $_v; $_v = isset($_v) ? $_v : url(); // Get passed arguments $args = func_get_args(); // If we have current locale set if (\samson\core\SamsonLocale::$leaveDefaultLocale && \samson\core\SamsonLocale::current() != \samson\core\SamsonLocale::DEF) { // Add locale as first url parameter array_unshift($args, \samson\core\SamsonLocale::current()); } // Call URL builder with parameters return call_user_func_array(array($_v, 'build'), $args); }