Commit 0fc3bf10d06abc4648ab8ed935a03500874159ec
1 parent
51893ef9
Quickbuy modal
Showing
6 changed files
with
264 additions
and
171 deletions
Show diff stats
common/models/Basket.php
frontend/controllers/OrderController.php
1 | <?php | 1 | <?php |
2 | - | ||
3 | -namespace frontend\controllers; | ||
4 | - | ||
5 | - | ||
6 | -use common\models\Customer; | ||
7 | -use common\models\OrdersProducts; | ||
8 | -use common\widgets\Mailer; | ||
9 | -use Yii; | ||
10 | -use yii\base\InvalidConfigException; | ||
11 | -use yii\base\InvalidParamException; | ||
12 | -use yii\helpers\ArrayHelper; | ||
13 | -use yii\web\Controller; | ||
14 | -use common\models\Basket; | ||
15 | -use common\modules\product\models\ProductVariant; | ||
16 | -use common\models\Orders; | ||
17 | - | ||
18 | - | ||
19 | -class OrderController extends Controller | ||
20 | -{ | ||
21 | - | ||
22 | - | ||
23 | - public function actionIndex() | ||
24 | - { | ||
25 | - $basket = \Yii::$app->basket; | ||
26 | - $data = $basket->getData(); | ||
27 | - $models = $basket->findModels(array_keys($data)); | ||
28 | - return $this->render('index', [ | ||
29 | - 'models' => $models, | ||
30 | - 'basket' => $basket, | ||
31 | - ]); | ||
32 | - } | ||
33 | - | ||
34 | - | ||
35 | - /** | ||
36 | - * | ||
37 | - * @return string | ||
38 | - */ | ||
39 | - public function actionSave() | 2 | + |
3 | + namespace frontend\controllers; | ||
4 | + | ||
5 | + use common\models\Customer; | ||
6 | + use common\models\OrdersProducts; | ||
7 | + use common\widgets\Mailer; | ||
8 | + use Yii; | ||
9 | + use yii\base\InvalidConfigException; | ||
10 | + use yii\base\InvalidParamException; | ||
11 | + use yii\helpers\ArrayHelper; | ||
12 | + use yii\web\Controller; | ||
13 | + use common\models\Basket; | ||
14 | + use common\modules\product\models\ProductVariant; | ||
15 | + use common\models\Orders; | ||
16 | + | ||
17 | + class OrderController extends Controller | ||
40 | { | 18 | { |
41 | - $modelOrder = new Orders; | 19 | + |
20 | + public function actionIndex() | ||
21 | + { | ||
22 | + $basket = \Yii::$app->basket; | ||
23 | + $data = $basket->getData(); | ||
24 | + $models = $basket->findModels(array_keys($data)); | ||
25 | + return $this->render('index', [ | ||
26 | + 'models' => $models, | ||
27 | + 'basket' => $basket, | ||
28 | + ]); | ||
29 | + } | ||
30 | + | ||
42 | /** | 31 | /** |
43 | - * @var $basket Basket | 32 | + * @return string |
44 | */ | 33 | */ |
45 | - $basket = \Yii::$app->basket; | ||
46 | - $productV = $basket->getData(); | ||
47 | - if(!empty($productV) && $modelOrder->load(Yii::$app->request->post())&& $modelOrder->save()){ | ||
48 | - foreach ($productV as $index=>$row) { | ||
49 | - $modelOrdersProducts = new OrdersProducts(); | ||
50 | - $mod_id = $index; | ||
51 | - $product = ProductVariant::findOne($mod_id); | ||
52 | - /** | ||
53 | - * Проверяем товар на наличие | ||
54 | - */ | ||
55 | - if(!$product->stock > 0 || !$product->price > 0 ){ | ||
56 | - /** | ||
57 | - * Добавляем сообщение об ошибке | ||
58 | - */ | ||
59 | - \Yii::$app->getSession()->setFlash('error', 'К сожалению товара '.$product->name . ' нет в наличии'); | ||
60 | - $basket->delete($product->product_variant_id); | ||
61 | - unset($productV[$index]); | ||
62 | - }else { | 34 | + public function actionSave() |
35 | + { | ||
36 | + $modelOrder = new Orders; | ||
37 | + /** | ||
38 | + * @var $basket Basket | ||
39 | + */ | ||
40 | + $basket = \Yii::$app->basket; | ||
41 | + $productV = $basket->getData(); | ||
42 | + if(!empty( $productV ) && $modelOrder->load(Yii::$app->request->post()) && $modelOrder->save()) { | ||
43 | + foreach($productV as $index => $row) { | ||
44 | + $modelOrdersProducts = new OrdersProducts(); | ||
45 | + $mod_id = $index; | ||
46 | + $product = ProductVariant::findOne($mod_id); | ||
63 | /** | 47 | /** |
64 | - * Удаляем товар с массива и сохраняем в заказ | 48 | + * Проверяем товар на наличие |
65 | */ | 49 | */ |
66 | - $modelOrdersProducts->order_id = $modelOrder->id; | ||
67 | - $modelOrdersProducts->product_name = $product->product->name; | ||
68 | - $modelOrdersProducts->name = $product->name; | ||
69 | - $modelOrdersProducts->price = $productV[$index]['price']; | ||
70 | - $modelOrdersProducts->count= $productV[$index]['count']; | ||
71 | - $modelOrdersProducts->sum_cost = $productV[$index]['price'] *$productV[$index]['count'] ; | ||
72 | - $modelOrdersProducts->mod_id = $mod_id; | ||
73 | - $modelOrdersProducts->sku = $product->sku; | ||
74 | - $modelOrdersProducts->validate(); | ||
75 | - $modelOrdersProducts->save(); | ||
76 | - $productV[$index] = ArrayHelper::toArray($modelOrdersProducts); | ||
77 | - $productV[$index]['img'] = \common\components\artboximage\ArtboxImageHelper::getImageSrc($product->image->imageUrl, 'list'); | 50 | + if(!$product->stock > 0 || !$product->price > 0) { |
51 | + /** | ||
52 | + * Добавляем сообщение об ошибке | ||
53 | + */ | ||
54 | + \Yii::$app->getSession() | ||
55 | + ->setFlash('error', 'К сожалению товара ' . $product->name . ' нет в наличии'); | ||
56 | + $basket->delete($product->product_variant_id); | ||
57 | + unset( $productV[ $index ] ); | ||
58 | + } else { | ||
59 | + /** | ||
60 | + * Удаляем товар с массива и сохраняем в заказ | ||
61 | + */ | ||
62 | + $modelOrdersProducts->order_id = $modelOrder->id; | ||
63 | + $modelOrdersProducts->product_name = $product->product->name; | ||
64 | + $modelOrdersProducts->name = $product->name; | ||
65 | + $modelOrdersProducts->price = $productV[ $index ][ 'price' ]; | ||
66 | + $modelOrdersProducts->count = $productV[ $index ][ 'count' ]; | ||
67 | + $modelOrdersProducts->sum_cost = $productV[ $index ][ 'price' ] * $productV[ $index ][ 'count' ]; | ||
68 | + $modelOrdersProducts->mod_id = $mod_id; | ||
69 | + $modelOrdersProducts->sku = $product->sku; | ||
70 | + $modelOrdersProducts->validate(); | ||
71 | + $modelOrdersProducts->save(); | ||
72 | + $productV[ $index ] = ArrayHelper::toArray($modelOrdersProducts); | ||
73 | + $productV[ $index ][ 'img' ] = \common\components\artboximage\ArtboxImageHelper::getImageSrc($product->image->imageUrl, 'list'); | ||
74 | + } | ||
78 | } | 75 | } |
79 | - } | ||
80 | - /** | ||
81 | - * Сохраняем заказ | ||
82 | - */ | ||
83 | - if(!Yii::$app->user->id && !empty($modelOrder->email)){ | ||
84 | - $modelUser = new Customer(); | ||
85 | - $modelUser->role = 'person'; | ||
86 | - $modelUser->username = $modelOrder->email; | ||
87 | - $modelUser->name = $modelOrder->name; | ||
88 | - $modelUser->phone = $modelOrder->phone; | ||
89 | - $modelUser->password = Yii::$app->getSecurity()->generateRandomString(10); | ||
90 | - $modelUser->group_id = 2; | ||
91 | - $modelUser->save(); | ||
92 | - } | ||
93 | - $order = clone $modelOrder; | ||
94 | - /** | ||
95 | - * Чистим сессию корзины | ||
96 | - */ | ||
97 | - $modelOrder->clearBasket(); | ||
98 | - Mailer::widget( | ||
99 | - ['type' => 'order', | ||
100 | - 'subject'=> 'Спасибо за покупку', | ||
101 | - 'email' => $modelOrder->email, | ||
102 | - 'params' => [ | ||
103 | - 'order' => $order, | 76 | + /** |
77 | + * Сохраняем заказ | ||
78 | + */ | ||
79 | + if(!Yii::$app->user->id && !empty( $modelOrder->email )) { | ||
80 | + $modelUser = new Customer(); | ||
81 | + $modelUser->role = 'person'; | ||
82 | + $modelUser->username = $modelOrder->email; | ||
83 | + $modelUser->name = $modelOrder->name; | ||
84 | + $modelUser->phone = $modelOrder->phone; | ||
85 | + $modelUser->password = Yii::$app->getSecurity() | ||
86 | + ->generateRandomString(10); | ||
87 | + $modelUser->group_id = 2; | ||
88 | + $modelUser->save(); | ||
89 | + } | ||
90 | + $order = clone $modelOrder; | ||
91 | + /** | ||
92 | + * Чистим сессию корзины | ||
93 | + */ | ||
94 | + $modelOrder->clearBasket(); | ||
95 | + Mailer::widget([ | ||
96 | + 'type' => 'order', | ||
97 | + 'subject' => 'Спасибо за покупку', | ||
98 | + 'email' => $modelOrder->email, | ||
99 | + 'params' => [ | ||
100 | + 'order' => $order, | ||
104 | 'variants' => $productV, | 101 | 'variants' => $productV, |
105 | - ] | 102 | + ], |
106 | ]); | 103 | ]); |
107 | - //$text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami. (044) 303 90 15"; | ||
108 | - //Yii::$app->sms->send($order->phone, $text); | ||
109 | - Yii::$app->session['order_data']= ['order' => $order,'variants'=>$productV]; | ||
110 | - return $this->redirect(['order/success']); | 104 | + //$text = "# zakaz: ". $order->id .". V blijayshee vremya menedjer svyajetsya s Vami. (044) 303 90 15"; |
105 | + //Yii::$app->sms->send($order->phone, $text); | ||
106 | + Yii::$app->session[ 'order_data' ] = [ 'order' => $order, | ||
107 | + 'variants' => $productV, | ||
108 | + ]; | ||
109 | + return $this->redirect([ 'order/success' ]); | ||
110 | + } | ||
111 | + $data = $basket->getData(); | ||
112 | + $models = $basket->findModels(array_keys($data)); | ||
113 | + return $this->render('index', [ | ||
114 | + 'models' => $models, | ||
115 | + 'basket' => $basket, | ||
116 | + ]); | ||
111 | } | 117 | } |
112 | - $data = $basket->getData(); | ||
113 | - $models = $basket->findModels(array_keys($data)); | ||
114 | - return $this->render('index', [ | ||
115 | - 'models' => $models, | ||
116 | - 'basket' => $basket | ||
117 | - ]); | ||
118 | - } | ||
119 | - | ||
120 | - public function actionSuccess(){ | ||
121 | - return $this->render('success'); | ||
122 | - } | ||
123 | - | ||
124 | - public function actionQuick() { | ||
125 | - $response = \Yii::$app->response; | ||
126 | - $request = \Yii::$app->request; | ||
127 | - $response->format = $response::FORMAT_JSON; | ||
128 | - $product_variant_id = (int) $request->post('product_variant_id'); | ||
129 | - $orders = new Orders([ | ||
130 | - 'scenario' => Orders::SCENARIO_QUICK, | ||
131 | - 'name' => 'Покупка в 1 клик', | ||
132 | - ]); | ||
133 | - if(!empty($product_variant_id)) { | 118 | + |
119 | + public function actionSuccess() | ||
120 | + { | ||
121 | + return $this->render('success'); | ||
122 | + } | ||
123 | + | ||
124 | + public function actionQuick() | ||
125 | + { | ||
126 | + $response = \Yii::$app->response; | ||
127 | + $request = \Yii::$app->request; | ||
128 | + $response->format = $response::FORMAT_JSON; | ||
129 | + $product_variant_id = (int) $request->post('product_variant_id'); | ||
130 | + $orders = new Orders([ | ||
131 | + 'scenario' => Orders::SCENARIO_QUICK, | ||
132 | + 'name' => 'Покупка в 1 клик', | ||
133 | + ]); | ||
134 | + if(!empty( $product_variant_id )) { | ||
135 | + /** | ||
136 | + * @var ProductVariant $product_variant | ||
137 | + */ | ||
138 | + $product_variant = ProductVariant::findOne($product_variant_id); | ||
139 | + } else { | ||
140 | + throw new InvalidParamException('Не указан товар'); | ||
141 | + } | ||
142 | + if(!empty( $product_variant ) && $orders->load($request->post()) && $orders->save()) { | ||
143 | + if($product_variant->stock <= 0 || $product_variant->price <= 0) { | ||
144 | + $orders->delete(); | ||
145 | + return [ | ||
146 | + 'error' => 'К сожалению товара ' . $product_variant->name . ' нет в наличии', | ||
147 | + ]; | ||
148 | + } else { | ||
149 | + $order_product = new OrdersProducts([ | ||
150 | + 'order_id' => $orders->id, | ||
151 | + 'product_name' => $product_variant->product->name, | ||
152 | + 'name' => $product_variant->name, | ||
153 | + 'price' => $product_variant->price, | ||
154 | + 'count' => 1, | ||
155 | + 'sum_cost' => $product_variant->price, | ||
156 | + 'mod_id' => $product_variant->product_variant_id, | ||
157 | + 'sku' => $product_variant->sku, | ||
158 | + ]); | ||
159 | + $order_product->save(); | ||
160 | + return [ | ||
161 | + 'result' => 'Спасибо за заказ! Наши менеджеры свяжутся с Вами в ближайшее время.', | ||
162 | + ]; | ||
163 | + } | ||
164 | + } else { | ||
165 | + throw new InvalidConfigException('Товар не найден или не удалось загрузить данные о покупателе.'); | ||
166 | + } | ||
167 | + } | ||
168 | + | ||
169 | + public function actionQuickBasket() | ||
170 | + { | ||
171 | + $response = \Yii::$app->response; | ||
172 | + $request = \Yii::$app->request; | ||
173 | + $response->format = $response::FORMAT_JSON; | ||
134 | /** | 174 | /** |
135 | - * @var ProductVariant $product_variant | 175 | + * @var array $data |
136 | */ | 176 | */ |
137 | - $product_variant = ProductVariant::findOne($product_variant_id); | ||
138 | - } else { | ||
139 | - throw new InvalidParamException('Не указан товар'); | ||
140 | - } | ||
141 | - if(!empty($product_variant) && $orders->load($request->post()) && $orders->save()) { | ||
142 | - if($product_variant->stock <= 0 || $product_variant->price <= 0) { | ||
143 | - $orders->delete(); | ||
144 | - return [ | ||
145 | - 'error' => 'К сожалению товара '.$product_variant->name.' нет в наличии', | ||
146 | - ]; | 177 | + $data = \Yii::$app->basket->getData(); |
178 | + $orders = new Orders([ | ||
179 | + 'scenario' => Orders::SCENARIO_QUICK, | ||
180 | + 'name' => 'Покупка в 1 клик', | ||
181 | + ]); | ||
182 | + if(!empty( $data )) { | ||
183 | + /** | ||
184 | + * @var ProductVariant[] $product_variants | ||
185 | + * @var OrdersProducts[] $order_products | ||
186 | + */ | ||
187 | + $product_variants = []; | ||
188 | + $order_products = []; | ||
189 | + foreach($data as $product_variant_id => $item) { | ||
190 | + $product_variant = ProductVariant::findOne($product_variant_id); | ||
191 | + if(!empty($product_variant) && $product_variant->stock > 0 && $product_variant->price > 0) { | ||
192 | + $product_variants[$product_variant_id] = $product_variant; | ||
193 | + $order_products[$product_variant_id] = new OrdersProducts([ | ||
194 | + 'product_name' => $product_variant->product->name, | ||
195 | + 'name' => $product_variant->name, | ||
196 | + 'price' => $product_variant->price, | ||
197 | + 'count' => $item['count'], | ||
198 | + 'sum_cost' => $item['count'] * $product_variant->price, | ||
199 | + 'mod_id' => $product_variant->product_variant_id, | ||
200 | + 'sku' => $product_variant->sku, | ||
201 | + ]); | ||
202 | + } | ||
203 | + } | ||
147 | } else { | 204 | } else { |
148 | - $order_product = new OrdersProducts([ | ||
149 | - 'order_id' => $orders->id, | ||
150 | - 'product_name' => $product_variant->product->name, | ||
151 | - 'name' => $product_variant->name, | ||
152 | - 'price' => $product_variant->price, | ||
153 | - 'count' => 1, | ||
154 | - 'sum_cost' => $product_variant->price, | ||
155 | - 'mod_id' => $product_variant->product_variant_id, | ||
156 | - 'sku' => $product_variant->sku, | ||
157 | - ]); | ||
158 | - $order_product->save(); | 205 | + throw new InvalidParamException('Не указан товар'); |
206 | + } | ||
207 | + if(!empty( $order_products ) && $orders->load($request->post()) && $orders->save()) { | ||
208 | + foreach($order_products as $order_product) { | ||
209 | + $order_product->order_id = $orders->id; | ||
210 | + $order_product->save(); | ||
211 | + } | ||
212 | + \Yii::$app->basket->clear(); | ||
159 | return [ | 213 | return [ |
160 | - 'result' => 'Спасибо за заказ! Наши менеджеры свяжутся с Вами в ближайшее время.' | 214 | + 'result' => 'Спасибо за заказ! Наши менеджеры свяжутся с Вами в ближайшее время.', |
161 | ]; | 215 | ]; |
216 | + } else { | ||
217 | + throw new InvalidConfigException('Товар не найден или не удалось загрузить данные о покупателе.'); | ||
162 | } | 218 | } |
163 | - } else { | ||
164 | - throw new InvalidConfigException('Товар не найден или не удалось загрузить данные о покупателе.'); | ||
165 | } | 219 | } |
166 | - | ||
167 | } | 220 | } |
168 | - | ||
169 | -} |
frontend/views/basket/modal_items.php
1 | <?php | 1 | <?php |
2 | use common\models\Basket; | 2 | use common\models\Basket; |
3 | + use common\models\Orders; | ||
3 | use common\modules\product\models\ProductVariant; | 4 | use common\modules\product\models\ProductVariant; |
4 | use yii\helpers\Html; | 5 | use yii\helpers\Html; |
5 | -use yii\helpers\Url; | ||
6 | -use yii\web\View; | 6 | + use yii\helpers\Url; |
7 | + use yii\web\View; | ||
8 | + use yii\widgets\ActiveForm; | ||
9 | + use yii\widgets\MaskedInput; | ||
7 | 10 | ||
8 | /** | 11 | /** |
9 | * @var View $this | 12 | * @var View $this |
@@ -25,11 +28,8 @@ use yii\web\View; | @@ -25,11 +28,8 @@ use yii\web\View; | ||
25 | <span class="cart_total"><?php echo $basket->getSum(); ?></span><span class="currency"> <!--грн.--></span> | 28 | <span class="cart_total"><?php echo $basket->getSum(); ?></span><span class="currency"> <!--грн.--></span> |
26 | </div> | 29 | </div> |
27 | </div> | 30 | </div> |
28 | - | ||
29 | </div> | 31 | </div> |
30 | - | ||
31 | <div class="modal-body"> | 32 | <div class="modal-body"> |
32 | - | ||
33 | <table class="tovar"> | 33 | <table class="tovar"> |
34 | <tbody> | 34 | <tbody> |
35 | <?php | 35 | <?php |
@@ -38,19 +38,19 @@ use yii\web\View; | @@ -38,19 +38,19 @@ use yii\web\View; | ||
38 | <tr data-id="<?php echo $model->product_variant_id; ?>"> | 38 | <tr data-id="<?php echo $model->product_variant_id; ?>"> |
39 | <td class="left"> | 39 | <td class="left"> |
40 | <?php | 40 | <?php |
41 | - echo Html::img($model->getImageUrl()); | 41 | + echo Html::img($model->getImageUrl()); |
42 | ?> | 42 | ?> |
43 | </td> | 43 | </td> |
44 | <td class="right"> | 44 | <td class="right"> |
45 | - <div class="title"><?php echo $model->getFullname();?></div> | 45 | + <div class="title"><?php echo $model->getFullname(); ?></div> |
46 | <div class="count_choise"> | 46 | <div class="count_choise"> |
47 | <span class="minus"></span> | 47 | <span class="minus"></span> |
48 | - <input type="text" name="count" value="<?php echo $basket->getItem($model->product_variant_id)['count'];?>" class="prod_count"> | 48 | + <input type="text" name="count" value="<?php echo $basket->getItem($model->product_variant_id)[ 'count' ]; ?>" class="prod_count"> |
49 | <span class="plus"></span> | 49 | <span class="plus"></span> |
50 | <span class="total_summ">= <span class="total_prod"> | 50 | <span class="total_summ">= <span class="total_prod"> |
51 | <?php | 51 | <?php |
52 | $item = $basket->getItem($model->product_variant_id); | 52 | $item = $basket->getItem($model->product_variant_id); |
53 | - echo $item['count'] * $item['price']; | 53 | + echo $item[ 'count' ] * $item[ 'price' ]; |
54 | ?> | 54 | ?> |
55 | </span><span class="currency"> <!--грн.--></span> | 55 | </span><span class="currency"> <!--грн.--></span> |
56 | </span> | 56 | </span> |
@@ -64,8 +64,8 @@ use yii\web\View; | @@ -64,8 +64,8 @@ use yii\web\View; | ||
64 | ?> | 64 | ?> |
65 | <tr> | 65 | <tr> |
66 | <td class="left"> | 66 | <td class="left"> |
67 | - <?= Html::a('Оформить заказ',Url::to('/order'),['class'=>'btn'])?> | ||
68 | - | 67 | + <?= Html::a('Оформить заказ', Url::to('/order'), [ 'class' => 'btn' ]) ?> |
68 | + | ||
69 | </td> | 69 | </td> |
70 | <td class="right"> | 70 | <td class="right"> |
71 | <div class="back_to_shop"> | 71 | <div class="back_to_shop"> |
@@ -77,18 +77,39 @@ use yii\web\View; | @@ -77,18 +77,39 @@ use yii\web\View; | ||
77 | </tbody> | 77 | </tbody> |
78 | </table> | 78 | </table> |
79 | <br/> | 79 | <br/> |
80 | - | ||
81 | </div> | 80 | </div> |
82 | - | ||
83 | <div class="modal-footer"> | 81 | <div class="modal-footer"> |
84 | - | ||
85 | <div class="gray_part" id="buy_back_call_form"> | 82 | <div class="gray_part" id="buy_back_call_form"> |
86 | <p class="title">Заказать без оформления</p> | 83 | <p class="title">Заказать без оформления</p> |
87 | <p class="subtitle">Можно не заполнять никаких форм, просто оставить телефон и консультант решит все вопросы по оформлению заказа.</p> | 84 | <p class="subtitle">Можно не заполнять никаких форм, просто оставить телефон и консультант решит все вопросы по оформлению заказа.</p> |
88 | <div class="back_call_form"> | 85 | <div class="back_call_form"> |
89 | - <input type="tel" class="customerphone" name="customerphone" value="" placeholder="+38 (0XX) XXX-XX-XX"> | ||
90 | - <span class="btn btn-gray disabled" id="buy_back_call_submit" disabled1="disabled1">жду звонка</span> | ||
91 | - <span class="submit_indicator"></span> | 86 | + <?php |
87 | + $quickbuy = new Orders([ | ||
88 | + 'scenario' => Orders::SCENARIO_QUICK, | ||
89 | + ]); | ||
90 | + $form = ActiveForm::begin([ | ||
91 | + 'id' => 'quickbuy-modal', | ||
92 | + ]); | ||
93 | + echo $form->field($quickbuy, 'phone', [ | ||
94 | + 'selectors' => [ | ||
95 | + 'input' => '#order-phone-modal', | ||
96 | + ], | ||
97 | + ]) | ||
98 | + ->widget(MaskedInput::className(), [ | ||
99 | + 'mask' => '+38(999)999-99-99', | ||
100 | + 'options' => [ | ||
101 | + 'type' => 'tel', | ||
102 | + 'class' => 'customerphone', | ||
103 | + 'id' => 'order-phone-modal', | ||
104 | + ], | ||
105 | + ]) | ||
106 | + ->label(false); | ||
107 | + echo Html::submitInput('жду звонка', [ 'class' => 'btn btn-info' ]); | ||
108 | + echo Html::tag('span', '', [ | ||
109 | + 'class' => 'submit_indicator', | ||
110 | + ]); | ||
111 | + $form::end(); | ||
112 | + ?> | ||
92 | <div class="clr"></div> | 113 | <div class="clr"></div> |
93 | </div> | 114 | </div> |
94 | <p class="phone-example">например: +38 (095) 282-85-08</p> | 115 | <p class="phone-example">например: +38 (095) 282-85-08</p> |
frontend/web/js/artbox_basket.js
@@ -65,5 +65,5 @@ var ArtboxBasket = (function () { | @@ -65,5 +65,5 @@ var ArtboxBasket = (function () { | ||
65 | configurable: true | 65 | configurable: true |
66 | }); | 66 | }); |
67 | return ArtboxBasket; | 67 | return ArtboxBasket; |
68 | -})(); | 68 | +}()); |
69 | //# sourceMappingURL=artbox_basket.js.map | 69 | //# sourceMappingURL=artbox_basket.js.map |
70 | \ No newline at end of file | 70 | \ No newline at end of file |
frontend/web/js/artbox_basket.js.map
1 | -{"version":3,"file":"artbox_basket.js","sourceRoot":"","sources":["artbox_basket.ts"],"names":["ArtboxBasket","ArtboxBasket.constructor","ArtboxBasket.items","ArtboxBasket.add","ArtboxBasket.set","ArtboxBasket.updateModal","ArtboxBasket.updateCart","ArtboxBasket.count","ArtboxBasket.sum"],"mappings":"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"} | ||
2 | \ No newline at end of file | 1 | \ No newline at end of file |
2 | +{"version":3,"file":"artbox_basket.js","sourceRoot":"","sources":["artbox_basket.ts"],"names":[],"mappings":"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"} | ||
3 | \ No newline at end of file | 3 | \ No newline at end of file |
frontend/web/js/script.js
@@ -224,4 +224,21 @@ $(document).on('submit', '#quickbuy-form', function(e) { | @@ -224,4 +224,21 @@ $(document).on('submit', '#quickbuy-form', function(e) { | ||
224 | } | 224 | } |
225 | }) | 225 | }) |
226 | }); | 226 | }); |
227 | +$(document).on('submit', '#quickbuy-modal', function(e) | ||
228 | +{ | ||
229 | + e.preventDefault(); | ||
230 | + var form = $('#buyForm'); | ||
231 | + $.post('/order/quick-basket', $(this).serialize(), function(data) | ||
232 | + { | ||
233 | + if(!data.error) { | ||
234 | + $(form).find('.modal-body').html(data.result); | ||
235 | + } else { | ||
236 | + $(form).find('.modal-body').html(data.error); | ||
237 | + } | ||
238 | + }).fail(function(jqXHR, textStatus, errorThrown) { | ||
239 | + $(form).find('.modal-body').html(JSON.parse(jqXHR.responseText).message); | ||
240 | + }); | ||
241 | + $(form).find('.modal-title').remove(); | ||
242 | + $(form).find('.modal-footer').remove(); | ||
243 | +}); | ||
227 | /* End ajax form submit */ | 244 | /* End ajax form submit */ |
228 | \ No newline at end of file | 245 | \ No newline at end of file |