示例#1
0
 private function setLanguage()
 {
     $request = Yii::$app->request;
     $cookie = $request->cookies->get('language');
     if ($cookie) {
         $lang = Language::findOne(['lang' => $cookie->value]);
         if ($lang) {
             Yii::$app->language = $lang->lang;
             return;
         }
     }
     if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
         $accepts = $request->parseAcceptHeader($_SERVER['HTTP_ACCEPT_LANGUAGE']);
         foreach ($accepts as $lang => $options) {
             //FIXME: DBと整合をとってちゃんとやる
             switch (strtolower($lang)) {
                 case 'ja':
                 case 'ja-jp':
                     Yii::$app->language = 'ja-JP';
                     return;
                 case 'en':
                 case 'en-US':
                     Yii::$app->language = 'en-US';
                     return;
             }
         }
     }
     Yii::$app->language = 'en-US';
 }
示例#2
0
 public function actionSelect($id, $current_url = '')
 {
     $language = Language::findOne($id);
     Yii::$app->response->cookies->add(new Cookie(['name' => 'language', 'value' => $language->code, 'expire' => (new \Datetime())->modify('+1 year')->getTimestamp()]));
     if ($current_url) {
         $current_url = urldecode($current_url);
     } else {
         $current_url = ['site/index'];
     }
     return $this->redirect($current_url);
 }
示例#3
0
 private function detectLanguageByCookie()
 {
     $cookie = Yii::$app->request->cookies->get('language');
     if (!$cookie) {
         return false;
     }
     if (!($lang = Language::findOne(['lang' => $cookie->value]))) {
         return false;
     }
     return $lang->lang;
 }
示例#4
0
 private function setLanguage()
 {
     $request = Yii::$app->request;
     $cookie = $request->cookies->get('language');
     if ($cookie) {
         $lang = Language::findOne(['lang' => $cookie->value]);
         if ($lang) {
             Yii::$app->language = $lang->lang;
             return;
         }
     }
 }
示例#5
0
 public function createUrl($params)
 {
     if (isset($params['lang_id'])) {
         $lang = Language::findOne($params['lang_id']);
         if ($lang === null) {
             $lang = Language::getDefaultLang();
         }
         unset($params['lang_id']);
     } else {
         $lang = Language::getCurrent();
     }
     $url = parent::createUrl($params);
     if ($url == '/') {
         return '/' . $lang->url;
     } else {
         return '/' . $lang->url . $url;
     }
 }
