Commit 0fc3bf10d06abc4648ab8ed935a03500874159ec

Authored by Yarik
1 parent 51893ef9

Quickbuy modal

common/models/Basket.php
@@ -117,5 +117,9 @@ @@ -117,5 +117,9 @@
117 ->all(); 117 ->all();
118 } 118 }
119 119
120 - 120 + public function clear()
  121 + {
  122 + $this->setData([]);
  123 + }
  124 +
121 } 125 }
122 \ No newline at end of file 126 \ No newline at end of file
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">&nbsp;<!--грн.--></span> 28 <span class="cart_total"><?php echo $basket->getSum(); ?></span><span class="currency">&nbsp;<!--грн.--></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">&nbsp;<!--грн.--></span> 55 </span><span class="currency">&nbsp;<!--грн.--></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":"AAAA;IAKIA;QACIC,CAACA,CAACA,GAAGA,CAACA,SAASA,EAAEA,UAAUA,IAAIA;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAACA,IAAIA,CAACA,IAAIA,CAACA,EAAEA,MAAMA,CAACA,CAACA,IAAIA,CAACA;YACvB,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC,CAACA,CAACA;IACPA,CAACA;IAVDD,sBAAIA,+BAAKA;aAATA;YACIE,MAAMA,CAACA,IAAIA,CAACA,MAAMA,CAACA;QACvBA,CAACA;;;OAAAF;IASMA,0BAAGA,GAAVA,UAAWA,kBAAkBA,EAAEA,KAAKA;QAChCG,CAACA,CAACA,IAAIA,CAACA,iCAAiCA,GAACA,kBAAkBA,GAACA,SAASA,GAACA,KAAKA,EAAEA,UAAUA,IAAIA;YACvF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClD,CAAC,CAACA,IAAIA,CAACA,IAAIA,CAACA,EAAEA,MAAMA,CAACA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,EAAEA,MAAMA,EAAEA,KAAKA;YACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAACA,CAACA;IACPA,CAACA;IACMH,0BAAGA,GAAVA,UAAWA,kBAAkBA,EAAEA,KAAKA;QAChCI,CAACA,CAACA,IAAIA,CAACA,iCAAiCA,GAACA,kBAAkBA,GAACA,SAASA,GAACA,KAAKA,EAAEA,UAAUA,IAAIA;YACvF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAACA,IAAIA,CAACA,IAAIA,CAACA,EAAEA,MAAMA,CAACA,CAACA,IAAIA,CAACA,UAAUA,GAAGA,EAAEA,MAAMA,EAAEA,KAAKA;YACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAACA,CAACA;IACPA,CAACA;IACMJ,kCAAWA,GAAlBA,UAAmBA,KAAKA,EAAEA,SAASA,EAAEA,IAAYA;QAAZK,oBAAYA,GAAZA,YAAYA;QAE7CA,IAAIA,QAAQA,GAAGA,CAACA,CAACA,UAAUA,CAACA,CAACA;QAC7BA,QAAQA,CAACA,IAAIA,CAACA,KAAKA,CAACA,CAACA;QACrBA,EAAEA,CAAAA,CAACA,IAAIA,CAACA,KAAKA,GAAGA,CAACA,CAACA,CAACA,CAACA;YAChBA,QAAQA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA;QAC3BA,CAACA;QAACA,IAAIA,CAACA,EAAEA,CAAAA,CAACA,IAAIA,CAACA,CAACA,CAACA;YACbA,QAAQA,CAACA,KAAKA,CAACA,MAAMA,CAACA,CAACA;QAC3BA,CAACA;QACDA,IAAIA,CAACA,UAAUA,CAACA,SAASA,CAACA,CAACA;IAC/BA,CAACA;IACML,iCAAUA,GAAjBA,UAAkBA,SAASA;QACvBM,IAAIA,IAAIA,GAAGA,CAACA,CAACA,mBAAmBA,CAACA,CAACA;QAClCA,IAAIA,CAACA,IAAIA,CAACA,SAASA,CAACA,CAACA;IACzBA,CAACA;IACDN,sBAAIA,+BAAKA;aAATA;YACIO,MAAMA,CAACA,MAAMA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,CAACA,CAACA,MAAMA,CAACA;QAC3CA,CAACA;;;OAAAP;IACDA,sBAAIA,6BAAGA;aAAPA;YACIQ,IAAIA,GAAGA,GAAGA,CAACA,CAACA;YACZA,CAACA,CAACA,IAAIA,CAACA,IAAIA,CAACA,MAAMA,EAAEA,UAASA,KAAKA,EAAEA,KAAKA;gBACrC,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACrC,CAAC,CAACA,CAACA;YACHA,MAAMA,CAACA,GAAGA,CAACA;QACfA,CAACA;;;OAAAR;IACLA,mBAACA;AAADA,CAACA,AAtDD,IAsDC"}  
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(&#39;submit&#39;, &#39;#quickbuy-form&#39;, function(e) { @@ -224,4 +224,21 @@ $(document).on(&#39;submit&#39;, &#39;#quickbuy-form&#39;, 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