public static function findContent($navId) { $lang = Yii::$app->composition->getKey('langShortCode'); $langId = Lang::getLangIdByShortCode($lang); $item = NavItem::find()->where(['lang_id' => $langId, 'nav_id' => $navId])->one(); return $item ? $item->getContent() : false; }
private function getLanguages() { if ($this->_langs === null) { $this->_langs = Lang::getQuery(); } return $this->_langs; }
public function run() { $currentLang = Yii::$app->composition['langShortCode']; // Get current link $current = Yii::$app->menu->current; $rule = Yii::$app->menu->currentUrlRule; $items = []; // Loop through all languages foreach (Lang::find()->asArray()->all() as $lang) { // Find item of current link with the lang $item = Yii::$app->menu->find()->where(['nav_id' => $current->navId])->lang($lang['short_code'])->with('hidden')->one(); if ($item) { $link = $item->link; if ($item->type == 2 && !empty($rule)) { $routeParams = [$rule['route']]; foreach ($rule['params'] as $key => $value) { $routeParams[$key] = $value; } $compositionObject = Yii::createObject(Composition::className()); $compositionObject['langShortCode'] = $lang['short_code']; $link = Yii::$app->urlManager->createMenuItemUrl($routeParams, $item->id, $compositionObject); } $items[] = ['href' => $link, 'isCurrent' => $currentLang == $lang['short_code'], 'language' => $lang]; } else { $items[] = ['href' => Yii::$app->urlManager->prependBaseUrl($lang['short_code']), 'isCurrent' => $currentLang == $lang['short_code'], 'language' => $lang]; } } return $this->render('index', ['items' => $items, 'currentLanguage' => Lang::find()->where(['short_code' => $currentLang])->asArray()->one()]); }
public function getLangShortCode() { if ($this->_langShortCode === null) { $array = Lang::getDefault(); $this->_langShortCode = $array['short_code']; } return $this->_langShortCode; }
public function getLangId() { if ($this->_langId === null) { $array = Lang::getDefault(); $this->_langId = $array['id']; } return $this->_langId; }
public function actionAll() { $data = []; foreach (NavContainer::find()->asArray()->all() as $container) { $data[$container['id']] = ['name' => $container['name'], 'alias' => $container['alias'], 'id' => $container['id'], '__items' => $this->actionGetByContainerAlias($container['alias'])]; } // get draft data $data['drafts'] = $this->getDraftData(Lang::getDefault()['id']); return $data; }
public function run() { $langData = Lang::find()->asArray()->all(); $navId = Yii::$app->links->findOneByArguments(['url' => Yii::$app->links->activeUrl, 'lang' => Yii::$app->composition->getKey('langShortCode')])['id']; $html = '<ul>'; foreach ($langData as $lang) { $html .= '<li style="display:inline;margin-right:5px"><a href="' . $lang['short_code'] . '/' . Yii::$app->links->findOneByArguments(['id' => $navId, 'lang_id' => $lang['id']])['url'] . '">' . $lang['short_code'] . '</a></li>'; } $html .= '</ul>'; return $html; }
public function getLangUrl() { if ($this->_lang_url === null) { $this->_lang_url = $this->getUrl(); $url_list = explode('/', $this->_lang_url); $lang_url = isset($url_list[1]) ? $url_list[1] : null; if (isset(Yii::$app->request->cookies['lang']) && empty($lang_url) && Yii::$app->request->cookies->getValue('lang') != Lang::getDefaultLang()->url) { $lang_url = Yii::$app->request->cookies->getValue('lang'); } Lang::setCurrent($lang_url); if ($lang_url !== null && $lang_url === Lang::getCurrent()->url && strpos($this->_lang_url, Lang::getCurrent()->url) === 1) { $this->_lang_url = substr($this->_lang_url, strlen(Lang::getCurrent()->url) + 1); } } return $this->_lang_url; }
public function createUrl($params) { //Если не указан параметр языка, то работаем с текущим языком $lang = Lang::getCurrent(); //Получаем сформированный URL(без префикса идентификатора языка) $url = parent::createUrl($params); //Добавляем к URL префикс - буквенный идентификатор языка if ($lang->url != Lang::getDefaultLang()->url) { if ($url == '/') { return '/' . $lang->url; } else { return '/' . $lang->url . $url; } } else { if ($url == '/') { return '/'; } else { return $url; } } }
public function beforeAction($action) { if (isset(Yii::$app->request->cookies['lang']) && Yii::$app->request->cookies->getValue('lang') != Lang::getDefaultLang()->url) { if (Yii::$app->request->Url == '/') { $this->redirect('/' . Yii::$app->request->cookies->getValue('lang') . '/'); } elseif (strpos(Yii::$app->request->Url, '/' . Lang::getDefaultLang()->url . '/') !== false) { $this->redirect(str_replace(Lang::getDefaultLang()->url . '/', '', Yii::$app->request->Url)); } } if (empty(Yii::$app->redis->get('translate_' . Yii::$app->language . '_text'))) { Yii::$app->redis->setex('translate_' . Yii::$app->language . '_text', 1800, file_get_contents(Yii::getAlias('@appFolder') . '/lang/' . Yii::$app->language . '/text/words.json')); } if (empty(Yii::$app->redis->get('translate_' . Yii::$app->language . '_messages'))) { Yii::$app->redis->setex('translate_' . Yii::$app->language . '_messages', 1800, file_get_contents(Yii::getAlias('@appFolder') . '/lang/' . Yii::$app->language . '/messages/words.json')); } if (empty($this->text)) { $this->text = json_decode(Yii::$app->redis->get('translate_' . Yii::$app->language . '_text'), true); } if (empty($this->messages)) { $this->messages = json_decode(Yii::$app->redis->get('translate_' . Yii::$app->language . '_messages'), true); } return parent::beforeAction($action); }
public function actionDataLanguages() { return Lang::find()->asArray()->all(); }
/** * @todo should be static model methods inside Lang Model */ private function getLangIdByShortCode($shortCode) { return \admin\models\Lang::find()->where(['short_code' => $shortCode])->one()->id; }
public function actionLang() { return Lang::getDefault(); }
public function getDefaultLangShortCode() { if ($this->_defaultLangShortCode === null) { $lang = Lang::getDefault(); $this->_defaultLangShortCode = $lang['short_code']; } return $this->_defaultLangShortCode; }
/** * @todo do not return the specofic type content, but return an array contain more infos also about is multi linguage and foreach in view file! * @param unknown_type $element * @param string $configContext list,create,update */ public function createElements($element, $configContext) { if ($element['i18n'] && $configContext !== self::TYPE_LIST) { $return = []; foreach (\admin\models\Lang::find()->all() as $l => $v) { $ngModel = $this->i18nNgModelString($configContext, $element['name'], $v->short_code); $id = 'id-' . md5($ngModel . $v->short_code); // anzahl cols durch anzahl sprachen $return[] = ['id' => $id, 'name' => $element['name'], 'label' => $element['alias'] . ' ' . $v->name, 'ngModel' => $ngModel, 'html' => $this->renderElementPlugins($configContext, $element['plugins'], $id, $element['name'], $ngModel, $element['alias'] . ' ' . $v->name, $element['gridCols'])]; } return $return; } if ($element['i18n'] && $configContext == self::TYPE_LIST) { $element['name'] = $element['name'] . '.de'; // @todo get default language! } $ngModel = $this->ngModelString($configContext, $element['name']); $id = 'id-' . md5($ngModel); return [['id' => $id, 'name' => $element['name'], 'ngModel' => $ngModel, 'label' => $element['alias'], 'html' => $this->renderElementPlugins($configContext, $element['plugins'], $id, $element['name'], $ngModel, $element['alias'], $element['gridCols'])]]; }
public function run() { return $this->render('view', ['current' => Lang::getCurrent(), 'langs' => Lang::find()->where('id != :current_id', [':current_id' => Lang::getCurrent()->id])->all()]); }
public function actionDataMenu() { return ['items' => ArrayHelper::typeCast((new Query())->select(['cms_nav.id', 'nav_container_id', 'parent_nav_id', 'is_hidden', 'is_offline', 'is_draft', 'is_home', 'cms_nav_item.title'])->from('cms_nav')->leftJoin('cms_nav_item', 'cms_nav.id=cms_nav_item.nav_id')->orderBy('cms_nav.sort_index ASC')->where(['cms_nav_item.lang_id' => Lang::getDefault()['id'], 'cms_nav.is_deleted' => 0, 'cms_nav.is_draft' => 0])->all()), 'drafts' => ArrayHelper::typeCast((new Query())->select(['cms_nav.id', 'nav_container_id', 'parent_nav_id', 'is_hidden', 'is_offline', 'is_draft', 'is_home', 'cms_nav_item.title'])->from('cms_nav')->leftJoin('cms_nav_item', 'cms_nav.id=cms_nav_item.nav_id')->orderBy('cms_nav.sort_index ASC')->where(['cms_nav_item.lang_id' => Lang::getDefault()['id'], 'cms_nav.is_deleted' => 0, 'cms_nav.is_draft' => 1])->all()), 'containers' => ArrayHelper::typeCast((new Query())->select(['id', 'name'])->from('cms_nav_container')->where(['is_deleted' => 0])->orderBy(['cms_nav_container.id' => 'ASC'])->all())]; }
public function getLang() { return $this->hasOne(\admin\models\Lang::className(), ['id' => 'lang_id']); }