From 38a6e1ddae8bc32dd9b7a2559aace1ae1546af7a Mon Sep 17 00:00:00 2001 From: Yarik Date: Fri, 18 Mar 2016 12:43:39 +0200 Subject: [PATCH] test --- common/models/Job.php | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------- common/models/User.php | 36 +++++++++++++++++++++++++++++++++++- common/models/UserInfo.php | 5 +++++ common/modules/comment/Controller.php | 1 + common/modules/comment/models/CommentProject.php | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- common/modules/comment/rbac/ArtboxCommentCreateRule.php | 17 +++++++++++++++++ common/modules/comment/widgets/CommentWidget.php | 2 +- common/modules/comment/widgets/views/_project_comment_view.php | 44 +++++++++++++++++++++++++++++++++++++++----- console/migrations/m160317_143914_project_state_add.php | 17 +++++++++++++++++ frontend/controllers/AccountsController.php | 12 ++++++++---- frontend/controllers/BookmarksController.php | 18 ++++++++++++++++++ frontend/controllers/PerformerController.php | 8 ++++++-- frontend/controllers/TenderController.php | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ frontend/views/accounts/employment.php | 2 +- frontend/views/bookmarks/bookmarks-vacancy.php | 2 +- frontend/views/layouts/main.php | 2 +- frontend/views/layouts/performer.php | 21 +++++++++++---------- frontend/views/performer/common.php | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------- frontend/web/css/style.css | 4 ++++ frontend/web/images/sidebar-ico/ico_money.png | Bin 0 -> 1131 bytes frontend/web/js/forms.js | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 21 files changed, 519 insertions(+), 174 deletions(-) create mode 100644 console/migrations/m160317_143914_project_state_add.php create mode 100644 frontend/web/images/sidebar-ico/ico_money.png diff --git a/common/models/Job.php b/common/models/Job.php index 8bb288a..f15732c 100755 --- a/common/models/Job.php +++ b/common/models/Job.php @@ -1,108 +1,123 @@ [ - 'class' => 'common\behaviors\Slug', - 'in_attribute' => 'name', - 'out_attribute' => 'link', - 'translit' => true - ] - ]; - } + /** + * @inheritdoc + */ + public static function tableName() + { + return 'job'; + } - public function beforeSave($insert) - { - $this->date_start = \Yii::$app->formatter->asDatetime($this->date_start, 'Y-MM-d HH:mm:ss'); + /** + * @inheritdoc + */ + public function behaviors() + { + return [ - if($this->date_end) { - $this->date_end = \Yii::$app->formatter->asDatetime($this->date_end, 'Y-MM-d HH:mm:ss'); + ]; } + public function beforeSave($insert) + { + $this->date_start = \Yii::$app->formatter->asDatetime($this->date_start, 'Y-MM-d HH:mm:ss'); - return parent::beforeSave($insert); // TODO: Change the autogenerated stub - } - - /** - * @inheritdoc - */ - public function rules() - { - return [ - [['name'], 'required'], - [['date_start', 'date_end'], 'safe'], - [['user_id', 'total_count', 'complete_count', 'current'], 'integer'], - [['name', 'link', 'position'], 'string', 'max' => 255] - ]; - } - + if($this->date_end) { + $this->date_end = \Yii::$app->formatter->asDatetime($this->date_end, 'Y-MM-d HH:mm:ss'); + } + return parent::beforeSave($insert); // TODO: Change the autogenerated stub + } - public function getExpTime() - { - if($this->date_end && $this->date_start){ - $date = new \DateTime(date('Y-m-d H:i:s', $this->date_start)); - return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime(date('Y-m-d H:i:s', $this->date_end)))); - } elseif($this->date_start) { - $now = new \DateTime(); - $date = new \DateTime(date('Y-m-d H:i:s', strtotime($this->date_start))); - return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime())); - } else { - return 'неизвестна дата начала'; + /** + * @inheritdoc + */ + public function rules() + { + return [ + [ + [ 'name' ], + 'required', + ], + [ + [ + 'date_start', + 'date_end', + ], + 'safe', + ], + [ + [ + 'user_id', + 'total_count', + 'complete_count', + 'current', + ], + 'integer', + ], + [ + [ + 'name', + 'link', + 'position', + ], + 'string', + 'max' => 255, + ], + ]; } - } + public function getExpTime() + { + if($this->date_end && $this->date_start) { + $date = new \DateTime(date('Y-m-d H:i:s', $this->date_start)); + return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime(date('Y-m-d H:i:s', $this->date_end)))); + } elseif($this->date_start) { + $now = new \DateTime(); + $date = new \DateTime(date('Y-m-d H:i:s', strtotime($this->date_start))); + return \Yii::$app->formatter->asRelativeTime($date->diff(new \DateTime())); + } else { + return 'неизвестна дата начала'; + } + } - /** - * @inheritdoc - */ - public function attributeLabels() - { - return [ - 'job_id' => Yii::t('app', 'Job ID'), - 'name' => Yii::t('app', 'Name'), - 'link' => Yii::t('app', 'Link'), - 'date_start' => Yii::t('app', 'Date Start'), - 'date_end' => Yii::t('app', 'Date End'), - 'position' => Yii::t('app', 'Position'), - 'user_id' => Yii::t('app', 'User ID'), - 'total_count' => Yii::t('app', 'Total Count'), - 'complete_count' => Yii::t('app', 'Complete Count'), - 'current' => Yii::t('app', 'Current'), - ]; + /** + * @inheritdoc + */ + public function attributeLabels() + { + return [ + 'job_id' => Yii::t('app', 'Job ID'), + 'name' => Yii::t('app', 'Name'), + 'link' => Yii::t('app', 'Link'), + 'date_start' => Yii::t('app', 'Date Start'), + 'date_end' => Yii::t('app', 'Date End'), + 'position' => Yii::t('app', 'Position'), + 'user_id' => Yii::t('app', 'User ID'), + 'total_count' => Yii::t('app', 'Total Count'), + 'complete_count' => Yii::t('app', 'Complete Count'), + 'current' => Yii::t('app', 'Current'), + ]; + } } -} diff --git a/common/models/User.php b/common/models/User.php index a0d46bf..78120e2 100755 --- a/common/models/User.php +++ b/common/models/User.php @@ -133,6 +133,14 @@ 'default', 'value' => 1, ], + [ + [ + 'specializationInput', + 'paymentInput', + ], + 'default', + 'value' => [ ], + ], ]; } @@ -513,7 +521,7 @@ */ public function getJobs() { - return $this->hasMany(Job::className(), [ 'user_id' => 'id' ]); + return $this->hasMany(Job::className(), [ 'user_id' => 'id' ])->orderBy(['current' => SORT_DESC]); } /** @@ -771,4 +779,30 @@ ]); }); } + + public function getBookmarksVacancies() + { + return $this->hasMany(Vacancy::className(), [ 'vacancy_id' => 'model_id' ]) + ->viaTable('{{%bookmark}}', [ 'user_id' => 'id' ], function($query) { + /** + * @var ActiveQuery $query + */ + $query->andWhere([ + 'model' => Vacancy::className(), + 'type' => Bookmark::TYPE_VACANCY, + ]); + }); + } + + public function getChatCount() + { + return Chat::find() + ->select('COUNT(*)') + ->where([ + 'or', + [ 'from_user' => $this->id ], + [ 'to_user' => $this->id ], + ]) + ->scalar(); + } } diff --git a/common/models/UserInfo.php b/common/models/UserInfo.php index 1af7f1b..7b14f76 100755 --- a/common/models/UserInfo.php +++ b/common/models/UserInfo.php @@ -315,4 +315,9 @@ $this->geographies = $value; } + public function getCurrency() + { + return $this->hasOne(Currency::className(), ['currency_id' => 'salary_currency']); + } + } diff --git a/common/modules/comment/Controller.php b/common/modules/comment/Controller.php index d0ce56f..d2db544 100644 --- a/common/modules/comment/Controller.php +++ b/common/modules/comment/Controller.php @@ -93,4 +93,5 @@ \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; \Yii::$app->response->send(); } + } \ No newline at end of file diff --git a/common/modules/comment/models/CommentProject.php b/common/modules/comment/models/CommentProject.php index 635bb3d..eb57c36 100644 --- a/common/modules/comment/models/CommentProject.php +++ b/common/modules/comment/models/CommentProject.php @@ -25,6 +25,7 @@ * @property float $budget_to * @property int $term_from * @property int $term_to + * @property int $state * @property Currency $currency * @package common\modules\comment\models */ @@ -38,8 +39,16 @@ const STATUS_PERSONAL = 3; const STATUS_ANONYMOUS = 4; + const STATE_NEW = 1; + const STATE_CANDIDATE = 2; + const STATE_PERFORMER = 3; + const STATE_DENY = 4; + const STATE_TRASH = 5; + const SCENARIO_USER = 'user'; const SCENARIO_GUEST = 'guest'; + const SCENARIO_STATE = 'state'; + const SCENARIO_OWNER = 'owner'; /** * @var bool @@ -108,6 +117,29 @@ 'default', 'value' => 1, ], + [ + [ 'state' ], + 'integer', + 'max' => 4, + 'min' => 1, + 'on' => self::SCENARIO_STATE, + ], + [ + [ 'state' ], + 'required', + 'on' => self::SCENARIO_STATE, + ], + [ + [ 'state' ], + 'required', + 'on' => self::SCENARIO_OWNER, + ], + [ + [ 'state' ], + 'in', + 'range' => [1, 5], + 'on' => self::SCENARIO_OWNER, + ], ]; } @@ -125,6 +157,9 @@ self::SCENARIO_GUEST => [ ], + self::SCENARIO_STATE => [ + 'state', + ], ]; } @@ -370,7 +405,20 @@ */ public function getUser() { - return $this->hasOne(User::className(), ['id' => 'user_id']); + return $this->hasOne(User::className(), [ 'id' => 'user_id' ]); + } + + public function changeState() + { + if($this->isAttributeChanged('state')) { + if($this->save()) { + return true; + } else { + return false; + } + } else { + return true; + } } } diff --git a/common/modules/comment/rbac/ArtboxCommentCreateRule.php b/common/modules/comment/rbac/ArtboxCommentCreateRule.php index 6f481fc..1f7ee06 100644 --- a/common/modules/comment/rbac/ArtboxCommentCreateRule.php +++ b/common/modules/comment/rbac/ArtboxCommentCreateRule.php @@ -11,7 +11,24 @@ public function execute($user, $item, $params) { + if($params[ 'model' ] == \common\models\Project::className()) { + return $this->checkProject($user, $item, $params); + } return true; } + public function checkProject($user, $item, $params) + { + $comment = \common\modules\comment\models\CommentProject::find() + ->where([ 'model' => $params[ 'model' ], + 'model_id' => $params[ 'model_id' ], + 'user_id' => $user, + ])->one(); + if(empty($comment)) { + return true; + } else { + return false; + } + } + } \ No newline at end of file diff --git a/common/modules/comment/widgets/CommentWidget.php b/common/modules/comment/widgets/CommentWidget.php index cf8b2a3..41b8ccd 100644 --- a/common/modules/comment/widgets/CommentWidget.php +++ b/common/modules/comment/widgets/CommentWidget.php @@ -167,7 +167,7 @@ $this->parts[ 'list' ] = Html::tag($tag, $this->renderItems($view), $this->list_options); } - if($this->display_comment_form) { + if($this->display_comment_form && $this->comment_class->checkCreate()) { $tag = ArrayHelper::remove($this->form_options, 'tag', 'div'); $view = ArrayHelper::remove($this->form_options, 'view'); $this->parts[ 'form' ] = Html::tag($tag, $this->renderForm($view), $this->form_options); diff --git a/common/modules/comment/widgets/views/_project_comment_view.php b/common/modules/comment/widgets/views/_project_comment_view.php index 1f68b07..d35e120 100644 --- a/common/modules/comment/widgets/views/_project_comment_view.php +++ b/common/modules/comment/widgets/views/_project_comment_view.php @@ -82,7 +82,7 @@ - comments). ' отзывов', $user->getLink('review'), ['class' => 'link-to-comm']) ?> + comments) . ' отзывов', $user->getLink('review'), [ 'class' => 'link-to-comm' ]) ?>
text ?> @@ -93,8 +93,11 @@ ?>
  • - name, $file->dir, ['class' => 'download-link-file']) ?> - dir, ['class' => 'download-link', 'download' => 'download']) ?> + name, $file->dir, [ 'class' => 'download-link-file' ]) ?> + dir, [ + 'class' => 'download-link', + 'download' => 'download', + ]) ?>
  • - getLink('portfolio'), ['class' => 'get-project-new']) ?> - link, ['class' => 'get-list-new']) ?> + getLink('portfolio'), [ 'class' => 'get-project-new' ]) ?> + link, [ 'class' => 'get-list-new' ]) ?>
    + user->getId() == $model->owner->user_id) { + ?> +
    + Отметить как: + $model->owner->project_id, + 'data-comment-id' => $model->comment_id, + 'class' => 'artbox_project_make_new', + ]); + echo Html::a('кандидат', [ '#' ], [ + 'data-project-id' => $model->owner->project_id, + 'data-comment-id' => $model->comment_id, + 'class' => 'artbox_project_make_candidate', + ]); + echo Html::a('исполнитель', [ '#' ], [ + 'data-project-id' => $model->owner->project_id, + 'data-comment-id' => $model->comment_id, + 'class' => 'artbox_project_make_performer', + ]); + echo Html::a('отказать', [ '#' ], [ + 'data-project-id' => $model->owner->project_id, + 'data-comment-id' => $model->comment_id, + 'class' => 'artbox_project_make_deny', + ]); + ?> +
    + diff --git a/console/migrations/m160317_143914_project_state_add.php b/console/migrations/m160317_143914_project_state_add.php new file mode 100644 index 0000000..ec5c7cc --- /dev/null +++ b/console/migrations/m160317_143914_project_state_add.php @@ -0,0 +1,17 @@ +addColumn('{{%comment_project}}', 'state', $this->integer()->notNull()->defaultValue(1)); + } + + public function down() + { + $this->dropColumn('{{%comment_project}}', 'state'); + } + +} diff --git a/frontend/controllers/AccountsController.php b/frontend/controllers/AccountsController.php index 1edbb91..a84add2 100755 --- a/frontend/controllers/AccountsController.php +++ b/frontend/controllers/AccountsController.php @@ -842,12 +842,16 @@ $user_info->save(); $user->load($post); $user->unlinkAll('specializations', true); - foreach($user->specializationInput as $one_specialization) { - $user->link('specializations', Specialization::findOne($one_specialization)); + if(is_array($user->specializationInput)) { + foreach($user->specializationInput as $one_specialization) { + $user->link('specializations', Specialization::findOne($one_specialization)); + } } $user->unlinkAll('payments', true); - foreach($user->paymentInput as $one_payment) { - $user->link('payments', Payment::findOne($one_payment)); + if(is_array($user->paymentInput)) { + foreach($user->paymentInput as $one_payment) { + $user->link('payments', Payment::findOne($one_payment)); + } } } } diff --git a/frontend/controllers/BookmarksController.php b/frontend/controllers/BookmarksController.php index 43763fb..833d027 100644 --- a/frontend/controllers/BookmarksController.php +++ b/frontend/controllers/BookmarksController.php @@ -103,6 +103,24 @@ ]); } + public function actionVacancy() + { + /** + * @var User $user + */ + $user = \Yii::$app->user->identity; + $dataProvider = new ActiveDataProvider([ + 'query' => $user->getBookmarksVacancies(), + 'pagination' => [ + 'pageSize' => 10, + ], + ]); + return $this->render('bookmarks-vacancy', [ + 'dataProvider' => $dataProvider, + 'user' => $user, + ]); + } + public function actionAddPerformer() { $response = \Yii::$app->response; diff --git a/frontend/controllers/PerformerController.php b/frontend/controllers/PerformerController.php index 5631528..4f88317 100755 --- a/frontend/controllers/PerformerController.php +++ b/frontend/controllers/PerformerController.php @@ -57,7 +57,10 @@ public function actionCommon($performer_id) { - $user = User::findOne($performer_id); + $user = User::find() + ->where([ 'id' => $performer_id ]) + ->with('jobs') + ->one(); if(!$user instanceof User) { throw new BadRequestHttpException('Пользователь не найден'); @@ -216,7 +219,8 @@ 'link' => $link, 'user_id' => $performer_id, ]) - ->with('comments')->one(); + ->with('comments') + ->one(); $article->updateCounters([ 'view_count' => 1 ]); return $this->render('blog-view', [ diff --git a/frontend/controllers/TenderController.php b/frontend/controllers/TenderController.php index 812516d..b3f28c0 100755 --- a/frontend/controllers/TenderController.php +++ b/frontend/controllers/TenderController.php @@ -2,6 +2,7 @@ namespace frontend\controllers; use common\models\Project; +use common\modules\comment\models\CommentProject; use Yii; use common\models\LoginForm; use frontend\models\PasswordResetRequestForm; @@ -29,6 +30,8 @@ use common\models\Social; */ class TenderController extends Controller { + + public $enableCsrfValidation = false; /** * @inheritdoc */ @@ -42,6 +45,12 @@ class TenderController extends Controller 'class' => 'yii\captcha\CaptchaAction', 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null, ], + 'verbs' => [ + 'class' => \yii\filters\VerbFilter::className(), + 'actions' => [ + 'change-state' => ['post'], + ], + ], ]; } /** @@ -63,4 +72,49 @@ class TenderController extends Controller ]); } + public function actionChangeState() + { + /** + * @var User $user + */ + $response = \Yii::$app->response; + $response->format = $response::FORMAT_JSON; + $user = \Yii::$app->user->identity; + $project_id = \Yii::$app->request->post('project_id'); + $comment_id = \Yii::$app->request->post('comment_id'); + $state = \Yii::$app->request->post('state'); + if(empty($project_id) || empty($comment_id) || empty($state)) { + return ['error' => 'project_id, comment_id, state должны быть отправлены в запросе']; + } + /** + * @var Project $project + */ + $project = Project::findOne($project_id); + if(empty($project)) { + return ['error' => 'Проект не найден']; + } elseif($project->user_id != $user->id) { + return ['error' => 'Вы можете менять статус только собственных проектов']; + } + /** + * @var CommentProject $comment + */ + $comment = CommentProject::find()->where(['comment_id' => $comment_id, 'model' => $project->className(), 'model_id' => $project->project_id])->one(); + if(empty($comment)) { + return ['error' => 'Данного предложения не существует']; + } + if($comment->state == $comment::STATE_TRASH) { + return ['error' => 'Исполнитель отменил данное предложение']; + } + $comment->scenario = $comment::SCENARIO_STATE; + $comment->state = $state; + if(!$comment->validate()) { + return ['error' => 'Недопустимое значение state']; + } + if($comment->changeState()) { + return ['message' => 'Автор оповещен о вашем решении']; + } else { + return ['error' => 'Ошибка обновления.']; + } + } + } diff --git a/frontend/views/accounts/employment.php b/frontend/views/accounts/employment.php index 3c70943..5e22dde 100755 --- a/frontend/views/accounts/employment.php +++ b/frontend/views/accounts/employment.php @@ -180,7 +180,7 @@ if(result != null) { lastindex = result[1]; } else { - lastindex = 1; + lastindex = 0; $('.prev_job_container').removeClass('none-job-inputs') $('.add-field-employment').removeClass('none-job-inputs') } diff --git a/frontend/views/bookmarks/bookmarks-vacancy.php b/frontend/views/bookmarks/bookmarks-vacancy.php index f79431c..b00b2d3 100644 --- a/frontend/views/bookmarks/bookmarks-vacancy.php +++ b/frontend/views/bookmarks/bookmarks-vacancy.php @@ -17,7 +17,7 @@
    - + 'search-performer-button-performers' ]) ?> 'search-performer-button-customers' ]) ?> 'search-performer-button-project' ]) ?> diff --git a/frontend/views/layouts/main.php b/frontend/views/layouts/main.php index 816438d..f9b5b3c 100755 --- a/frontend/views/layouts/main.php +++ b/frontend/views/layouts/main.php @@ -158,7 +158,7 @@ AppAsset::register($this); ], [ 'url' => ['chat/list'], - 'template' => '28', + 'template' => ''.\Yii::$app->user->identity->chatCount.'', ], [ 'url' => ['/bookmarks'], diff --git a/frontend/views/layouts/performer.php b/frontend/views/layouts/performer.php index c102641..dbdc327 100755 --- a/frontend/views/layouts/performer.php +++ b/frontend/views/layouts/performer.php @@ -35,11 +35,11 @@
    [ + 'options' => [ 'class' => 'menu-content', ], 'activeCssClass' => 'active-menu-content', - 'items' => [ + 'items' => [ [ 'label' => 'Общее', 'url' => [ @@ -94,7 +94,7 @@
    -
    Познякижилстрой
    +
    params[ 'user' ]->name ?>
    • @@ -112,21 +112,21 @@
      - +
      -
      params['user']->comments) ?> отзывов
      +
      params[ 'user' ]->comments) ?> отзывов
      написать отзыв
    params[ 'user' ]->userInfo->image); ?>
    - render('/patrial/social_list',[ - 'params' => $this->params - ])?> + render('/patrial/social_list', [ + 'params' => $this->params, + ]) ?>
    • @@ -157,9 +157,10 @@ Звание в МФП:
      params[ 'user' ]->userInfo->rank ?>
    -
  • +
  • - Стоимость работ:
    params[ 'user' ]->userInfo->salary ?> + Стоимость работ:
    + params[ 'user' ]->userInfo->salary. ' ' . $this->params['user']->userInfo->currency->label ?>
  • diff --git a/frontend/views/performer/common.php b/frontend/views/performer/common.php index 38b6976..32ed6b2 100755 --- a/frontend/views/performer/common.php +++ b/frontend/views/performer/common.php @@ -1,90 +1,98 @@ params['user'] = $user; + /* @var $this yii\web\View + * @var $user common\models\User + */ + $this->params[ 'user' ] = $user; -$this->title = 'My Yii Application'; + $this->title = 'My Yii Application'; ?>
    - userInfo->about?> + userInfo->about ?>
    - -
    -
    Образование:
    -
    -
    -
    -
    + +
    +
    Образование:
    +
    -
    +
    +
    - -
    - -
    -
    Статистика участия
    -
    - - - - - - - - - - - - - - - - - - - - - -
    КомпанияПроектыРеализованные
    UBCP2012
    TRP2012
    Фриланс2012
    + jobs )) { + ?> +
    +
    +
    Статистика участия
    +
    + + + + + + + jobs as $job) { + ?> + + + + + + +
    КомпанияПроектыРеализованные
    name ?>total_count ?>complete_count ?>
    +
    +
    -
    - - -
    +
    - render('/patrial/show_phone',[ - 'phones' => $phones - ])?> - render('/patrial/show_site',[ - 'sites' => $sites - ])?> + render('/patrial/show_phone', [ + 'phones' => $phones, + ]) ?> + render('/patrial/show_site', [ + 'sites' => $sites, + ]) ?>
      -
    • География работ: portfolios, 'city'))) ?>
    • +
    • + География работ: portfolios, 'city'))) ?> +
    • Местонахождение: userInfo->city ?>
    • - specializations as $specialization):?> + specializations as $specialization): ?> specialization_name ?>,
    • Работа с программами:
    • Гарантия: userInfo->guarantee ?> года
    • -
    • Договор: formatter->asBoolean($user->userInfo->contract)?>
    • -
    • Смета: formatter->asBoolean($user->userInfo->estimate)?>
    • -
    • Закупка стройматериалов: formatter->asBoolean($user->userInfo->purchase)?>
    • -
    • Доставка стройматериалов: formatter->asBoolean($user->userInfo->delivery)?>
    • +
    • + Договор: formatter->asBoolean($user->userInfo->contract) ?> +
    • +
    • + Смета: formatter->asBoolean($user->userInfo->estimate) ?> +
    • +
    • + Закупка стройматериалов: formatter->asBoolean($user->userInfo->purchase) ?> +
    • +
    • + Доставка стройматериалов: formatter->asBoolean($user->userInfo->delivery) ?> +
    • Предоплата: userInfo->prepayment ?> %
    @@ -145,7 +153,8 @@ $this->title = 'My Yii Application'; Развернуть
    - +
  • diff --git a/frontend/web/css/style.css b/frontend/web/css/style.css index 13301a8..d907413 100755 --- a/frontend/web/css/style.css +++ b/frontend/web/css/style.css @@ -6703,4 +6703,8 @@ input[disabled], select[disabled] { .list_item.title {margin-top: 20px} .search_customer_image { height: 100%; +} +.project_owner_control a { + display: inline-block; + margin: 0 10px; } \ No newline at end of file diff --git a/frontend/web/images/sidebar-ico/ico_money.png b/frontend/web/images/sidebar-ico/ico_money.png new file mode 100644 index 0000000..ad9065d Binary files /dev/null and b/frontend/web/images/sidebar-ico/ico_money.png differ diff --git a/frontend/web/js/forms.js b/frontend/web/js/forms.js index adc3823..b6c5967 100755 --- a/frontend/web/js/forms.js +++ b/frontend/web/js/forms.js @@ -383,6 +383,86 @@ $(document).ready( // addToFavorites() } ) + + //project comment state + $(document).on('click', '.artbox_project_make_candidate', function(e) { + e.preventDefault(); + var project_id = $(this).data('project-id'); + var comment_id = $(this).data('comment-id'); + var state = 2; + var link = $(this); + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) { + if(data.error) { + alert(data.error); + } else { + alert(data.message); + } + }, 'json').fail( + function() + { + alert(txtErrorModal); + } + ); + }); + $(document).on('click', '.artbox_project_make_new', function(e) { + e.preventDefault(); + var project_id = $(this).data('project-id'); + var comment_id = $(this).data('comment-id'); + var state = 1; + var link = $(this); + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) { + if(data.error) { + alert(data.error); + } else { + alert(data.message); + } + }, 'json').fail( + function() + { + alert(txtErrorModal); + } + ); + }); + $(document).on('click', '.artbox_project_make_performer', function(e) { + e.preventDefault(); + var project_id = $(this).data('project-id'); + var comment_id = $(this).data('comment-id'); + var state = 3; + var link = $(this); + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) { + if(data.error) { + alert(data.error); + } else { + alert(data.message); + } + }, 'json').fail( + function() + { + alert(txtErrorModal); + } + ); + }); + $(document).on('click', '.artbox_project_make_deny', function(e) { + e.preventDefault(); + var project_id = $(this).data('project-id'); + var comment_id = $(this).data('comment-id'); + var state = 4; + var link = $(this); + $.post('/tender/change-state', {project_id: project_id, comment_id: comment_id, state: state}, function(data) { + if(data.error) { + alert(data.error); + } else { + alert(data.message); + } + }, 'json').fail( + function() + { + alert(txtErrorModal); + } + ); + }); + + //offer $('a.get-project, .blog-buttons-offer').click( function(e) -- libgit2 0.21.4