Commit 2bb287cd81165f7ccffc5e21db0067a0e977ed2b

Authored by Administrator
2 parents d7456409 4ed1f788

Merge remote-tracking branch 'origin/master'

common/models/CustomerSearch.php 0 → 100644
  1 +<?php
  2 +
  3 + namespace common\models;
  4 +
  5 + use Yii;
  6 + use yii\base\Model;
  7 + use yii\data\ActiveDataProvider;
  8 + use common\models\User;
  9 +
  10 + /**
  11 + * CustomerSearch represents the model behind the search form about `common\models\UserInfo`.
  12 + */
  13 + class CustomerSearch extends User
  14 + {
  15 +
  16 + public $type;
  17 +
  18 + public $rating;
  19 +
  20 + public $online;
  21 +
  22 + public $city;
  23 +
  24 + public $info;
  25 +
  26 + /**
  27 + * @inheritdoc
  28 + */
  29 + public function rules()
  30 + {
  31 + return [
  32 + [
  33 + [
  34 + 'type',
  35 + 'rating',
  36 + 'online',
  37 + ],
  38 + 'integer',
  39 + ],
  40 + [
  41 + [
  42 + 'city',
  43 + 'info',
  44 + ],
  45 + 'safe',
  46 + ],
  47 + ];
  48 + }
  49 +
  50 + /**
  51 + * @inheritdoc
  52 + */
  53 + public function attributeLabels()
  54 + {
  55 + return [
  56 + 'type' => Yii::t('app', 'Тип заказчика'),
  57 + 'rating' => Yii::t('app', 'Рейтинг'),
  58 + 'online' => Yii::t('app', 'Статус'),
  59 + 'city' => Yii::t('app', 'Город'),
  60 + 'info' => Yii::t('app', 'Любая информация о заказчике'),
  61 + ];
  62 + }
  63 +
  64 + /**
  65 + * @inheritdoc
  66 + */
  67 + public function scenarios()
  68 + {
  69 + // bypass scenarios() implementation in the parent class
  70 + return Model::scenarios();
  71 + }
  72 +
  73 + /**
  74 + * Creates data provider instance with search query applied
  75 + *
  76 + * @param array $params
  77 + *
  78 + * @return ActiveDataProvider
  79 + */
  80 + public function search($params)
  81 + {
  82 + $query = User::find()
  83 + ->joinWith('userInfo')
  84 + ->joinWith('companyInfo');
  85 +
  86 + $dataProvider = new ActiveDataProvider([
  87 + 'query' => $query,
  88 + ]);
  89 +
  90 + $this->load($params);
  91 +
  92 + if(!$this->validate()) {
  93 + // uncomment the following line if you do not want to return any records when validation fails
  94 + // $query->where('0=1');
  95 + return $dataProvider;
  96 + }
  97 +
  98 + $query->andWhere([
  99 + 'is_customer' => 1,
  100 + ]);
  101 +
  102 + if($this->type == 2) {
  103 + $query->andWhere([
  104 + 'not',
  105 + [ 'company_info.company_info_id' => NULL ],
  106 + ]);
  107 +
  108 + $query->andWhere([
  109 + 'type' => 2,
  110 + ]);
  111 + } elseif($this->type == 1) {
  112 + $query->andWhere([
  113 + 'type' => 1,
  114 + ]);
  115 + }
  116 +
  117 + if($this->online == 1) {
  118 + $query->andWhere([
  119 + '>=',
  120 + 'user_info.date_visit',
  121 + date('Y-m-d H:i:s.u', time() - 1800),
  122 + ]);
  123 + }
  124 +
  125 + $query->andFilterWhere([
  126 + 'like',
  127 + 'user_info.city',
  128 + $this->city,
  129 + ])->andFilterWhere([
  130 + 'or',
  131 + [
  132 + 'like',
  133 + 'LOWER(username)',
  134 + mb_strtolower($this->info),
  135 + ],
  136 + [
  137 + 'like',
  138 + 'LOWER(lastname)',
  139 + mb_strtolower($this->info),
  140 + ],
  141 + [
  142 + 'like',
  143 + 'LOWER(firstname)',
  144 + mb_strtolower($this->info),
  145 + ],
  146 + [
  147 + 'like',
  148 + 'LOWER(middlename)',
  149 + mb_strtolower($this->info),
  150 + ],
  151 + [
  152 + 'like',
  153 + 'LOWER(company_info.name)',
  154 + mb_strtolower($this->info),
  155 + ],
  156 + [
  157 + 'like',
  158 + 'LOWER(company_info.street)',
  159 + mb_strtolower($this->info),
  160 + ],
  161 + [
  162 + 'like',
  163 + 'LOWER(user_info.country)',
  164 + mb_strtolower($this->info),
  165 + ],
  166 + [
  167 + 'like',
  168 + 'LOWER(user_info.city)',
  169 + mb_strtolower($this->info),
  170 + ],
  171 + [
  172 + 'like',
  173 + 'LOWER(user_info.about)',
  174 + mb_strtolower($this->info),
  175 + ],
  176 + ]);
  177 +
  178 + return $dataProvider;
  179 + }
  180 + }
... ...
common/models/User.php
1 1 <?php
2 2 namespace common\models;
3 3  
  4 + use common\modules\comment\models\Comment;
  5 + use common\modules\comment\models\Rating;
4 6 use Yii;
  7 + use yii\base\InvalidConfigException;
5 8 use yii\base\NotSupportedException;
6 9 use yii\behaviors\TimestampBehavior;
7 10 use yii\db\ActiveQuery;
... ... @@ -13,17 +16,18 @@
13 16  
14 17 /**
15 18 * User model
16   - * @property integer $id
17   - * @property string $username
18   - * @property string $password_hash
19   - * @property string $password_reset_token
20   - * @property string $email
21   - * @property string $auth_key
22   - * @property integer $status
23   - * @property integer $created_at
24   - * @property integer $updated_at
25   - * @property string $password write-only password
26   - * @property string $type
  19 + * @property integer $id
  20 + * @property string $username
  21 + * @property string $password_hash
  22 + * @property string $password_reset_token
  23 + * @property string $email
  24 + * @property string $auth_key
  25 + * @property integer $status
  26 + * @property integer $created_at
  27 + * @property integer $updated_at
  28 + * @property string $password write-only password
  29 + * @property string $type
  30 + * @property UserInfo $userInfo
27 31 */
28 32 class User extends ActiveRecord implements IdentityInterface, UserRbacInterface
29 33 {
... ... @@ -57,9 +61,6 @@
57 61 ];
58 62 }
59 63  
60   -
61   -
62   -
63 64 /**
64 65 * @inheritdoc
65 66 */
... ... @@ -93,10 +94,15 @@
93 94 [
94 95 'specializationInput',
95 96 'paymentInput',
96   - 'type'
  97 + 'type',
97 98 ],
98 99 'safe',
99 100 ],
  101 + [
  102 + 'type',
  103 + 'default',
  104 + 'value' => 1,
  105 + ],
