Commit b9a54f61dac941d0990c81aa0a0904a9b2282374
1 parent
25bd78f8
test
Showing
29 changed files
with
211 additions
and
205 deletions
Show diff stats
frontend/controllers/BookmarksController.php
| ... | ... | @@ -211,14 +211,14 @@ |
| 211 | 211 | $response->format = Response::FORMAT_JSON; |
| 212 | 212 | $model_id = \Yii::$app->request->post('id'); |
| 213 | 213 | if(empty( $model_id )) { |
| 214 | - return [ 'error' => 'Ошибка добавления. Отсутствует id проекта' ]; | |
| 214 | + return [ 'error' => 'Ошибка добавления. Отсутствует id заказа' ]; | |
| 215 | 215 | } |
| 216 | 216 | /** |
| 217 | 217 | * @var Project $project |
| 218 | 218 | */ |
| 219 | 219 | $project = Project::findOne($model_id); |
| 220 | 220 | if(empty( $project )) { |
| 221 | - return [ 'error' => 'Ошибка добавления. Проект не найден.' ]; | |
| 221 | + return [ 'error' => 'Ошибка добавления. Заказ не найден.' ]; | |
| 222 | 222 | } |
| 223 | 223 | $model = $project->className(); |
| 224 | 224 | $user_id = \Yii::$app->user->getId(); |
| ... | ... | @@ -230,7 +230,7 @@ |
| 230 | 230 | 'type' => $type, |
| 231 | 231 | ]) |
| 232 | 232 | ) { |
| 233 | - return [ 'error' => 'Ошибка добавления. Проект уже добавлен.' ]; | |
| 233 | + return [ 'error' => 'Ошибка добавления. Заказ уже добавлен.' ]; | |
| 234 | 234 | } |
| 235 | 235 | $bookmark = new Bookmark([ |
| 236 | 236 | 'model' => $model, |
| ... | ... | @@ -331,11 +331,11 @@ |
| 331 | 331 | $response->format = Response::FORMAT_JSON; |
| 332 | 332 | $model_id = \Yii::$app->request->post('id'); |
| 333 | 333 | if(empty( $model_id )) { |
| 334 | - return [ 'error' => 'Ошибка удаления. Отсутствует id проекта' ]; | |
| 334 | + return [ 'error' => 'Ошибка удаления. Отсутствует id заказа' ]; | |
| 335 | 335 | } |
| 336 | 336 | $project = Project::findOne($model_id); |
| 337 | 337 | if(empty( $project )) { |
| 338 | - return [ 'error' => 'Ошибка добавления. Проект не найден.' ]; | |
| 338 | + return [ 'error' => 'Ошибка добавления. Заказ не найден.' ]; | |
| 339 | 339 | } |
| 340 | 340 | $model = $project->className(); |
| 341 | 341 | $user_id = \Yii::$app->user->getId(); | ... | ... |
frontend/controllers/CompanyController.php
frontend/controllers/TenderController.php
| ... | ... | @@ -116,7 +116,7 @@ |
| 116 | 116 | */ |
| 117 | 117 | $project = Project::findOne($project_id); |
| 118 | 118 | if(empty( $project )) { |
| 119 | - return [ 'error' => 'Проект не найден' ]; | |
| 119 | + return [ 'error' => 'Заказ не найден' ]; | |
| 120 | 120 | } |
| 121 | 121 | // elseif($project->user_id != $user->id) { |
| 122 | 122 | // return [ 'error' => 'Вы можете менять статус только собственных проектов' ]; |
| ... | ... | @@ -135,7 +135,7 @@ |
| 135 | 135 | return [ 'error' => 'Данного предложения не существует' ]; |
| 136 | 136 | } |
| 137 | 137 | if($project->user_id != $user->id && $comment->user_id != $user->id) { |
| 138 | - return ['error' => 'Вы можете менять статус только своих предложений, либо предложений по своим проектам']; | |
| 138 | + return ['error' => 'Вы можете менять статус только своих предложений, либо предложений по своим заказам']; | |
| 139 | 139 | } |
| 140 | 140 | if($comment->user_id == $user->id) { |
| 141 | 141 | $comment->scenario = $comment::SCENARIO_OWNER; |
| ... | ... | @@ -177,7 +177,7 @@ |
| 177 | 177 | ->with('parent') |
| 178 | 178 | ->all(); |
| 179 | 179 | if(empty( $projects )) { |
| 180 | - return [ 'error' => 'У Вас еще нету проектов' ]; | |
| 180 | + return [ 'error' => 'У Вас еще нету заказов' ]; | |
| 181 | 181 | } |
| 182 | 182 | return [ |
| 183 | 183 | 'message' => $this->renderAjax('forms-modal-offer', [ |
| ... | ... | @@ -214,9 +214,9 @@ |
| 214 | 214 | ->where([ 'project_id' => $project_id ]) |
| 215 | 215 | ->one(); |
| 216 | 216 | if(empty( $project )) { |
| 217 | - return [ 'error' => 'Проект не найден' ]; | |
| 217 | + return [ 'error' => 'Заказ не найден' ]; | |
| 218 | 218 | } elseif($project->user_id != $user->id) { |
| 219 | - return [ 'error' => 'Вы можете предлагать только собственные проекты' ]; | |
| 219 | + return [ 'error' => 'Вы можете предлагать только собственные заказы' ]; | |
| 220 | 220 | } |
| 221 | 221 | $chat = $user->getChat($performer->id) |
| 222 | 222 | ->one(); |
| ... | ... | @@ -234,7 +234,7 @@ |
| 234 | 234 | 'user_id' => $user->id, |
| 235 | 235 | 'status' => 1, |
| 236 | 236 | ]); |
| 237 | - $text = "<p>Здравствуйте, {$user->name}!</p><p>Предлагаю Вам принять участие в " . Html::a('Тендере', [ | |
| 237 | + $text = "<p>Здравствуйте, {$performer->name}!</p><p>Предлагаю Вам принять участие в " . Html::a('заказе', [ | |
| 238 | 238 | 'tender/view', |
| 239 | 239 | 'tender_id' => $project->project_id, |
| 240 | 240 | ]) . "</p>"; | ... | ... |
frontend/messages/ru/app.php
| ... | ... | @@ -76,7 +76,7 @@ |
| 76 | 76 | 'portfolio_specialization_id' => 'Portfolio Specialization ID', |
| 77 | 77 | 'specialization_id' => 'Specialization ID', |
| 78 | 78 | 'project_id' => 'Project ID', |
| 79 | - 'project_pid' => 'Родительский проект', | |
| 79 | + 'project_pid' => 'Родительский заказ', | |
| 80 | 80 | 'date_end' => 'Дата окончания', |
| 81 | 81 | 'budget' => 'Бюджет', |
| 82 | 82 | 'payment_variant' => 'Варианты оплаты', |
| ... | ... | @@ -156,7 +156,18 @@ |
| 156 | 156 | 'add_answer' => 'Добавить ответ', |
| 157 | 157 | 'add_field' => 'Добавить поле', |
| 158 | 158 | 'add_more' => 'Добавить еще', |
| 159 | - 'hidden_project' => 'Снять с тендера', | |
| 160 | - 'project_not_found' => 'Данный проект не найден', | |
| 159 | + 'hidden_project' => 'Снять заказ', | |
| 160 | + 'project_not_found' => 'Данный заказ не найден', | |
| 161 | + 'Project' => 'Заказ', | |
| 162 | + 'Projects' => 'Заказы', | |
| 163 | + 'project' => 'заказ', | |
| 164 | + 'projects' => 'заказы', | |
| 165 | + 'hidden_project_hint' => 'Снятый заказ будет добавлен в Архив (не доступен в поиске, но доступен по ссылке)', | |
| 166 | + 'Parent project' => 'Родительский заказ', | |
| 167 | + 'Your projects' => 'Ваши заказы', | |
| 168 | + 'Offer project' => 'Предложить заказ', | |
| 169 | + 'Project list' => 'Список заказов', | |
| 170 | + 'Add project' => 'Добавить заказ', | |
| 171 | + 'Main project' => 'Основной заказ', | |
| 161 | 172 | |
| 162 | 173 | ]; |
| 163 | 174 | \ No newline at end of file | ... | ... |
frontend/views/accounts/_projects_form.php
| ... | ... | @@ -20,7 +20,7 @@ use yii\jui\DatePicker; |
| 20 | 20 | use yii\web\JsExpression; |
| 21 | 21 | use yii\widgets\ActiveForm; |
| 22 | 22 | |
| 23 | -$this->title = 'Проекты'; | |
| 23 | +$this->title = Yii::t('app', 'Projects'); | |
| 24 | 24 | $this->params[ 'breadcrumbs' ][] = $this->title; |
| 25 | 25 | ?> |
| 26 | 26 | <div class="login-left-column-title"><?= $this->title ?></div> |
| ... | ... | @@ -40,7 +40,7 @@ $form = ActiveForm::begin([ 'options' => [ 'enctype' => 'multipart/form-data' ] |
| 40 | 40 | <div class="input-blocks-wrapper"> |
| 41 | 41 | <div class="input-blocks admin-project-list admin-currency-second"> |
| 42 | 42 | <?= $form->field($project, 'project_pid') |
| 43 | - ->dropDownList($projects, [ 'prompt' => 'Родительский проект' ]) ?> | |
| 43 | + ->dropDownList($projects, [ 'prompt' => Yii::t('app', 'Parent project') ]) ?> | |
| 44 | 44 | </div> |
| 45 | 45 | </div> |
| 46 | 46 | |
| ... | ... | @@ -99,7 +99,7 @@ $form = ActiveForm::begin([ 'options' => [ 'enctype' => 'multipart/form-data' ] |
| 99 | 99 | </div> |
| 100 | 100 | |
| 101 | 101 | |
| 102 | -<div class="conacts-admin style">Адрес проекта:</div> | |
| 102 | +<div class="conacts-admin style">Адрес заказа:</div> | |
| 103 | 103 | <div class="form-inline"> |
| 104 | 104 | <div class="input-blocks-wrapper"> |
| 105 | 105 | <div class="input-blocks"> |
| ... | ... | @@ -262,8 +262,8 @@ $form = ActiveForm::begin([ 'options' => [ 'enctype' => 'multipart/form-data' ] |
| 262 | 262 | <div class="input-blocks admin-project-list admin-currency-second"> |
| 263 | 263 | <?= $form->field($project, 'hidden', [ 'template' => "{input}{label}\n{hint}\n{error}" ]) |
| 264 | 264 | ->checkbox([ 'class' => 'custom-check admin-check' ], false) |
| 265 | - ->label('<span></span>Снять с тендера') | |
| 266 | - ->hint('Проект, снятый с тендера, будет добавлен в Архив (не доступен в поиске, но доступен по ссылке)') ?> | |
| 265 | + ->label('<span></span>'.Yii::t('app', 'hidden_project')) | |
| 266 | + ->hint(Yii::t('app', 'hidden_project_hint')) ?> | |
| 267 | 267 | </div> |
| 268 | 268 | </div> |
| 269 | 269 | ... | ... |
frontend/views/accounts/general.php
| ... | ... | @@ -55,12 +55,12 @@ |
| 55 | 55 | </div> |
| 56 | 56 | <div class="general-check-right"> |
| 57 | 57 | <div class="general-check-right-txt"> |
| 58 | - Обязательно должны быть созданы проекты вами, что бы вы попали в рейтинг заказчиков | |
| 58 | + Обязательно должны быть созданы заказы Вами, что бы вы попали в рейтинг заказчиков | |
| 59 | 59 | <?php |
| 60 | 60 | if(!empty($user->projects)) { |
| 61 | - echo "<p>В Вашем профиле добавлены проекты: ".count($user->projects)."</p>"; | |
| 61 | + echo "<p>В Вашем профиле добавлены ".Yii::t('app', 'projects').": ".count($user->projects)."</p>"; | |
| 62 | 62 | } else { |
| 63 | - echo "<p>В Вашем профиле не добавлены проекты. Чтобы добавить - перейдите по ".Html::a('ссылке', ['accounts/projects'], ['target' => '_blank'])."</p>"; | |
| 63 | + echo "<p>В Вашем профиле не добавлены ".Yii::t('app', 'projects').". Чтобы добавить - перейдите по ".Html::a('ссылке', ['accounts/projects'], ['target' => '_blank'])."</p>"; | |
| 64 | 64 | } |
| 65 | 65 | ?> |
| 66 | 66 | </div> | ... | ... |
frontend/views/accounts/participant-edit.php
| ... | ... | @@ -10,7 +10,7 @@ |
| 10 | 10 | * @var View $this |
| 11 | 11 | * @var PortfolioUser $model |
| 12 | 12 | */ |
| 13 | - $this->title = 'Редактирование участия в проекте'; | |
| 13 | + $this->title = 'Редактирование участия в заказе'; | |
| 14 | 14 | $this->params[ 'breadcrumbs' ][] = $this->title; |
| 15 | 15 | ?> |
| 16 | 16 | <div class="login-left-column-title"><?= $this->title ?></div> | ... | ... |
frontend/views/accounts/participant.php
| ... | ... | @@ -96,7 +96,7 @@ |
| 96 | 96 | ], [ |
| 97 | 97 | 'title' => 'Подтвердить', |
| 98 | 98 | 'aria-label' => 'Подтвердить', |
| 99 | - 'data-confirm' => 'Вы уверены, что хотите подтвердить участие в данном проекте?', | |
| 99 | + 'data-confirm' => 'Вы уверены, что хотите подтвердить участие в данном заказе?', | |
| 100 | 100 | 'data-method' => 'post', |
| 101 | 101 | 'data-pjax' => 0, |
| 102 | 102 | ]) : ''; |
| ... | ... | @@ -118,7 +118,7 @@ |
| 118 | 118 | ], [ |
| 119 | 119 | 'title' => 'Удалить', |
| 120 | 120 | 'aria-label' => 'Удалить', |
| 121 | - 'data-confirm' => 'Вы уверены, что хотите отказаться от участия в данном проекте?', | |
| 121 | + 'data-confirm' => 'Вы уверены, что хотите отказаться от участия в данном заказе?', | |
| 122 | 122 | 'data-method' => 'post', |
| 123 | 123 | 'data-pjax' => 0, |
| 124 | 124 | ]); | ... | ... |
frontend/views/accounts/projects.php
| ... | ... | @@ -12,7 +12,7 @@ |
| 12 | 12 | use yii\jui\DatePicker; |
| 13 | 13 | use yii\widgets\ActiveField; |
| 14 | 14 | |
| 15 | - $this->title = 'Проекты'; | |
| 15 | + $this->title = Yii::t('app', 'Projects'); | |
| 16 | 16 | $this->params[ 'breadcrumbs' ][] = $this->title; |
| 17 | 17 | ?> |
| 18 | 18 | <div class="login-left-column-title"><?= $this->title ?></div> | ... | ... |
frontend/views/bookmarks/bookmarks-customer.php
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | <div class="search-performer-button-bookmark"><a>Закладки</a></div> |
| 21 | 21 | <?= Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?> |
| 22 | 22 | <?= Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?> |
| 23 | - <?= Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 23 | + <?= Html::a(Yii::t('app', 'Projects'), [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 24 | 24 | <?= Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?> |
| 25 | 25 | </div> |
| 26 | 26 | <div class="right-search-work"> | ... | ... |
frontend/views/bookmarks/bookmarks-performer.php
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | <div class="search-performer-button-bookmark"><a>Закладки</a></div> |
| 21 | 21 | <?= Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?> |
| 22 | 22 | <?= Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?> |
| 23 | - <?= Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 23 | + <?= Html::a(Yii::t('app', 'Projects'), [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 24 | 24 | <?= Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?> |
| 25 | 25 | </div> |
| 26 | 26 | <div class="right-search-work"> | ... | ... |
frontend/views/bookmarks/bookmarks-project.php
| ... | ... | @@ -20,15 +20,15 @@ |
| 20 | 20 | <div class="search-performer-button-bookmark"><a>Закладки</a></div> |
| 21 | 21 | <?= Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?> |
| 22 | 22 | <?= Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?> |
| 23 | - <?= Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 23 | + <?= Html::a(Yii::t('app', 'Projects'), [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 24 | 24 | <?= Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?> |
| 25 | 25 | </div> |
| 26 | 26 | <div class="right-search-work"> |
| 27 | - <div class="search-worker-title style"><span>Проекты</span></div> | |
| 27 | + <div class="search-worker-title style"><span><?=Yii::t('app', 'Projects')?></span></div> | |
| 28 | 28 | <?= ListView::widget([ |
| 29 | 29 | 'dataProvider' => $dataProvider, |
| 30 | 30 | 'itemView' => '@frontend/views/search/_projects_list_view', |
| 31 | - 'summary' => '<div class="search-worker-title-two style">Всего <span>{totalCount}</span> проектов в закладках</div>', | |
| 31 | + 'summary' => '<div class="search-worker-title-two style">Всего <span>{totalCount}</span> '.Yii::t('app', 'projects').' в закладках</div>', | |
| 32 | 32 | ]) ?> |
| 33 | 33 | <?php |
| 34 | 34 | /* | ... | ... |
frontend/views/bookmarks/bookmarks-vacancy.php
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | <div class="search-performer-button-bookmark"><a>Закладки</a></div> |
| 21 | 21 | <?= Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?> |
| 22 | 22 | <?= Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?> |
| 23 | - <?= Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 23 | + <?= Html::a(Yii::t('app', 'Projects'), [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?> | |
| 24 | 24 | <?= Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?> |
| 25 | 25 | </div> |
| 26 | 26 | <div class="right-search-work"> | ... | ... |
frontend/views/bookmarks/bookmarks.php
| 1 | 1 | <?php |
| 2 | - use common\models\Option; | |
| 3 | - | |
| 4 | 2 | $this->title = 'Мой профиль'; |
| 5 | 3 | $this->params['breadcrumbs'][] = $this->title; |
| 6 | 4 | ?> |
| ... | ... | @@ -13,7 +11,7 @@ $this->params['breadcrumbs'][] = $this->title; |
| 13 | 11 | <div class="search-performer-button-bookmark"><a href="#">Закладки</a></div> |
| 14 | 12 | <a href="#" class="search-performer-button-performers">Исполнители</a> |
| 15 | 13 | <a href="#" class="search-performer-button-customers">Заказчики</a> |
| 16 | - <a href="#" class="search-performer-button-project">Проекты</a> | |
| 14 | + <a href="#" class="search-performer-button-project"><?=Yii::t('app', 'Projects')?></a> | |
| 17 | 15 | <a href="#" class="search-performer-button-project">Вакансии</a> |
| 18 | 16 | </div> |
| 19 | 17 | <div class="right-search-work"> | ... | ... |
frontend/views/company/_company_common_review.php
| ... | ... | @@ -20,11 +20,7 @@ |
| 20 | 20 | <div class="company-performer-comments-autor"> |
| 21 | 21 | Отзыв от: |
| 22 | 22 | <?php |
| 23 | - if(!empty( $model->author )) { | |
| 24 | - echo $model->author->name; | |
| 25 | - } else { | |
| 26 | - echo $model->user_name; | |
| 27 | - } | |
| 23 | + $model->getAuthor(' (Гость)'); | |
| 28 | 24 | ?> |
| 29 | 25 | </div> |
| 30 | 26 | <div class="company-performer-comments-txt"><?= $model->text ?></div> | ... | ... |
frontend/views/layouts/admin.php
| ... | ... | @@ -2,156 +2,154 @@ |
| 2 | 2 | |
| 3 | 3 | use common\components\Request; |
| 4 | 4 | use yii\base\View; |
| 5 | -use yii\widgets\Menu; | |
| 5 | + use yii\widgets\Menu; | |
| 6 | 6 | |
| 7 | -\frontend\assets\AdminAsset::register($this); | |
| 7 | + \frontend\assets\AdminAsset::register($this); | |
| 8 | 8 | /** |
| 9 | 9 | * @var string $content |
| 10 | - * @var View $this | |
| 10 | + * @var View $this | |
| 11 | 11 | */ |
| 12 | -$this->beginContent('@app/views/layouts/main.php'); | |
| 12 | + $this->beginContent('@app/views/layouts/main.php'); | |
| 13 | 13 | ?> |
| 14 | -<div class="section-box admin-page"> | |
| 15 | - <div class="box-wr"> | |
| 16 | - <div class="box-all"> | |
| 17 | - <div class="login-right-column"> | |
| 18 | - <div class="admin-my-page">Моя страница</div> | |
| 19 | - <?php | |
| 20 | - $item = [ | |
| 21 | - [ | |
| 22 | - 'label' => 'Учетные данные', | |
| 23 | - 'url' => ['accounts/general'], | |
| 24 | - 'options' => ['class' => 'admin-menu-icons admin-menu-ico-1',], | |
| 25 | - ], | |
| 26 | - [ | |
| 27 | - 'label' => 'Контакты', | |
| 28 | - 'url' => ['accounts/contacts'], | |
| 29 | - ], | |
| 30 | - [ | |
| 31 | - 'label' => 'Услуги', | |
| 32 | - 'url' => ['accounts/service'], | |
| 33 | - ], | |
| 34 | - | |
| 35 | - [ | |
| 36 | - 'label' => 'Описание', | |
| 37 | - 'url' => ['accounts/description'], | |
| 38 | - ], | |
| 39 | - | |
| 40 | - | |
| 41 | - | |
| 42 | - [ | |
| 43 | - 'label' => 'Вакансии', | |
| 44 | - 'url' => ['accounts/vacancy'], | |
| 45 | - 'active' => preg_match('/^vacancy.*$/', $this->context->action->id)?true:false, | |
| 46 | - ], | |
| 47 | - [ | |
| 48 | - 'label' => 'Ваши проекты', | |
| 49 | - 'url' => ['accounts/projects'], | |
| 50 | - 'active' => preg_match('/^projects.*$/', $this->context->action->id)?true:false, | |
| 51 | - ], | |
| 52 | - [ | |
| 53 | - 'label' => 'Портфолио', | |
| 54 | - 'url' => ['accounts/portfolio'], | |
| 55 | - 'active' => preg_match('/^portfolio.*$/', $this->context->action->id)?true:false, | |
| 56 | - ], | |
| 57 | - [ | |
| 58 | - 'label' => "Портфолио участник <span class='ico_num'>{$this->params['portfolio_user_count']}</span>", | |
| 59 | - 'encode' => false, | |
| 60 | - 'url' => ['accounts/participant'], | |
| 61 | - 'active' => preg_match('/^participant.*$/', $this->context->action->id)?true:false, | |
| 62 | - ], | |
| 63 | - [ | |
| 64 | - 'label' => 'Блог', | |
| 65 | - 'url' => ['accounts/blog'], | |
| 66 | - 'active' => preg_match('/^blog.*$/', $this->context->action->id)?true:false, | |
| 67 | - ], | |
| 68 | - [ | |
| 69 | - 'label' => 'Галерея Изображения', | |
| 70 | - 'url' => ['accounts/gallery'], | |
| 71 | - 'active' => preg_match('/^gallery(?!-video).*$/', $this->context->action->id)?true:false, | |
| 72 | - ], | |
| 73 | - [ | |
| 74 | - 'label' => 'Галерея Видео', | |
| 75 | - 'url' => ['accounts/gallery-video'], | |
| 76 | - ], | |
| 77 | - [ | |
| 78 | - 'label' => 'Сообщения', | |
| 79 | - 'url' => ['chat/list'], | |
| 80 | - 'options' => ['class' => 'admin-menu-icons admin-menu-ico-2',], | |
| 81 | - ], | |
| 82 | - [ | |
| 83 | - 'label' => 'Уведомления о проектах', | |
| 84 | - 'url' => ['/projects'], | |
| 85 | - ], | |
| 86 | - [ | |
| 87 | - 'label' => 'Закладки', | |
| 88 | - 'url' => ['accounts/bookmarks'], | |
| 89 | - 'options' => ['class' => 'admin-menu-icons admin-menu-ico-3',], | |
| 90 | - ], | |
| 91 | - [ | |
| 92 | - 'label' => 'Настройка аккаунта', | |
| 93 | - 'url' => ['accounts/setting'], | |
| 94 | - 'options' => ['class' => 'admin-menu-icons admin-menu-ico-4',], | |
| 95 | - ], | |
| 96 | - | |
| 97 | - ]; | |
| 98 | - | |
| 99 | - if(\Yii::$app->user->identity->type == 1){ | |
| 100 | - array_push($item, | |
| 101 | - | |
| 102 | - [ | |
| 103 | - 'label' => 'Трудовой стаж', | |
| 104 | - 'url' => ['accounts/employment'], | |
| 105 | - ], | |
| 106 | - [ | |
| 107 | - 'label' => 'Дополнительные навыки', | |
| 108 | - 'url' => ['accounts/add-skills'], | |
| 109 | - ] | |
| 110 | - | |
| 111 | - ); | |
| 112 | - } else if(\Yii::$app->user->identity->type == 2) { | |
| 113 | - array_push($item, | |
| 114 | - [ | |
| 115 | - 'label' => 'Команда', | |
| 116 | - 'url' => ['accounts/team'], | |
| 117 | - 'active' => preg_match('/^team.*$/', $this->context->action->id)?true:false, | |
| 118 | - ] | |
| 119 | - ); | |
| 120 | - | |
| 121 | - } | |
| 122 | - | |
| 123 | - array_push($item, | |
| 124 | - | |
| 125 | - [ | |
| 126 | - 'label' => 'На сайт', | |
| 127 | - 'url' => \Yii::$app->user->identity->type == 1 ? ['performer/common', 'performer_id'=>\Yii::$app->user->id] : ['company/common', 'company_id'=>\Yii::$app->user->id], | |
| 128 | - ], | |
| 129 | - [ | |
| 130 | - 'label' => 'Выход', | |
| 131 | - 'options' => ['class'=>'logout-li'], | |
| 132 | - 'url' => ['/site/logout'] | |
| 133 | - ] | |
| 134 | - | |
| 135 | - ); | |
| 136 | - | |
| 137 | - | |
| 138 | - | |
| 139 | - echo Menu::widget([ | |
| 140 | - 'options' => [ | |
| 141 | - 'class' => 'menu-admin', | |
| 142 | - ], | |
| 143 | - 'activeCssClass' => 'active-menu-admin', | |
| 144 | - 'items' => $item | |
| 145 | - ]); | |
| 146 | - ?> | |
| 147 | - </div> | |
| 14 | + <div class="section-box admin-page"> | |
| 15 | + <div class="box-wr"> | |
| 16 | + <div class="box-all"> | |
| 17 | + <div class="login-right-column"> | |
| 18 | + <div class="admin-my-page">Моя страница</div> | |
| 19 | + <?php | |
| 20 | + $item = [ | |
| 21 | + [ | |
| 22 | + 'label' => 'Учетные данные', | |
| 23 | + 'url' => [ 'accounts/general' ], | |
| 24 | + 'options' => [ 'class' => 'admin-menu-icons admin-menu-ico-1', ], | |
| 25 | + ], | |
| 26 | + [ | |
| 27 | + 'label' => 'Контакты', | |
| 28 | + 'url' => [ 'accounts/contacts' ], | |
| 29 | + ], | |
| 30 | + [ | |
| 31 | + 'label' => 'Услуги', | |
| 32 | + 'url' => [ 'accounts/service' ], | |
| 33 | + ], | |
| 34 | + | |
| 35 | + [ | |
| 36 | + 'label' => 'Описание', | |
| 37 | + 'url' => [ 'accounts/description' ], | |
| 38 | + ], | |
| 39 | + | |
| 40 | + [ | |
| 41 | + 'label' => 'Вакансии', | |
| 42 | + 'url' => [ 'accounts/vacancy' ], | |
| 43 | + 'active' => preg_match('/^vacancy.*$/', $this->context->action->id) ? true : false, | |
| 44 | + ], | |
| 45 | + [ | |
| 46 | + 'label' => Yii::t('app', 'Your projects'), | |
| 47 | + 'url' => [ 'accounts/projects' ], | |
| 48 | + 'active' => preg_match('/^projects.*$/', $this->context->action->id) ? true : false, | |
| 49 | + ], | |
| 50 | + [ | |
| 51 | + 'label' => 'Портфолио', | |
| 52 | + 'url' => [ 'accounts/portfolio' ], | |
| 53 | + 'active' => preg_match('/^portfolio.*$/', $this->context->action->id) ? true : false, | |
| 54 | + ], | |
| 55 | + [ | |
| 56 | + 'label' => "Портфолио участник <span class='ico_num'>{$this->params['portfolio_user_count']}</span>", | |
| 57 | + 'encode' => false, | |
| 58 | + 'url' => [ 'accounts/participant' ], | |
| 59 | + 'active' => preg_match('/^participant.*$/', $this->context->action->id) ? true : false, | |
| 60 | + ], | |
| 61 | + [ | |
| 62 | + 'label' => 'Блог', | |
| 63 | + 'url' => [ 'accounts/blog' ], | |
| 64 | + 'active' => preg_match('/^blog.*$/', $this->context->action->id) ? true : false, | |
| 65 | + ], | |
| 66 | + [ | |
| 67 | + 'label' => 'Галерея Изображения', | |
| 68 | + 'url' => [ 'accounts/gallery' ], | |
| 69 | + 'active' => preg_match('/^gallery(?!-video).*$/', $this->context->action->id) ? true : false, | |
| 70 | + ], | |
| 71 | + [ | |
| 72 | + 'label' => 'Галерея Видео', | |
| 73 | + 'url' => [ 'accounts/gallery-video' ], | |
| 74 | + ], | |
| 75 | + [ | |
| 76 | + 'label' => 'Сообщения', | |
| 77 | + 'url' => [ 'chat/list' ], | |
| 78 | + 'options' => [ 'class' => 'admin-menu-icons admin-menu-ico-2', ], | |
| 79 | + ], | |
| 80 | + [ | |
| 81 | + 'label' => 'Уведомления о заказах', | |
| 82 | + 'url' => [ '/projects' ], | |
| 83 | + ], | |
| 84 | + [ | |
| 85 | + 'label' => 'Закладки', | |
| 86 | + 'url' => [ 'accounts/bookmarks' ], | |
| 87 | + 'options' => [ 'class' => 'admin-menu-icons admin-menu-ico-3', ], | |
| 88 | + ], | |
| 89 | + [ | |
| 90 | + 'label' => 'Настройка аккаунта', | |
| 91 | + 'url' => [ 'accounts/setting' ], | |
| 92 | + 'options' => [ 'class' => 'admin-menu-icons admin-menu-ico-4', ], | |
| 93 | + ], | |
| 94 | + | |
| 95 | + ]; | |
| 96 | + | |
| 97 | + if(\Yii::$app->user->identity->type == 1) { | |
| 98 | + array_push($item, | |
| 99 | + | |
| 100 | + [ | |
| 101 | + 'label' => 'Трудовой стаж', | |
| 102 | + 'url' => [ 'accounts/employment' ], | |
| 103 | + ], [ | |
| 104 | + 'label' => 'Дополнительные навыки', | |
| 105 | + 'url' => [ 'accounts/add-skills' ], | |
| 106 | + ] | |
| 107 | + | |
| 108 | + ); | |
| 109 | + } else if(\Yii::$app->user->identity->type == 2) { | |
| 110 | + array_push($item, [ | |
| 111 | + 'label' => 'Команда', | |
| 112 | + 'url' => [ 'accounts/team' ], | |
| 113 | + 'active' => preg_match('/^team.*$/', $this->context->action->id) ? true : false, | |
| 114 | + ]); | |
| 115 | + | |
| 116 | + } | |
| 117 | + | |
| 118 | + array_push($item, | |
| 119 | + | |
| 120 | + [ | |
| 121 | + 'label' => 'На сайт', | |
| 122 | + 'url' => \Yii::$app->user->identity->type == 1 ? [ | |
| 123 | + 'performer/common', | |
| 124 | + 'performer_id' => \Yii::$app->user->id, | |
| 125 | + ] : [ | |
| 126 | + 'company/common', | |
| 127 | + 'company_id' => \Yii::$app->user->id, | |
| 128 | + ], | |
| 129 | + ], [ | |
| 130 | + 'label' => 'Выход', | |
| 131 | + 'options' => [ 'class' => 'logout-li' ], | |
| 132 | + 'url' => [ '/site/logout' ], | |
| 133 | + ] | |
| 134 | + | |
| 135 | + ); | |
| 136 | + | |
| 137 | + echo Menu::widget([ | |
| 138 | + 'options' => [ | |
| 139 | + 'class' => 'menu-admin', | |
| 140 | + ], | |
| 141 | + 'activeCssClass' => 'active-menu-admin', | |
| 142 | + 'items' => $item, | |
| 143 | + ]); | |
| 144 | + ?> | |
| 145 | + </div> | |
| 146 | + | |
| 147 | + <div class="login-left-column"> | |
| 148 | + <?= $content ?> | |
| 149 | + </div> | |
| 148 | 150 | |
| 149 | - <div class="login-left-column"> | |
| 150 | - <?= $content ?> | |
| 151 | 151 | </div> |
| 152 | - | |
| 153 | 152 | </div> |
| 154 | 153 | </div> |
| 155 | -</div> | |
| 156 | 154 | |
| 157 | 155 | <?php $this->endContent() ?> |
| 158 | 156 | \ No newline at end of file | ... | ... |
frontend/views/layouts/gallery.php
| ... | ... | @@ -18,7 +18,7 @@ $this->beginContent('@app/views/layouts/main.php'); |
| 18 | 18 | if($this->params[ 'user' ]->id != \Yii::$app->user->getId()) { |
| 19 | 19 | // Offer project button |
| 20 | 20 | if(!empty( $this->params[ 'type' ] ) && $this->params[ 'type' ] == 'customer') { |
| 21 | - echo Html::a('Предложить проект', [ '#' ], [ | |
| 21 | + echo Html::a(Yii::t('app', 'Offer project'), [ '#' ], [ | |
| 22 | 22 | 'class' => 'blog-buttons-offer', |
| 23 | 23 | 'data-performer-id' => $this->params[ 'user' ]->id, |
| 24 | 24 | ]); | ... | ... |
frontend/views/layouts/main.php
| ... | ... | @@ -91,7 +91,7 @@ AppAsset::register($this); |
| 91 | 91 | </li> |
| 92 | 92 | </ul> |
| 93 | 93 | <ul> |
| 94 | - <li><?= Html::a('Список проектов', ['search/project'])?></li> | |
| 94 | + <li><?= Html::a(Yii::t('app', 'Project list'), ['search/project'])?></li> | |
| 95 | 95 | <li><?= Html::a('Список вакансий', ['search/vacancy'])?></li> |
| 96 | 96 | <li><?= Html::a('Список заказчиков', ['search/customer'])?></li> |
| 97 | 97 | </ul> |
| ... | ... | @@ -102,7 +102,7 @@ AppAsset::register($this); |
| 102 | 102 | <div class="main-menu-hover"> |
| 103 | 103 | <ul> |
| 104 | 104 | |
| 105 | - <li><?= Html::a('Добавить проект', ['accounts/projects-create'])?></li> | |
| 105 | + <li><?= Html::a(Yii::t('app', 'Add project'), ['accounts/projects-create'])?></li> | |
| 106 | 106 | <li><?= Html::a('Разместить вакансию', ['accounts/vacancy'])?></li> |
| 107 | 107 | </ul> |
| 108 | 108 | <ul> |
| ... | ... | @@ -117,13 +117,13 @@ AppAsset::register($this); |
| 117 | 117 | <div class="main-menu-hover"> |
| 118 | 118 | <ul> |
| 119 | 119 | |
| 120 | - <li><?= Html::a('Добавить проект', ['accounts/projects-create'])?></li> | |
| 120 | + <li><?= Html::a(Yii::t('app', 'Add project'), ['accounts/projects-create'])?></li> | |
| 121 | 121 | <li><?= Html::a('Разместить вакансию', ['accounts/vacancy-create'])?></li> |
| 122 | 122 | <li><?= Html::a('Редактировать портфолио', ['accounts/portfolio'])?></li> |
| 123 | 123 | </ul> |
| 124 | 124 | <ul> |
| 125 | 125 | <li><?= Html::a('Список проектантов', ['search/performer'])?></li> |
| 126 | - <li><?= Html::a('Список проектов', ['search/project'])?></li> | |
| 126 | + <li><?= Html::a(Yii::t('app', 'Project list'), ['search/project'])?></li> | |
| 127 | 127 | <li><?= Html::a('Список заказчиков', ['search/customer'])?></li> |
| 128 | 128 | </ul> |
| 129 | 129 | </div> |
| ... | ... | @@ -136,9 +136,9 @@ AppAsset::register($this); |
| 136 | 136 | <input type="hidden" value="1" name="" /> |
| 137 | 137 | <button type="submit" value=""></button> |
| 138 | 138 | <div class="search-list"> |
| 139 | - <span>Проекты</span> | |
| 139 | + <span><?=Yii::t('app', 'Projects')?></span> | |
| 140 | 140 | <ul class="search-ul"> |
| 141 | - <li>Проекты</li> | |
| 141 | + <li><?=Yii::t('app', 'Projects')?></li> | |
| 142 | 142 | <li>Исполнители</li> |
| 143 | 143 | <li>Заказчики</li> |
| 144 | 144 | </ul> |
| ... | ... | @@ -199,7 +199,7 @@ AppAsset::register($this); |
| 199 | 199 | 'url' => ['site/signup'], |
| 200 | 200 | ], |
| 201 | 201 | [ |
| 202 | - 'label' => 'Проекты', | |
| 202 | + 'label' => Yii::t('app', 'Projects'), | |
| 203 | 203 | 'url' => ['search/project'], |
| 204 | 204 | ], |
| 205 | 205 | [ | ... | ... |
frontend/views/layouts/performer.php
| ... | ... | @@ -23,7 +23,7 @@ |
| 23 | 23 | if($this->params[ 'user' ]->id != \Yii::$app->user->getId()) { |
| 24 | 24 | // Offer project button |
| 25 | 25 | if(empty( $this->params[ 'type' ] ) || $this->params[ 'type' ] != 'customer') { |
| 26 | - echo Html::a('Предложить проект', [ '#' ], [ | |
| 26 | + echo Html::a(Yii::t('app', 'Offer project'), [ '#' ], [ | |
| 27 | 27 | 'class' => 'blog-buttons-offer', |
| 28 | 28 | 'data-performer-id' => $this->params[ 'user' ]->id, |
| 29 | 29 | ]); | ... | ... |
frontend/views/performer/common.php
| ... | ... | @@ -245,7 +245,7 @@ |
| 245 | 245 | <?php |
| 246 | 246 | } |
| 247 | 247 | ?> |
| 248 | - <div class="company-performer-comments-autor">Мнение от: <?= $user->comments[ $i ]->user->name ?></div> | |
| 248 | + <div class="company-performer-comments-autor">Мнение от: <?= $user->comments[ $i ]->getAuthor(' (Гость)') ?></div> | |
| 249 | 249 | <div class="company-performer-comments-txt"><?= $user->comments[ $i ]->text ?></div> |
| 250 | 250 | <a href="#" class="company-comm-see-all"><span>Развернуть</span></a> |
| 251 | 251 | </div> | ... | ... |
frontend/views/projects/projects.php
| ... | ... | @@ -17,7 +17,7 @@ |
| 17 | 17 | <div class="box-all"> |
| 18 | 18 | |
| 19 | 19 | <div class="left-proektant-cabinet"> |
| 20 | - <div class="left-proektant-cabinet-title style">Проекты в кабинете</div> | |
| 20 | + <div class="left-proektant-cabinet-title style"><?=Yii::t('app', 'Projects')?> в кабинете</div> | |
| 21 | 21 | <ul class="cabinet-list style"> |
| 22 | 22 | <li> |
| 23 | 23 | <img src="/images/cabinet/ico-1.png" alt=""/> | ... | ... |
frontend/views/search/_company_list_view.php
| ... | ... | @@ -44,7 +44,7 @@ $portfolios = ArrayHelper::getColumn($model->user->getPortfolios()->limit(3)->al |
| 44 | 44 | </div> |
| 45 | 45 | <?= Html::a($model->user->getPortfolios()->count()." работа в портфолио",[Url::toRoute(['company/portfolio','company_id'=>$model->user_id])], ['class' => "search-worker-blocks-jobs-portfolio" ])?> |
| 46 | 46 | <div class="search-worker-blocks-buttons style"> |
| 47 | - <a class="get-project" href="#">Предложить проект</a> | |
| 47 | + <a class="get-project" href="#">Предложить <?=Yii::t('app', 'project')?></a> | |
| 48 | 48 | <a class="get-list" href="#">Добавить в закладки</a> |
| 49 | 49 | </div> |
| 50 | 50 | </div> | ... | ... |
frontend/views/search/_customer_list_view.php
| ... | ... | @@ -63,7 +63,7 @@ |
| 63 | 63 | ?> |
| 64 | 64 | </div> |
| 65 | 65 | <div class="search_perform_projets_nam"> |
| 66 | - <?= Html::a("Заказано проектов ".count($model->projects), ['search/project', (new Project())->formName().'[user_id]' => $model->id]) ?> | |
| 66 | + <?= Html::a("Заказов ".count($model->projects), ['search/project', (new Project())->formName().'[user_id]' => $model->id]) ?> | |
| 67 | 67 | </div> |
| 68 | 68 | </div> |
| 69 | 69 | ... | ... |
frontend/views/search/_performer_list_view.php
| ... | ... | @@ -103,7 +103,7 @@ |
| 103 | 103 | 'data-id' => $model->id, |
| 104 | 104 | ]); |
| 105 | 105 | } |
| 106 | - echo Html::a('Предложить проект', ['#'], ['class' => 'get-project', 'data' => ['performer-id' => $model->id]]); | |
| 106 | + echo Html::a(Yii::t('app', 'Offer project'), ['#'], ['class' => 'get-project', 'data' => ['performer-id' => $model->id]]); | |
| 107 | 107 | } |
| 108 | 108 | ?> |
| 109 | 109 | </div> | ... | ... |
frontend/views/search/_projects_list_view.php
| ... | ... | @@ -30,7 +30,7 @@ use yii\helpers\Url; |
| 30 | 30 | <?php if(!empty($model->parent->name)):?> |
| 31 | 31 | <div class="srch-prof-contract-button">ПОДРЯД</div> |
| 32 | 32 | <div class="srch-prof-contract-txt"> |
| 33 | - <span>Из проекта: </span><?= Html::a($model->parent->name, Url::toRoute(['tender/view', 'tender_id' =>$model->parent->project_id ])) ?> | |
| 33 | + <span>Из заказа: </span><?= Html::a($model->parent->name, Url::toRoute(['tender/view', 'tender_id' =>$model->parent->project_id ])) ?> | |
| 34 | 34 | </div> |
| 35 | 35 | <?php endif; ?> |
| 36 | 36 | ... | ... |
frontend/views/search/project.php
| ... | ... | @@ -226,7 +226,7 @@ |
| 226 | 226 | </ul> |
| 227 | 227 | <ul class="min_markers_two"> |
| 228 | 228 | <li><span><img src="/images/markers/marker-min-10.png"/></span> |
| 229 | - <p>проекты</p></li> | |
| 229 | + <p><?=Yii::t('app', 'projects')?></p></li> | |
| 230 | 230 | <li><span><img src="/images/markers/marker-min-11.png"/></span> |
| 231 | 231 | <p>подряды</p></li> |
| 232 | 232 | </ul> | ... | ... |
frontend/views/tender/forms-modal-offer.php
| ... | ... | @@ -12,10 +12,10 @@ |
| 12 | 12 | <div id="modal_form_offer"> |
| 13 | 13 | <div class="closed-form"></div> |
| 14 | 14 | <div class="form-resume-wr offer"> |
| 15 | - <div class="form-resume-sub style">Предложить проект</div> | |
| 15 | + <div class="form-resume-sub style">Предложить <?=Yii::t('app', 'project')?></div> | |
| 16 | 16 | <form action="" class="offer-project"> |
| 17 | 17 | <input type="hidden" id="off_value" data-performer-id="<?=$performer_id?>"> |
| 18 | - <label>Выбрать проект</label> | |
| 18 | + <label>Выбрать <?=Yii::t('app', 'project')?></label> | |
| 19 | 19 | <div class="list_item title"> |
| 20 | 20 | <div class="main_item"> |
| 21 | 21 | <div class="pr_title"></div> | ... | ... |
frontend/views/tender/view.php
| ... | ... | @@ -23,7 +23,7 @@ $this->title = 'My Yii Application'; |
| 23 | 23 | <?php if(!empty($model->parent->name)):?> |
| 24 | 24 | <div class="srch-prof-contract-button">ПОДРЯД</div> |
| 25 | 25 | <div class="srch-prof-contract-txt"> |
| 26 | - <span>Из проекта: </span><?= Html::a($model->parent->name, Url::toRoute(['tender/view', 'tender_id' =>$model->parent->project_id ])) ?> | |
| 26 | + <span>Из заказа: </span><?= Html::a($model->parent->name, Url::toRoute(['tender/view', 'tender_id' =>$model->parent->project_id ])) ?> | |
| 27 | 27 | </div> |
| 28 | 28 | <?php endif; ?> |
| 29 | 29 | </div> |
| ... | ... | @@ -160,11 +160,11 @@ $this->title = 'My Yii Application'; |
| 160 | 160 | </div> |
| 161 | 161 | <div class="section-box-tender-navi"> |
| 162 | 162 | <?php if(!empty($model->parent->name)):?> |
| 163 | - <span>Подряд</span><img src="/images/tender/ico-2.png" alt=""/><?= Html::a('Основной проект', Url::toRoute(['tender/view', 'tender_id' =>$model->parent->project_id ])) ?> | |
| 163 | + <span>Подряд</span><img src="/images/tender/ico-2.png" alt=""/><?= Html::a(Yii::t('app', 'Main project'), Url::toRoute(['tender/view', 'tender_id' =>$model->parent->project_id ])) ?> | |
| 164 | 164 | <?php endif; ?> |
| 165 | 165 | </div> |
| 166 | 166 | <div class="section-box-tender-info-wr"> |
| 167 | - <div class="tender-info-title style">Краткая информация о проекте</div> | |
| 167 | + <div class="tender-info-title style">Краткая информация о заказе</div> | |
| 168 | 168 | <div class="section-box-tender-txt"> |
| 169 | 169 | <?= $model->description ?> |
| 170 | 170 | </div> | ... | ... |
frontend/web/js/script.js
| ... | ... | @@ -862,7 +862,10 @@ $(document).ready( |
| 862 | 862 | if($('.features-tags-profile').hasClass('features-tags-profile')) |
| 863 | 863 | { |
| 864 | 864 | var replaceLast = $('.features-tags span:last-child').html() |
| 865 | - var newReplaceLast = replaceLast.replace(/,(?![^,]*,)/m, '') | |
| 865 | + var newReplaceLast = replaceLast; | |
| 866 | + if(replaceLast !== undefined) { | |
| 867 | + newReplaceLast = replaceLast.replace(/,(?![^,]*,)/m, '') | |
| 868 | + } | |
| 866 | 869 | $('.features-tags span:last-child').empty().html(newReplaceLast) |
| 867 | 870 | |
| 868 | 871 | var featuresTags = $('.features-tags span') | ... | ... |