Commit 50ed5626f27742c7a9e749a8674d21004bd82c1e

Authored by Yarik
1 parent 32ed90fd

test

common/models/Project.php
... ... @@ -31,6 +31,7 @@
31 31 * @property ProjectSpecialization[] $projectSpecializations
32 32 * @property Specialization[] $specializations
33 33 * @property Currency $budgetCurrency
  34 + * @property Project $parent
34 35 */
35 36 class Project extends \yii\db\ActiveRecord
36 37 {
... ...
frontend/controllers/TenderController.php
1 1 <?php
2   -namespace frontend\controllers;
  2 + namespace frontend\controllers;
3 3  
4   -use common\models\Project;
5   -use common\modules\comment\models\CommentProject;
6   -use Yii;
7   -use common\models\LoginForm;
8   -use frontend\models\PasswordResetRequestForm;
9   -use frontend\models\ResetPasswordForm;
10   -use frontend\models\SignupForm;
11   -use frontend\models\ContactForm;
12   -use frontend\models\Options;
13   -use frontend\models\OptionValues;
14   -use yii\base\InvalidParamException;
15   -use yii\web\BadRequestHttpException;
16   -use yii\web\Controller;
17   -use yii\filters\VerbFilter;
18   -use yii\filters\AccessControl;
19   -use frontend\models\OptionsToValues;
20   -use yii\validators\EmailValidator;
21   -use common\models\User;
22   -use yii\helpers\VarDumper;
23   -use common\models\Page;
24   -use frontend\models\Option;
25   -use common\models\Social;
  4 + use common\models\Chat;
  5 + use common\models\Message;
  6 + use common\models\Project;
  7 + use common\modules\comment\models\CommentProject;
  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\helpers\Html;
  18 + use yii\web\BadRequestHttpException;
  19 + use yii\web\Controller;
  20 + use yii\filters\VerbFilter;
  21 + use yii\filters\AccessControl;
  22 + use frontend\models\OptionsToValues;
  23 + use yii\validators\EmailValidator;
  24 + use common\models\User;
  25 + use yii\helpers\VarDumper;
  26 + use common\models\Page;
  27 + use frontend\models\Option;
  28 + use common\models\Social;
26 29  
27   -
28   -/**
29   - * Site controller
30   - */
31   -class TenderController extends Controller
32   -{
33   -
34   - public $enableCsrfValidation = false;
35   - /**
36   - * @inheritdoc
37   - */
38   - public function actions()
39   - {
40   - return [
41   - 'error' => [
42   - 'class' => 'yii\web\ErrorAction',
43   - ],
44   - 'captcha' => [
45   - 'class' => 'yii\captcha\CaptchaAction',
46   - 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
47   - ],
48   - 'verbs' => [
49   - 'class' => \yii\filters\VerbFilter::className(),
50   - 'actions' => [
51   - 'change-state' => ['post'],
52   - ],
53   - ],
54   - 'access' => [
55   - 'class' => AccessControl::className(),
56   - 'rules' => [
57   - [
58   - 'actions' => ['change-state'],
59   - 'allow' => true,
60   - 'roles' => [ '@' ],
61   - ],
62   - ],
63   - ],
64   - ];
65   - }
66 30 /**
67   - * Displays homepage.
68   - *
69   - * @return mixed
  31 + * Site controller
70 32 */
71   - public function actionIndex()
72   - {
73   - return $this->redirect(['search/project']);
74   - }
75   -
76   - public function actionView($tender_id)
  33 + class TenderController extends Controller
77 34 {
78   - $model = Project::findOne($tender_id);
79 35  
80   - return $this->render('view',[
81   - 'model' => $model
82   - ]);
83   - }
  36 + public $enableCsrfValidation = false;
84 37  
85   - public function actionChangeState()
86   - {
87   - /**
88   - * @var User $user
89   - */
90   - $response = \Yii::$app->response;
91   - $response->format = $response::FORMAT_JSON;
92   - $user = \Yii::$app->user->identity;
93   - $project_id = \Yii::$app->request->post('project_id');
94   - $comment_id = \Yii::$app->request->post('comment_id');
95   - $state = \Yii::$app->request->post('state');
96   - if(empty($project_id) || empty($comment_id) || empty($state)) {
97   - return ['error' => 'project_id, comment_id, state ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะพั‚ะฟั€ะฐะฒะปะตะฝั‹ ะฒ ะทะฐะฟั€ะพัะต'];
98   - }
99 38 /**
100   - * @var Project $project
  39 + * @inheritdoc
101 40 */
102   - $project = Project::findOne($project_id);
103   - if(empty($project)) {
104   - return ['error' => 'ะŸั€ะพะตะบั‚ ะฝะต ะฝะฐะนะดะตะฝ'];
105   - } elseif($project->user_id != $user->id) {
106   - return ['error' => 'ะ’ั‹ ะผะพะถะตั‚ะต ะผะตะฝัั‚ัŒ ัั‚ะฐั‚ัƒั ั‚ะพะปัŒะบะพ ัะพะฑัั‚ะฒะตะฝะฝั‹ั… ะฟั€ะพะตะบั‚ะพะฒ'];
  41 + public function actions()
  42 + {
  43 + return [
  44 + 'error' => [
  45 + 'class' => 'yii\web\ErrorAction',
  46 + ],
  47 + 'captcha' => [
  48 + 'class' => 'yii\captcha\CaptchaAction',
  49 + 'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : NULL,
  50 + ],
  51 + 'verbs' => [
  52 + 'class' => \yii\filters\VerbFilter::className(),
  53 + 'actions' => [
  54 + 'change-state' => [ 'post' ],
  55 + ],
  56 + ],
  57 + 'access' => [
  58 + 'class' => AccessControl::className(),
  59 + 'rules' => [
  60 + [
  61 + 'actions' => [ 'change-state' ],
  62 + 'allow' => true,
  63 + 'roles' => [ '@' ],
  64 + ],
  65 + ],
  66 + ],
  67 + ];
107 68 }
  69 +
108 70 /**
109   - * @var CommentProject $comment
  71 + * Displays homepage.
  72 + * @return mixed
110 73 */
111   - $comment = CommentProject::find()->where(['comment_id' => $comment_id, 'model' => $project->className(), 'model_id' => $project->project_id])->one();
112   - if(empty($comment)) {
113   - return ['error' => 'ะ”ะฐะฝะฝะพะณะพ ะฟั€ะตะดะปะพะถะตะฝะธั ะฝะต ััƒั‰ะตัั‚ะฒัƒะตั‚'];
  74 + public function actionIndex()
  75 + {
  76 + return $this->redirect([ 'search/project' ]);
114 77 }
115   - if($comment->user_id == \Yii::$app->user->getId()) {
116   - $comment->scenario = $comment::SCENARIO_OWNER;
117   - } else {
118   - $comment->scenario = $comment::SCENARIO_STATE;
119   - }
120   - if($comment->state == $comment::STATE_TRASH && $comment->scenario == $comment::SCENARIO_STATE) {
121   - return ['error' => 'ะ˜ัะฟะพะปะฝะธั‚ะตะปัŒ ะพั‚ะผะตะฝะธะป ะดะฐะฝะฝะพะต ะฟั€ะตะดะปะพะถะตะฝะธะต'];
  78 +
  79 + public function actionView($tender_id)
  80 + {
  81 + $model = Project::findOne($tender_id);
  82 +
  83 + return $this->render('view', [
  84 + 'model' => $model,
  85 + ]);
122 86 }
123   - if($comment->state == $comment::STATE_DENY && $comment->scenario == $comment::SCENARIO_OWNER) {
124   - return ['error' => 'ะ—ะฐะบะฐะทั‡ะธะบ ะพั‚ะผะตะฝะธะป ะ’ะฐัˆะต ะฟั€ะตะดะปะพะถะตะฝะธะต'];
  87 +
  88 + public function actionChangeState()
  89 + {
  90 + /**
  91 + * @var User $user
  92 + */
  93 + $response = \Yii::$app->response;
  94 + $response->format = $response::FORMAT_JSON;
  95 + $user = \Yii::$app->user->identity;
  96 + $project_id = \Yii::$app->request->post('project_id');
  97 + $comment_id = \Yii::$app->request->post('comment_id');
  98 + $state = \Yii::$app->request->post('state');
  99 + if(empty( $project_id ) || empty( $comment_id ) || empty( $state )) {
  100 + return [ 'error' => 'project_id, comment_id, state ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะพั‚ะฟั€ะฐะฒะปะตะฝั‹ ะฒ ะทะฐะฟั€ะพัะต' ];
  101 + }
  102 + /**
  103 + * @var Project $project
  104 + */
  105 + $project = Project::findOne($project_id);
  106 + if(empty( $project )) {
  107 + return [ 'error' => 'ะŸั€ะพะตะบั‚ ะฝะต ะฝะฐะนะดะตะฝ' ];
  108 + } elseif($project->user_id != $user->id) {
  109 + return [ 'error' => 'ะ’ั‹ ะผะพะถะตั‚ะต ะผะตะฝัั‚ัŒ ัั‚ะฐั‚ัƒั ั‚ะพะปัŒะบะพ ัะพะฑัั‚ะฒะตะฝะฝั‹ั… ะฟั€ะพะตะบั‚ะพะฒ' ];
  110 + }
  111 + /**
  112 + * @var CommentProject $comment
  113 + */
  114 + $comment = CommentProject::find()
  115 + ->where([
  116 + 'comment_id' => $comment_id,
  117 + 'model' => $project->className(),
  118 + 'model_id' => $project->project_id,
  119 + ])
  120 + ->one();
  121 + if(empty( $comment )) {
  122 + return [ 'error' => 'ะ”ะฐะฝะฝะพะณะพ ะฟั€ะตะดะปะพะถะตะฝะธั ะฝะต ััƒั‰ะตัั‚ะฒัƒะตั‚' ];
  123 + }
  124 + if($comment->user_id == \Yii::$app->user->getId()) {
  125 + $comment->scenario = $comment::SCENARIO_OWNER;
  126 + } else {
  127 + $comment->scenario = $comment::SCENARIO_STATE;
  128 + }
  129 + if($comment->state == $comment::STATE_TRASH && $comment->scenario == $comment::SCENARIO_STATE) {
  130 + return [ 'error' => 'ะ˜ัะฟะพะปะฝะธั‚ะตะปัŒ ะพั‚ะผะตะฝะธะป ะดะฐะฝะฝะพะต ะฟั€ะตะดะปะพะถะตะฝะธะต' ];
  131 + }
  132 + if($comment->state == $comment::STATE_DENY && $comment->scenario == $comment::SCENARIO_OWNER) {
  133 + return [ 'error' => 'ะ—ะฐะบะฐะทั‡ะธะบ ะพั‚ะผะตะฝะธะป ะ’ะฐัˆะต ะฟั€ะตะดะปะพะถะตะฝะธะต' ];
  134 + }
  135 +
  136 + $comment->state = $state;
  137 + if(!$comment->validate()) {
  138 + return [ 'error' => 'ะะตะดะพะฟัƒัั‚ะธะผะพะต ะทะฝะฐั‡ะตะฝะธะต state' ];
  139 + }
  140 + if($comment->changeState()) {
  141 + return [ 'message' => 'ะะฒั‚ะพั€ ะพะฟะพะฒะตั‰ะตะฝ ะพ ะฒะฐัˆะตะผ ั€ะตัˆะตะฝะธะธ' ];
  142 + } else {
  143 + return [ 'error' => 'ะžัˆะธะฑะบะฐ ะพะฑะฝะพะฒะปะตะฝะธั.' ];
  144 + }
125 145 }
126 146  
127   - $comment->state = $state;
128   - if(!$comment->validate()) {
129   - return ['error' => 'ะะตะดะพะฟัƒัั‚ะธะผะพะต ะทะฝะฐั‡ะตะฝะธะต state'];
  147 + public function actionOfferForm()
  148 + {
  149 + /**
  150 + * @var User $user
  151 + */
  152 + $response = \Yii::$app->response;
  153 + $request = \Yii::$app->request;
  154 + $response->format = $response::FORMAT_JSON;
  155 + $user = \Yii::$app->user->identity;
  156 + $performer_id = $request->post('performer_id');
  157 + if(empty( $performer_id )) {
  158 + return [ 'error' => 'performer_id ะดะพะปะถะตะฝ ะฑั‹ั‚ัŒ ะทะฐะดะฐะฝ' ];
  159 + }
  160 + $projects = $user->getProjects()
  161 + ->with('parent')
  162 + ->all();
  163 + if(empty($projects)) {
  164 + return ['error' => 'ะฃ ะ’ะฐั ะตั‰ะต ะฝะตั‚ัƒ ะฟั€ะพะตะบั‚ะพะฒ'];
  165 + }
  166 + return [
  167 + 'message' => $this->renderAjax('forms-modal-offer', [
  168 + 'performer_id' => $performer_id,
  169 + 'projects' => $projects,
  170 + ]),
  171 + ];
130 172 }
131   - if($comment->changeState()) {
132   - return ['message' => 'ะะฒั‚ะพั€ ะพะฟะพะฒะตั‰ะตะฝ ะพ ะฒะฐัˆะตะผ ั€ะตัˆะตะฝะธะธ'];
133   - } else {
134   - return ['error' => 'ะžัˆะธะฑะบะฐ ะพะฑะฝะพะฒะปะตะฝะธั.'];
  173 +
  174 + public function actionOffer()
  175 + {
  176 + /**
  177 + * @var User $user
  178 + * @var Project $project
  179 + * @var User $performer
  180 + * @var Chat $chat
  181 + */
  182 + $response = \Yii::$app->response;
  183 + $request = \Yii::$app->request;
  184 + $response->format = $response::FORMAT_JSON;
  185 + $user = \Yii::$app->user->identity;
  186 + $project_id = $request->post('project_id');
  187 + $performer_id = $request->post('performer_id');
  188 + if(empty( $project_id ) || empty( $performer_id )) {
  189 + return [ 'error' => 'project_id ะธ performer_id ะดะพะปะถะฝั‹ ะฑั‹ั‚ัŒ ะทะฐะดะฐะฝั‹' ];
  190 + }
  191 + $performer = User::find()
  192 + ->where([ 'id' => $performer_id ])
  193 + ->one();
  194 + if(empty( $performer )) {
  195 + return [ 'error' => 'ะ˜ัะฟะพะปะฝะธั‚ะตะปัŒ ะฝะต ะฝะฐะนะดะตะฝ' ];
  196 + }
  197 + $project = Project::find()
  198 + ->where([ 'project_id' => $project_id ])
  199 + ->one();
  200 + if(empty( $project )) {
  201 + return [ 'error' => 'ะŸั€ะพะตะบั‚ ะฝะต ะฝะฐะนะดะตะฝ' ];
  202 + } elseif($project->user_id != $user->id) {
  203 + return [ 'error' => 'ะ’ั‹ ะผะพะถะตั‚ะต ะฟั€ะตะดะปะฐะณะฐั‚ัŒ ั‚ะพะปัŒะบะพ ัะพะฑัั‚ะฒะตะฝะฝั‹ะต ะฟั€ะพะตะบั‚ั‹' ];
  204 + }
  205 + $chat = $user->getChat($performer->id)
  206 + ->one();
  207 + if(empty( $chat )) {
  208 + $chat = new Chat([
  209 + 'form_user' => $user->id,
  210 + 'to_user' => $performer->id,
  211 + ]);
  212 + if(!$chat->save()) {
  213 + return [ 'error' => 'ะะต ัƒะดะฐะปะพััŒ ัะพะทะดะฐั‚ัŒ ั‡ะฐั‚' ];
  214 + }
  215 + }
  216 + $message = new Message([
  217 + 'chat_id' => $chat->chat_id,
  218 + 'user_id' => $user->id,
  219 + 'status' => 1,
  220 + ]);
  221 + $text = "<p>ะ—ะดั€ะฐะฒัั‚ะฒัƒะนั‚ะต, {$user->name}!</p><p>ะŸั€ะตะดะปะฐะณะฐัŽ ะ’ะฐะผ ะฟั€ะธะฝัั‚ัŒ ัƒั‡ะฐัั‚ะธะต ะฒ " . Html::a('ะขะตะฝะดะตั€ะต', [
  222 + 'tender/view',
  223 + 'tender_id' => $project->project_id,
  224 + ]) . "</p>";
  225 + $message->text = $text;
  226 + if(!$message->save()) {
  227 + return [ 'error' => 'ะะต ัƒะดะฐะปะพััŒ ะพั‚ะฟั€ะฐะฒะธั‚ัŒ ะฟั€ะตะดะปะพะถะตะฝะธะต' ];
  228 + } else {
  229 + return [ 'message' => 'ะŸั€ะตะดะปะพะถะตะฝะธะต ัƒัะฟะตัˆะฝะพ ะพั‚ะฟั€ะฐะฒะปะตะฝะพ' ];
  230 + }
135 231 }
136   - }
137 232  
138   -}
  233 + }
... ...
frontend/views/layouts/company.php
... ... @@ -153,7 +153,7 @@
153 153 </div>
154 154 </div>
155 155 <div class="performance-vacancy-sidebar-comm style"><?= count($this->params[ 'company' ]->comments) ?> ะพั‚ะทั‹ะฒะพะฒ</div>
156   - <a href="#" class="performance-vacancy-sidebar-write style">ะฝะฐะฟะธัะฐั‚ัŒ ะพั‚ะทั‹ะฒ</a>
  156 + <?= Html::a('ะฝะฐะฟะธัะฐั‚ัŒ ะพั‚ะทั‹ะฒ', ['company/review', 'company_id' => $this->params['company']->id], ['class' => 'performance-vacancy-sidebar-write style']) ?>
157 157 </div>
158 158 <div class="performer-vacancy-sidebar-img style"><?= Html::img($this->params[ 'company' ]->userInfo->image); ?></div>
159 159 <div class="performer-vacancy-sidebar-all style">
... ...
frontend/views/layouts/performer.php
... ... @@ -20,8 +20,11 @@
20 20 <div class="box-wr">
21 21 <div class="box-all">
22 22 <div class="blog-buttons-wr style">
23   - <a class="blog-buttons-offer" href="#">ะŸั€ะตะดะปะพะถะธั‚ัŒ<br>ะฟั€ะพะตะบั‚</a>
24   - <?= Html::a('ะŸั€ะตะดะปะพะถะธั‚ัŒ ะฟั€ะพะตะบั‚', Url::toRoute([
  23 + <?= Html::a('ะŸั€ะตะดะปะพะถะธั‚ัŒ ะฟั€ะพะตะบั‚', [ '#' ], [
  24 + 'class' => 'blog-buttons-offer',
  25 + 'data-performer-id' => $this->params[ 'user' ]->id,
  26 + ]) ?>
  27 + <?= Html::a('ะะฐะฟะธัะฐั‚ัŒ ัะพะพะฑั‰ะตะฝะธะต', Url::toRoute([
25 28 'chat/message',
26 29 'user_id' => $this->params[ 'user' ]->id,
27 30 ]), [ 'class' => 'blog-buttons-write' ]) ?>
... ... @@ -132,7 +135,10 @@
132 135 </div>
133 136 </div>
134 137 <div class="performance-vacancy-sidebar-comm style"><?= count($this->params[ 'user' ]->comments) ?> ะพั‚ะทั‹ะฒะพะฒ</div>
135   - <a href="#" class="performance-vacancy-sidebar-write style">ะฝะฐะฟะธัะฐั‚ัŒ ะพั‚ะทั‹ะฒ</a>
  138 + <?= Html::a('ะฝะฐะฟะธัะฐั‚ัŒ ะพั‚ะทั‹ะฒ', [
  139 + 'performer/review',
  140 + 'performer_id' => $this->params[ 'user' ]->id,
  141 + ], [ 'class' => 'performance-vacancy-sidebar-write style' ]) ?>
136 142 </div>
137 143 <div class="performer-vacancy-sidebar-img style">
138 144 <?= Html::img($this->params[ 'user' ]->userInfo->image); ?>
... ...
frontend/views/tender/forms-modal-offer.php 0 โ†’ 100644
  1 +<?php
  2 + /**
  3 + * @var int $performer_id
  4 + * @var User $user
  5 + * @var Project[] $projects
  6 + */
  7 + use common\models\Project;
  8 + use common\models\User;
  9 +
  10 +?>
  11 +<script>
  12 + $(document).ready(
  13 + function()
  14 + {
  15 + jQuery('.off_list').jScrollPane(
  16 + {
  17 + showArrows : true, autoReinitialise : true, autoReinitialiseDelay : 200,
  18 + scrollbarWidth : 25, arrowSize : 25
  19 + }
  20 + );
  21 +
  22 + $('.off_list').hide();
  23 + $('.main_item, .arrow.up').click(
  24 + function()
  25 + {
  26 + $('.off_list').toggle()
  27 + }
  28 + );
  29 +
  30 + var listOffer = $('.list-form-offer li');
  31 + var listOfferLength = listOffer.length;
  32 +
  33 + $(listOffer[listOfferLength - 1]).addClass('act-offer-li');
  34 + function activeOf()
  35 + {
  36 + var title1 = $('.act-offer-li').find('.title1').text();
  37 + var title2 = $('.act-offer-li').find('.title2').text();
  38 + $('#off_value').val($('.act-offer-li').data('project-id'));
  39 +
  40 + $('.main_item .pr_title').empty().text(title1)
  41 + $('.main_item span').empty().text(title2)
  42 + }
  43 +
  44 + activeOf();
  45 +
  46 + listOffer.click(
  47 + function()
  48 + {
  49 + var thisOfInd = $(this).index();
  50 + var actOfInd = $('.act-offer-li').index();
  51 + listOffer.removeClass('act-offer-li');
  52 + $(this).addClass('act-offer-li');
  53 +
  54 + if(thisOfInd != actOfInd)
  55 + {
  56 + activeOf();
  57 + $('.off_list').hide();
  58 + }
  59 + }
  60 + );
  61 + $(document).on('click', '#off_submit', function(e) {
  62 + e.preventDefault();
  63 + var project_id = $('#off_value').val();
  64 + var performer_id = $('#off_value').data('performer-id');
  65 + if(project_id && performer_id) {
  66 + $.post(
  67 + '/tender/offer',
  68 + {
  69 + project_id: project_id,
  70 + performer_id: performer_id
  71 + },
  72 + function(data) {
  73 + if(data.error) {
  74 + $('#overlay, .forms-modal-hide').remove();
  75 + alert(data.error);
  76 + } else {
  77 + $('#overlay, .forms-modal-hide').remove();
  78 + alert(data.message);
  79 + }
  80 + }
  81 + ).fail(
  82 + function() {
  83 + $('#overlay, .forms-modal-hide').remove();
  84 + alert('ะะตะธะทะฒะตัั‚ะฝะฐั ะพัˆะธะฑะบะฐ');
  85 + }
  86 + )
  87 + $(document).off('click', '#off_submit');
  88 + return false;
  89 + }
  90 + });
  91 + }
  92 + )
  93 +</script>
  94 +
  95 +<div id="modal_form_offer">
  96 + <div class="closed-form"></div>
  97 + <div class="form-resume-wr offer">
  98 + <div class="form-resume-sub style">ะŸั€ะตะดะปะพะถะธั‚ัŒ ะฟั€ะพะตะบั‚</div>
  99 + <form action="" class="offer-project">
  100 + <input type="hidden" id="off_value" data-performer-id="<?=$performer_id?>">
  101 + <label>ะ’ั‹ะฑั€ะฐั‚ัŒ ะฟั€ะพะตะบั‚</label>
  102 + <div class="list_item title">
  103 + <div class="main_item">
  104 + <div class="pr_title"></div>
  105 + <span></span>
  106 + </div>
  107 + <div class="arrow up"></div>
  108 + <div class="off_list">
  109 + <ul class="content list-form-offer">
  110 + <?php
  111 + foreach($projects as $project) {
  112 + ?>
  113 + <li data-project-id="<?= $project->project_id ?>">
  114 + <div class="title1"><?= $project->name ?></div>
  115 + <?php
  116 + if(!empty( $project->parent )) {
  117 + ?>
  118 + <div class="title2">ะŸะพะดั€ัะด: <?= $project->parent->name ?></div>
  119 + <?php
  120 + }
  121 + ?>
  122 + </li>
  123 + <?php
  124 + }
  125 + ?>
  126 + </ul>
  127 + </div>
  128 + </div>
  129 +
  130 +
  131 + <input id="off_submit" type="submit" value="ะŸั€ะตะดะปะพะถะธั‚ัŒ">
  132 + </form>
  133 + <div class="res_form_line"></div>
  134 + </div>
  135 +</div>
... ...
frontend/web/js/forms.js
... ... @@ -69,38 +69,6 @@ $(document).ready(
69 69 )
70 70 }
71 71  
72   - function addToOffer()
73   - {
74   - $.post(
75   - "/site/forms-modal-offer", function(data)
76   - {
77   - $('.forms-modal-hide').append(data)
78   - }
79   - )
80   - .fail(
81   - function()
82   - {
83   - $('#overlay, .forms-modal-hide').remove();
84   - alert(txtErrorModal)
85   - }
86   - )
87   - .done(
88   - function()
89   - {
90   - var newMarg = $(window).scrollTop();
91   - $('#overlay').fadeIn(
92   - 400, function()
93   - {
94   - $('body').css({overflowY : 'hidden'})
95   - $('.forms-modal-hide>div')
96   - .css({display : 'block', marginTop : -230 + newMarg})
97   - .animate({opacity : 1, top : '50%'}, 200);
98   - }
99   - );
100   - }
101   - )
102   - }
103   -
104 72 function addContacts()
105 73 {
106 74 $.post(
... ... @@ -483,12 +451,58 @@ $(document).ready(
483 451  
484 452  
485 453 //offer
  454 + function addToOffer(performer_id)
  455 + {
  456 + $.post(
  457 + "/tender/offer-form",
  458 + {
  459 + performer_id: performer_id
  460 + } ,
  461 + function(data)
  462 + {
  463 + if(data.error) {
  464 + $('#overlay, .forms-modal-hide').remove();
  465 + alert(data.error);
  466 + } else {
  467 + $('.forms-modal-hide').append(data.message);
  468 + }
  469 + }
  470 + )
  471 + .fail(
  472 + function()
  473 + {
  474 + $('#overlay, .forms-modal-hide').remove();
  475 + alert(txtErrorModal)
  476 + }
  477 + )
  478 + .done(
  479 + function()
  480 + {
  481 + var newMarg = $(window).scrollTop();
  482 + $('#overlay').fadeIn(
  483 + 400, function()
  484 + {
  485 + $('body').css({overflowY : 'hidden'})
  486 + $('.forms-modal-hide>div')
  487 + .css({display : 'block', marginTop : -230 + newMarg})
  488 + .animate({opacity : 1, top : '50%'}, 200);
  489 + }
  490 + );
  491 + }
  492 + )
  493 + }
486 494 $('a.get-project, .blog-buttons-offer').click(
487 495 function(e)
488 496 {
489   - e.preventDefault()
490   - addRemoveBlocks()
491   - addToOffer()
  497 + e.preventDefault();
  498 + var performer_id;
  499 + performer_id = $(this).data('performer-id');
  500 + if(!performer_id) {
  501 + return false;
  502 + } else {
  503 + addRemoveBlocks();
  504 + addToOffer(performer_id);
  505 + }
492 506 }
493 507 )
494 508  
... ...