public static function label($code) { if (self::$_labels === null) { self::$_labels = Language::getAllLangLabels(); } return isset(self::$_labels[$code]) ? self::$_labels[$code] : null; }
/** * Lists all LanguageTranslate models. * @return mixed */ public function actionIndex() { $searchModel = new LanguageTranslateSearch(); $dataProvider = $searchModel->search(Yii::$app->request->queryParams); $languages = Language::getLanguages(); $categories = ArrayHelper::map(LanguageSource::find()->select('category')->distinct()->all(), 'category', 'category'); return $this->render('index', ['searchModel' => $searchModel, 'dataProvider' => $dataProvider, 'languages' => $languages, 'categories' => $categories]); }
/** * Finds the Language model based on its primary key value. * If the model is not found, a 404 HTTP exception will be thrown. * @param string $id * @return Language the loaded model * @throws NotFoundHttpException if the model cannot be found */ protected function findModel($id) { if (($model = Language::findOne($id)) !== null) { return $model; } else { throw new NotFoundHttpException('The requested page does not exist.'); } }
protected static function getDefaultLanguage($lang = false) { if ($lang === false) { $lang = Language::findOne(Yii::$app->language); } else { $lang = Language::getLangByUrl($lang); } return $lang; }
/** * Creates a new Page model. * If creation is successful, the browser will be redirected to the 'view' page. * @return mixed */ public function actionCreate() { $model = new Page(); $model->language = Language::getCurrent(); if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', ['model' => $model, 'layouts' => Page::getLayouts(), 'templates' => Page::getTemplates(), 'active' => Page::getActiveList()]); } }
/** * @return string */ public function run() { $list = []; list($route, $params) = Yii::$app->getUrlManager()->parseRequest(Yii::$app->getRequest()); $params = ArrayHelper::merge($_GET, $params); $url = isset($params['route']) ? $params['route'] : $route; foreach ($this->languages as $row) { $list = ArrayHelper::merge($list, [['label' => $row['title'], 'url' => Yii::$app->urlManager->createUrl(ArrayHelper::merge($params, [$url, 'language' => $row['iso']]))]]); } return Nav::widget(['options' => $this->options, 'items' => [['label' => Language::getCurrentRecord()->title, 'items' => $list]]]); }
/** * @param array|string $params * @return string */ public function createUrl($params) { $params = (array) $params; $language = isset($params['language']) ? $params['language'] : Language::getCurrent(); if (!Language::isLanguage($language)) { $language = Language::getCurrent(); } unset($params['route'], $params['language']); $params['0'] = $language . '/' . trim($params['0'], '/'); return parent::createUrl($params); }
/** * @param string $route * @return string * @throws \yii\web\NotFoundHttpException */ public function actionRoute($route = 'index') { /* @var $dp Page */ $page = Page::parse($route); $dp = Page::find()->where('name = :name AND active = :active AND language = :language', [':name' => $page, ':active' => Page::ACTIVE_YES, ':language' => Language::getCurrent()])->one(); if ($dp === null) { throw new NotFoundHttpException(Yii::t('yii', 'Page not found.')); } $this->registerLayout($dp->layout); return $this->render($dp->template, ['dp' => $dp]); }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = Page::find()->where(['language' => Language::getCurrent()]); $dataProvider = new ActiveDataProvider(['query' => $query]); if (!($this->load($params) && $this->validate())) { return $dataProvider; } $query->andFilterWhere(['id' => $this->id]); $query->andFilterWhere(['like', 'name', $this->name])->andFilterWhere(['like', 'title', $this->title])->andFilterWhere(['like', 'layout', $this->layout])->andFilterWhere(['like', 'template', $this->template])->andFilterWhere(['like', 'active', $this->active]); return $dataProvider; }
public function registerLanguage() { $language = ArrayHelper::getValue($this->clientOptions, 'lang'); if ($language === null) { $language = Language::getCurrentCode(); $this->clientOptions = ArrayHelper::merge($this->clientOptions, ['lang' => $language]); } $js = 'lang' . DIRECTORY_SEPARATOR . $language . '.js'; if (file_exists($this->_assetBundle->basePath . DIRECTORY_SEPARATOR . $js)) { $this->_assetBundle->js[] = $js; } else { ArrayHelper::remove($this->clientOptions, 'lang'); } }
/** * @return bool|string */ protected function resolveRequestUri() { $pattern = []; $resolveRequestUri = parent::resolveRequestUri(); if (Yii::$app->getUrlManager()->enablePrettyUrl === true) { $pattern[] = '/' . preg_replace('/\\//', '\\/', Yii::$app->getUrlManager()->suffix) . '/'; } if (Yii::$app->getUrlManager()->showScriptName === true) { $pattern[] = '/' . preg_replace('/\\//', '\\/', $this->getScriptUrl()) . '/'; } $requestUri = preg_replace($pattern, '', $resolveRequestUri); list($language, ) = explode('/', trim($requestUri, '/')); if (Language::isLanguage($language)) { Language::setCurrent($language); } else { Language::setCurrent($this->getPreferredLanguage(ArrayHelper::getColumn(Language::listing(), 'iso'))); } return $resolveRequestUri; }
public static function handleMissingTranslation(MissingTranslationEvent $event) { $i18nSource = I18nSource::findOne(['category' => $event->category, 'message' => $event->message]); if ($i18nSource === null) { $i18nSource = new I18nSource(); $i18nSource->category = $event->category; $i18nSource->message = $event->message; $i18nSource->save(); } foreach (Language::listing() as $language) { $i18nMessage = I18nMessage::findOne(['id' => $i18nSource->id, 'language' => $language['iso']]); if ($i18nMessage === null) { $i18nMessage = new I18nMessage(); $i18nMessage->id = $i18nSource->id; $i18nMessage->language = $language['iso']; $i18nMessage->translation = $event->message; $i18nMessage->save(); } } }
/** * Updates an existing I18nSource model. * If update is successful, the browser will be redirected to the 'view' page. * @param string $id * @return mixed */ public function actionUpdate($id) { $i18nSource = $this->findModel($id); $i18nMessage = I18nMessage::find()->where(['id' => $id, 'language' => Language::getCurrent()])->one(); if (Yii::$app->request->isPost) { $transaction = Yii::$app->db->beginTransaction(); try { $i18nSource->load(Yii::$app->request->post()); if ($i18nSource->save()) { $i18nMessage->load(Yii::$app->request->post()); if ($i18nMessage->save()) { $transaction->commit(); } } return $this->redirect(['view', 'id' => $id]); } catch (\Exception $e) { $transaction->rollBack(); return $this->redirect(['update', 'id' => $id]); } } return $this->render('update', ['i18nSource' => $i18nSource, 'i18nMessage' => $i18nMessage]); }
</div> <div class="col-md-9"> <?php echo Html::img($model->getUploadUrl('avatar') ?: '/uploads/user/non_image.png', ['class' => 'img-thumbnail', 'style' => 'max-width:300px']); ?> </div> </div> </div> <?php echo $form->field($model, 'avatar')->fileInput(['accept' => 'image/*']); ?> <?php echo $form->field($model, 'firstname')->textInput(['maxlength' => 255]); ?> <?php echo $form->field($model, 'middlename')->textInput(['maxlength' => 255]); ?> <?php echo $form->field($model, 'lastname')->textInput(['maxlength' => 255]); ?> <?php echo $form->field($model, 'locale')->dropDownlist(ArrayHelper::map(\app\modules\language\models\Language::getLanguages(), 'language_id', 'name')); ?> <?php echo $form->field($model, 'gender')->dropDownlist([UserProfile::GENDER_FEMALE => Yii::t('backend', 'Female'), UserProfile::GENDER_MALE => Yii::t('backend', 'Male')]); ?> <?php ActiveForm::end(); ?> </div>
use yii\helpers\Url; use yii\helpers\ArrayHelper; use app\modules\admin\widgets\Button; use app\modules\language\models\Language; use app\templates\backend\base\assets\BaseAsset; use app\modules\content\models\ContentCategory; $asset = BaseAsset::register($this); $class = $this->context->categoryClass; $settings = $this->context->module->settings; if (isset($parent)) { $model->parent = $parent; } if ($model->isNewRecord) { $langueBtn = ['label' => '<img src="' . $asset->baseUrl . '/images/flags/' . $lang->url . '.png" alt="' . $lang->url . '"/> ' . Yii::t('backend', $lang->name), 'options' => ['form' => 'portfolio-id', 'type' => 'submit'], 'encodeLabel' => false, 'icon' => false, 'size' => Button::SIZE_SMALL, 'disabled' => false, 'block' => false, 'type' => Button::TYPE_CIRCLE, 'color' => 'btn-default']; } else { $allLang = Language::getLanguages(); $langueBtnItems = []; foreach ($allLang as $item) { if ($lang->language_id != $item->language_id) { $langueBtnItems[] = ['label' => '<img src="' . $asset->baseUrl . '/images/flags/' . $item->url . '.png" alt="' . $item->url . '"/> ' . $item->name, 'url' => ['update', 'id' => $model->id, 'language' => $item->url]]; } } $langueBtn = ['label' => '<img src="' . $asset->baseUrl . '/images/flags/' . $lang->url . '.png" alt="' . $lang->url . '"/> ' . $lang->name, 'options' => ['class' => 'btn blue btn-outline btn-circle btn-sm', 'data-hover' => "dropdown", 'data-close-others' => "true"], 'encodeLabel' => false, 'dropdown' => ['encodeLabels' => false, 'options' => ['class' => 'pull-right'], 'items' => $langueBtnItems]]; } $this->params['actions_buttons'] = [$langueBtn, ['label' => $model->isNewRecord ? Yii::t('admin', 'Create') : Yii::t('admin', 'Update'), 'options' => ['form' => 'category-form-id', 'type' => 'submit'], 'icon' => 'fa fa-save', 'iconPosition' => Button::ICON_POSITION_LEFT, 'size' => Button::SIZE_SMALL, 'disabled' => false, 'block' => false, 'type' => Button::TYPE_CIRCLE, 'color' => 'btn-success'], ['label' => Yii::t('admin', 'Save & Continue Edit'), 'options' => ['onclick' => 'sendFormReload("#category-form-id")'], 'icon' => 'fa fa-check-circle', 'iconPosition' => Button::ICON_POSITION_LEFT, 'size' => Button::SIZE_SMALL, 'disabled' => false, 'block' => false, 'type' => Button::TYPE_CIRCLE, 'color' => 'btn-success']]; $form = \app\modules\admin\widgets\ActiveForm::begin(['enableAjaxValidation' => true, 'options' => ['enctype' => 'multipart/form-data', 'id' => 'category-form-id']]); ?> <?php echo $form->field($model, 'title'); ?>
public function actionGetSettings($file, $id = null, $lang = null) { if (Yii::$app->request->isAjax) { $return = ''; $lang === null ? $lang = Language::findOne(Yii::$app->language) : ($lang = Language::findOne($lang)); $model = Text::findOne($id); if ($model) { $model->language = $lang->language_id; $model->settingsAfterLanguage(); } if ($id !== null && $model) { if ($model->settings && is_array($model->settings) && count($model->settings) && $file == $model->layout) { $model->settings = array_merge($this->getLayouts($file)[0]['settings'], $model->settings); foreach ($model->settings as $key => $setting) { $return .= Html::settingField($key, $setting, 'text'); } } else { foreach ($this->getLayouts($file)[0]['settings'] as $key => $setting) { $return .= Html::settingField($key, $setting, 'text'); } } } else { foreach ($this->getLayouts($file)[0]['settings'] as $key => $setting) { $return .= Html::settingField($key, $setting, 'text'); } } return $this->renderAjax('get-settings', ['return' => $return]); } else { throw new NotFoundHttpException(); } }
/** * @return \yii\db\ActiveQuery */ public function getLanguages() { return $this->hasMany(Language::className(), ['iso' => 'language'])->viaTable('{{{%i18n_message}}}', ['id' => 'id']); }
public function registerUploadDir() { $this->uploadDir = $this->uploadDir . DIRECTORY_SEPARATOR . Language::getCurrent(); FileHelper::createDirectory(Yii::getAlias('@webroot' . DIRECTORY_SEPARATOR . $this->uploadDir), 0777, true); }
<?php use yii\helpers\Url; use yii\helpers\Html; use yii\grid\GridView; use app\modules\admin\widgets\Button; use app\modules\language\models\LanguageTranslate; /** * @var $this yii\web\View * @var $searchModel app\modules\language\models\search\LanguageTranslateSearch * @var $dataProvider yii\data\ActiveDataProvider * @var $categories */ $this->title = Yii::t('language', 'Language Translates'); $this->params['breadcrumbs'][] = $this->title; $this->params['actions_buttons'] = [['tagName' => 'a', 'label' => Yii::t('admin', 'Create'), 'options' => ['href' => Url::to(['create'])], 'icon' => 'fa fa-plus', 'iconPosition' => Button::ICON_POSITION_LEFT, 'size' => Button::SIZE_SMALL, 'disabled' => false, 'block' => false, 'type' => Button::TYPE_CIRCLE]]; ?> <div class="language-translate-index"> <?php // echo $this->render('_search', ['model' => $searchModel]); ?> <div class="table-responsive"> <?php echo GridView::widget(['id' => 'grid', 'tableOptions' => ['class' => 'table table-striped table-bordered table-advance table-hover'], 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['attribute' => 'id', 'options' => ['style' => 'width:100px']], ['attribute' => 'language', 'value' => function ($model) { return \app\modules\language\models\Language::findOne($model->language)->name; }, 'options' => ['style' => 'width: 120px']], ['attribute' => 'category', 'filter' => $categories], ['attribute' => 'sourceMessage'], 'translation:ntext', ['class' => 'app\\modules\\admin\\components\\grid\\ActionColumn']]]); ?> </div> </div>
public function init() { $this->languages = Language::getAllLang(); parent::init(); }
/** * @return \yii\db\ActiveQuery */ public function getLanguage() { return $this->hasOne(Language::className(), ['iso' => 'language']); }
<?php use yii\helpers\Html; use app\modules\admin\widgets\Button; use app\modules\admin\widgets\ActiveForm; /* @var $this yii\web\View */ /* @var $model app\modules\language\models\LanguageTranslate */ /* @var $form yii\widgets\ActiveForm */ $this->params['actions_buttons'] = [['label' => $model->isNewRecord ? Yii::t('admin', 'Create') : Yii::t('admin', 'Update'), 'options' => ['form' => 'language-translate-id', 'type' => 'submit'], 'icon' => 'fa fa-save', 'iconPosition' => Button::ICON_POSITION_LEFT, 'size' => Button::SIZE_SMALL, 'disabled' => false, 'block' => false, 'type' => Button::TYPE_CIRCLE, 'color' => 'btn-success'], ['label' => Yii::t('admin', 'Save & Continue Edit'), 'options' => ['onclick' => 'sendFormReload("#language-translate-id")'], 'icon' => 'fa fa-check-circle', 'iconPosition' => Button::ICON_POSITION_LEFT, 'size' => Button::SIZE_SMALL, 'disabled' => false, 'block' => false, 'type' => Button::TYPE_CIRCLE, 'color' => 'btn-success']]; $languages = \yii\helpers\ArrayHelper::map(\app\modules\language\models\Language::getLanguages(), 'language_id', 'name'); ?> <div class="language-translate-form"> <?php $form = ActiveForm::begin(['options' => ['id' => 'language-translate-id']]); ?> <?php echo $form->field($model, 'id')->textInput(); ?> <?php echo $form->field($model, 'language')->dropDownList($languages); ?> <?php echo $form->field($model, 'translation')->textarea(['rows' => 6]); ?> <?php ActiveForm::end(); ?>
/** * @inheritdoc */ public function rules() { return [[['user_id'], 'required'], [['user_id', 'gender'], 'integer'], [['gender'], 'in', 'range' => [NULL, self::GENDER_FEMALE, self::GENDER_MALE]], [['firstname', 'middlename', 'lastname'], 'string', 'max' => 255], ['locale', 'default', 'value' => Yii::$app->language], ['locale', 'in', 'range' => array_keys(ArrayHelper::map(\app\modules\language\models\Language::getLanguages(), 'language_id', 'name'))], [['avatar'], 'image', 'extensions' => 'jpg, jpeg, gif, png', 'on' => ['insert', 'update']]]; }
/** * @return string */ public function run() { return Json::encode(ArrayHelper::merge([['name' => Yii::t('imperavi', 'Link to the page'), 'url' => '#']], ArrayHelper::getColumn(Page::find()->where(['language' => Language::getCurrent()])->asArray()->all(), function ($row) { return ['name' => $row['title'], 'url' => Yii::$app->getUrlManager()->createUrl($row['name'])]; }))); }
/** * @return string */ public function renderField() { switch ($this->type) { case 'textInput': return Html::textInput($this->param_name, $this->param_value, ['class' => 'form-control']); break; case 'textarea': return Html::textarea($this->param_name, $this->param_value, ['class' => 'form-control']); break; case 'checkbox': return Html::hiddenInput($this->param_name, 0) . \oakcms\bootstrapswitch\Switcher::widget(['name' => $this->param_name, 'checked' => $this->param_value]); break; case 'language': return Html::dropDownList($this->param_name, $this->param_value, ArrayHelper::map(Language::getLanguages(), 'language_id', 'name'), ['class' => 'form-control']); break; case 'getTheme': $files = scandir(Yii::getAlias('@app') . '/templates/frontend'); $items = []; foreach ($files as $file) { //if(!is_file($file) AND $file != '.' AND $file != '..') { if ($file != '.' and $file != '..') { $items[$file] = $file; } } return Html::dropDownList($this->param_name, $this->param_value, $items, ['class' => 'form-control']); break; } }