示例#6
0
 public function createUrl($params)
 {
     if (isset($params['lang_id'])) {
         //Если указан идентификатор языка, то делаем попытку найти язык в БД,
         //иначе работаем с языком по умолчанию
         $lang = Language::findOne($params['lang_id']);
         if ($lang === null) {
             $lang = Language::getDefaultLang();
         }
         unset($params['lang_id']);
     } else {
         //Если не указан параметр языка, то работаем с текущим языком
         $lang = Language::getCurrent();
     }
     //Получаем сформированный URL(без префикса идентификатора языка)
     $url = parent::createUrl($params);
     //Добавляем к URL префикс - буквенный идентификатор языка
     if ($url == '/') {
         return '/' . $lang->url_key;
     } else {
         return '/' . $lang->url_key . $url;
     }
 }
 /**
  * Finds the Language model based on its primary key value.
  * If the model is not found, a 404 HTTP exception will be thrown.
  * @param integer $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.');
     }
 }
 public function processCode($fullCode)
 {
     $code = $fullCode['code'];
     $original = $fullCode['original'];
     if ($this->isCodeActive($code)) {
         $group = Group::findOne($code->z_p_id)->toArray();
         $bank = Bank::findOne($code->z_b_id)->toArray();
         $form = Form::findOne(['f_klasse' => $bank['klasse'], 'f_p_id' => $group['p_id']]);
         $style = Style::findOne(['s_b_id' => $bank['b_id'], 's_p_id' => $group['p_id']]);
         if (!$style) {
             $style = Settings::getSetting('style');
         } else {
             $style = $style->style;
         }
         $label = Yii::$app->params['default_next_label'];
         $message = Yii::$app->params['default_next_message'];
         if ($this->language != "default") {
             $language = Language::findOne($this->language);
             if ($language != null) {
                 if ($language->label != '') {
                     $label = $language->label;
                 }
                 if ($language->message != '') {
                     $message = $language->message;
                 }
             }
         }
         Yii::$app->session['anketData'] = ['original' => $original, 'code' => $code->toArray(), 'group' => $group, 'bank' => $bank, 'form' => $form->f_id, 'status' => 0, 'lang' => $this->language, 'style' => $style, 'label' => $label, 'message' => $message];
         $meta = Meta::findOne(['m_z_id' => $code->z_id]);
         if (!$meta) {
             $meta = new Meta();
             $meta->m_z_id = $code->z_id;
             $meta->ip = $_SERVER['REMOTE_ADDR'];
             $meta->time_start = time();
         } else {
             $meta->ip = $_SERVER['REMOTE_ADDR'];
         }
         $meta->save();
         return true;
     }
     return false;
 }
示例#9
0
echo Html::a('Neuer Benutzertext', ['user-text/create/' . $type], ['class' => 'btn btn-success']);
?>
    </p>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'ut_id', ['attribute' => 'p_id', 'filterType' => GridView::FILTER_SELECT2, 'filter' => InputHelper::getDropdownOptions('app\\models\\Group', 'p_id', 'bezeichnung', true, true), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'value' => function ($model, $key, $index, $widget) {
    if (!$model->p_id) {
        return 'Alle';
    }
    $group = \app\models\Group::findOne($model->p_id);
    return $group ? $group->bezeichnung : $model->p_id;
}, 'filterInputOptions' => ['placeholder' => 'Bitte wählen Sie'], 'format' => 'raw'], ['attribute' => 'b_id', 'filterType' => GridView::FILTER_SELECT2, 'filter' => InputHelper::getDropdownOptions('app\\models\\Bank', 'b_id', 'bezeichnung', true, true), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'value' => function ($model, $key, $index, $widget) {
    if (!$model->b_id) {
        return 'Alle';
    }
    $group = \app\models\Bank::findOne($model->b_id);
    return $group ? $group->bezeichnung : $model->b_id;
}, 'filterInputOptions' => ['placeholder' => 'Bitte wählen Sie'], 'format' => 'raw'], ['attribute' => 'l_id', 'filterType' => GridView::FILTER_SELECT2, 'filter' => InputHelper::getDropdownOptions('app\\models\\Language', 'l_id', 'name', true, true, true), 'filterWidgetOptions' => ['pluginOptions' => ['allowClear' => true]], 'value' => function ($model, $key, $index, $widget) {
    if (!$model->b_id) {
        return 'Default';
    }
    $group = \app\models\Language::findOne($model->l_id);
    return $group ? $group->name : $model->l_id;
}, 'filterInputOptions' => ['placeholder' => 'Bitte wählen Sie'], 'format' => 'raw'], ['attribute' => 't_id', 'value' => function ($model, $key, $index, $widget) {
    $group = \app\models\Text::findOne($model->t_id);
    return $group ? $group->name : $model->t_id;
}, 'format' => 'raw'], ['class' => 'yii\\grid\\ActionColumn', 'template' => '{update} {delete}']]]);
?>

</div>
 public function actionQuestionnaire($bezeichnung, $groupId, $langId)
 {
     $is_locked = Settings::getSetting('locked');
     if ($is_locked == 1) {
         return $this->render('error', ['name' => 'Fehler', 'message' => 'Das System ist gesperrt. Bei Fragen wenden sie sich bitte an Emotion Banking.']);
     }
     try {
         $bankKlasse = Bank::findOne(['b_id' => $bezeichnung])->klasse;
         $questionnaire = Form::findOne(['f_klasse' => $bankKlasse, 'f_p_id' => $groupId]);
         if (empty($questionnaire)) {
             throw new ErrorException('Es gibt keinen Fragebogen für ihre Banken-, bzw. Kundengruppenauswahl');
         }
         $code = $questionnaire->createSpecificCode($bezeichnung);
         if ($code->hasErrors()) {
             return $this->render('error', ['name' => 'Fehler', 'message' => $code->getLastErrorMessage()]);
         }
     } catch (ErrorException $e) {
         return $this->render('error', ['name' => 'Fehler', 'message' => $e->getMessage()]);
     }
     $codeString = $code->__toString();
     if ($codeString !== null) {
         $warning = '';
         $model = new AnketForm();
         $model->code = $codeString;
         $model->language = $langId;
         if ($langId != "default") {
             $lanuage = Language::findOne($langId);
             if (empty($lanuage)) {
                 $warning = "Die angegebene Sprache " . $langId . " kann nicht gefunden werden. Es wird die Standardsprache angezeigt";
             }
         }
         if ($code !== false && ($code = $model->validateCode())) {
             $model->processCode($code);
             $data = Yii::$app->session['anketData'];
             $text = UserText::getText($data['group']['p_id'], $data['bank']['b_id'], $data['lang'], true);
             if (is_null($text)) {
                 return $this->render('error', ['name' => 'Fehler', 'message' => 'kein Starttext für diese Sprache gefunden']);
             }
             return $this->render('welcome', ['text' => $text, 'code' => $data["original"], 'warning' => $warning, 'style' => $data['style']]);
         } else {
             return $this->render('error', ['name' => 'Fehler', 'message' => 'Bank gesperrt, Code ungültig oder bereits verwendet. Anmeldung fehlgeschlagen']);
         }
     } else {
         $this->redirect(['/site/index']);
     }
     $data = Yii::$app->session['anketData'];
     $form = Form::findOne($data['form']);
     $questions = $form->getQuestions($bank_id = $data["bank"]["b_id"]);
     //default
     $status = 0;
     //code not needed.
     if (Yii::$app->request->post('q')) {
         $userAnswers = Yii::$app->request->post('q');
         $status = $form->saveAnswers($data['code'], $userAnswers);
         $data['status'] = $status;
         $data['code']['status'] = $status;
     } else {
         $data = Yii::$app->session['anketData'];
         $text = UserText::getText($data['group']['p_id'], $data['bank']['b_id'], $data['lang'], true);
         if (is_null($text)) {
             return $this->render('error', ['name' => 'Fehler', 'message' => 'kein Starttext für diese Sprache gefunden']);
         }
         return $this->render('welcome', ['text' => $text, 'code' => $data["original"], 'style' => $data["style"]]);
     }
     Yii::$app->session['anketData'] = $data;
     if (!($status < $form->getQuestionsCount($questions))) {
         $this->redirect(['/site/end']);
     }
     return $this->render('form', ['status' => $status, 'percent' => round($status / $form->getQuestionsCount($questions) * 100), 'questions' => $questions, 'anket' => $form, 'bank' => $data['bank']['b_id'], 'style' => $data['style']]);
 }