diff --git a/common/models/Project.php b/common/models/Project.php
index 48df7c1..de6a879 100644
--- a/common/models/Project.php
+++ b/common/models/Project.php
@@ -2,6 +2,7 @@
namespace common\models;
+ use common\modules\comment\models\CommentProject;
use Yii;
use yii\behaviors\BlameableBehavior;
use yii\behaviors\TimestampBehavior;
@@ -64,8 +65,8 @@
'class' => 'common\behaviors\Slug',
'in_attribute' => 'name',
'out_attribute' => 'link',
- 'translit' => true
- ]
+ 'translit' => true,
+ ],
];
}
@@ -78,7 +79,7 @@
[
[
'name',
- 'link'
+ 'link',
],
'required',
],
@@ -277,6 +278,28 @@
public function getIsBookmarked()
{
- return false;
+ $type = Bookmark::TYPE_PROJECT;
+ if(!empty( \Yii::$app->user->identity )) {
+ if(!empty( $this->hasOne(Bookmark::className(), [ 'model_id' => 'project_id' ])
+ ->andWhere([
+ 'model' => $this->className(),
+ 'user_id' => \Yii::$app->user->getId(),
+ 'type' => $type,
+ ])
+ ->one() )
+ ) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ public function getComments()
+ {
+ return $this->hasMany(CommentProject::className(), [ 'model_id' => 'project_id' ])
+ ->andWhere([ 'model' => $this->className() ]);
}
}
diff --git a/common/models/User.php b/common/models/User.php
index bc43e82..a0d46bf 100755
--- a/common/models/User.php
+++ b/common/models/User.php
@@ -725,4 +725,50 @@
}
}
+ public function getBookmarks()
+ {
+ return $this->hasMany(Bookmark::className(), [ 'user_id' => 'id' ]);
+ }
+
+ public function getBookmarksPerformers()
+ {
+ return $this->hasMany(User::className(), [ 'id' => 'model_id' ])
+ ->viaTable('{{%bookmark}}', [ 'user_id' => 'id' ], function($query) {
+ /**
+ * @var ActiveQuery $query
+ */
+ $query->andWhere([
+ 'model' => User::className(),
+ 'type' => Bookmark::TYPE_PERFORMER,
+ ]);
+ });
+ }
+
+ public function getBookmarksCustomers()
+ {
+ return $this->hasMany(User::className(), [ 'id' => 'model_id' ])
+ ->viaTable('{{%bookmark}}', [ 'user_id' => 'id' ], function($query) {
+ /**
+ * @var ActiveQuery $query
+ */
+ $query->andWhere([
+ 'model' => User::className(),
+ 'type' => Bookmark::TYPE_CUSTOMER,
+ ]);
+ });
+ }
+
+ public function getBookmarksProjects()
+ {
+ return $this->hasMany(Project::className(), [ 'project_id' => 'model_id' ])
+ ->viaTable('{{%bookmark}}', [ 'user_id' => 'id' ], function($query) {
+ /**
+ * @var ActiveQuery $query
+ */
+ $query->andWhere([
+ 'model' => Project::className(),
+ 'type' => Bookmark::TYPE_PROJECT,
+ ]);
+ });
+ }
}
diff --git a/frontend/controllers/BookmarksController.php b/frontend/controllers/BookmarksController.php
index 01947e0..48784c5 100644
--- a/frontend/controllers/BookmarksController.php
+++ b/frontend/controllers/BookmarksController.php
@@ -2,7 +2,10 @@
namespace frontend\controllers;
use common\models\Bookmark;
+ use common\models\Project;
use common\models\User;
+ use frontend\models\SearchPerformerForm;
+ use yii\data\ActiveDataProvider;
use yii\filters\AccessControl;
use yii\filters\VerbFilter;
use yii\web\Controller;
@@ -14,6 +17,10 @@
class BookmarksController extends Controller
{
+ public $enableCsrfValidation = false;
+
+ public $defaultAction = 'performer';
+
public function behaviors()
{
return [
@@ -47,6 +54,60 @@
return $this->render('bookmarks');
}
+ public function actionPerformer()
+ {
+ /**
+ * @var User $user
+ */
+ $user = \Yii::$app->user->identity;
+ $dataProvider = new ActiveDataProvider([
+ 'query' => $user->getBookmarksPerformers(),
+ 'pagination' => [
+ 'pageSize' => 10,
+ ],
+ ]);
+ return $this->render('bookmarks-performer', [
+ 'dataProvider' => $dataProvider,
+ 'user' => $user,
+ ]);
+ }
+
+ public function actionCustomer()
+ {
+ /**
+ * @var User $user
+ */
+ $user = \Yii::$app->user->identity;
+ $dataProvider = new ActiveDataProvider([
+ 'query' => $user->getBookmarksCustomers(),
+ 'pagination' => [
+ 'pageSize' => 10,
+ ],
+ ]);
+ return $this->render('bookmarks-customer', [
+ 'dataProvider' => $dataProvider,
+ 'user' => $user,
+ ]);
+ }
+
+ public function actionProject()
+ {
+ /**
+ * @var User $user
+ */
+ $user = \Yii::$app->user->identity;
+ $dataProvider = new ActiveDataProvider([
+ 'query' => $user->getBookmarksProjects()->with('comments'),
+ 'pagination' => [
+ 'pageSize' => 10,
+ ],
+ ]);
+ return $this->render('bookmarks-project', [
+ 'dataProvider' => $dataProvider,
+ 'user' => $user,
+ ]);
+ }
+
public function actionAddPerformer()
{
$response = \Yii::$app->response;
@@ -89,14 +150,91 @@
}
}
- public function actionAddCustomer($id)
+ public function actionAddCustomer()
{
-
+ $response = \Yii::$app->response;
+ $response->format = Response::FORMAT_JSON;
+ $model_id = \Yii::$app->request->post('id');
+ if(empty( $model_id )) {
+ return [ 'error' => 'Ошибка добавления. Отсутствует id заказчика' ];
+ }
+ $user = User::findOne($model_id);
+ if(empty( $user )) {
+ return [ 'error' => 'Ошибка добавления. Заказчик не найден.' ];
+ }
+ $model = $user->className();
+ $user_id = \Yii::$app->user->getId();
+ $type = Bookmark::TYPE_CUSTOMER;
+ if(Bookmark::findOne([
+ 'model' => $model,
+ 'model_id' => $model_id,
+ 'user_id' => $user_id,
+ 'type' => $type,
+ ])
+ ) {
+ return [ 'error' => 'Ошибка добавления. Заказчик уже добавлен.' ];
+ }
+ $bookmark = new Bookmark([
+ 'model' => $model,
+ 'model_id' => $model_id,
+ 'user_id' => $user_id,
+ 'type' => $type,
+ ]);
+ if($bookmark->save()) {
+ $result = $this->renderAjax('//site/forms-modal-fav', [
+ 'message' => 'Добавлено в закладки.',
+ 'image' => $user->userInfo->image,
+ 'name' => $user->name,
+ ]);
+ return [ 'result' => $result ];
+ } else {
+ return [ 'error' => 'Ошибка добавления.' ];
+ }
}
- public function actionAddProject($id)
+ public function actionAddProject()
{
-
+ $response = \Yii::$app->response;
+ $response->format = Response::FORMAT_JSON;
+ $model_id = \Yii::$app->request->post('id');
+ if(empty( $model_id )) {
+ return [ 'error' => 'Ошибка добавления. Отсутствует id проекта' ];
+ }
+ /**
+ * @var Project $project
+ */
+ $project = Project::findOne($model_id);
+ if(empty( $project )) {
+ return [ 'error' => 'Ошибка добавления. Проект не найден.' ];
+ }
+ $model = $project->className();
+ $user_id = \Yii::$app->user->getId();
+ $type = Bookmark::TYPE_PROJECT;
+ if(Bookmark::findOne([
+ 'model' => $model,
+ 'model_id' => $model_id,
+ 'user_id' => $user_id,
+ 'type' => $type,
+ ])
+ ) {
+ return [ 'error' => 'Ошибка добавления. Проект уже добавлен.' ];
+ }
+ $bookmark = new Bookmark([
+ 'model' => $model,
+ 'model_id' => $model_id,
+ 'user_id' => $user_id,
+ 'type' => $type,
+ ]);
+ if($bookmark->save()) {
+ $result = $this->renderAjax('//site/forms-modal-fav', [
+ 'message' => 'Добавлено в закладки.',
+ 'image' => $project->user->userInfo->image,
+ 'name' => $project->name,
+ ]);
+ return [ 'result' => $result ];
+ } else {
+ return [ 'error' => 'Ошибка добавления.' ];
+ }
}
public function actionAddVacancy($id)
@@ -128,14 +266,84 @@
'user_id' => $user_id,
'type' => $type,
]);
- if(!empty($bookmark)) {
+ if(!empty( $bookmark )) {
+ if($bookmark->delete()) {
+ return [ 'message' => 'Закладка успешно удалена' ];
+ } else {
+ return [ 'error' => 'Ошибка при удалении' ];
+ }
+ } else {
+ return [ 'error' => 'Закладка не найдена' ];
+ }
+ }
+
+ public function actionRemoveCustomer()
+ {
+ $response = \Yii::$app->response;
+ $response->format = Response::FORMAT_JSON;
+ $model_id = \Yii::$app->request->post('id');
+ if(empty( $model_id )) {
+ return [ 'error' => 'Ошибка удаления. Отсутствует id заказчика' ];
+ }
+ $user = User::findOne($model_id);
+ if(empty( $user )) {
+ return [ 'error' => 'Ошибка добавления. Заказчик не найден.' ];
+ }
+ $model = $user->className();
+ $user_id = \Yii::$app->user->getId();
+ $type = Bookmark::TYPE_CUSTOMER;
+ /**
+ * @var Bookmark $bookmark
+ */
+ $bookmark = Bookmark::findOne([
+ 'model' => $model,
+ 'model_id' => $model_id,
+ 'user_id' => $user_id,
+ 'type' => $type,
+ ]);
+ if(!empty( $bookmark )) {
+ if($bookmark->delete()) {
+ return [ 'message' => 'Закладка успешно удалена' ];
+ } else {
+ return [ 'error' => 'Ошибка при удалении' ];
+ }
+ } else {
+ return [ 'error' => 'Закладка не найдена' ];
+ }
+ }
+
+ public function actionRemoveProject()
+ {
+ $response = \Yii::$app->response;
+ $response->format = Response::FORMAT_JSON;
+ $model_id = \Yii::$app->request->post('id');
+ if(empty( $model_id )) {
+ return [ 'error' => 'Ошибка удаления. Отсутствует id проекта' ];
+ }
+ $project = Project::findOne($model_id);
+ if(empty( $project )) {
+ return [ 'error' => 'Ошибка добавления. Проект не найден.' ];
+ }
+ $model = $project->className();
+ $user_id = \Yii::$app->user->getId();
+ $type = Bookmark::TYPE_PROJECT;
+ /**
+ * @var Bookmark $bookmark
+ */
+ $bookmark = Bookmark::findOne([
+ 'model' => $model,
+ 'model_id' => $model_id,
+ 'user_id' => $user_id,
+ 'type' => $type,
+ ]);
+ if(!empty( $bookmark )) {
if($bookmark->delete()) {
- return ['message' => 'Закладка успешно удалена'];
+ return [ 'message' => 'Закладка успешно удалена' ];
} else {
- return ['error' => 'Ошибка при удалении'];
+ return [ 'error' => 'Ошибка при удалении' ];
}
} else {
- return ['error' => 'Закладка не найдена'];
+ return [ 'error' => 'Закладка не найдена' ];
}
}
diff --git a/frontend/views/bookmarks/bookmarks-customer.php b/frontend/views/bookmarks/bookmarks-customer.php
new file mode 100644
index 0000000..0af6e6f
--- /dev/null
+++ b/frontend/views/bookmarks/bookmarks-customer.php
@@ -0,0 +1,462 @@
+title = 'Мой профиль';
+ $this->params[ 'breadcrumbs' ][] = $this->title;
+?>
+
+
+
+
+
+
+
+ = Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?>
+ = Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?>
+ = Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?>
+ = Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?>
+
+
+
Заказчики
+ = ListView::widget([
+ 'dataProvider' => $dataProvider,
+ 'itemView' => '@frontend/views/search/_customer_list_view',
+ 'itemOptions' => [
+ 'class' => 'search-worker-blocks',
+ ],
+ 'summary' => '
Готовые приступить к работе {totalCount}
',
+ ]) ?>
+
+
Компании готовые приступить к работе
+ 145
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/views/bookmarks/bookmarks-performer.php b/frontend/views/bookmarks/bookmarks-performer.php
new file mode 100644
index 0000000..134e5fe
--- /dev/null
+++ b/frontend/views/bookmarks/bookmarks-performer.php
@@ -0,0 +1,459 @@
+title = 'Мой профиль';
+ $this->params[ 'breadcrumbs' ][] = $this->title;
+?>
+
+
+
+
+
+
+
+ = Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?>
+ = Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?>
+ = Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?>
+ = Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?>
+
+
+
Исполнители
+ = ListView::widget([
+ 'dataProvider' => $dataProvider,
+ 'itemView' => '@frontend/views/search/_performer_list_view',
+ 'summary' => '
Готовые приступить к работе {totalCount}
',
+ ]) ?>
+
+
Компании готовые приступить к работе
+ 145
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/views/bookmarks/bookmarks-project.php b/frontend/views/bookmarks/bookmarks-project.php
new file mode 100644
index 0000000..80f0b20
--- /dev/null
+++ b/frontend/views/bookmarks/bookmarks-project.php
@@ -0,0 +1,459 @@
+title = 'Мой профиль';
+ $this->params[ 'breadcrumbs' ][] = $this->title;
+?>
+
+
+
+
+
+
+
+ = Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?>
+ = Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?>
+ = Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?>
+ = Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?>
+
+
+
Заказчики
+ = ListView::widget([
+ 'dataProvider' => $dataProvider,
+ 'itemView' => '@frontend/views/search/_projects_list_view',
+ 'summary' => '
Всего {totalCount} проектов в закладках
',
+ ]) ?>
+
+
Компании готовые приступить к работе
+ 145
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/views/bookmarks/bookmarks-vacancy.php b/frontend/views/bookmarks/bookmarks-vacancy.php
new file mode 100644
index 0000000..f79431c
--- /dev/null
+++ b/frontend/views/bookmarks/bookmarks-vacancy.php
@@ -0,0 +1,459 @@
+title = 'Мой профиль';
+ $this->params[ 'breadcrumbs' ][] = $this->title;
+?>
+
+
+
+
+
+
+
+ = Html::a('Исполнители', [ 'bookmarks/performer' ], [ 'class' => 'search-performer-button-performers' ]) ?>
+ = Html::a('Заказчики', [ 'bookmarks/customer' ], [ 'class' => 'search-performer-button-customers' ]) ?>
+ = Html::a('Проекты', [ 'bookmarks/project' ], [ 'class' => 'search-performer-button-project' ]) ?>
+ = Html::a('Вакансии', [ 'bookmarks/vacancy' ], [ 'class' => 'search-performer-button-project' ]) ?>
+
+
+
Вакансии
+ = ListView::widget([
+ 'dataProvider' => $dataProvider,
+ 'itemView' => '@frontend/views/search/_vacancy_list_view',
+ 'summary' => '
Всего {totalCount} вакансии в закладках
',
+ ]) ?>
+
+
Компании готовые приступить к работе
+ 145
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
30 отзывов, Киев
+
+
+ Сотрудники: более 40
+
+
+
+ География работ: Киев, Полтава, Харьков, Днепропетровск, Львов, Одесса
+
+
+
+
+
+ Последний визит: 2 дня назад
+
+
+
21 работа в портфолио
+
+
+
+
+
+
+
+
+  |
+
+
+
+
+

