Commit 2fd40ee72b0966b28e051559cd3fd815da9b7ec7
1 parent
4ed1f788
test
Showing
14 changed files
with
524 additions
and
369 deletions
Show diff stats
common/models/CustomerSearch.php
common/models/User.php
... | ... | @@ -578,11 +578,29 @@ |
578 | 578 | } |
579 | 579 | } |
580 | 580 | |
581 | + /** | |
582 | + * @return ActiveQuery | |
583 | + */ | |
581 | 584 | public function getComments() |
582 | 585 | { |
583 | - $entity = 'user-' . $this->id; | |
584 | - $comments = (new Comment())->getComments($entity); | |
585 | - return $comments; | |
586 | + return $this->hasMany(Comment::className(), [ | |
587 | + 'model_id' => 'id', | |
588 | + ]) | |
589 | + ->andWhere([ | |
590 | + 'comment.model' => $this->className(), | |
591 | + ]); | |
592 | + } | |
593 | + | |
594 | + /** | |
595 | + * @return ActiveQuery | |
596 | + */ | |
597 | + public function getCommentRating() | |
598 | + { | |
599 | + return $this->hasMany(Rating::className(), [ 'model_id' => 'comment_id' ]) | |
600 | + ->via('comments') | |
601 | + ->andWhere([ | |
602 | + 'rating.model' => Comment::className(), | |
603 | + ]); | |
586 | 604 | } |
587 | 605 | |
588 | 606 | public function getRatingPG() |
... | ... | @@ -590,16 +608,21 @@ |
590 | 608 | if(\Yii::$app->db->driverName != 'pgsql') { |
591 | 609 | throw new InvalidConfigException('This method is available only in PostgreSQL'); |
592 | 610 | } |
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; | |
611 | + return $this->getCommentRating() | |
612 | + ->select('ROUND(SUM("rating"."value")/COUNT("rating"."rating_id")::float) as rating') | |
613 | + ->andWhere([ | |
614 | + 'not', | |
615 | + [ 'rating.value' => NULL ], | |
616 | + ]) | |
617 | + ->scalar(); | |
618 | + } | |
619 | + | |
620 | + public function updateRating() | |
621 | + { | |
622 | + if($rating = $this->getRatingPG()) { | |
623 | + $this->userInfo->rating = $rating; | |
624 | + $this->userInfo->save(); | |
625 | + } | |
603 | 626 | } |
604 | 627 | |
605 | 628 | } | ... | ... |
common/modules/comment/interfaces/CommentInterface.php
... | ... | @@ -4,7 +4,7 @@ |
4 | 4 | interface CommentInterface { |
5 | 5 | public function load($data, $formName = null); |
6 | 6 | public function formName(); |
7 | - public function getComments($entity); | |
7 | + public function getComments($model, $model_id); | |
8 | 8 | public function postComment(); |
9 | 9 | public function deleteComment(); |
10 | 10 | public function updateComment(); | ... | ... |
common/modules/comment/models/Comment.php
... | ... | @@ -7,6 +7,17 @@ |
7 | 7 | * Class Comment |
8 | 8 | * @property bool $guestComment |
9 | 9 | * @property integer $comment_id |
10 | + * @property string $text | |
11 | + * @property int $user_id | |
12 | + * @property string $user_name | |
13 | + * @property string $user_email | |
14 | + * @property int $comment_pid | |
15 | + * @property int $status | |
16 | + * @property string $date_add | |
17 | + * @property string $date_update | |
18 | + * @property string $date_delete | |
19 | + * @property string $model | |
20 | + * @property int $model_id | |
10 | 21 | * @package common\modules\comment\models |
11 | 22 | */ |
12 | 23 | class Comment extends \yii\db\ActiveRecord |
... | ... | @@ -21,8 +32,6 @@ |
21 | 32 | const SCENARIO_USER = 'user'; |
22 | 33 | const SCENARIO_GUEST = 'guest'; |
23 | 34 | |
24 | - public $rating; | |
25 | - | |
26 | 35 | /** |
27 | 36 | * @var bool |
28 | 37 | */ |
... | ... | @@ -70,7 +79,8 @@ |
70 | 79 | 'exist', |
71 | 80 | 'targetAttribute' => 'comment_id', |
72 | 81 | 'filter' => [ |
73 | - 'entity' => $this->entity, | |
82 | + 'model' => $this->model, | |
83 | + 'model_id' => $this->model_id, | |
74 | 84 | ], |
75 | 85 | ], |
76 | 86 | ]; |
... | ... | @@ -135,16 +145,18 @@ |
135 | 145 | } |
136 | 146 | |
137 | 147 | /** |
138 | - * @param string $entity | |
148 | + * @param string $model | |
149 | + * @param integer $model_id | |
139 | 150 | * |
140 | 151 | * @return ActiveQuery |
141 | 152 | */ |
142 | - public function getComments($entity) | |
153 | + public function getComments($model, $model_id) | |
143 | 154 | { |
144 | 155 | return $this->find() |
145 | 156 | ->where([ |
146 | - 'comment.entity' => $entity, | |
147 | - 'comment.status' => 1, | |
157 | + 'comment.model' => $model, | |
158 | + 'comment.model_id' => $model_id, | |
159 | + 'comment.status' => 1, | |
148 | 160 | ]); |
149 | 161 | } |
150 | 162 | |
... | ... | @@ -212,7 +224,10 @@ |
212 | 224 | if($this->getGuestComment()) { |
213 | 225 | return true; |
214 | 226 | } else { |
215 | - return \Yii::$app->user->can(\common\modules\comment\Permissions::CREATE, [ 'entity' => $this->entity ]); | |
227 | + return \Yii::$app->user->can(\common\modules\comment\Permissions::CREATE, [ | |
228 | + 'model' => $this->model, | |
229 | + 'model_id' => $this->model_id, | |
230 | + ]); | |
216 | 231 | } |
217 | 232 | } |
218 | 233 | |
... | ... | @@ -221,7 +236,13 @@ |
221 | 236 | if($this->scenario == self::SCENARIO_GUEST) { |
222 | 237 | return false; |
223 | 238 | } else { |
224 | - return \Yii::$app->user->can(\common\modules\comment\Permissions::UPDATE, [ 'entity' => $this->entity ]) || \Yii::$app->user->can(\common\modules\comment\Permissions::UPDATE_OWN, [ 'entity' => $this->entity ]); | |
239 | + return \Yii::$app->user->can(\common\modules\comment\Permissions::UPDATE, [ | |
240 | + 'model' => $this->model, | |
241 | + 'model_id' => $this->model_id, | |
242 | + ]) || \Yii::$app->user->can(\common\modules\comment\Permissions::UPDATE_OWN, [ | |
243 | + 'model' => $this->model, | |
244 | + 'model_id' => $this->model_id, | |
245 | + ]); | |
225 | 246 | } |
226 | 247 | } |
227 | 248 | |
... | ... | @@ -230,7 +251,13 @@ |
230 | 251 | if($this->scenario == self::SCENARIO_GUEST) { |
231 | 252 | return false; |
232 | 253 | } else { |
233 | - return \Yii::$app->user->can(\common\modules\comment\Permissions::DELETE, [ 'entity' => $this->entity ]) || \Yii::$app->user->can(\common\modules\comment\Permissions::DELETE_OWN, [ 'entity' => $this->entity ]); | |
254 | + return \Yii::$app->user->can(\common\modules\comment\Permissions::DELETE, [ | |
255 | + 'model' => $this->model, | |
256 | + 'model_id' => $this->model_id, | |
257 | + ]) || \Yii::$app->user->can(\common\modules\comment\Permissions::DELETE_OWN, [ | |
258 | + 'model' => $this->model, | |
259 | + 'model_id' => $this->model_id, | |
260 | + ]); | |
234 | 261 | } |
235 | 262 | } |
236 | 263 | |
... | ... | @@ -260,12 +287,18 @@ |
260 | 287 | |
261 | 288 | public function checkRating() |
262 | 289 | { |
263 | - $rating = $this->hasOne(\common\modules\comment\models\Rating::className(), [ 'entity' => 'entityId' ]) | |
290 | + $rating = $this->hasOne(\common\modules\comment\models\Rating::className(), [ | |
291 | + 'model_id' => 'comment_id', | |
292 | + ]) | |
293 | + ->andWhere([ | |
294 | + 'model' => $this->className(), | |
295 | + ]) | |
264 | 296 | ->one(); |
265 | 297 | if(!$rating instanceof \common\modules\comment\models\Rating) { |
266 | 298 | $rating = new \common\modules\comment\models\Rating([ |
267 | - 'entity' => $this->entityId, | |
268 | - 'user_id' => $this->user_id, | |
299 | + 'model' => $this->className(), | |
300 | + 'model_id' => $this->comment_id, | |
301 | + 'user_id' => $this->user_id, | |
269 | 302 | ]); |
270 | 303 | $rating->save(); |
271 | 304 | } |
... | ... | @@ -274,12 +307,18 @@ |
274 | 307 | public function getRating() |
275 | 308 | { |
276 | 309 | $this->checkRating(); |
277 | - return $this->hasOne(\common\modules\comment\models\Rating::className(), [ 'entity' => 'entityId' ]); | |
310 | + return $this->hasOne(\common\modules\comment\models\Rating::className(), [ | |
311 | + 'model_id' => 'comment_id', | |
312 | + ]) | |
313 | + ->andWhere([ 'model' => $this->className() ]); | |
278 | 314 | } |
279 | 315 | |
280 | 316 | public function hasRating($return = true) |
281 | 317 | { |
282 | - $rating = $this->hasOne(\common\modules\comment\models\Rating::className(), [ 'entity' => 'entityId' ]) | |
318 | + $rating = $this->hasOne(\common\modules\comment\models\Rating::className(), [ | |
319 | + 'model_id' => 'comment_id', | |
320 | + ]) | |
321 | + ->andWhere([ 'model' => $this->className() ]) | |
283 | 322 | ->andWhere([ |
284 | 323 | 'not', |
285 | 324 | [ 'value' => NULL ], |
... | ... | @@ -292,8 +331,4 @@ |
292 | 331 | } |
293 | 332 | } |
294 | 333 | |
295 | - public function getEntityId() | |
296 | - { | |
297 | - return $this->formName() . '-' . $this->getPrimaryKey(); | |
298 | - } | |
299 | 334 | } | ... | ... |
common/modules/comment/models/Rating.php
... | ... | @@ -11,13 +11,16 @@ use Yii; |
11 | 11 | * @property string $date_add |
12 | 12 | * @property string $date_update |
13 | 13 | * @property integer $user_id |
14 | - * @property string $entity | |
15 | 14 | * @property integer $value |
15 | + * @property string $model | |
16 | + * @property integer $model_id | |
16 | 17 | * |
17 | 18 | * @property \common\models\User $user |
18 | 19 | */ |
19 | 20 | class Rating extends \yii\db\ActiveRecord |
20 | 21 | { |
22 | + | |
23 | + public $rating; | |
21 | 24 | /** |
22 | 25 | * @inheritdoc |
23 | 26 | */ | ... | ... |
common/modules/comment/widgets/CommentWidget.php
... | ... | @@ -86,9 +86,14 @@ |
86 | 86 | public $success_text = 'Comment successfully added'; |
87 | 87 | |
88 | 88 | /** |
89 | - * @var string Entity, to which comments attached | |
89 | + * @var string $model Model, to which comments attached | |
90 | 90 | */ |
91 | - public $entity; | |
91 | + public $model; | |
92 | + | |
93 | + /** | |
94 | + * @var integer $model_id Model id, to which comments attached | |
95 | + */ | |
96 | + public $model_id; | |
92 | 97 | |
93 | 98 | /** |
94 | 99 | * @var string Template of the widget. You may use <code>{success}, {form}, {list}</code> |
... | ... | @@ -123,7 +128,8 @@ |
123 | 128 | } elseif(!empty( $this->rating_class )) { |
124 | 129 | throw new \yii\base\InvalidConfigException(__CLASS__ . '->rating_class must be defined as object full class name string.'); |
125 | 130 | } |
126 | - $this->comment_class->entity = $this->entity; | |
131 | + $this->comment_class->model = $this->model; | |
132 | + $this->comment_class->model_id = $this->model_id; | |
127 | 133 | $this->createDataProvider(); |
128 | 134 | $this->process(); |
129 | 135 | ob_start(); |
... | ... | @@ -171,7 +177,7 @@ |
171 | 177 | public function createDataProvider() |
172 | 178 | { |
173 | 179 | $this->dataProvider = new \yii\data\ActiveDataProvider([ |
174 | - 'query' => $this->comment_class->getComments($this->entity), | |
180 | + 'query' => $this->comment_class->getComments($this->model, $this->model_id), | |
175 | 181 | 'pagination' => [ |
176 | 182 | 'pageSize' => 10, |
177 | 183 | ], | ... | ... |
console/migrations/m160311_132124_rating_comment_restyle.php
0 → 100644
1 | +<?php | |
2 | + | |
3 | +use yii\db\Migration; | |
4 | + | |
5 | +class m160311_132124_rating_comment_restyle extends Migration | |
6 | +{ | |
7 | + public function up() | |
8 | + { | |
9 | + $this->truncateTable('{{%comment}}'); | |
10 | + $this->truncateTable('{{%rating}}'); | |
11 | + $this->dropColumn('{{%comment}}', 'entity'); | |
12 | + $this->dropColumn('{{%rating}}', 'entity'); | |
13 | + $this->addColumn('{{%comment}}', 'model', $this->string()->notNull()); | |
14 | + $this->addColumn('{{%comment}}', 'model_id', $this->integer()->notNull()); | |
15 | + $this->addColumn('{{%rating}}', 'model', $this->string()->notNull()); | |
16 | + $this->addColumn('{{%rating}}', 'model_id', $this->integer()->notNull()); | |
17 | + } | |
18 | + | |
19 | + public function down() | |
20 | + { | |
21 | + $this->truncateTable('{{%comment}}'); | |
22 | + $this->truncateTable('{{%rating}}'); | |
23 | + $this->dropColumn('{{%comment}}', 'model'); | |
24 | + $this->dropColumn('{{%rating}}', 'model'); | |
25 | + $this->dropColumn('{{%comment}}', 'model_id'); | |
26 | + $this->dropColumn('{{%rating}}', 'model_id'); | |
27 | + $this->addColumn('{{%comment}}', 'entity', $this->string()->notNull()); | |
28 | + $this->addColumn('{{%rating}}', 'entity', $this->string()->notNull()); | |
29 | + } | |
30 | + | |
31 | +} | ... | ... |
console/migrations/m160311_151257_user_project_rating.php
0 → 100644
1 | +<?php | |
2 | + | |
3 | +use yii\db\Migration; | |
4 | + | |
5 | +class m160311_151257_user_project_rating extends Migration | |
6 | +{ | |
7 | + public function up() | |
8 | + { | |
9 | + $this->addColumn('{{%user_info}}', 'rating', $this->float()->defaultValue(0)); | |
10 | + $this->addColumn('{{%project}}', 'rating', $this->float()->defaultValue(0)); | |
11 | + } | |
12 | + | |
13 | + public function down() | |
14 | + { | |
15 | + $this->dropColumn('{{%user_info}}', 'rating'); | |
16 | + $this->dropColumn('{{%project}}', 'rating'); | |
17 | + } | |
18 | + | |
19 | +} | ... | ... |
frontend/controllers/SearchController.php
1 | 1 | <?php |
2 | -namespace frontend\controllers; | |
3 | - | |
4 | -use common\models\CustomerSearch; | |
5 | -use common\models\Project; | |
6 | -use common\models\UserInfo; | |
7 | -use common\models\Vacancy; | |
8 | -use Yii; | |
9 | -use common\models\LoginForm; | |
10 | -use frontend\models\PasswordResetRequestForm; | |
11 | -use frontend\models\ResetPasswordForm; | |
12 | -use frontend\models\SignupForm; | |
13 | -use frontend\models\ContactForm; | |
14 | -use frontend\models\Options; | |
15 | -use frontend\models\OptionValues; | |
16 | -use yii\base\InvalidParamException; | |
17 | -use yii\data\ActiveDataProvider; | |
18 | -use yii\data\Pagination; | |
19 | -use yii\web\BadRequestHttpException; | |
20 | -use yii\web\Controller; | |
21 | -use yii\filters\VerbFilter; | |
22 | -use yii\filters\AccessControl; | |
23 | -use frontend\models\OptionsToValues; | |
24 | -use yii\validators\EmailValidator; | |
25 | -use common\models\User; | |
26 | -use yii\helpers\VarDumper; | |
27 | -use common\models\Page; | |
28 | -use frontend\models\Option; | |
29 | -use common\models\Social; | |
30 | - | |
31 | - | |
32 | -/** | |
33 | - * Site controller | |
34 | - */ | |
35 | -class SearchController extends Controller | |
36 | -{ | |
37 | - public $defaultAction = 'common'; | |
2 | + namespace frontend\controllers; | |
3 | + | |
4 | + use common\models\CustomerSearch; | |
5 | + use common\models\Project; | |
6 | + use common\models\UserInfo; | |
7 | + use common\models\Vacancy; | |
8 | + use Yii; | |
9 | + use common\models\LoginForm; | |
10 | + use frontend\models\PasswordResetRequestForm; | |
11 | + use frontend\models\ResetPasswordForm; | |
12 | + use frontend\models\SignupForm; | |
13 | + use frontend\models\ContactForm; | |
14 | + use frontend\models\Options; | |
15 | + use frontend\models\OptionValues; | |
16 | + use yii\base\InvalidParamException; | |
17 | + use yii\data\ActiveDataProvider; | |
18 | + use yii\data\Pagination; | |
19 | + use yii\web\BadRequestHttpException; | |
20 | + use yii\web\Controller; | |
21 | + use yii\filters\VerbFilter; | |
22 | + use yii\filters\AccessControl; | |
23 | + use frontend\models\OptionsToValues; | |
24 | + use yii\validators\EmailValidator; | |
25 | + use common\models\User; | |
26 | + use yii\helpers\VarDumper; | |
27 | + use common\models\Page; | |
28 | + use frontend\models\Option; | |
29 | + use common\models\Social; | |
38 | 30 | |
39 | 31 | /** |
40 | - * @inheritdoc | |
32 | + * Site controller | |
41 | 33 | */ |
42 | - public function actions() | |
43 | - { | |
44 | - return [ | |
45 | - 'error' => [ | |
46 | - 'class' => 'yii\web\ErrorAction', | |
47 | - ], | |
48 | - 'captcha' => [ | |
49 | - 'class' => 'yii\captcha\CaptchaAction', | |
50 | - 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, | |
51 | - ], | |
52 | - ]; | |
53 | - } | |
54 | - | |
55 | - public function actionProject() | |
34 | + class SearchController extends Controller | |
56 | 35 | { |
57 | 36 | |
58 | - $projects = new ActiveDataProvider([ | |
59 | - 'query' => Project::find(), | |
60 | - 'pagination' => [ | |
61 | - 'pageSize' => 9, | |
62 | - ], | |
63 | - ]); | |
64 | - | |
65 | - return $this->render('project',[ | |
66 | - 'projects' => $projects | |
67 | - ]); | |
68 | - } | |
37 | + public $defaultAction = 'common'; | |
69 | 38 | |
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' => 'Название', | |
39 | + /** | |
40 | + * @inheritdoc | |
41 | + */ | |
42 | + public function actions() | |
43 | + { | |
44 | + return [ | |
45 | + 'error' => [ | |
46 | + 'class' => 'yii\web\ErrorAction', | |
92 | 47 | ], |
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' => 'Количество сотрудников', | |
48 | + 'captcha' => [ | |
49 | + 'class' => 'yii\captcha\CaptchaAction', | |
50 | + 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : NULL, | |
51 | + ], | |
52 | + ]; | |
53 | + } | |
54 | + | |
55 | + public function actionProject() | |
56 | + { | |
57 | + $projects = new ActiveDataProvider([ | |
58 | + 'query' => Project::find(), | |
59 | + 'pagination' => [ | |
60 | + 'pageSize' => 9, | |
61 | + ], | |
62 | + ]); | |
63 | + return $this->render('project', [ | |
64 | + 'projects' => $projects, | |
65 | + ]); | |
66 | + } | |
67 | + | |
68 | + public function actionCustomer() | |
69 | + { | |
70 | + $model = new CustomerSearch(); | |
71 | + $dataProvider = $model->search(Yii::$app->request->queryParams); | |
72 | + $dataProvider->setPagination([ | |
73 | + 'pageSize' => 5, | |
74 | + ]); | |
75 | + $dataProvider->setSort([ | |
76 | + 'defaultOrder' => [ | |
77 | + 'name' => SORT_ASC, | |
102 | 78 | ], |
103 | - 'visit' => [ | |
104 | - 'asc' => [ | |
105 | - 'user_info.date_visit' => SORT_ASC, | |
79 | + 'attributes' => [ | |
80 | + 'name' => [ | |
81 | + 'asc' => [ | |
82 | + 'company_info.name' => SORT_ASC, | |
83 | + 'firstname' => SORT_ASC, | |
84 | + 'lastname' => SORT_ASC, | |
85 | + ], | |
86 | + 'desc' => [ | |
87 | + 'company_info.name' => SORT_DESC, | |
88 | + 'firstname' => SORT_DESC, | |
89 | + 'lastname' => SORT_DESC, | |
90 | + ], | |
91 | + 'default' => SORT_ASC, | |
92 | + 'label' => 'Название', | |
106 | 93 | ], |
107 | - 'desc' => [ | |
108 | - 'user_info.date_visit' => SORT_DESC, | |
94 | + 'staff' => [ | |
95 | + 'asc' => [ | |
96 | + 'company_info.staff' => SORT_ASC, | |
97 | + ], | |
98 | + 'desc' => [ | |
99 | + 'company_info.staff' => SORT_DESC, | |
100 | + ], | |
101 | + 'default' => SORT_DESC, | |
102 | + 'label' => 'Количество сотрудников', | |
109 | 103 | ], |
110 | - 'default' => SORT_DESC, | |
111 | - 'label' => 'Последний визит', | |
112 | - ], | |
113 | - 'city' => [ | |
114 | - 'asc' => [ | |
115 | - 'user_info.city' => SORT_ASC, | |
104 | + 'visit' => [ | |
105 | + 'asc' => [ | |
106 | + 'user_info.date_visit' => SORT_ASC, | |
107 | + ], | |
108 | + 'desc' => [ | |
109 | + 'user_info.date_visit' => SORT_DESC, | |
110 | + ], | |
111 | + 'default' => SORT_DESC, | |
112 | + 'label' => 'Последний визит', | |
116 | 113 | ], |
117 | - 'desc' => [ | |
118 | - 'user_info.city' => SORT_DESC, | |
114 | + 'city' => [ | |
115 | + 'asc' => [ | |
116 | + 'user_info.city' => SORT_ASC, | |
117 | + ], | |
118 | + 'desc' => [ | |
119 | + 'user_info.city' => SORT_DESC, | |
120 | + ], | |
121 | + 'default' => SORT_ASC, | |
122 | + 'label' => 'Город', | |
119 | 123 | ], |
120 | - 'default' => SORT_ASC, | |
121 | - 'label' => 'Город', | |
122 | 124 | ], |
123 | - ], | |
124 | - ]); | |
125 | - $model->load(Yii::$app->request->queryParams); | |
126 | - $cities = UserInfo::find()->select('city')->distinct()->asArray()->indexBy('city')->column(); | |
127 | - return $this->render('customer',[ | |
128 | - 'model' => $model, | |
129 | - 'dataProvider' => $dataProvider, | |
130 | - 'cities' => $cities, | |
131 | - ]); | |
132 | - } | |
133 | - | |
134 | - public function actionCompany() | |
135 | - { | |
136 | - $query = UserInfo::find() | |
137 | - ->joinWith([ 'user' ]) | |
138 | - ->where(['is_customer' => 1,'user.type'=>2]); | |
139 | - | |
140 | - $companies = new ActiveDataProvider([ | |
141 | - 'query' => $query, | |
142 | - 'pagination' => [ | |
143 | - 'pageSize' => 3, | |
144 | - ], | |
145 | - ]); | |
146 | - | |
147 | - return $this->render('company',[ | |
148 | - 'companies' => $companies | |
149 | - ]); | |
150 | - } | |
151 | - | |
152 | - public function actionPerformer() | |
153 | - { | |
154 | - $query = UserInfo::find() | |
155 | - ->joinWith([ 'user' ]) | |
156 | - ->where(['is_customer' => 1,'user.type'=>1]); | |
157 | - | |
158 | - | |
159 | - $performer = new ActiveDataProvider([ | |
160 | - 'query' => $query, | |
161 | - 'pagination' => [ | |
162 | - 'pageSize' => 3, | |
163 | - ], | |
164 | - ]); | |
165 | - | |
166 | - return $this->render('performer',[ | |
167 | - 'performer' => $performer | |
168 | - ]); | |
169 | - } | |
170 | - | |
171 | - public function actionVacancy() | |
172 | - { | |
173 | - | |
125 | + ]); | |
126 | + $model->load(Yii::$app->request->queryParams); | |
127 | + $cities = UserInfo::find() | |
128 | + ->select('city') | |
129 | + ->distinct() | |
130 | + ->asArray() | |
131 | + ->indexBy('city') | |
132 | + ->column(); | |
133 | + return $this->render('customer', [ | |
134 | + 'model' => $model, | |
135 | + 'dataProvider' => $dataProvider, | |
136 | + 'cities' => $cities, | |
137 | + ]); | |
138 | + } | |
139 | + | |
140 | + public function actionCompany() | |
141 | + { | |
142 | + $query = UserInfo::find() | |
143 | + ->joinWith([ 'user' ]) | |
144 | + ->where([ | |
145 | + 'is_customer' => 1, | |
146 | + 'user.type' => 2, | |
147 | + ]); | |
148 | + | |
149 | + $companies = new ActiveDataProvider([ | |
150 | + 'query' => $query, | |
151 | + 'pagination' => [ | |
152 | + 'pageSize' => 3, | |
153 | + ], | |
154 | + ]); | |
155 | + | |
156 | + return $this->render('company', [ | |
157 | + 'companies' => $companies, | |
158 | + ]); | |
159 | + } | |
160 | + | |
161 | + public function actionPerformer() | |
162 | + { | |
163 | + $query = UserInfo::find() | |
164 | + ->joinWith([ 'user' ]) | |
165 | + ->where([ | |
166 | + 'is_customer' => 1, | |
167 | + 'user.type' => 1, | |
168 | + ]); | |
169 | + | |
170 | + $performer = new ActiveDataProvider([ | |
171 | + 'query' => $query, | |
172 | + 'pagination' => [ | |
173 | + 'pageSize' => 3, | |
174 | + ], | |
175 | + ]); | |
174 | 176 | |
175 | - $query = Vacancy::find(); | |
177 | + return $this->render('performer', [ | |
178 | + 'performer' => $performer, | |
179 | + ]); | |
180 | + } | |
176 | 181 | |
177 | - $countQuery = clone $query; | |
182 | + public function actionVacancy() | |
183 | + { | |
178 | 184 | |
179 | - $pagination = new Pagination(['totalCount' => $countQuery->count(), | |
180 | - 'pageSize' => 15, | |
181 | - ]); | |
185 | + $query = Vacancy::find(); | |
182 | 186 | |
183 | - $vacancy = $query->offset($pagination->offset) | |
184 | - ->limit($pagination->limit); | |
187 | + $countQuery = clone $query; | |
185 | 188 | |
189 | + $pagination = new Pagination([ | |
190 | + 'totalCount' => $countQuery->count(), | |
191 | + 'pageSize' => 15, | |
192 | + ]); | |
186 | 193 | |
187 | - $provider = new ActiveDataProvider([ | |
188 | - 'query' => $vacancy, | |
189 | - 'pagination' => false, | |
190 | - 'sort' => [ | |
191 | - 'defaultOrder' => [ | |
192 | - 'date_add' => SORT_DESC, | |
193 | - 'name' => SORT_ASC, | |
194 | - ] | |
195 | - ], | |
196 | - ]); | |
194 | + $vacancy = $query->offset($pagination->offset) | |
195 | + ->limit($pagination->limit); | |
197 | 196 | |
197 | + $provider = new ActiveDataProvider([ | |
198 | + 'query' => $vacancy, | |
199 | + 'pagination' => false, | |
200 | + 'sort' => [ | |
201 | + 'defaultOrder' => [ | |
202 | + 'date_add' => SORT_DESC, | |
203 | + 'name' => SORT_ASC, | |
204 | + ], | |
205 | + ], | |
206 | + ]); | |
198 | 207 | |
208 | + return $this->render('vacancy', [ | |
209 | + 'provider' => $provider, | |
210 | + 'pagination' => $pagination, | |
211 | + ]); | |
212 | + } | |
199 | 213 | |
200 | - return $this->render('vacancy',[ | |
201 | - 'provider' => $provider, | |
202 | - 'pagination' => $pagination | |
203 | - ]); | |
204 | 214 | } |
205 | - | |
206 | -} | ... | ... |
frontend/views/performer/portfolio-view.php
... | ... | @@ -114,21 +114,22 @@ |
114 | 114 | <?php |
115 | 115 | echo \common\modules\comment\widgets\CommentWidget::widget([ |
116 | 116 | 'context' => $this, |
117 | - 'entity' => $portfolio::tableName() . '-' . $portfolio->portfolio_id, | |
117 | + 'model' => $portfolio::className(), | |
118 | + 'model_id' => $portfolio->portfolio_id, | |
118 | 119 | 'comment_class' => \common\modules\comment\models\Comment::className(), |
119 | - 'rating_class' => \common\modules\comment\models\Rating::className(), | |
120 | + 'rating_class' => \common\modules\comment\models\Rating::className(), | |
120 | 121 | 'class_options' => [ |
121 | - 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST, | |
122 | - 'user_id' => \Yii::$app->user->getId(), | |
122 | + 'scenario' => is_int(\Yii::$app->user->getId()) ? \common\modules\comment\models\Comment::SCENARIO_USER : \common\modules\comment\models\Comment::SCENARIO_GUEST, | |
123 | + 'user_id' => \Yii::$app->user->getId(), | |
123 | 124 | 'guestComment' => true, |
124 | - 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE, | |
125 | + 'status' => \common\modules\comment\models\Comment::STATUS_ACTIVE, | |
125 | 126 | ], |
126 | 127 | 'list_options' => [ |
127 | 128 | 'view' => 'list-comment', |
128 | 129 | ], |
129 | 130 | 'form_options' => [ |
130 | - 'view' => 'form-comment', | |
131 | - 'tag' => 'div', | |
131 | + 'view' => 'form-comment', | |
132 | + 'tag' => 'div', | |
132 | 133 | 'class' => 'artbox_comment_form', |
133 | 134 | ], |
134 | 135 | 'options' => [ | ... | ... |
frontend/views/search/_customer_list_view.php
... | ... | @@ -26,13 +26,12 @@ |
26 | 26 | <div class="rating_search_performer"> |
27 | 27 | <!--оценка--> |
28 | 28 | <?php |
29 | - if($rating = $model->getRatingPG()->rating) { | |
29 | + if($rating = $model->userInfo->rating) { | |
30 | 30 | echo "<input type='hidden' class='val' value='{$rating}'/>"; |
31 | 31 | } else { |
32 | 32 | echo "<input type='hidden' class='val' value='0'/>"; |
33 | 33 | } |
34 | 34 | ?> |
35 | - <input type="hidden" class="val" value="4"/> | |
36 | 35 | </div> |
37 | 36 | <div class="search_perform-stars-txt"> |
38 | 37 | <?= $model->getComments()->count() ?> отзывов | ... | ... |
frontend/views/search/customer.php
... | ... | @@ -11,16 +11,24 @@ |
11 | 11 | use yii\widgets\LinkSorter; |
12 | 12 | use yii\widgets\ListView; |
13 | 13 | |
14 | + $sort_array = $dataProvider->sort->getAttributeOrders(); | |
15 | + $active_key = array_keys($sort_array)[ 0 ]; | |
16 | + $active_value = $sort_array[ $active_key ]; | |
17 | + $sort_name = ( ( $active_value == 4 ) ? '-' : '' ) . $active_key; | |
14 | 18 | ?> |
15 | 19 | <div class="section-box-22 section-box-customer"> |
16 | 20 | <div class="box-wr"> |
17 | 21 | <div class="box-all"> |
18 | 22 | <?php |
19 | - // == Left filter == | |
23 | + // == Left filter == | |
20 | 24 | ?> |
21 | 25 | <div class="left-search-work"> |
22 | 26 | <?php |
23 | - $form = ActiveForm::begin(['method' => 'get', 'options' => [ 'class' => 'search-work-form' ], 'action' => [''] ]); | |
27 | + $form = ActiveForm::begin([ | |
28 | + 'method' => 'get', | |
29 | + 'options' => [ 'class' => 'search-work-form' ], | |
30 | + 'action' => [ '' ], | |
31 | + ]); | |
24 | 32 | |
25 | 33 | echo $form->field($model, 'city', [ |
26 | 34 | 'options' => [ |
... | ... | @@ -41,20 +49,24 @@ |
41 | 49 | 2 => 'Компания', |
42 | 50 | ], [ 'prompt' => 'Любой' ]); |
43 | 51 | ?> |
44 | - | |
45 | - <?php | |
46 | - /* Рейтинг | |
47 | - ?> | |
48 | - <div class="blocks-check-list-wrapp"> | |
49 | - <div class="blocks-check-title">Рейтинг</div> | |
50 | - <div class="rating"> | |
51 | - <!--оценка--> | |
52 | - <input type="hidden" class="val" value="0"> | |
53 | - </div> | |
52 | + <div class="blocks-check-list-wrapp"> | |
53 | + <div class="blocks-check-title">Рейтинг</div> | |
54 | + <div class=""> | |
55 | + <?php | |
56 | + echo $form->field($model, 'rating') | |
57 | + ->label(false) | |
58 | + ->radioList([ | |
59 | + '' => 'Все', | |
60 | + 0 => 0, | |
61 | + 1 => 1, | |
62 | + 2 => 2, | |
63 | + 3 => 3, | |
64 | + 4 => 4, | |
65 | + 5 => 5, | |
66 | + ]); | |
67 | + ?> | |
54 | 68 | </div> |
55 | - <?php | |
56 | - */ | |
57 | - ?> | |
69 | + </div> | |
58 | 70 | |
59 | 71 | <?php |
60 | 72 | echo $form->field($model, 'online', [ |
... | ... | @@ -68,31 +80,31 @@ |
68 | 80 | 1 => 'Онлайн', |
69 | 81 | ], [ |
70 | 82 | '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>"; | |
83 | + $checked = ( $model->online == $value ); | |
84 | + 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 | 85 | }, |
74 | 86 | 'unselect' => NULL, |
75 | 87 | ]); |
76 | 88 | |
77 | - echo '<div class="blocks-check-list-submit">'.Html::submitInput('Найти').'</div>'; | |
89 | + echo '<div class="blocks-check-list-submit">' . Html::submitInput('Найти') . '</div>'; | |
78 | 90 | |
79 | 91 | $form->end(); |
80 | 92 | ?> |
81 | 93 | <script> |
82 | 94 | $('div.rating').rating( |
83 | 95 | { |
84 | - fx : 'full', url : 'rating.php' | |
96 | + fx : 'full', | |
85 | 97 | } |
86 | 98 | ); |
87 | 99 | </script> |
88 | 100 | </div> |
89 | 101 | |
90 | 102 | <?php |
91 | - // == End of left filter == | |
103 | + // == End of left filter == | |
92 | 104 | ?> |
93 | 105 | |
94 | 106 | <?php |
95 | - // == Page content == | |
107 | + // == Page content == | |
96 | 108 | ?> |
97 | 109 | <div class="right-search-work"> |
98 | 110 | <div class="search-worker-title style">Найти заказчика</div> |
... | ... | @@ -100,17 +112,23 @@ |
100 | 112 | <span><?= $dataProvider->totalCount ?></span></div> |
101 | 113 | <div class="search-worker-search-wr style"> |
102 | 114 | <?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')]); | |
115 | + $form2 = ActiveForm::begin([ | |
116 | + 'method' => 'get', | |
117 | + 'action' => [ '' ], | |
118 | + 'options' => [ 'class' => 'search-worker-form' ], | |
119 | + ]); | |
120 | + echo $form2->field($model, 'info', [ 'options' => [ 'tag' => false ] ]) | |
121 | + ->label(false) | |
122 | + ->textInput([ 'placeholder' => $model->getAttributeLabel('info') ]); | |
105 | 123 | echo Html::submitInput('Найти'); |
106 | - $form2->end(); | |
124 | + $form2->end(); | |
107 | 125 | ?> |
108 | 126 | <a href="#" class="add-to-catalog-search-worker">Добавить себя в каталог</a> |
109 | 127 | <div class="search-worker-sort-wr style"> |
110 | 128 | <div class="search-worker-sort">Сортировать: </div> |
111 | 129 | <ul> |
112 | 130 | <li class="activejob"> |
113 | - <a href="#"></a> | |
131 | + <a href="#" data-sort-name="<?= $sort_name ?>"></a> | |
114 | 132 | <div class="sidebar-droped-wr style"> |
115 | 133 | <?php |
116 | 134 | echo LinkSorter::widget([ |
... | ... | @@ -123,147 +141,147 @@ |
123 | 141 | </div> |
124 | 142 | </div> |
125 | 143 | <?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 | - ]); | |
144 | + echo ListView::widget([ | |
145 | + 'dataProvider' => $dataProvider, | |
146 | + 'layout' => "{items}\n{pager}", | |
147 | + 'options' => [ | |
148 | + 'class' => 'search-worker-blocks-wr style', | |
149 | + ], | |
150 | + 'itemOptions' => [ | |
151 | + 'class' => 'search-worker-blocks', | |
152 | + ], | |
153 | + 'itemView' => '_customer_list_view', | |
154 | + ]); | |
137 | 155 | ?> |
138 | 156 | <?php |
139 | - /* == Layout == | |
140 | - ?> | |
141 | - <div class="search-worker-blocks-wr style"> | |
157 | + /* == Layout == | |
158 | + ?> | |
159 | + <div class="search-worker-blocks-wr style"> | |
142 | 160 | |
143 | - <div class="search-worker-blocks"> | |
144 | - <div class="search_perform_txt-wr"> | |
145 | - <div class="search_perform_title">ООО «Ортекс»</div> | |
146 | - <div class="search_perform-stars-wr"> | |
147 | - <div class="rating_search_performer"> | |
148 | - <!--оценка--> | |
149 | - <input type="hidden" class="val" value="4"/> | |
161 | + <div class="search-worker-blocks"> | |
162 | + <div class="search_perform_txt-wr"> | |
163 | + <div class="search_perform_title">ООО «Ортекс»</div> | |
164 | + <div class="search_perform-stars-wr"> | |
165 | + <div class="rating_search_performer"> | |
166 | + <!--оценка--> | |
167 | + <input type="hidden" class="val" value="4"/> | |
168 | + </div> | |
169 | + <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
150 | 170 | </div> |
151 | - <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
152 | - </div> | |
153 | - <div class="search_perform_leng"> | |
154 | - <div>Сотрудники: более 40</div> | |
155 | - </div> | |
156 | - <div class="search_perform_visit"> | |
157 | - <span>Послелний визит:</span> 2 дня назад | |
171 | + <div class="search_perform_leng"> | |
172 | + <div>Сотрудники: более 40</div> | |
173 | + </div> | |
174 | + <div class="search_perform_visit"> | |
175 | + <span>Послелний визит:</span> 2 дня назад | |
176 | + </div> | |
177 | + <div class="search_perform_projets_nam"> | |
178 | + <a href="#">Заказано проектов: 21</a></div> | |
158 | 179 | </div> |
159 | - <div class="search_perform_projets_nam"> | |
160 | - <a href="#">Заказано проектов: 21</a></div> | |
161 | - </div> | |
162 | 180 | |
163 | - <div class="right_search_perform_block-wr"> | |
164 | - <div class="right_search_perform_foto-wr"> | |
165 | - <div><img src="/images/search_performer_img-1.jpg" alt=""/></div> | |
181 | + <div class="right_search_perform_block-wr"> | |
182 | + <div class="right_search_perform_foto-wr"> | |
183 | + <div><img src="/images/search_performer_img-1.jpg" alt=""/></div> | |
184 | + </div> | |
185 | + <a class="get-list" href="#">Добавить в закладки</a> | |
166 | 186 | </div> |
167 | - <a class="get-list" href="#">Добавить в закладки</a> | |
168 | 187 | </div> |
169 | - </div> | |
170 | 188 | |
171 | - <div class="search-worker-blocks"> | |
172 | - <div class="search_perform_txt-wr"> | |
173 | - <div class="search_perform_title">Петер Цумтор</div> | |
174 | - <div class="search_perform-stars-wr"> | |
175 | - <div class="rating_search_performer"> | |
176 | - <!--оценка--> | |
177 | - <input type="hidden" class="val" value="2"/> | |
189 | + <div class="search-worker-blocks"> | |
190 | + <div class="search_perform_txt-wr"> | |
191 | + <div class="search_perform_title">Петер Цумтор</div> | |
192 | + <div class="search_perform-stars-wr"> | |
193 | + <div class="rating_search_performer"> | |
194 | + <!--оценка--> | |
195 | + <input type="hidden" class="val" value="2"/> | |
196 | + </div> | |
197 | + <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
178 | 198 | </div> |
179 | - <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
180 | - </div> | |
181 | - <div class="search_perform_leng"> | |
182 | - <!--<div>Сотрудники: более 40</div>--> | |
183 | - </div> | |
184 | - <div class="search_perform_visit"> | |
185 | - <span>Послелний визит:</span> 2 дня назад | |
199 | + <div class="search_perform_leng"> | |
200 | + <!--<div>Сотрудники: более 40</div>--> | |
201 | + </div> | |
202 | + <div class="search_perform_visit"> | |
203 | + <span>Послелний визит:</span> 2 дня назад | |
204 | + </div> | |
205 | + <div class="search_perform_projets_nam"> | |
206 | + <a href="#">Заказано проектов: 21</a></div> | |
186 | 207 | </div> |
187 | - <div class="search_perform_projets_nam"> | |
188 | - <a href="#">Заказано проектов: 21</a></div> | |
189 | - </div> | |
190 | 208 | |
191 | - <div class="right_search_perform_block-wr"> | |
192 | - <div class="right_search_perform_foto-wr"> | |
193 | - <div><a href="#"><img src="/images/ded-ico.png" alt=""/></a></div> | |
209 | + <div class="right_search_perform_block-wr"> | |
210 | + <div class="right_search_perform_foto-wr"> | |
211 | + <div><a href="#"><img src="/images/ded-ico.png" alt=""/></a></div> | |
212 | + </div> | |
213 | + <a class="get-list" href="#">Добавить в закладки</a> | |
194 | 214 | </div> |
195 | - <a class="get-list" href="#">Добавить в закладки</a> | |
196 | 215 | </div> |
197 | - </div> | |
198 | 216 | |
199 | - <div class="search-worker-blocks"> | |
200 | - <div class="search_perform_txt-wr"> | |
201 | - <div class="search_perform_title">ООО «Ортекс»</div> | |
202 | - <div class="search_perform-stars-wr"> | |
203 | - <div class="rating_search_performer"> | |
204 | - <!--оценка--> | |
205 | - <input type="hidden" class="val" value="1"/> | |
217 | + <div class="search-worker-blocks"> | |
218 | + <div class="search_perform_txt-wr"> | |
219 | + <div class="search_perform_title">ООО «Ортекс»</div> | |
220 | + <div class="search_perform-stars-wr"> | |
221 | + <div class="rating_search_performer"> | |
222 | + <!--оценка--> | |
223 | + <input type="hidden" class="val" value="1"/> | |
224 | + </div> | |
225 | + <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
206 | 226 | </div> |
207 | - <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
208 | - </div> | |
209 | - <div class="search_perform_leng"> | |
210 | - <div>Сотрудники: более 40</div> | |
211 | - </div> | |
212 | - <div class="search_perform_visit"> | |
213 | - <span>Послелний визит:</span> 2 дня назад | |
227 | + <div class="search_perform_leng"> | |
228 | + <div>Сотрудники: более 40</div> | |
229 | + </div> | |
230 | + <div class="search_perform_visit"> | |
231 | + <span>Послелний визит:</span> 2 дня назад | |
232 | + </div> | |
233 | + <div class="search_perform_projets_nam"> | |
234 | + <a href="#">Заказано проектов: 21</a></div> | |
214 | 235 | </div> |
215 | - <div class="search_perform_projets_nam"> | |
216 | - <a href="#">Заказано проектов: 21</a></div> | |
217 | - </div> | |
218 | 236 | |
219 | - <div class="right_search_perform_block-wr"> | |
220 | - <div class="right_search_perform_foto-wr"> | |
221 | - <div><img src="/images/search_performer_img-1.jpg" alt=""/></div> | |
237 | + <div class="right_search_perform_block-wr"> | |
238 | + <div class="right_search_perform_foto-wr"> | |
239 | + <div><img src="/images/search_performer_img-1.jpg" alt=""/></div> | |
240 | + </div> | |
241 | + <a class="get-list" href="#">Добавить в закладки</a> | |
222 | 242 | </div> |
223 | - <a class="get-list" href="#">Добавить в закладки</a> | |
224 | 243 | </div> |
225 | - </div> | |
226 | 244 | |
227 | - <div class="search-worker-blocks"> | |
228 | - <div class="search_perform_txt-wr"> | |
229 | - <div class="search_perform_title">Петер Цумтор</div> | |
230 | - <div class="search_perform-stars-wr"> | |
231 | - <div class="rating_search_performer"> | |
232 | - <!--оценка--> | |
233 | - <input type="hidden" class="val" value="5"/> | |
245 | + <div class="search-worker-blocks"> | |
246 | + <div class="search_perform_txt-wr"> | |
247 | + <div class="search_perform_title">Петер Цумтор</div> | |
248 | + <div class="search_perform-stars-wr"> | |
249 | + <div class="rating_search_performer"> | |
250 | + <!--оценка--> | |
251 | + <input type="hidden" class="val" value="5"/> | |
252 | + </div> | |
253 | + <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
234 | 254 | </div> |
235 | - <div class="search_perform-stars-txt">30 отзывов, Киев</div> | |
236 | - </div> | |
237 | - <div class="search_perform_leng"> | |
238 | - <!--<div>Сотрудники: более 40</div>--> | |
239 | - </div> | |
240 | - <div class="search_perform_visit"> | |
241 | - <span>Послелний визит:</span> 2 дня назад | |
255 | + <div class="search_perform_leng"> | |
256 | + <!--<div>Сотрудники: более 40</div>--> | |
257 | + </div> | |
258 | + <div class="search_perform_visit"> | |
259 | + <span>Послелний визит:</span> 2 дня назад | |
260 | + </div> | |
261 | + <div class="search_perform_projets_nam"> | |
262 | + <a href="#">Заказано проектов: 21</a></div> | |
242 | 263 | </div> |
243 | - <div class="search_perform_projets_nam"> | |
244 | - <a href="#">Заказано проектов: 21</a></div> | |
245 | - </div> | |
246 | 264 | |
247 | - <div class="right_search_perform_block-wr"> | |
248 | - <div class="right_search_perform_foto-wr"> | |
249 | - <div><img src="/images/ded-ico.png" alt=""/></div> | |
265 | + <div class="right_search_perform_block-wr"> | |
266 | + <div class="right_search_perform_foto-wr"> | |
267 | + <div><img src="/images/ded-ico.png" alt=""/></div> | |
268 | + </div> | |
269 | + <a class="get-list" href="#">Добавить в закладки</a> | |
250 | 270 | </div> |
251 | - <a class="get-list" href="#">Добавить в закладки</a> | |
252 | 271 | </div> |
253 | 272 | </div> |
254 | - </div> | |
255 | 273 | |
256 | - <div class="navi-buttons-wr style"> | |
257 | - <ul class="pagination"> | |
258 | - <li class="prev disabled"><span>«</span></li> | |
259 | - <li class="active"><a href="#">1</a></li> | |
260 | - <li><a href="#">2</a></li> | |
261 | - <li class="next"><a href="#">»</a></li> | |
262 | - </ul> | |
263 | - </div> | |
274 | + <div class="navi-buttons-wr style"> | |
275 | + <ul class="pagination"> | |
276 | + <li class="prev disabled"><span>«</span></li> | |
277 | + <li class="active"><a href="#">1</a></li> | |
278 | + <li><a href="#">2</a></li> | |
279 | + <li class="next"><a href="#">»</a></li> | |
280 | + </ul> | |
281 | + </div> | |
264 | 282 | |
265 | - <?php | |
266 | - == End of layout == */ | |
283 | + <?php | |
284 | + == End of layout == */ | |
267 | 285 | ?> |
268 | 286 | |
269 | 287 | <script> |
... | ... | @@ -275,7 +293,7 @@ |
275 | 293 | </script> |
276 | 294 | </div> |
277 | 295 | <?php |
278 | - // == End of page content == | |
296 | + // == End of page content == | |
279 | 297 | ?> |
280 | 298 | </div> |
281 | 299 | </div> | ... | ... |
frontend/web/css/style.css
... | ... | @@ -6594,7 +6594,6 @@ input[disabled], select[disabled] { |
6594 | 6594 | } |
6595 | 6595 | |
6596 | 6596 | /***/ |
6597 | -.sidebar-droped-wr ul li:first-child {display: none;} | |
6598 | 6597 | .right_search_perform_foto-wr {width: 140px;height: 93px;float: left;margin-left: 16px;} |
6599 | 6598 | .right_search_perform_foto-wr>div{width: 140px;height: 93px; display: table-cell; vertical-align: middle; text-align: center} |
6600 | 6599 | .right_search_perform_foto-wr>div{max-width: 140px;max-height: 93px; vertical-align: middle} | ... | ... |
frontend/web/js/script.js
... | ... | @@ -490,8 +490,17 @@ $(document).ready(function(){ |
490 | 490 | //} |
491 | 491 | |
492 | 492 | function jobClick(){ |
493 | - $('.activejob a').click(function(e){ | |
493 | + | |
494 | + var container = $('.search-worker-sort-wr'); | |
495 | + var sort = $(container).find('.activejob a[data-sort-name]').data('sort-name'); | |
496 | + var active = $(container).find('ul.sorter a[data-sort='+sort+']').clone(); | |
497 | + $(container).find('.activejob a[data-sort-name]').replaceWith(active); | |
498 | + | |
499 | + $('.activejob>a').click(function(e) { | |
494 | 500 | e.preventDefault(); |
501 | + }); | |
502 | + | |
503 | + $('.activejob a').click(function(e){ | |
495 | 504 | $('.sidebar-droped-wr').toggleClass('act') |
496 | 505 | $('.performance-vacancy-sidebar-company-job>ul').addClass('active-dropped-ul') |
497 | 506 | if( !($('.sidebar-droped-wr').hasClass('act')) ) { | ... | ... |