100 106 ];
101 107 }
102 108  
... ... @@ -107,8 +113,8 @@
107 113 {
108 114 return [
109 115 'firstname' => Yii::t('app', 'Имя'),
110   - 'lastname' => Yii::t('app', 'Фамилия'),
111   - 'email' => Yii::t('app', 'Email'),
  116 + 'lastname' => Yii::t('app', 'Фамилия'),
  117 + 'email' => Yii::t('app', 'Email'),
112 118 ];
113 119 }
114 120  
... ... @@ -343,7 +349,8 @@
343 349 */
344 350 public function getUserInfo()
345 351 {
346   - return $this->hasOne(UserInfo::className(), [ 'user_id' => 'id' ])->inverseOf('user');
  352 + return $this->hasOne(UserInfo::className(), [ 'user_id' => 'id' ])
  353 + ->inverseOf('user');
347 354 }
348 355  
349 356 /**
... ... @@ -403,11 +410,11 @@
403 410 $date1 = new \DateTime(date('Y-m-d H:i:s', $this->created_at));
404 411 $result = explode(',', \Yii::$app->formatter->asDuration($date1->diff($now)));
405 412  
406   - if($result >= 4){
  413 + if($result >= 4) {
407 414 array_splice($result, 2);
408 415 }
409 416  
410   - return implode(',',$result);
  417 + return implode(',', $result);
411 418 }
412 419  
413 420 /**
... ... @@ -544,7 +551,8 @@
544 551 */
545 552 public function getVacancies()
546 553 {
547   - return $this->hasMany(Vacancy::className(), [ 'user_id' => 'id' ])->inverseOf('user');
  554 + return $this->hasMany(Vacancy::className(), [ 'user_id' => 'id' ])
  555 + ->inverseOf('user');
548 556 }
549 557  
550 558 public function getGalleries()
... ... @@ -554,22 +562,44 @@
554 562  
555 563 public function getOwner()
556 564 {
557   - if($this->type == 1){
558   - return $this->hasOne(UserInfo::className(), [ 'user_id' => 'id' ]);
559   - } else if($this->type == 2) {
  565 + if($this->type == 2) {
560 566 return $this->hasOne(CompanyInfo::className(), [ 'user_id' => 'id' ]);
  567 + } else {
  568 + return $this->hasOne(UserInfo::className(), [ 'user_id' => 'id' ]);
561 569 }
562   -
563 570 }
564 571  
565   - public function getName(){
566   - if($this->type == 1){
567   - return $this->firstname. ' '.$this->lastname;
568   - } else if($this->type == 2){
  572 + public function getName()
  573 + {
  574 + if($this->type == 2) {
569 575 return $this->companyInfo->name;
  576 + } else {
  577 + return $this->firstname . ' ' . $this->lastname;
570 578 }
  579 + }
571 580  
  581 + public function getComments()
  582 + {
  583 + $entity = 'user-' . $this->id;
  584 + $comments = (new Comment())->getComments($entity);
  585 + return $comments;
572 586 }
573 587  
  588 + public function getRatingPG()
  589 + {
  590 + if(\Yii::$app->db->driverName != 'pgsql') {
  591 + throw new InvalidConfigException('This method is available only in PostgreSQL');
  592 + }
  593 + $entity = 'user-' . $this->id;
  594 + $rating = (new Comment())->getComments($entity)
  595 + ->select('ROUND(SUM("rating"."value")/COUNT("rating"."rating_id")::float) as rating')
  596 + ->leftJoin(Rating::tableName(), "CONCAT('Comment-', \"comment\".\"comment_id\") = \"rating\".\"entity\"")
  597 + ->andWhere([
  598 + 'not',
  599 + [ 'rating.value' => NULL ],
  600 + ])
  601 + ->one();
  602 + return $rating;
  603 + }
574 604  
575 605 }
... ...
common/modules/comment/models/Comment.php
1 1 <?php
2 2 namespace common\modules\comment\models;
3 3  
  4 + use yii\db\ActiveQuery;
  5 +
4 6 /**
5 7 * Class Comment
6 8 * @property bool $guestComment
... ... @@ -19,6 +21,8 @@
19 21 const SCENARIO_USER = 'user';
20 22 const SCENARIO_GUEST = 'guest';
21 23  
  24 + public $rating;
  25 +
22 26 /**
23 27 * @var bool
24 28 */
... ... @@ -130,12 +134,17 @@
130 134 $this->guestComment = $value;
131 135 }
132 136  
  137 + /**
  138 + * @param string $entity
  139 + *
  140 + * @return ActiveQuery
  141 + */
133 142 public function getComments($entity)
134 143 {
135 144 return $this->find()
136 145 ->where([
137   - 'entity' => $this->entity,
138   - 'status' => 1,
  146 + 'comment.entity' => $entity,
  147 + 'comment.status' => 1,
139 148 ]);
140 149 }
141 150  
... ...
frontend/controllers/SearchController.php
1 1 <?php
2 2 namespace frontend\controllers;
3 3  
  4 +use common\models\CustomerSearch;
4 5 use common\models\Project;
5 6 use common\models\UserInfo;
6 7 use common\models\Vacancy;
... ... @@ -68,7 +69,65 @@ class SearchController extends Controller
68 69  
69 70  
70 71 public function actionCustomer(){
  72 + $model = new CustomerSearch();
  73 + $dataProvider = $model->search(Yii::$app->request->queryParams);
  74 + $dataProvider->setPagination([
  75 + 'pageSize' => 5
  76 + ]);
  77 + $dataProvider->setSort([
  78 + 'attributes' => [
  79 + 'name' => [
  80 + 'asc' => [
  81 + 'company_info.name' => SORT_ASC,
  82 + 'firstname' => SORT_ASC,
  83 + 'lastname' => SORT_ASC,
  84 + ],
  85 + 'desc' => [
  86 + 'company_info.name' => SORT_DESC,
  87 + 'firstname' => SORT_DESC,
  88 + 'lastname' => SORT_DESC,
  89 + ],
  90 + 'default' => SORT_ASC,
  91 + 'label' => 'Название',
  92 + ],
  93 + 'staff' => [
  94 + 'asc' => [
  95 + 'company_info.staff' => SORT_ASC,
  96 + ],
  97 + 'desc' => [
  98 + 'company_info.staff' => SORT_DESC,
  99 + ],
  100 + 'default' => SORT_DESC,
  101 + 'label' => 'Количество сотрудников',
  102 + ],
  103 + 'visit' => [
  104 + 'asc' => [
  105 + 'user_info.date_visit' => SORT_ASC,
  106 + ],
  107 + 'desc' => [
  108 + 'user_info.date_visit' => SORT_DESC,
  109 + ],
  110 + 'default' => SORT_DESC,
  111 + 'label' => 'Последний визит',
  112 + ],
  113 + 'city' => [
  114 + 'asc' => [
  115 + 'user_info.city' => SORT_ASC,
  116 + ],
  117 + 'desc' => [
  118 + 'user_info.city' => SORT_DESC,
  119 + ],
  120 + 'default' => SORT_ASC,
  121 + 'label' => 'Город',
  122 + ],
  123 + ],
  124 + ]);
  125 + $model->load(Yii::$app->request->queryParams);
  126 + $cities = UserInfo::find()->select('city')->distinct()->asArray()->indexBy('city')->column();
71 127 return $this->render('customer',[
  128 + 'model' => $model,
  129 + 'dataProvider' => $dataProvider,
  130 + 'cities' => $cities,
72 131 ]);
73 132 }
74 133  
... ...
frontend/views/layouts/company.php
... ... @@ -16,10 +16,17 @@ $this-&gt;beginContent(&#39;@app/views/layouts/main.php&#39;);
16 16 <div class="performance-vacancy-call-back">
17 17 <div class="performance-vacancy-call-back-title">Оставьте заявку<br />и мы вам перезвоним</div>
18 18 <form class="callback" action="">
19   - <label for="callbac_name">Имя</label>
20   - <input id="callbac_name" type="text"/>
21   - <label for="callbac_phone">Телефон</label>
22   - <input id="callbac_phone" type="text"/>
  19 +
  20 + <div class="input-blocks-wrapper">
  21 + <label for="callbac_name">Имя</label>
  22 + <input id="callbac_name" type="text"/>
  23 + </div>
  24 +
  25 + <div class="input-blocks-wrapper">
  26 + <label for="callbac_phone">Телефон</label>
  27 + <input id="callbac_phone" type="text"/>
  28 + </div>
  29 +
23 30 <input id="callbac_submit" type="submit" value="Перезвонить мне"/>
24 31 </form>
25 32 <div class="performance-vacancy-call-back-conf">Гарантируем конфидециальность</div>
... ...
frontend/views/search/_customer_list_view.php 0 → 100644
  1 +<?php
  2 + /**
  3 + * @var User $model
  4 + * @var mixed $key
  5 + * @var integer $index
  6 + * @var ListView $widget
  7 + */
  8 + use common\models\Project;
  9 + use common\models\User;
  10 + use frontend\helpers\TextHelper;
  11 + use yii\bootstrap\Html;
  12 + use yii\helpers\Url;
  13 + use yii\widgets\ListView;
  14 +?>
  15 +<div class="search_perform_txt-wr">
  16 + <div class="search_perform_title">
  17 + <?php
  18 + if($model->type == 2) {
  19 + echo Html::a($model->companyInfo->name, ['company/common', 'company_id' => $model->id]);
  20 + } else {
  21 + echo Html::a($model->firstname . $model->lastname, ['performer/common', 'performer_id' => $model->id]);
  22 + }
  23 + ?>
  24 + </div>
  25 + <div class="search_perform-stars-wr">
  26 + <div class="rating_search_performer">
  27 + <!--оценка-->
  28 + <?php
  29 + if($rating = $model->getRatingPG()->rating) {
  30 + echo "<input type='hidden' class='val' value='{$rating}'/>";
  31 + } else {
  32 + echo "<input type='hidden' class='val' value='0'/>";
  33 + }
  34 + ?>
  35 + <input type="hidden" class="val" value="4"/>
  36 + </div>
  37 + <div class="search_perform-stars-txt">
  38 + <?= $model->getComments()->count() ?> отзывов
  39 + <?php
  40 + if(!empty( $model->userInfo->city )) {
  41 + echo ", {$model->userInfo->city}";
  42 + }
  43 + ?>
  44 + </div>
  45 + </div>
  46 + <?php
  47 + if($model->type == 2 && !empty( $model->companyInfo->staff )) {
  48 + ?>
  49 + <div class="search_perform_leng">
  50 + <div>Сотрудники: <?= $model->companyInfo->staff ?></div>
  51 + </div>
  52 + <?php
  53 + }
  54 + ?>
  55 + <div class="search_perform_visit">
  56 + <span>Послелний визит:</span> <?= \Yii::$app->formatter->asRelativeTime($model->userInfo->date_visit) ?>
  57 + </div>
  58 + <div class="search_perform_projets_nam">
  59 + <?= Html::a("Заказано проектов {$model->getProjects()->count()}", ['search/project', (new Project())->formName().'[user_id]' => $model->id]) ?>
  60 + </div>
  61 +</div>
  62 +
  63 +<div class="right_search_perform_block-wr">
  64 + <div class="right_search_perform_foto-wr">
  65 + <div>
  66 + <?php
  67 + echo Html::img($model->userInfo->image?:"/images/search_performer_img-1.jpg", ['class' => 'search_customer_image']);
  68 + ?>
  69 + </div>
  70 + </div>
  71 + <a class="get-list" href="#">Добавить в закладки</a>
  72 +</div>
0 73 \ No newline at end of file
... ...
frontend/views/search/company.php
... ... @@ -100,6 +100,12 @@ use yii\widgets\ListView;
100 100 <input type="submit" value="Найти"/>
101 101 </div>
102 102 </form>
  103 + <script>
  104 + $('div.rating').rating({
  105 + fx: 'full',
  106 + url: 'rating.php'
  107 + });
  108 + </script>
103 109 </div>
104 110 <div class="right-search-work">
105 111 <div class="search-worker-title style">Найти исполнителя</div>
... ... @@ -144,6 +150,14 @@ use yii\widgets\ListView;
144 150 ?>
145 151 </div>
146 152  
  153 + <script>
  154 + $('div.rating-new').rating({
  155 + fx: 'full',
  156 + readOnly: 'true',
  157 + url: 'rating.php'
  158 + });
  159 + </script>
  160 +
147 161 </div>
148 162 </div>
149 163 </div>
... ...
frontend/views/search/customer.php
1 1 <?php
2   -/**
3   - * Created by PhpStorm.
4   - * User: vitaliy
5   - * Date: 09.03.16
6   - * Time: 10:21
7   - */
  2 + /**
  3 + * @var CustomerSearch $model
  4 + * @var ActiveDataProvider $dataProvider
  5 + * @var string[] $cities
  6 + */
  7 + use common\models\CustomerSearch;
  8 + use yii\data\ActiveDataProvider;
  9 + use yii\helpers\Html;
  10 + use yii\widgets\ActiveForm;
  11 + use yii\widgets\LinkSorter;
  12 + use yii\widgets\ListView;
  13 +
8 14 ?>
9 15 <div class="section-box-22 section-box-customer">
10 16 <div class="box-wr">
11 17 <div class="box-all">
  18 + <?php
  19 + // == Left filter ==
  20 + ?>
12 21 <div class="left-search-work">
13   - <form action="" class="search-work-form">
14   - <div class="blocks-check-list-wrapp">
15   - <div class="blocks-check-title"><label for="theme-1">Город</label></div>
16   - <select id="theme-1">
17   - <option selected="" value="">Любой</option>
18   - <option value="">Киев</option>
19   - <option value="">Житомир</option>
20   - <option value="">Львов</option>
21   - <option value="">Киев</option>
22   - <option value="">Житомир</option>
23   - <option value="">Львов</option>
  22 + <?php
  23 + $form = ActiveForm::begin(['method' => 'get', 'options' => [ 'class' => 'search-work-form' ], 'action' => [''] ]);
24 24  
25   - <option value="">Киев</option>
26   - <option value="">Житомир</option>
27   - <option value="">Львов</option>
28   - <option value="">Киев</option>
29   - <option value="">Житомир</option>
30   - <option value="">Львов</option>
31   - <option value="">Киев</option>
32   - <option value="">Житомир</option>
33   - <option value="">Львов</option>
34   - <option value="">Киев</option>
35   - <option value="">Житомир</option>
36   - <option value="">Львов</option>
37   - <option value="">Киев</option>
38   - <option value="">Житомир</option>
39   - <option value="">Львов</option>
40   - <option value="">Киев</option>
41   - <option value="">Житомир</option>
42   - <option value="">Львов</option>
43   - <option value="">Киев</option>
44   - <option value="">Житомир</option>
45   - <option value="">Львов</option>
46   - <option value="">Киев</option>
47   - <option value="">Житомир</option>
48   - <option value="">Львов</option>
49   - <option value="">Киев</option>
50   - <option value="">Житомир</option>
51   - <option value="">Львов</option>
52   - <option value="">Киев</option>
53   - <option value="">Житомир</option>
54   - <option value="">Львов</option>
55   - <option value="">Киев</option>
56   - <option value="">Житомир</option>
57   - <option value="">Львов</option>
58   - <option value="">Киев</option>
59   - <option value="">Житомир</option>
60   - <option value="">Львов</option>
61   - <option value="">Киев</option>
62   - <option value="">Житомир</option>
63   - <option value="">Львов</option>
64   - <option value="">Киев</option>
65   - <option value="">Житомир</option>
66   - <option value="">Львов</option>
67   - <option value="">Киев</option>
68   - <option value="">Житомир</option>
69   - <option value="">Львов</option>
70   - <option value="">Киев</option>
71   - <option value="">Житомир</option>
72   - <option value="">Львов</option>
73   - <option value="">Киев</option>
74   - <option value="">Житомир</option>
75   - <option value="">Львов</option>
76   - <option value="">Киев</option>
77   - <option value="">Житомир</option>
78   - <option value="">Львов</option>
79   - <option value="">Киев</option>
  25 + echo $form->field($model, 'city', [
  26 + 'options' => [
  27 + 'class' => 'blocks-check-list-wrapp',
  28 + ],
  29 + 'template' => "<div class='blocks-check-title'>{label}</div>\n{input}<div class='select-after'></div>\n{hint}\n{error}",
  30 + ])
  31 + ->dropDownList($cities, [ 'prompt' => 'Любой' ]);
80 32  
81   - </select><div class="select-after"></div>
82   - </div>
83   -
84   - <div class="blocks-check-list-wrapp">
85   - <div class="blocks-check-title"><label for="theme-3">Тип заказчика</label></div>
86   - <select id="theme-3">
87   - <option selected="" value="">Любая</option>
88   - <option value="">Киев</option>
89   - <option value="">Житомир</option>
90   - <option value="">Львов</option>
91   - <option value="">Киев</option>
92   - <option value="">Житомир</option>
93   - <option value="">Львов</option>
94   - </select><div class="select-after"></div>
95   - </div>
  33 + echo $form->field($model, 'type', [
  34 + 'options' => [
  35 + 'class' => 'blocks-check-list-wrapp',
  36 + ],
  37 + 'template' => "<div class='blocks-check-title'>{label}</div>\n{input}<div class='select-after'></div>\n{hint}\n{error}",
  38 + ])
  39 + ->dropDownList([
  40 + 1 => 'Физическое лицо',
  41 + 2 => 'Компания',
  42 + ], [ 'prompt' => 'Любой' ]);
  43 + ?>
96 44  
  45 + <?php
  46 + /* Рейтинг
  47 + ?>
97 48 <div class="blocks-check-list-wrapp">
98 49 <div class="blocks-check-title">Рейтинг</div>
99 50 <div class="rating">
... ... @@ -101,56 +52,92 @@
101 52 <input type="hidden" class="val" value="0">
102 53 </div>
103 54 </div>
  55 + <?php
  56 + */
  57 + ?>
104 58  
105   - <div class="blocks-check-list-wrapp">
106   - <div class="blocks-check-title">Статус</div>
107   - <div class="blocks-check-list">
108   - <input type="radio" name="group3" class="check-search" id="theme-8"><label for="theme-8"><span></span>Онлайн</label>
109   - </div>
110   - <div class="blocks-check-list">
111   - <input type="radio" name="group3" class="check-search" id="theme-9" checked=""><label for="theme-9"><span></span>Все</label>
112   - </div>
113   - </div>
  59 + <?php
  60 + echo $form->field($model, 'online', [
  61 + 'options' => [
  62 + 'class' => 'blocks-check-list-wrapp',
  63 + ],
  64 + 'template' => "<div class='blocks-check-title'>{label}</div>\n{input}\n{hint}\n{error}",
  65 + ])
  66 + ->radioList([
  67 + '' => 'Все',
  68 + 1 => 'Онлайн',
  69 + ], [
  70 + 'item' => function($index, $label, $name, $checked, $value) use ($model) {
  71 + $checked = ($model->online == $value);
  72 + return "<div class='blocks-check-list'><input type='radio' id='{$model->formName()}-{$index}' name='{$name}' class='check-search' value='{$value}' " . ($checked?'checked':'') . "><label for='{$model->formName()}-{$index}'><span></span>{$label}</label></div>";
  73 + },
  74 + 'unselect' => NULL,
  75 + ]);
114 76  
115   - <div class="blocks-check-list-submit">
116   - <input type="submit" value="Найти">
117   - </div>
118   - </form>
  77 + echo '<div class="blocks-check-list-submit">'.Html::submitInput('Найти').'</div>';
  78 +
  79 + $form->end();
  80 + ?>
119 81 <script>
120   - $('div.rating').rating({
121   - fx: 'full',
122   - url: 'rating.php'
123   - });
  82 + $('div.rating').rating(
  83 + {
  84 + fx : 'full', url : 'rating.php'
  85 + }
  86 + );
124 87 </script>
125 88 </div>
126 89  
  90 + <?php
  91 + // == End of left filter ==
  92 + ?>
  93 +
  94 + <?php
  95 + // == Page content ==
  96 + ?>
127 97 <div class="right-search-work">
128 98 <div class="search-worker-title style">Найти заказчика</div>
129   - <div class="search-worker-title-two style">Заказчики готовые приступить к работе <span>145</span></div>
  99 + <div class="search-worker-title-two style">Заказчики готовые приступить к работе
  100 + <span><?= $dataProvider->totalCount ?></span></div>
130 101 <div class="search-worker-search-wr style">
131   - <form action="" class="search-worker-form">
132   - <input id="srch-wrk-text" type="text" placeholder="Любая информация о заказчике" required="">
133   - <input id="srch-wrk-sub" type="submit" value="Найти">
134   - </form>
  102 + <?php
  103 + $form2 = ActiveForm::begin(['method' => 'get', 'action' => [''], 'options' => ['class' => 'search-worker-form']]);
  104 + echo $form2->field($model, 'info', ['options' => ['tag' => false]])->label(false)->textInput(['placeholder' => $model->getAttributeLabel('info')]);
  105 + echo Html::submitInput('Найти');
  106 + $form2->end();
  107 + ?>
135 108 <a href="#" class="add-to-catalog-search-worker">Добавить себя в каталог</a>
136 109 <div class="search-worker-sort-wr style">
137 110 <div class="search-worker-sort">Сортировать:&nbsp;</div>
138 111 <ul>
139 112 <li class="activejob">
140   - <a href="#">рейтинг</a>
  113 + <a href="#"></a>
141 114 <div class="sidebar-droped-wr style">
142   - <ul>
143   - <li><a href="#">рейтинг</a></li>
144   - <li><a href="#">1заказчик</a></li>
145   - <li><a href="#">2заказчик</a></li>
146   - <li><a href="#">3заказчик</a></li>
147   - <li><a href="#">4заказчик</a></li>
148   - </ul>
  115 + <?php
  116 + echo LinkSorter::widget([
  117 + 'sort' => $dataProvider->sort,
  118 + ]);
  119 + ?>
149 120 </div>
150 121 </li>
151 122 </ul>
152 123 </div>
153 124 </div>
  125 + <?php
  126 + echo ListView::widget([
  127 + 'dataProvider' => $dataProvider,
  128 + 'layout' => "{items}\n{pager}",
  129 + 'options' => [
  130 + 'class' => 'search-worker-blocks-wr style',
  131 + ],
  132 + 'itemOptions' => [
  133 + 'class' => 'search-worker-blocks',
  134 + ],
  135 + 'itemView' => '_customer_list_view',
  136 + ]);
  137 + ?>
  138 + <?php
  139 + /* == Layout ==
  140 + ?>
154 141 <div class="search-worker-blocks-wr style">
155 142  
156 143 <div class="search-worker-blocks">
... ... @@ -161,13 +148,16 @@
161 148 <!--оценка-->
162 149 <input type="hidden" class="val" value="4"/>
163 150 </div>
164   - <div class="search_perform-stars-txt">30 отзывов, Киев </div>
  151 + <div class="search_perform-stars-txt">30 отзывов, Киев</div>
165 152 </div>
166 153 <div class="search_perform_leng">
167 154 <div>Сотрудники: более 40</div>
168 155 </div>
169   - <div class="search_perform_visit"><span>Послелний визит:</span> 2 дня назад</div>
170   - <div class="search_perform_projets_nam"><a href="#">Заказано проектов: 21</a></div>
  156 + <div class="search_perform_visit">
  157 + <span>Послелний визит:</span> 2 дня назад
  158 + </div>
  159 + <div class="search_perform_projets_nam">
  160 + <a href="#">Заказано проектов: 21</a></div>
171 161 </div>
172 162  
173 163 <div class="right_search_perform_block-wr">
... ... @@ -186,13 +176,16 @@
186 176 <!--оценка-->
187 177 <input type="hidden" class="val" value="2"/>
188 178 </div>
189   - <div class="search_perform-stars-txt">30 отзывов, Киев </div>
  179 + <div class="search_perform-stars-txt">30 отзывов, Киев</div>
190 180 </div>
191 181 <div class="search_perform_leng">
192 182 <!--<div>Сотрудники: более 40</div>-->
193 183 </div>
194   - <div class="search_perform_visit"><span>Послелний визит:</span> 2 дня назад</div>
195   - <div class="search_perform_projets_nam"><a href="#">Заказано проектов: 21</a></div>
  184 + <div class="search_perform_visit">
  185 + <span>Послелний визит:</span> 2 дня назад
  186 + </div>
  187 + <div class="search_perform_projets_nam">
  188 + <a href="#">Заказано проектов: 21</a></div>
196 189 </div>
197 190  
198 191 <div class="right_search_perform_block-wr">
... ... @@ -211,13 +204,16 @@
211 204 <!--оценка-->
212 205 <input type="hidden" class="val" value="1"/>
213 206 </div>
214   - <div class="search_perform-stars-txt">30 отзывов, Киев </div>
  207 + <div class="search_perform-stars-txt">30 отзывов, Киев</div>
215 208 </div>
216 209 <div class="search_perform_leng">
217 210 <div>Сотрудники: более 40</div>
218 211 </div>
219   - <div class="search_perform_visit"><span>Послелний визит:</span> 2 дня назад</div>
220   - <div class="search_perform_projets_nam"><a href="#">Заказано проектов: 21</a></div>
  212 + <div class="search_perform_visit">
  213 + <span>Послелний визит:</span> 2 дня назад
  214 + </div>
  215 + <div class="search_perform_projets_nam">
  216 + <a href="#">Заказано проектов: 21</a></div>
221 217 </div>
222 218  
223 219 <div class="right_search_perform_block-wr">
... ... @@ -236,13 +232,16 @@
236 232 <!--оценка-->
237 233 <input type="hidden" class="val" value="5"/>
238 234 </div>
239   - <div class="search_perform-stars-txt">30 отзывов, Киев </div>
  235 + <div class="search_perform-stars-txt">30 отзывов, Киев</div>
240 236 </div>
241 237 <div class="search_perform_leng">
242 238 <!--<div>Сотрудники: более 40</div>-->
243 239 </div>
244   - <div class="search_perform_visit"><span>Послелний визит:</span> 2 дня назад</div>
245   - <div class="search_perform_projets_nam"><a href="#">Заказано проектов: 21</a></div>
  240 + <div class="search_perform_visit">
  241 + <span>Послелний визит:</span> 2 дня назад
  242 + </div>
  243 + <div class="search_perform_projets_nam">
  244 + <a href="#">Заказано проектов: 21</a></div>
246 245 </div>
247 246  
248 247 <div class="right_search_perform_block-wr">
... ... @@ -263,14 +262,21 @@
263 262 </ul>
264 263 </div>
265 264  
  265 + <?php
  266 + == End of layout == */
  267 + ?>
  268 +
266 269 <script>
267   - $('div.rating_search_performer').rating({
268   - fx: 'full',
269   - readOnly: 'true',
270   - url: 'rating.php'
271   - });
  270 + $('div.rating_search_performer').rating(
  271 + {
  272 + fx : 'full', readOnly : 'true', url : 'rating.php'
  273 + }
  274 + );
272 275 </script>
273 276 </div>
  277 + <?php
  278 + // == End of page content ==
  279 + ?>
274 280 </div>
275 281 </div>
276 282 </div>
277 283 \ No newline at end of file
... ...
frontend/views/search/performer.php
... ... @@ -159,6 +159,12 @@ $this-&gt;title = &#39;My Yii Application&#39;;
159 159 <input type="submit" value="Найти"/>
160 160 </div>
161 161 </form>
  162 + <script>
  163 + $('div.rating').rating({
  164 + fx: 'full',
  165 + url: 'rating.php'
  166 + });
  167 + </script>
162 168 </div>
163 169 <div class="right-search-work">
164 170 <div class="search-worker-title style">Найти исполнителя</div>
... ... @@ -203,6 +209,14 @@ $this-&gt;title = &#39;My Yii Application&#39;;
203 209  
204 210  
205 211 </div>
  212 +
  213 + <script>
  214 + $('div.rating-new').rating({
  215 + fx: 'full',
  216 + readOnly: 'true',
  217 + url: 'rating.php'
  218 + });
  219 + </script>
206 220 </div>
207 221 </div>
208 222 </div>
... ...
frontend/views/site/forms-modal-offer.php
... ... @@ -44,7 +44,7 @@
44 44 <div class="form-resume-sub style">Предложить проект</div>
45 45 <form action="" class="offer-project">
46 46  
47   - <label>Выбрать проект</label><div style="clear:both;"></div>
  47 + <label>Выбрать проект</label>
48 48 <div class="list_item title">
49 49 <div class="main_item">
50 50 <div class="pr_title"></div>
... ... @@ -77,11 +77,6 @@
77 77 </div>
78 78 </div>
79 79  
80   - <label for="off_name">Название проекта</label><input id="off_name" name="" type="text">
81   -
82   - <label for="off_text">Описание</label><textarea id="off_text" name=""></textarea>
83   -
84   - <label for="off_price">Цена</label><input id="off_price" name="" type="text">
85 80  
86 81 <input id="off_submit" type="submit" value="Предложить">
87 82 </form>
... ... @@ -89,5 +84,56 @@
89 84 </div>
90 85 </div>
91 86  
  87 +<!--<div id="modal_form_offer">-->
  88 +<!-- <div class="closed-form"></div>-->
  89 +<!-- <div class="form-resume-wr offer">-->
  90 +<!-- <div class="form-resume-sub style">Предложить проект</div>-->
  91 +<!-- <form action="" class="offer-project">-->
  92 +<!---->
  93 +<!-- <label>Выбрать проект</label><div style="clear:both;"></div>-->
  94 +<!-- <div class="list_item title">-->
  95 +<!-- <div class="main_item">-->
  96 +<!-- <div class="pr_title"></div>-->
  97 +<!-- <span></span>-->
  98 +<!-- </div>-->
  99 +<!-- <div class="arrow up"></div>-->
  100 +<!-- <div class="off_list">-->
  101 +<!-- <ul class="content list-form-offer">-->
  102 +<!-- <li>-->
  103 +<!-- <div class="title1">Проект бассейна 1</div>-->
  104 +<!-- <div class="title2">Подряд: Вилла 1</div>-->
  105 +<!-- </li>-->
  106 +<!-- <li>-->
  107 +<!-- <div class="title1">Проект бассейна 2</div>-->
  108 +<!-- <div class="title2">Подряд: Вилла 2</div>-->
  109 +<!-- </li>-->
  110 +<!-- <li>-->
  111 +<!-- <div class="title1">Проект бассейна 3</div>-->
  112 +<!-- <div class="title2">Подряд: Вилла 3</div>-->
  113 +<!-- </li>-->
  114 +<!-- <li>-->
  115 +<!-- <div class="title1">Проект бассейна 4</div>-->
  116 +<!-- <div class="title2">Подряд: Вилла 4</div>-->
  117 +<!-- </li>-->
  118 +<!-- <li>-->
  119 +<!-- <div class="title1">Проект бассейна 5</div>-->
  120 +<!-- <div class="title2">Подряд: Вилла 5</div>-->
  121 +<!-- </li>-->
  122 +<!-- </ul>-->
  123 +<!-- </div>-->
  124 +<!-- </div>-->
  125 +<!---->
  126 +<!-- <label for="off_name">Название проекта</label><input id="off_name" name="" type="text">-->
  127 +<!---->
  128 +<!-- <label for="off_text">Описание</label><textarea id="off_text" name=""></textarea>-->
  129 +<!---->
  130 +<!-- <label for="off_price">Цена</label><input id="off_price" name="" type="text">-->
  131 +<!---->
  132 +<!-- <input id="off_submit" type="submit" value="Предложить">-->
  133 +<!-- </form>-->
  134 +<!-- <div class="res_form_line"></div>-->
  135 +<!-- </div>-->
  136 +<!--</div>-->
  137 +
92 138  
93 139  
... ...
frontend/views/site/login.php
... ... @@ -11,42 +11,62 @@
11 11 $this->title = 'Авторизация';
12 12 $this->params[ 'breadcrumbs' ][] = $this->title;
13 13 ?>
14   - <h1><?php echo Html::encode($this->title); ?></h1>
  14 +<div class="box-wr">
  15 + <div class="box-all">
  16 + <div class="form_site_logn-wr">
  17 + <div class="form_site_logn_">
  18 + <h1><?php echo Html::encode($this->title); ?></h1>
  19 +
  20 + <?php
  21 + if(Yii::$app->getSession()
  22 + ->hasFlash('error')
  23 + ) {
  24 + echo '<div class="alert alert-danger">' . Yii::$app->getSession()
  25 + ->getFlash('error') . '</div>';
  26 + }
  27 + ?>
  28 +
  29 +
  30 + <?php //echo \nodge\eauth\Widget::widget([ 'action' => 'site/login' ]); ?>
  31 +
15 32  
16   -<?php
17   - if(Yii::$app->getSession()
18   - ->hasFlash('error')
19   - ) {
20   - echo '<div class="alert alert-danger">' . Yii::$app->getSession()
21   - ->getFlash('error') . '</div>';
22   - }
23   -?>
24 33  
  34 + <?php $form = ActiveForm::begin([
  35 + 'options' => [
  36 + 'class' => 'form-horizontal',
  37 + 'id' => 'login-form',
  38 + ],
  39 + ]); ?>
  40 + <div class="input-blocks-wrapper">
  41 + <?php echo $form->field($model, 'username')
  42 + ->textInput(['class'=>'custom-input-2']); ?>
  43 + </div>
25 44  
26   -<?php //echo \nodge\eauth\Widget::widget([ 'action' => 'site/login' ]); ?>
  45 + <div class="input-blocks-wrapper">
  46 + <?php echo $form->field($model, 'password')
  47 + ->passwordInput(['class'=>'custom-input-2']); ?>
  48 + </div>
27 49  
  50 + <div class="login-check-remember style">
  51 + <?php echo $form->field($model, 'rememberMe', [ 'template' => "{input}\n{label}\n{error}" ])
  52 + ->label('<span></span>Запомнить меня')
  53 + ->checkbox([
  54 + 'class' => 'custom-check',
  55 + 'checked' => 'checked',
  56 + ], false); ?>
  57 + </div>
28 58  
29 59  
  60 + <div class="form-actions style">
  61 + <?php echo Html::submitButton('Вход', [ 'class' => 'btn btn-primary login-button' ]); ?>
  62 + </div>
  63 + <div class="style" style="text-align: center; font-size: 13px; margin-top: 16px">
  64 + <?= Html::a('Восстановить пароль', [ 'site/request-password-reset' ]) ?>
  65 + </div>
30 66  
31   -<?php $form = ActiveForm::begin([
32   - 'options' => [
33   - 'class' => 'form-horizontal',
34   - 'id' => 'login-form',
35   - ],
36   -]); ?>
37   -<?php echo $form->field($model, 'username')
38   - ->textInput(); ?>
39   -<?php echo $form->field($model, 'password')
40   - ->passwordInput(); ?>
41   -<?php echo $form->field($model, 'rememberMe', [ 'template' => "{input}\n{label}\n{error}" ])
42   - ->label('<span></span>Запомнить меня')
43   - ->checkbox([
44   - 'class' => 'custom-check',
45   - 'checked' => 'checked',
46   - ], false); ?>
  67 + <?php ActiveForm::end(); ?>
  68 + </div>
  69 + </div>
47 70  
48   - <div class="form-actions">
49   - <?php echo Html::submitButton('Login', [ 'class' => 'btn btn-primary' ]); ?>
50 71 </div>
51   -<?= Html::a('Восстановить пароль', [ 'site/request-password-reset' ]) ?>
52   -<?php ActiveForm::end(); ?>
53 72 \ No newline at end of file
  73 +</div>
... ...
frontend/web/css/style.css
... ... @@ -945,13 +945,13 @@ li.project-home-active span{
945 945 margin-left: -120px;
946 946 margin-top: 22px;
947 947 }
948   -.form-resume-wr form label {
  948 +.form-resume-wr form label, .form_site_logn-wr label {
949 949 font-size: 13px;
950 950 font-weight: 700;
951 951 width: 100%;
952 952 float: left;
953 953 }
954   -.form-resume-wr form input {
  954 +.form-resume-wr form input, .form_site_logn-wr form input {
955 955 width: 240px;
956 956 height: 29px;
957 957 border: 1px solid #dcdcdc;
... ... @@ -2724,12 +2724,14 @@ input[type=file]::-webkit-file-upload-button {
2724 2724 .search-worker-blocks:first-child{margin-top: 20px}
2725 2725 .search-worker-blocks-foto-wr {
2726 2726 width: 318px;
2727   -
  2727 + min-height: 320px;
2728 2728 float: left;
2729 2729 }
2730 2730 .search-worker-blocks-text-wr {
2731 2731 width: 382px;
2732 2732 float: right;
  2733 + min-height: 320px;
  2734 + position: relative;
2733 2735 }
2734 2736 .search-worker-blocks-ico-wr {
2735 2737 width: 48px;
... ... @@ -2752,7 +2754,7 @@ input[type=file]::-webkit-file-upload-button {
2752 2754 text-align: center;
2753 2755 }
2754 2756 .search-worker-blocks-title {
2755   - font-size: 18px; margin-top: -4px;
  2757 + font-size: 18px; margin-top: -1px;
2756 2758 }
2757 2759 .rating-new {
2758 2760 float: left;
... ... @@ -2877,8 +2879,14 @@ input[type=file]::-webkit-file-upload-button {
2877 2879 .search-worker-blocks-buttons {
2878 2880 margin-top: 49px;
2879 2881 }
2880   -
2881   -
  2882 +.search-worker-blocks-buttons {
  2883 + margin-top: 0;
  2884 + position: absolute;
  2885 + bottom: 0;
  2886 + left: 0;
  2887 +}
  2888 +.search-worker-blocks .search-worker-blocks-jobs-portfolio {margin-bottom: 41px}
  2889 +.search-company-block-left .search-worker-blocks-jobs-portfolio {margin-bottom: 31px}
2882 2890  
2883 2891 .gallery-box-search {
2884 2892 width: 100%;
... ... @@ -3258,10 +3266,13 @@ ul.proektant-comments {margin-top: 15px}
3258 3266 .search-company-block-left {
3259 3267 width: 400px;
3260 3268 float: left;
  3269 + min-height: 320px;
  3270 + position: relative;
3261 3271 }
3262 3272 .search-company-block-right {
3263 3273 width: 320px;
3264 3274 float: right;
  3275 + min-height: 320px;
3265 3276 }
3266 3277 .search-company-block-left .search-worker-blocks-title-wr {float: left; width: 100% !important;}
3267 3278 .search-company-block-left .land-stars-pro, .land-stars-new {margin-right: 11px}
... ... @@ -3422,7 +3433,8 @@ ul.proektant-comments {margin-top: 15px}
3422 3433 .favorite-user-profile-add span{line-height: 18px}
3423 3434  
3424 3435 form.offer-project {
3425   - height: 531px;
  3436 + /*height: 531px;*/
  3437 + height: 211px;
3426 3438 }
3427 3439 #off_submit {
3428 3440 bottom: 25px;
... ... @@ -4114,7 +4126,8 @@ ul.min_markers_two
4114 4126 /*** message-read***/
4115 4127 .comments_block{width:938px;height:498px;background-color:#fcfcfc;border:1px solid #b7b7b7;border-right:none;margin-bottom:57px;color:#333;font-family:Roboto;font-size:13px;position:relative;overflow:hidden;outline:none}.comment_type{width:940px}.comment_type .pole{width:660px;margin:0 auto;position:relative}.comment_type .mes_title{font-size:18px;color:#333;margin:18px 0}.message_text{width:638px;height:78px;resize:none;border:1px solid #c2c2c2;margin:0 auto;margin-bottom:26px;margin-top:18px;padding:10px;font-family:Roboto}.send_mess_but{outline:none;border:none;cursor:pointer;font-size:12px!important;padding-top:2px;width:170px;height:43px;text-align:center;text-transform:uppercase;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr = '#148ad6',endColorstr = '#0072bc');-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr = '#148ad6',endColorstr = '#0072bc')";background-image:-moz-linear-gradient(top,#148ad6,#0072bc);background-image:-ms-linear-gradient(top,#148ad6,#0072bc);background-image:-o-linear-gradient(top,#148ad6,#0072bc);background-image:-webkit-gradient(linear,center top,center bottom,from(#148ad6),to(#0072bc));background-image:-webkit-linear-gradient(top,#148ad6,#0072bc);background-image:linear-gradient(top,#148ad6,#0072bc);color:#fff;border-bottom:2px solid #0054a6;border-radius:4px;transition:.1s;top:170px;line-height:3.5}.send_mess_but:hover{opacity:.9}.send_mess_but:active{line-height:3.7}.pick_file{position:absolute;top:170px;right:0;width:130px}.pick_file .link:after{content:'';background:url(/images/skrpk.png) left center no-repeat;position:absolute;width:19px;height:21px;left:-28px;top:0}.pick_file .link{text-transform:uppercase;color:#0276c0;font-size:13px;cursor:pointer;text-decoration:none;border-bottom:1px solid #70b2db;position:relative}.pick_file .capt{color:#c2c2c2;font-size:11px;line-height:16px;margin-top:3px}.comment_text{position:relative;padding:12px 13px;width:602px;border:1px solid #c2c2c2;min-height:74px;left:10px;line-height:1.3;background-color:#fff}.comment.left .comment_text{float:left}.comment.right .comment_text{float:right}.comment.left .comment_text:before{content:'';background:url(/images/mes_bord_left.png);position:absolute;width:11px;height:11px;top:-1px;left:-11px}.comment.right .comment_text:before{content:'';background:url(/images/mes_bord_right.png);position:absolute;width:11px;height:11px;top:-1px;right:-11px}.comment.left .author_pic{float:left;margin:0 10px}.comment.right .author_pic{float:right;margin:0 25px 0 30px}.comment_time{color:#c6c6c6;font-family:Roboto;font-size:13px;font-weight:600;line-height:32px;position:absolute}.comment.left .comment_time{top: 17px; right: -120px; width: 100px;}.comment.right .comment_time{ top: 18px; left: -88px; width: 100px;}.comment{position:relative;margin:30px 21px 30px 1px}.comment .offer_link a{color:#0173bd;display:block; height:25px; position:relative}.comment .offer_link a:before{content:'';position:absolute;background:url(/images/skrpk_sm.png) left center no-repeat;width:19px;height:21px;left:-26px;top:-3px}.comment.right .offer_link{float:right;margin-right:94px;margin-top:12px;margin-bottom:-17px}.comment.left .offer_link{left:104px;bottom:-27px}.comment_block .content{overflow:auto;width:938px;height:498px}.fileform{background-color:#FFF;border:1px solid #CCC;border-radius:2px;cursor:pointer;height:26px;overflow:hidden;padding:2px;position:relative;text-align:left;vertical-align:middle;width:230px}.comment_type form{width:660px;margin:0 auto}.comment_type form label{color:#333;font-family:Roboto;font-size:18px}.input_file_text{color:#c2c2c2;font-size:11px;font-family:Roboto;width:125px;position:absolute;right:0;line-height:16px;top:18px;overflow:hidden;text-overflow:ellipsis;white-space:pre-line}.inputfile{float:right;position:relative;width:153px;padding-bottom:10px;background-repeat:no-repeat}.input_file{opacity:0;cursor:pointer;width:160px}.inputfile .file_input_title{position:absolute;color:#0276c0;border-bottom:1px solid #0276c0;text-transform:uppercase;font-family:Roboto;font-size:13px;right:0}.jspArrow{background-color:#0173bd;width:20px;height:20px}.jspVerticalBar{width:20px}.jspVerticalBar .jspArrow{height:20px}.jspTrack{background:#ebebeb;position:relative}.jspDrag{background:#c2c2c2;position:relative;top:0;left:0;cursor:pointer;border-left:2px solid #ebebeb;border-right:2px solid #ebebeb}.jspVerticalBar{background:#ebebeb}.jspArrowUp{background:#0173bd url(/images/scroll_up.png) center center no-repeat}.jspArrowUp:hover{opacity:.8}.jspArrowUp:active{background-position-y:1px!important}.jspDisabled.jspArrowUp{background:#80808d url(/images/scroll_up_grey.png) center center no-repeat}.jspArrowDown{background:#0173bd url(/images/scroll_down.png) center center no-repeat}.jspArrowDown:hover{opacity:.8}.jspArrowDown:active{background-position-y:1px!important}.jspArrowDown{background:#0173bd url(/images/scroll_down.png) center center no-repeat}.jspDisabled.jspArrowDown{background:#80808d url(/images/scroll_down_grey.png) center center no-repeat}.jspContainer{outline:none;border:none}
4116 4128 /***form-order***/
4117   -#modal_form_offer {height: 505px;}
  4129 +#modal_form_offer { /*height: 505px;*/ height: 309px; }
  4130 +#modal_form_offer .form-resume-wr {overflow: visible}
4118 4131 #modal_form_offer,#modal_form_question, #modal_form_question{margin-top: 70px;}
4119 4132 .form-resume-wr form input[type="submit"]{margin-left: 55px;}
4120 4133 .form-resume-wr form{top:72px;}
... ... @@ -4140,6 +4153,7 @@ ul.min_markers_two
4140 4153 border: 1px solid #dcdcdc;
4141 4154 position: relative;
4142 4155 cursor:pointer;
  4156 + z-index: 2;
4143 4157 }
4144 4158 .list_item.title{margin-bottom: 15px;}
4145 4159 .list_item .arrow{
... ... @@ -4169,14 +4183,13 @@ ul.min_markers_two
4169 4183 border: 4px solid transparent;
4170 4184 border-top-color: white;
4171 4185 }
4172   -form.offer-project {height: 406px;}
  4186 +
4173 4187 .list_item .main_item{padding: 10px 37px 12px 12px;transition:0.3s;}
4174 4188 .off_list ul li:hover{background-color: #fffccc; }
4175 4189 .act-offer-li{opacity: 0.6; cursor: default }
4176 4190 .act-offer-li:hover{background-color: #fff !important; }
4177 4191 .off_list{
4178 4192 position: absolute;
4179   - width: 100%;
4180 4193 width: 238px;
4181 4194 background-color: white;
4182 4195 border: 1px solid #dcdcdc;
... ... @@ -5286,23 +5299,6 @@ input.disabled.admin-check:checked + label, input.disabled.admin-check:checked +
5286 5299 left: -12px;
5287 5300 width: 15px;
5288 5301 }
5289   -
5290   -.help-block {
5291   - /*width: 320px;*/
5292   - /*margin-left: -10px;*/
5293   - /*text-align: center;*/
5294   - /*position: relative;*/
5295   - /*border: 1px solid #c1c1c1;*/
5296   - /*margin-top: 25px;*/
5297   - /*box-shadow: 3px 3px 7px 0 rgba(200, 200, 200, .5), inset 0 -3px 0 0 #c1c1c1;*/
5298   - /*padding: 15px 0;*/
5299   - /*display: none;*/
5300   -}
5301   -.has-error .help-block {
5302   - /*display: block;*/
5303   - /*color: inherit;*/
5304   - /*background: #fff;*/
5305   -}
5306 5302 .new-portf-add-comm .help-block{
5307 5303 width: 230px;
5308 5304 margin-left: 0;
... ... @@ -5344,7 +5340,7 @@ top: 272px;
5344 5340 margin-top: 6px;
5345 5341 margin-bottom: 60px;
5346 5342 }
5347   -.form-resume-wr .required:before, .site-request-password-reset .required:before{
  5343 +.form-resume-wr .required:before, .site-request-password-reset .required:before, .form_site_logn-wr .required:before{
5348 5344 display: block;
5349 5345 content: "*";
5350 5346 color: #D40000;
... ... @@ -5356,7 +5352,7 @@ top: 272px;
5356 5352 .site-request-password-reset .required:before{
5357 5353 left: 125px;
5358 5354 }
5359   -.form-resume-wr .help-block {
  5355 +.form-resume-wr .help-block, .form_site_logn-wr .help-block {
5360 5356 width: 320px;
5361 5357 margin: 0;
5362 5358 text-align: center;
... ... @@ -5368,12 +5364,12 @@ top: 272px;
5368 5364 padding: 15px 0;
5369 5365 display: none;
5370 5366 }
5371   -.form-resume-wr .has-error .help-block {
  5367 +.form-resume-wr .has-error .help-block, .form_site_logn-wr .has-error .help-block{
5372 5368 display: block;
5373 5369 color: inherit;
5374 5370 background: #fff;
5375 5371 }
5376   -.form-resume-wr .help-block:before {
  5372 +.form-resume-wr .help-block:before, .form_site_logn-wr .help-block:before {
5377 5373 width: 20px;
5378 5374 height: 20px;
5379 5375 background: #fff;
... ... @@ -5384,7 +5380,7 @@ top: 272px;
5384 5380 left: -2px;
5385 5381 margin-top: -10px;
5386 5382 }
5387   -.form-resume-wr .help-block:after {
  5383 +.form-resume-wr .help-block:after, .form_site_logn-wr .help-block:after {
5388 5384 height: 20px;
5389 5385 background: #fff;
5390 5386 transform: rotate(45deg);
... ... @@ -6641,8 +6637,8 @@ input[disabled], select[disabled] {
6641 6637 .rating_search_performer .vote-success, .rating_search_performer .vote-result {
6642 6638 display: none;
6643 6639 }
6644   -.rating_search_performer .vote-active {
6645   - background: url("/images/stars.png") 0px 14px !important;
  6640 +.vote-active {
  6641 + top: -1px !important;
6646 6642 }
6647 6643 .rating_search_performer .div.vote-stars, .rating_search_performer div.vote-active {
6648 6644 cursor: default;
... ... @@ -6659,4 +6655,29 @@ input[disabled], select[disabled] {
6659 6655 text-align: center;
6660 6656 }
6661 6657 .right_search_perform_foto-wr {vertical-align: middle}
6662   -.section-box-customer .search-worker-blocks {margin-top: 20px}
6663 6658 \ No newline at end of file
  6659 +.section-box-customer .search-worker-blocks {margin-top: 20px}
  6660 +.form_site_logn-wr {
  6661 + width: 240px;
  6662 + margin: 0 auto;
  6663 +}
  6664 +.form_site_logn_ {
  6665 + width: 100%;
  6666 + padding: 30px 0;
  6667 + float: left;
  6668 + position: relative;
  6669 +}
  6670 +.form_site_logn-wr h1 {
  6671 + font-size: 24px;
  6672 + width: 100%;
  6673 + text-align: center;
  6674 +}
  6675 +
  6676 +.form_site_logn-wr .login-check-remember {
  6677 + margin-bottom: 19px;
  6678 +}
  6679 +.form_site_logn-wr input.custom-check + label span {margin-top: 1px; margin-right: 6px}
  6680 +.callback .input-blocks-wrapper {margin-top: 0}
  6681 +.list_item.title {margin-top: 20px}
  6682 +.search_customer_image {
  6683 + height: 100%;
  6684 +}
6664 6685 \ No newline at end of file
... ...
frontend/web/js/forms.js
... ... @@ -54,6 +54,7 @@ $(document).ready(function(){
54 54 var newMarg = $(window).scrollTop();
55 55 $('#overlay').fadeIn(400,
56 56 function(){
  57 + $('body').css({overflowY:'hidden'})
57 58 $('.forms-modal-hide>div')
58 59 .css({display:'block', marginTop:-230+newMarg})
59 60 .animate({opacity: 1, top: '50%'}, 200);
... ... @@ -110,6 +111,7 @@ $(document).ready(function(){
110 111 clocseModalForms()
111 112 function clocseModalForms(){
112 113 $('body').on('click','.closed-form, #overlay', function(){
  114 + $('body').css({overflowY:'visible'})
113 115 $('.forms-modal-hide>div')
114 116 .animate({opacity: 0, top: '30%'}, 200,
115 117 function(){
... ...