Commit 50ed5626f27742c7a9e749a8674d21004bd82c1e
1 parent
32ed90fd
test
Showing
6 changed files
with
408 additions
and
157 deletions
Show diff stats
common/models/Project.php
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); ?> | ... | ... |
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 | ... | ... |