示例#1
0
文件: Nav.php 项目: aekkapun/luya
 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;
 }
示例#2
0
 private function getLanguages()
 {
     if ($this->_langs === null) {
         $this->_langs = Lang::getQuery();
     }
     return $this->_langs;
 }
示例#3
0
 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()]);
 }
示例#4
0
 public function getLangShortCode()
 {
     if ($this->_langShortCode === null) {
         $array = Lang::getDefault();
         $this->_langShortCode = $array['short_code'];
     }
     return $this->_langShortCode;
 }
示例#5
0
文件: Cat.php 项目: efueger/luya
 public function getLangId()
 {
     if ($this->_langId === null) {
         $array = Lang::getDefault();
         $this->_langId = $array['id'];
     }
     return $this->_langId;
 }
示例#6
0
 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;
 }
示例#7
0
 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;
 }
示例#8
0
 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;
 }
示例#9
0
 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;
         }
     }
 }
示例#10
0
 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);
 }
示例#11
0
 public function actionDataLanguages()
 {
     return Lang::find()->asArray()->all();
 }
示例#12
0
 /**
  * @todo should be static model methods inside Lang Model
  */
 private function getLangIdByShortCode($shortCode)
 {
     return \admin\models\Lang::find()->where(['short_code' => $shortCode])->one()->id;
 }
示例#13
0
 public function actionLang()
 {
     return Lang::getDefault();
 }
示例#14
0
 public function getDefaultLangShortCode()
 {
     if ($this->_defaultLangShortCode === null) {
         $lang = Lang::getDefault();
         $this->_defaultLangShortCode = $lang['short_code'];
     }
     return $this->_defaultLangShortCode;
 }
示例#15
0
 /**
  * @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'])]];
 }
示例#16
0
文件: WLang.php 项目: egorlost/mysite
 public function run()
 {
     return $this->render('view', ['current' => Lang::getCurrent(), 'langs' => Lang::find()->where('id != :current_id', [':current_id' => Lang::getCurrent()->id])->all()]);
 }
示例#17
0
 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())];
 }
示例#18
0
文件: NavItem.php 项目: aekkapun/luya
 public function getLang()
 {
     return $this->hasOne(\admin\models\Lang::className(), ['id' => 'lang_id']);
 }