public static function &getInstance() { if (I18nHelper::$instance == null) { I18nHelper::$instance = new I18nHelper(); } return I18nHelper::$instance; }
public function actionIndex() { if (Yii::app()->user->checkAccess('viewInternalLinkKeyword') == false) { throw new CHttpException(403); } $pageSize = Yii::app()->request->getQuery('pagesize', 10); $keyword = trim(Yii::app()->request->getQuery('keyword')); $lang = Yii::app()->request->getQuery('lang'); if (empty($lang)) { $lang = I18nHelper::getFrontendSourceLanguage(); } $criteria = new CDbCriteria(); $criteria->compare('lang', $lang); if (empty($keyword) == false) { if (preg_match('/^#\\d+$/', $keyword)) { $criteria->compare('internal_link_keyword_id', substr($keyword, 1)); } else { $criteria->addSearchCondition('t.keyword', $keyword); } } $dataProvider = new CActiveDataProvider(InternalLinkKeyword::model(), array('criteria' => $criteria, 'sort' => array('defaultOrder' => 't.keyword ASC, t.internal_link_keyword_id ASC'), 'pagination' => array('pageSize' => $pageSize))); $langOptions = array(); foreach (I18nHelper::getFrontendLanguages(false) as $curLang => $attr) { $langOptions[$curLang] = $attr['label']; } $this->breadcrumbs = array('内链关键词'); $this->render('index', array('dataProvider' => $dataProvider, 'keyword' => $keyword, 'lang' => $lang, 'langOptions' => $langOptions)); }
public function actionUpdateIsReleased() { $id = Yii::app()->request->getPost('id'); $language = Yii::app()->request->getPost('language'); $isReleased = Yii::app()->request->getPost('is_released'); if ($language == I18nHelper::getFrontendSourceLanguage()) { echo Banner::model()->updateByPk($id, array('is_released' => $isReleased)); } else { echo BannerI18n::model()->updateAll(array('is_released' => $isReleased), 'owner_id = :owner_id AND lang = :lang', array(':owner_id' => $id, ':lang' => $language)); } }
public function run() { $curLangLabel = 'zh_cn'; $items = array(); $languages = I18nHelper::getLanguages(false); foreach ($languages as $lang => $attr) { array_push($items, array('label' => $attr['label'], 'link_url' => array_merge(array(''), $_GET, array('lang' => $lang)), 'icon' => $attr['icon'], 'lang' => $lang)); } if (isset($_GET['lang']) && $_GET['lang'] == 'en') { $curLangLabel = 'en'; } $this->render('languageSelector', array('curLangLabel' => $curLangLabel, 'items' => $items)); }
public function actionUpdateIsReleased() { if (Yii::app()->user->checkAccess('updateServer') == false) { throw new CHttpException(403); } $id = Yii::app()->request->getPost('id'); $language = Yii::app()->request->getPost('language'); $isReleased = Yii::app()->request->getPost('is_released'); if ($language == I18nHelper::getFrontendSourceLanguage()) { echo Server::model()->updateByPk($id, array('is_released' => $isReleased)); } else { echo ServerI18n::model()->updateAll(array('is_released' => $isReleased), 'owner_id = :owner_id AND lang = :lang', array(':owner_id' => $id, ':lang' => $language)); } }
protected function beforeAction($action) { if (!parent::beforeAction($action)) { return false; } $route = $this->id . '/' . $action->id; $allowed = (include dirname(__FILE__) . '/../config/allowed.php'); //Helper::dump($allowed,1); if (Yii::app()->user->isGuest && !in_array($route, $allowed)) { Yii::app()->user->loginRequired(); } defined('COLON') or define('COLON', I18nHelper::getFrontendLocalizedParam('colon')); return true; }
protected function beforeAction($action) { if (!parent::beforeAction($action)) { return false; } /* if(Yii::app()->language!=Yii::app()->sourceLanguage) { Yii::app()->params['appName']=Yii::t('app','@appName'); Yii::app()->params['appShortName']=Yii::t('app','@appShortName'); } */ defined('SEPARATOR') or define('SEPARATOR', I18nHelper::getLocalizedParam('separator')); defined('COLON') or define('COLON', I18nHelper::getLocalizedParam('colon')); defined('DATE_FORMAT') or define('DATE_FORMAT', I18nHelper::getLocalizedParam('date_format')); defined('SHORT_DATE_FORMAT') or define('SHORT_DATE_FORMAT', I18nHelper::getLocalizedParam('short_date_format')); defined('TIME_FORMAT') or define('TIME_FORMAT', I18nHelper::getLocalizedParam('time_format')); defined('MONTH_FORMAT') or define('MONTH_FORMAT', I18nHelper::getLocalizedParam('month_format')); return true; }
public function getI18nColumn($columnName, $withSwitch = false) { $languages = I18nHelper::getFrontendLanguages(false); $sourceLanguageKey = current(array_keys($languages)); $sourceLanguage = array_shift($languages); $id = $this->getPrimaryKey(); $ret = $this->i18nLanguages() ? '[' . $sourceLanguage['short_label'] . '] <span style="height: 16px; overflow-y: hidden;" title="' . $this->{$columnName} . '">' . $this->{$columnName} . '</span>' : '<span style="height: 16px; overflow-y: hidden;" title="' . $this->{$columnName} . '">' . $this->{$columnName} . '</span>'; if ($withSwitch) { $ret = '<a href="#' . $id . $sourceLanguageKey . '" class="is-released-' . $this->is_released . '"></a>' . $ret; } foreach ($languages as $lang => $prop) { $ret .= '<br />'; $model = $this->localized($lang, false)->findByPk($this->primaryKey); if ($withSwitch) { $ret .= '<a href="#' . $id . $lang . '" class="is-released-' . intval($model->{'is_released'}) . '"></a>'; } $ret .= '[' . $prop['short_label'] . '] ' . $model->{$columnName}; } return $ret; }
?> </th> <td><?php echo CHtml::activeCheckBox($product, 'is_recommend'); ?> </td> </tr> <tr> <th><?php echo CHtml::activeLabelEx($product, 'is_released'); ?> </th> <td><?php echo CHtml::activeCheckBox($product, 'is_released'); ?> </td> </tr> </table> <?php $basicContent = ob_get_clean(); $i18nTabs = array(); $tabs = array(); foreach (I18nHelper::getFrontendLanguages() as $lang => $prop) { $i18nTabs[$prop['label']] = $this->renderPartial('createI18n', array('product' => $product, 'lang' => $lang, 'prop' => $prop), true); } $this->widget('zii.widgets.jui.CJuiTabs', array('tabs' => array('基本资料' => $basicContent) + $i18nTabs)); ?> <?php echo CHtml::endForm(); ?> </div>
public function i18nLanguages() { return I18nHelper::getLanguageKeys(); }
public function actionSetting() { if (Yii::app()->user->checkAccess('updateSetting') == false) { throw new CHttpException(403); } $normalCodes = array('system_maintaining', 'footer_js', 'google_analytics_account', 'google_analytics_password', 'google_analytics_report_id'); $multilangCodes = array('home_title', 'home_internal_link_keywords', 'inside_title', 'magazine_footer', 'copyright', 'address', 'email', 'meta_keywords', 'meta_description'); $models = array(); foreach ($normalCodes as $code) { $models[$code] = Setting::model()->findByAttributes(array('code' => $code)); } foreach ($multilangCodes as $code) { $models[$code] = Setting::model()->multilingual()->findByAttributes(array('code' => $code)); } // robots.txt $robotsFilePath = Helper::mediaPath('robots.txt', FRONTEND); if (file_exists($robotsFilePath)) { $robots = file_get_contents($robotsFilePath); } else { if (is_writable($robotsFilePath)) { $handle = fopen($robotsFilePath, 'a'); if ($handle != false) { $fp = fopen($robotsFilePath, 'w'); fclose($fp); } $robots = ''; } else { $robots = ''; } } if ($_POST) { foreach (array_merge($normalCodes, $multilangCodes) as $code) { if (isset($_POST[$code])) { $models[$code]->setAttributes($_POST[$code]); } else { $models[$code]->setAttributes(array('value' => '')); } } if (isset($models['home_internal_link_keywords'])) { $models['home_internal_link_keywords']['value'] = Helper::arrangeKeywords($_POST['home_internal_link_keywords']['value']); } foreach ($models as $model) { $model->save(); } // 首页内链关键词 if (isset($models['home_internal_link_keywords'])) { foreach (I18nHelper::getFrontendLanguages(false) as $lang => $attr) { if ($lang == I18nHelper::getFrontendSourceLanguage()) { InternalLinkKeyword::model()->insertOrUpdate('home', 0, $lang, $models['home_internal_link_keywords']['value']); } else { InternalLinkKeyword::model()->insertOrUpdate('home', 0, $lang, $models['home_internal_link_keywords']->i18nFormData['value_' . $lang]); } } } // robots.txt if (is_writable($robotsFilePath)) { $robots = Yii::app()->request->getPost('robots'); $handle = fopen($robotsFilePath, 'a'); if ($handle != false) { $fp = fopen($robotsFilePath, 'w'); fwrite($handle, $robots); fclose($fp); } } $this->setFlashMessage('系统设置已保存'); $this->redirect($this->getReturnUrl()); } $this->breadcrumbs = array('系统设置'); $this->render('setting', array('models' => $models, 'robots' => $robots, 'returnUrl' => $this->getReturnUrl())); }
/** * Contructor initializes $viewBaseDir and loads all Helpers and * models. * Then it initializes i18n support. */ public function __construct() { $this->viewBaseDir = CLASSPATH . "/views/"; //Los models if (isset($this->defaultUses)) { foreach ($this->defaultUses as $model) { $varName = $model; $varName[0] = strtolower($varName[0]); $this->{$varName} = ModelFactory::getModel($model); } } if (isset($this->uses)) { foreach ($this->uses as $model) { $varName = $model; $varName[0] = strtolower($varName[0]); $this->{$varName} = ModelFactory::getModel($model); } } //Los helpers if (isset($this->defaultHelpers)) { foreach ($this->defaultHelpers as $helper) { $varName = $helper; $varName[0] = strtolower($varName[0]); $this->{$varName} = HelperFactory::getHelper($helper); $this->{$varName}->startUp($this); } } if (isset($this->helpers)) { foreach ($this->helpers as $helper) { $varName = $helper; $varName[0] = strtolower($varName[0]); $this->{$varName} = HelperFactory::getHelper($helper); $this->{$varName}->startUp($this); } } //i18n $i18nFileName = strtolower(str_replace("Controller", "", get_class($this))) . '.' . $this->viewLocale . '.po'; I18nHelper::getInstance()->loadPoFile(I18N_PATH . '/' . $i18nFileName); }
protected function afterSave() { parent::afterSave(); require_once 'Image.php'; // 保存背景图片 if ($this->bgImageFile instanceof CUploadedFile && $this->hasErrors('bgImageFile') == false) { // 保存原文件 $file = $this->bgImageFile; $fileName = md5($file->tempName . uniqid()) . '.' . $file->extensionName; $filePath = Helper::mediaPath(self::UPLOAD_BG_IMAGE_PATH . $fileName, FRONTEND); $file->saveAs($filePath); // 更新数据 $this->updateByPk($this->primaryKey, array('bg_image_path' => $fileName)); } else { if ($this->deleteBgImageFile) { // 删除图片 @unlink(Helper::mediaPath(self::UPLOAD_BG_IMAGE_PATH . $this->bg_image_path, FRONTEND)); // 更新数据 $this->updateByPk($this->primaryKey, array('bg_image_path' => '')); } } // 内链关键词 foreach (I18nHelper::getFrontendLanguages(false) as $lang => $attr) { if ($lang == I18nHelper::getFrontendSourceLanguage()) { InternalLinkKeyword::model()->insertOrUpdate('page', $this->page_id, $lang, $this->internal_link_keywords); } else { InternalLinkKeyword::model()->insertOrUpdate('page', $this->page_id, $lang, $this->i18nFormData['internal_link_keywords_' . $lang]); } } }
/** * * @author Tabaré Caorsi <*****@*****.**> * */ function tr($string) { return I18nHelper::getInstance()->tr($string); }
Form::macro('inputPassword', function ($name) { $input = Form::password($name, array('class' => 'form-control')); return Form::formGroup($name, $input); }); Form::macro('inputBoolean', function ($name) { $input = Form::checkbox($name, 1, Input::get($name)); return Form::formGroupCheckbox($name, $input); }); Form::macro('inputDatepicker', function ($name) { $value = Input::get($name); if ($value == null and $this->model) { $value = I18nHelper::l($this->model->{$name}); } $input = '<div class="input-group date datepicker">' . Form::text($name, $value, array('class' => 'form-control')) . '<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>' . '</div>'; return Form::formGroup($name, $input); }); Form::macro('inputDateTimepicker', function ($name) { $value = Input::get($name); if ($value == null and $this->model) { $value = I18nHelper::l($this->model->{$name}, 'datetime'); } $input = '<div class="input-group date datepicker">' . Form::text($name, $value, array('class' => 'form-control')) . '<span class="input-group-addon"><i class="glyphicon glyphicon-calendar"></i></span>' . '</div>'; return Form::formGroup($name, $input); }); Form::macro('submitModel', function ($url) { $text = trans('text.create'); if ($this->model->id) { $text = trans('text.update'); } return '<div class="form-group">' . Form::submit($text, array('class' => 'btn btn-primary')) . ' ' . trans('text.or') . ' ' . link_to($url, trans('text.cancel'), ['class' => 'link-to-cancel']) . '</div>'; });