Exemple #1
0
 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));
     }
 }
Exemple #6
0
 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;
 }
Exemple #7
0
 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;
 }
Exemple #9
0
?>
</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()));
 }
Exemple #12
0
 /**
  * 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);
 }
Exemple #13
0
 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]);
         }
     }
 }
Exemple #14
0
/**
 * 
 * @author Tabaré Caorsi <*****@*****.**>
 *
 */
function tr($string)
{
    return I18nHelper::getInstance()->tr($string);
}
Exemple #15
0
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>';
});