/**
  * Lists all models.
  * @return mixed
  */
 public function actionIndex()
 {
     $sourceLanguage = 'en-US';
     $languages = Yii::$app->yee->languages;
     $categories = MessageSource::getMessageCategories();
     unset($languages[$sourceLanguage]);
     $currentLanguage = Yii::$app->getRequest()->get('translation', NULL);
     $currentCategory = Yii::$app->getRequest()->get('category', NULL);
     if (!in_array($currentLanguage, array_keys($languages))) {
         $currentLanguage = NULL;
     }
     if (!in_array($currentCategory, array_keys($categories))) {
         $currentCategory = NULL;
     }
     if ($currentLanguage && $currentCategory) {
         Message::initMessages($currentCategory, $currentLanguage);
         $messageIds = MessageSource::getMessageIdsByCategory($currentCategory);
         $sourceTable = MessageSource::tableName();
         $messageTable = Message::tableName();
         $messages = Message::find()->andWhere(['IN', 'source_id', $messageIds])->andWhere(['language' => $currentLanguage])->indexBy('id')->all();
     } else {
         $messages = [];
     }
     if (User::hasPermission('updateTranslations') && Message::loadMultiple($messages, Yii::$app->request->post()) && Model::validateMultiple($messages)) {
         foreach ($messages as $message) {
             $message->save(false);
         }
         Yii::$app->session->setFlash('crudMessage', 'Your item has been updated.');
         return $this->refresh();
     }
     return $this->render('index', ['messages' => $messages, 'languages' => $languages, 'categories' => $categories, 'currentLanguage' => $currentLanguage, 'currentCategory' => $currentCategory]);
 }
 /**
  * @return \yii\db\ActiveQuery
  */
 public static function getMessageIdsByCategory($category)
 {
     $messages = MessageSource::getMessagesByCategory($category);
     $ids = array_map(function ($message) {
         return $message->id;
     }, $messages);
     return $ids;
 }
示例#3
0
 /**
  * @inheritdoc
  */
 public static function initMessages($category, $language)
 {
     $messageIds = MessageSource::getMessageIdsByCategory($category);
     $translations = Message::find()->select('source_id')->andWhere(['IN', 'source_id', $messageIds])->andWhere(['language' => $language])->all();
     $translationIds = array_map(function ($translation) {
         return $translation->source_id;
     }, $translations);
     $translationsToCreate = array_diff($messageIds, $translationIds);
     foreach ($translationsToCreate as $translationId) {
         $message = new Message();
         $message->source_id = $translationId;
         $message->language = $language;
         $message->translation = '';
         $message->save();
     }
     return true;
 }
示例#4
0
    <div class="message-source-form">

        <?php 
$form = ActiveForm::begin(['id' => 'message-source-form', 'validateOnBlur' => false, 'enableClientValidation' => false]);
?>

        <div class="row">
            <div class="col-md-9">
                <div class="panel panel-default">
                    <div class="panel-body">

                        <div class="row">
                            <div class="col-md-6">
                                <?php 
$categories = ArrayHelper::merge(MessageSource::getCategories(), [' ' => Yii::t('yee/translation', 'Create New Category')]);
?>
                                <?php 
echo $form->field($model, 'category')->dropDownList($categories, ['prompt' => '']);
?>
                            </div>
                            <div class="col-md-6">
                                <div class="form-group new-category-group">
                                    <label class="control-label"
                                           for="new-category"><?php 
echo Yii::t('yee/translation', 'New Category Name');
?>
</label>
                                    <input type="text" id="new-category" class="form-control" name="category"
                                           value="<?php 
echo Yii::$app->getRequest()->post('category');