+

+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php
index fc397eb..b32a5d4 100755
--- a/frontend/views/layouts/main.php
+++ b/frontend/views/layouts/main.php
@@ -161,8 +161,8 @@ AppAsset::register($this);
'template' => '28',
],
[
- 'url' => ['accounts/bookmarks'],
- 'template' => '1',
+ 'url' => ['bookmarks/index'],
+ 'template' => "".count(\Yii::$app->user->identity->bookmarks)."",
],
],
]);
diff --git a/frontend/views/search/_customer_list_view.php b/frontend/views/search/_customer_list_view.php
index 4954370..88672d9 100644
--- a/frontend/views/search/_customer_list_view.php
+++ b/frontend/views/search/_customer_list_view.php
@@ -5,6 +5,7 @@
* @var integer $index
* @var ListView $widget
*/
+ use common\models\Bookmark;
use common\models\Project;
use common\models\User;
use frontend\helpers\TextHelper;
@@ -74,5 +75,19 @@
?>
- Добавить в закладки
+ user->identity )) {
+ if($model->getIsBookmarked(Bookmark::TYPE_CUSTOMER)) {
+ echo Html::a('Убрать из закладок', [ '#' ], [
+ 'class' => 'get-list artbox_bookmark_remove_customer',
+ 'data-id' => $model->id,
+ ]);
+ } else {
+ echo Html::a('Добавить в закладки', [ '#' ], [
+ 'class' => 'get-list artbox_bookmark_add_customer',
+ 'data-id' => $model->id,
+ ]);
+ }
+ }
+ ?>
\ No newline at end of file
diff --git a/frontend/views/search/_performer_list_view.php b/frontend/views/search/_performer_list_view.php
index 3da863b..0f40f25 100644
--- a/frontend/views/search/_performer_list_view.php
+++ b/frontend/views/search/_performer_list_view.php
@@ -1,32 +1,38 @@
- getPortfolios()->limit(4)->all(), 'cover'); ?>
+ getPortfolios()
+ ->limit(4)
+ ->all(), 'cover'); ?>
-
- = Html::a(Html::img($portfolios[$i]),'#',['class' => 'small-img-search gallery-box-min'] )?>
-
- = Html::a(Html::img($model->minImg($portfolios[$i], '318','228')),'#',['class' => 'big-img-search gallery-box-min'] )?>
-
-
+ for($i = 0; $i < count($portfolios); $i++) :?>
+
+ = Html::a(Html::img($portfolios[ $i ]), '#', [ 'class' => 'small-img-search gallery-box-min' ]) ?>
+
+ = Html::a(Html::img($model->minImg($portfolios[ $i ], '318', '228')), '#', [ 'class' => 'big-img-search gallery-box-min' ]) ?>
+
+
@@ -34,16 +40,16 @@ use yii\helpers\Url;
- = Html::img($model->minImg($model->userInfo->image, '48','48'))?>
+ = Html::img($model->minImg($model->userInfo->image, '48', '48')) ?>
- userInfo->member):?>
+ userInfo->member): ?>
PRO
NEW
-
= $model->name?>
+
= $model->name ?>
@@ -53,32 +59,52 @@ use yii\helpers\Url;
-
30 отзывов, = $model->userInfo->city?>
+
30 отзывов, = $model->userInfo->city ?>
- userInfo->busy):?>
- = Html::img('/images/sidebar-ico/ico_work_01.png');?>занят
-
- = Html::img('/images/sidebar-ico/ico-9.png');?>свободен
-
+ userInfo->busy): ?>
+ = Html::img('/images/sidebar-ico/ico_work_01.png'); ?>занят
+
+ = Html::img('/images/sidebar-ico/ico-9.png'); ?>свободен
+
- География работ: = implode(',',array_filter(ArrayHelper::getColumn($model->portfolios, 'city'))) ?>
+ География работ: = implode(',', array_filter(ArrayHelper::getColumn($model->portfolios, 'city'))) ?>
-
Последний визит: = $model->userInfo->lastVisit ?>
- = Html::a(count($model->portfolios)." работа в портфолио",[Url::toRoute(['performer/portfolio','performer_id'=>$model->userInfo->user_id])], ['class' => "search-worker-blocks-jobs-portfolio" ])?>
+
+ Последний визит: = $model->userInfo->lastVisit ?>
+ = Html::a(count($model->portfolios) . " работа в портфолио", [
+ Url::toRoute([
+ 'performer/portfolio',
+ 'performer_id' => $model->userInfo->user_id,
+ ]),
+ ], [ 'class' => "search-worker-blocks-jobs-portfolio" ]) ?>
diff --git a/frontend/views/search/_projects_list_view.php b/frontend/views/search/_projects_list_view.php
index 1a2408c..92b8467 100644
--- a/frontend/views/search/_projects_list_view.php
+++ b/frontend/views/search/_projects_list_view.php
@@ -44,7 +44,7 @@ use yii\helpers\Url;
= Yii::$app->formatter->asDatetime($model->date_end, 'dd.MM.Y')?>
-
X предложения
+
= count($model->comments) ?> предложения
\ No newline at end of file
diff --git a/frontend/views/tender/view.php b/frontend/views/tender/view.php
index 8aed57e..e8e0ceb 100755
--- a/frontend/views/tender/view.php
+++ b/frontend/views/tender/view.php
@@ -72,12 +72,12 @@ $this->title = 'My Yii Application';
isBookmarked) {
echo Html::a('', [ '#' ], [
- 'class' => 'artbox_bookmark_remove_performer',
+ 'class' => 'artbox_bookmark_remove_project',
'data-id' => $model->project_id,
]);
} else {
echo Html::a('', [ '#' ], [
- 'class' => 'artbox_bookmark_add_performer',
+ 'class' => 'artbox_bookmark_add_project',
'data-id' => $model->project_id,
]);
}
diff --git a/frontend/web/js/forms.js b/frontend/web/js/forms.js
index 1f7a1bd..adc3823 100755
--- a/frontend/web/js/forms.js
+++ b/frontend/web/js/forms.js
@@ -162,7 +162,8 @@ $(document).ready(
$('#overlay, .forms-modal-hide').remove();
alert(data.error);
} else {
- $('.artbox_bookmark_add_performer').removeClass('artbox_bookmark_add_performer').addClass('artbox_bookmark_remove_performer');
+ $('.artbox_bookmark_add_performer[data-id='+id+']').removeClass('artbox_bookmark_add_performer').addClass('artbox_bookmark_remove_performer');
+ $('.get-list.artbox_bookmark_remove_performer[data-id='+id+']').text('Убрать из закладок');
$('.forms-modal-hide').append(data.result);
}
}, 'json').fail(
@@ -198,7 +199,156 @@ $(document).ready(
$('#overlay, .forms-modal-hide').remove();
alert(data.error);
} else {
- $('.artbox_bookmark_remove_performer').removeClass('artbox_bookmark_remove_performer').addClass('artbox_bookmark_add_performer');
+ $('.artbox_bookmark_remove_performer[data-id='+id+']').removeClass('artbox_bookmark_remove_performer').addClass('artbox_bookmark_add_performer');
+ $('.get-list.artbox_bookmark_add_performer[data-id='+id+']').text('Добавить в закладки');
+ $('#overlay, .forms-modal-hide').remove();
+ alert(data.message);
+ }
+ }, 'json').fail(
+ function()
+ {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(txtErrorModal);
+ }
+ )
+ .done(
+ function()
+ {
+ var newMarg = $(window).scrollTop();
+ $('#overlay').fadeIn(
+ 400, function()
+ {
+ $('.forms-modal-hide>div')
+ .css({display : 'block', marginTop : -230 + newMarg})
+ .animate({opacity : 1, top : '50%'}, 200);
+ }
+ );
+ }
+ )
+ });
+
+ //Customerbookmark add
+ $(document).on('click', '.artbox_bookmark_add_customer', function(e) {
+ e.preventDefault();
+ var id = $(this).data('id');
+ addRemoveBlocks();
+ $.post('/bookmarks/add-customer', {id: id}, function(data) {
+ if(data.error) {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(data.error);
+ } else {
+ $('.artbox_bookmark_add_customer[data-id='+id+']').removeClass('artbox_bookmark_add_customer').addClass('artbox_bookmark_remove_customer');
+ $('.get-list.artbox_bookmark_remove_customer[data-id='+id+']').text('Убрать из закладок');
+ $('.forms-modal-hide').append(data.result);
+ }
+ }, 'json').fail(
+ function()
+ {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(txtErrorModal);
+ }
+ )
+ .done(
+ function()
+ {
+ var newMarg = $(window).scrollTop();
+ $('#overlay').fadeIn(
+ 400, function()
+ {
+ $('.forms-modal-hide>div')
+ .css({display : 'block', marginTop : -230 + newMarg})
+ .animate({opacity : 1, top : '50%'}, 200);
+ }
+ );
+ }
+ )
+ });
+ //Customer bookmark remove
+ $(document).on('click', '.artbox_bookmark_remove_customer', function(e) {
+ e.preventDefault();
+ var id = $(this).data('id');
+ var link = $(this);
+ addRemoveBlocks();
+ $.post('/bookmarks/remove-customer', {id: id}, function(data) {
+ if(data.error) {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(data.error);
+ } else {
+ $('.artbox_bookmark_remove_customer[data-id='+id+']').removeClass('artbox_bookmark_remove_customer').addClass('artbox_bookmark_add_customer');
+ $('.get-list.artbox_bookmark_add_customer[data-id='+id+']').text('Добавить в закладки');
+ $('#overlay, .forms-modal-hide').remove();
+ alert(data.message);
+ }
+ }, 'json').fail(
+ function()
+ {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(txtErrorModal);
+ }
+ )
+ .done(
+ function()
+ {
+ var newMarg = $(window).scrollTop();
+ $('#overlay').fadeIn(
+ 400, function()
+ {
+ $('.forms-modal-hide>div')
+ .css({display : 'block', marginTop : -230 + newMarg})
+ .animate({opacity : 1, top : '50%'}, 200);
+ }
+ );
+ }
+ )
+ });
+
+ //Project bookmark add
+ $(document).on('click', '.artbox_bookmark_add_project', function(e) {
+ e.preventDefault();
+ var id = $(this).data('id');
+ addRemoveBlocks();
+ $.post('/bookmarks/add-project', {id: id}, function(data) {
+ if(data.error) {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(data.error);
+ } else {
+ $('.artbox_bookmark_add_project[data-id='+id+']').removeClass('artbox_bookmark_add_project').addClass('artbox_bookmark_remove_project');
+ $('.forms-modal-hide').append(data.result);
+ }
+ }, 'json').fail(
+ function()
+ {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(txtErrorModal);
+ }
+ )
+ .done(
+ function()
+ {
+ var newMarg = $(window).scrollTop();
+ $('#overlay').fadeIn(
+ 400, function()
+ {
+ $('.forms-modal-hide>div')
+ .css({display : 'block', marginTop : -230 + newMarg})
+ .animate({opacity : 1, top : '50%'}, 200);
+ }
+ );
+ }
+ )
+ });
+ //Project bookmark remove
+ $(document).on('click', '.artbox_bookmark_remove_project', function(e) {
+ e.preventDefault();
+ var id = $(this).data('id');
+ var link = $(this);
+ addRemoveBlocks();
+ $.post('/bookmarks/remove-project', {id: id}, function(data) {
+ if(data.error) {
+ $('#overlay, .forms-modal-hide').remove();
+ alert(data.error);
+ } else {
+ $('.artbox_bookmark_remove_project[data-id='+id+']').removeClass('artbox_bookmark_remove_project').addClass('artbox_bookmark_add_project');
$('#overlay, .forms-modal-hide').remove();
alert(data.message);
}
--
libgit2 0.21.4