public function actionIndex() { $page = Menu::model()->findByPk(InfoPages::MAIN_PAGE_ID); $langs = Lang::getActiveLangs(); $countLangs = count($langs); if (!isFree() && !isset($_GET['lang']) && ($countLangs > 1 || $countLangs == 1 && param('useLangPrefixIfOneLang'))) { $canonicalUrl = Yii::app()->getBaseUrl(true); $canonicalUrl .= '/' . Yii::app()->language; Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl); } Yii::app()->user->setState('searchUrl', NULL); $criteriaNews = new CDbCriteria(); $criteriaNews->limit = 10; $criteriaNews->order = 'date_created DESC'; $newsIndex = News::model()->findAll($criteriaNews); if (isset($_GET['is_ajax'])) { // $modeListShow = User::getModeListShow(); // if ($modeListShow == 'table') { // # нужны скрипты и стили, поэтому processOutput установлен в true только для table // $this->renderPartial('index', array('page' => $page, 'newsIndex' => $newsIndex), false, true); // } // else { $this->renderPartial('index', array('page' => $page, 'newsIndex' => $newsIndex)); // } } else { $this->render('index', array('page' => $page, 'newsIndex' => $newsIndex)); } }
public function actionIndex() { $this->checkCookieEnabled(); $this->htmlPageId = 'index'; $page = Menu::model()->findByPk(InfoPages::MAIN_PAGE_ID); if (issetModule('seo')) { $seo = SeoFriendlyUrl::model()->findByAttributes(array('model_name' => 'InfoPages', 'model_id' => InfoPages::MAIN_PAGE_ID)); if ($seo) { $this->setSeo($seo); } } $langs = Lang::getActiveLangs(); $countLangs = count($langs); if (!isFree() && !isset($_GET['lang']) && ($countLangs > 1 || $countLangs == 1 && param('useLangPrefixIfOneLang'))) { $canonicalUrl = Yii::app()->getBaseUrl(true); $canonicalUrl .= '/' . Yii::app()->language; Yii::app()->clientScript->registerLinkTag('canonical', null, $canonicalUrl); } Yii::app()->user->setState('searchUrl', NULL); $lastNews = News::getLastNews(); if (Yii::app()->request->isAjaxRequest) { // $modeListShow = User::getModeListShow(); // if ($modeListShow == 'table') { // # нужны скрипты и стили, поэтому processOutput установлен в true только для table // $this->renderPartial('index', array('page' => $page, 'newsIndex' => $lastNews), false, true); // } // else { $this->renderPartial('index', array('page' => $page, 'newsIndex' => $lastNews)); // } } else { $this->render('index', array('page' => $page, 'newsIndex' => $lastNews)); } }
public function afterSave() { $langs = Lang::getActiveLangs(); foreach ($langs as $lang) { Yii::app()->cache->delete(DbMessageSource::CACHE_KEY_PREFIX . '.messages.' . $this->category . '.' . $lang); } return parent::afterSave(); }
public function createUrl($route, $params = array(), $ampersand = '&') { if ($route != 'min/serve' && $route != 'site/uploadimage') { $langs = Lang::getActiveLangs(); $countLangs = count($langs); if (!isFree() && empty($params['lang']) && ($countLangs > 1 || $countLangs == 1 && param('useLangPrefixIfOneLang'))) { $params['lang'] = Yii::app()->language; } } return parent::createUrl($route, $params, $ampersand); }
public function init() { $this->app = Yii::app(); $this->showSearchForm = false; $this->defaultLang = Yii::app()->language; $this->activeLangs = array($this->defaultLang => $this->defaultLang); if (!isFree()) { $this->defaultLang = Lang::getDefaultLang(); $this->activeLangs = Lang::getActiveLangs(); } parent::init(); }
public function actionRegenSeo() { $modelsAll = SeoFriendlyUrl::model()->findAll(); $activeLangs = Lang::getActiveLangs(); foreach ($modelsAll as $model) { foreach ($activeLangs as $lang) { $field = 'url_' . $lang; $model->{$field} = translit($model->{$field}); } $model->save(); } echo 'end'; }
function setLang($lang = null) { if (isFree()) { return; } $app = Yii::app(); $lang = $lang ? $lang : Lang::getDefaultLang(); $app->setLanguage($lang); $activeLangs = Lang::getActiveLangs(); if (isset($_GET['lang'])) { $tmplang = $_GET['lang']; //deb($tmplang); if (isset($activeLangs[$tmplang])) { $lang = $tmplang; $app->setLanguage($lang); } setLangCookie($lang); /* * другой код, например обновление кеша некоторых компонентов, которые изменяются при смене языка */ } else { $user = $app->user; if ($user->hasState('_lang')) { $tmplang = $user->getState('_lang'); if (isset($activeLangs[$tmplang])) { $lang = $tmplang; $app->setLanguage($lang); } else { setLangCookie($lang); } } else { if (isset($app->request->cookies['_lang'])) { $tmplang = $app->request->cookies['_lang']->value; if (isset($activeLangs[$tmplang])) { $lang = $tmplang; $app->setLanguage($lang); } else { setLangCookie($lang); } } } } Lang::getActiveLangs(false, true); }
public function actionViewFeed() { $oldLang = Yii::app()->language; Controller::disableProfiler(); $defaultLangs = Lang::getDefaultLang(); Yii::app()->language = $defaultLangs; // если есть русский или украинский языки, но они не дефолтные. установим на время их. if ($defaultLangs != 'ru' || $defaultLangs != 'uk') { $allLangs = Lang::getActiveLangs(); if (array_key_exists('ru', $allLangs)) { Yii::app()->language = 'ru'; } elseif (array_key_exists('uk', $allLangs)) { Yii::app()->language = 'uk'; } } $items = $this->generateFeed(); if (is_array($items) && count($items) > 0) { header('Content-type: text/xml'); header('Pragma: public'); header('Cache-control: private'); header('Expires: -1'); $xmlWriter = new XMLWriter(); $xmlWriter->openMemory(); $xmlWriter->setIndent(true); $xmlWriter->startDocument('1.0', 'UTF-8'); $xmlWriter->startElement('realty-feed'); $xmlWriter->writeAttribute('xmlns', 'http://webmaster.yandex.ru/schemas/feed/realty/2010-06'); $xmlWriter->writeElement('generation-date', $this->generationDate); foreach ($items as $item) { if (isset($item['id'])) { $this->prepareItem($item, $xmlWriter); } } $xmlWriter->endElement(); // end realty-feed (xmlns) echo $xmlWriter->outputMemory(); } else { echo 'no elements'; } // установим обратно пользовательский язык Yii::app()->language = $oldLang; }
public function createUrl($route, $params = array(), $ampersand = '&') { if ($route != 'min/serve' && $route != 'site/uploadimage') { $langs = Lang::getActiveLangs(); $countLangs = count($langs); $defaultLang = Lang::getDefaultLang(); if (isset($params['lang']) && $params['lang'] == $defaultLang && $this->isInstalled) { if (!param('useBootstrap')) { unset($params['lang']); } } else { if (Yii::app()->language != $defaultLang && !isFree() && empty($params['lang']) && $countLangs > 1) { $params['lang'] = Yii::app()->language; } } if (!$this->isInstalled && $countLangs == 1 && $route != 'install') { $params['lang'] = Yii::app()->language; } if (!$this->isInstalled && $countLangs > 1 && !isset($params['lang']) && $route != 'install') { $params['lang'] = Yii::app()->language; } } return parent::createUrl($route, $params, $ampersand); }
public function beforeSave() { $className = get_class($this); $i18attributes = CActiveRecord::model($className)->i18nFields(); foreach ($i18attributes as $attribute => $val) { $activeLangs = Lang::getActiveLangs(true); $defaultValue = $this->{$attribute . '_' . Yii::app()->language}; foreach ($activeLangs as $lang) { $attr = $attribute . '_' . $lang['name_iso']; if ($this->isEmpty($this->{$attr}, true)) { $this->{$attr} = $defaultValue; } } } return parent::beforeSave(); }
public static function getUsedCurrenciesIds() { if (!isset(self::$_usedCurrenciesIds)) { self::$_usedCurrenciesIds = array_unique(array_merge(CHtml::listData(Lang::getActiveLangs(1), 'currency_id', 'currency_id'), array(1 => Currency::getDefaultValuteId()))); } return self::$_usedCurrenciesIds; }
public static function create($attributes) { $item = new Menu(); //$item->attributes = $attributes; $item->parentId = array_key_exists('parentId', $attributes) ? $attributes['parentId'] : null; $item->number = array_key_exists('number', $attributes) ? $attributes['number'] : null; $item->active = 0; $item->type = self::LINK_NONE; if (isFree()) { $activeLangs = array(Yii::app()->language); } else { $activeLangs = Lang::getActiveLangs(); } foreach ($activeLangs as $lang) { //$tmp = 'title_'.Yii::app()->language; $item->{'title_' . $lang} = array_key_exists('title', $attributes) ? $attributes['title'] : null; } /*// подставляем урл, если не задан вручную if (!$item->seo_link && $item->title) { if (isset($item->parent) && $item->parent) { # есть родитель if (isset($item->parent->seo_link) && $item->parent->seo_link) { $item->seo_link = $item->parent->seo_link.'/'.translit(mb_strtolower($item->title, 'utf8')); } elseif (isset($item->parent->title) && $item->parent->title) { $item->seo_link = translit(mb_strtolower($item->parent->title, 'utf8')).'/'.translit(mb_strtolower($item->title, 'utf8')); } } }*/ if (!$item->save()) { throw new CHttpException(400, $item->plainErrors()); } $item->normalize(); return $item; }
public function createLangUrl($lang = 'en', $params = array()) { $langs = Lang::getActiveLangs(); if (count($langs) > 1 && issetModule('seo') && isset(SeoFriendlyUrl::$seoLangUrls[$lang])) { if (count($params)) { return SeoFriendlyUrl::$seoLangUrls[$lang] . '?' . http_build_query($params); } return SeoFriendlyUrl::$seoLangUrls[$lang]; } $route = Yii::app()->urlManager->parseUrl(Yii::app()->getRequest()); $params = array_merge($_GET, $params); $params['lang'] = $lang; return $this->createUrl('/' . $route, $params); }
public function i18nLength($attribute, $params) { $label = $this->getAttributeLabel($attribute); $activeLangs = Lang::getActiveLangs(true); foreach ($activeLangs as $lang) { $attr = $attribute . '_' . $lang['name_iso']; $value = $this->{$attr}; if (function_exists('mb_strlen')) { $length = mb_strlen($value, Yii::app()->charset); } else { $length = utf8_strlen($value); } if (isset($params['min']) && $length < $params['min']) { $this->addError($attr, Yii::t('common', '{label} is too short for {lang} (minimum is {min} characters).', array('{label}' => $label, '{lang}' => $lang['name'], '{min}' => $params['min']))); } if (isset($params['max']) && $length > $params['max']) { $this->addError($attr, Yii::t('common', '{label} is too long for {lang} (maximum is {max} characters).', array('{label}' => $label, '{lang}' => $lang['name'], '{max}' => $params['max']))); } if (isset($params['is']) && $length !== $params['is']) { $this->addError($attr, Yii::t('common', '{label} is of the wrong length for {lang} (should be {length} characters).', array('{label}' => $label, '{lang}' => $lang['name'], '{length}' => $params['is']))); } } }
public function publishAssets() { $assets = dirname(__FILE__) . '/../assets'; $baseUrl = Yii::app()->assetManager->publish($assets); if (is_dir($assets)) { Yii::app()->clientScript->registerCoreScript('jquery'); Yii::app()->clientScript->registerScript(__CLASS__, "\n\t\t\tvar activeLang = " . CJavaScript::encode(Lang::getActiveLangs()) . ";\n\t\t\tvar baseUrl = '" . Yii::app()->request->baseUrl . "';\n\t\t\tvar errorNoFromLang = '" . Yii::t('module_lang', 'Enter a value for this language') . "';\n\t\t\tvar errorTranslate = '" . Yii::t('module_lang', 'Error translate') . "';\n\t\t\tvar successTranslate = '" . Yii::t('module_lang', 'Success translate') . "';\n\t\t\tvar successCopy = '" . Yii::t('module_lang', 'Success copy') . "';\n\t\t", CClientScript::POS_END); Yii::app()->clientScript->registerScriptFile($baseUrl . '/translate.js', CClientScript::POS_END); } else { throw new Exception(Yii::t('common', 'Lang - Error: Couldn\'t find assets folder to publish.')); } }
public function actionUpdate($id) { $model = $this->loadModel($id); //$this->performAjaxValidation($model); if (isset($_POST[$this->modelName])) { $model->attributes = $_POST[$this->modelName]; $model->scenario = $model->type; if (in_array($model->type, array_flip(Advert::getAvailableTypes()))) { $isFile = $isHtml = false; if ($model->type == 'file') { $isFile = true; $oldFile = $model->file_path; } if ($model->type == 'html') { $isHtml = true; } if ($model->validate()) { if ($isFile) { $activeLangs = Lang::getActiveLangs(); if ($activeLangs && is_array($activeLangs)) { foreach ($activeLangs as $key => $val) { $model->setAttribute('js_' . $key, ''); $model->setAttribute('html_' . $key, ''); } } $model->file = CUploadedFile::getInstance($model, 'file_path'); if ($model->file) { $model->file_path = md5(uniqid()) . '.' . $model->file->extensionName; } } else { $activeLangs = Lang::getActiveLangs(); if ($activeLangs && is_array($activeLangs)) { foreach ($activeLangs as $key => $val) { if ($isHtml) { $model->setAttribute('js_' . $key, ''); } else { # js $model->setAttribute('html_' . $key, ''); } } } $model->file_path = $model->url = $model->alt_text = ''; } if ($model->save(false)) { if ($model->file) { $model->file->saveAs(Yii::getPathOfAlias('webroot') . '/uploads/rkl/' . $model->file_path); @unlink(Yii::getPathOfAlias('webroot') . '/uploads/rkl/' . $oldFile); } $this->redirect(array('admin')); } } } } $this->render('update', array('model' => $model)); }
public function run() { $this->render('langSelectorFormWidget', array('currentLang' => Yii::app()->language, 'languages' => $this->languages ? $this->languages : Lang::getActiveLangs(true), 'type' => $this->type)); }
/images/narezka/logo1.png" id="logo" /> </a> </div> <div class="kontakts"> <div class="telefon"> 8 495 212 93 92 </div> <div class="adres"> Москва, ул Строителей 25, оф. 408 </div> </div> </div> <?php if (!isFree()) { if (count(Lang::getActiveLangs()) > 1) { $this->widget('application.modules.lang.components.langSelectorWidget', array('type' => 'links')); } if (count(Currency::getActiveCurrency()) > 1) { $this->widget('application.modules.currency.components.currencySelectorWidget'); } } ?> <?php if (!isset($adminView)) { ?> <div id="search" class="menu_item menu_gorizont"> <?php
/** * @param $url * @param $modelName * @return SeoFriendlyUrl */ public static function getForView($url, $modelName) { if (param('urlExtension')) { $url = rstrtrim($url, '.html'); } $seo = SeoFriendlyUrl::model()->findByAttributes(array('model_name' => $modelName, 'url_' . Yii::app()->language => $url)); if ($seo) { $activeLangs = Lang::getActiveLangs(); foreach ($activeLangs as $lang) { $field = 'url_' . $lang; if (isset(self::$_prefixUrlArray[$modelName]) && isset($seo->{$field})) { $prefix = $seo->direct_url ? '' : ($lang == Lang::getDefaultLang() ? '' : $lang . '/') . self::$_prefixUrlArray[$modelName]; if ($seo->{$field}) { self::$seoLangUrls[$lang] = Yii::app()->baseUrl . '/' . $prefix . $seo->{$field} . (param('urlExtension') ? '.html' : ''); } else { self::$seoLangUrls[$lang] = Yii::app()->baseUrl . '/' . $prefix . $seo->model_id; } //deb(self::$seoLangUrls);exit; } } } return $seo; }