Commit ed038e99acbf0a27f8e11665deb4a870b31772b6
1 parent
11ecfb79
Order
Showing
9 changed files
with
139 additions
and
101 deletions
Show diff stats
controllers/BasketController.php
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | /** |
| 21 | 21 | * @var Basket $basket |
| 22 | 22 | */ |
| 23 | - $basket = \Yii::$app->basket; | |
| 23 | + $basket = \Yii::$app->get('basket'); | |
| 24 | 24 | $result = [ |
| 25 | 25 | 'basket' => $basket->getData(), |
| 26 | 26 | 'modal' => $this->getModal($basket), |
| ... | ... | @@ -28,16 +28,16 @@ |
| 28 | 28 | ]; |
| 29 | 29 | return $result; |
| 30 | 30 | } |
| 31 | - | |
| 32 | - public function actionAdd(int $product_variant_id, int $count) | |
| 31 | + | |
| 32 | + public function actionAdd(int $variant_id, int $count) | |
| 33 | 33 | { |
| 34 | 34 | $response = \Yii::$app->response; |
| 35 | 35 | $response->format = Response::FORMAT_JSON; |
| 36 | 36 | /** |
| 37 | 37 | * @var Basket $basket |
| 38 | 38 | */ |
| 39 | - $basket = \Yii::$app->basket; | |
| 40 | - $basket->add($product_variant_id, $count); | |
| 39 | + $basket = \Yii::$app->get('basket'); | |
| 40 | + $basket->add($variant_id, $count); | |
| 41 | 41 | $result = [ |
| 42 | 42 | 'basket' => $basket->getData(), |
| 43 | 43 | 'modal' => $this->getModal($basket), |
| ... | ... | @@ -45,16 +45,16 @@ |
| 45 | 45 | ]; |
| 46 | 46 | return $result; |
| 47 | 47 | } |
| 48 | - | |
| 49 | - public function actionSet(int $product_variant_id, int $count) | |
| 48 | + | |
| 49 | + public function actionSet(int $variant_id, int $count) | |
| 50 | 50 | { |
| 51 | 51 | $response = \Yii::$app->response; |
| 52 | 52 | $response->format = Response::FORMAT_JSON; |
| 53 | 53 | /** |
| 54 | 54 | * @var Basket $basket |
| 55 | 55 | */ |
| 56 | - $basket = \Yii::$app->basket; | |
| 57 | - $basket->set($product_variant_id, $count); | |
| 56 | + $basket = \Yii::$app->get('basket'); | |
| 57 | + $basket->set($variant_id, $count); | |
| 58 | 58 | $result = [ |
| 59 | 59 | 'basket' => $basket->getData(), |
| 60 | 60 | 'modal' => $this->getModal($basket), |
| ... | ... | @@ -62,10 +62,10 @@ |
| 62 | 62 | ]; |
| 63 | 63 | return $result; |
| 64 | 64 | } |
| 65 | - | |
| 66 | - public function actionRemove(int $product_variant_id) | |
| 65 | + | |
| 66 | + public function actionRemove(int $variant_id) | |
| 67 | 67 | { |
| 68 | - return $this->actionSet($product_variant_id, 0); | |
| 68 | + return $this->actionSet($variant_id, 0); | |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | 71 | public function actionTest() |
| ... | ... | @@ -73,7 +73,7 @@ |
| 73 | 73 | /** |
| 74 | 74 | * @var Basket $basket |
| 75 | 75 | */ |
| 76 | - $basket = \Yii::$app->basket; | |
| 76 | + $basket = \Yii::$app->get('basket'); | |
| 77 | 77 | $modal = $this->getModal($basket); |
| 78 | 78 | return $modal; |
| 79 | 79 | } | ... | ... |
migrations/m170503_145306_create_order_product_table.php
| ... | ... | @@ -37,7 +37,7 @@ |
| 37 | 37 | ); |
| 38 | 38 | |
| 39 | 39 | $this->addForeignKey( |
| 40 | - 'order_product_variant_id_fkey', | |
| 40 | + 'order_variant_id_fkey', | |
| 41 | 41 | 'order_product', |
| 42 | 42 | 'variant_id', |
| 43 | 43 | 'variant', |
| ... | ... | @@ -53,7 +53,7 @@ |
| 53 | 53 | public function safeDown() |
| 54 | 54 | { |
| 55 | 55 | $this->dropForeignKey('order_product_order_id_fkey', 'order_product'); |
| 56 | - $this->dropForeignKey('order_product_variant_id_fkey', 'order_product'); | |
| 56 | + $this->dropForeignKey('order_variant_id_fkey', 'order_product'); | |
| 57 | 57 | |
| 58 | 58 | $this->dropTable('order_product'); |
| 59 | 59 | } | ... | ... |
models/Delivery.php
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | namespace artbox\order\models; |
| 4 | - | |
| 4 | + | |
| 5 | + use artbox\core\behaviors\LanguageBehavior; | |
| 5 | 6 | use artbox\core\models\Language; |
| 6 | 7 | use Yii; |
| 7 | - | |
| 8 | + use yii\db\ActiveQuery; | |
| 9 | + use yii\web\Request; | |
| 10 | + | |
| 8 | 11 | /** |
| 9 | 12 | * This is the model class for table "delivery". |
| 10 | 13 | * |
| 11 | 14 | * @property integer $id |
| 12 | 15 | * @property integer $sort |
| 13 | - * @property string $value | |
| 16 | + * @property float $value | |
| 14 | 17 | * @property boolean $status |
| 15 | 18 | * @property DeliveryLang[] $deliveryLangs |
| 16 | 19 | * @property Language[] $languages |
| 17 | 20 | * @property Order[] $orders |
| 21 | + * * * From language behavior * | |
| 22 | + * @property DeliveryLang $lang | |
| 23 | + * @property DeliveryLang[] $langs | |
| 24 | + * @property DeliveryLang $objectLang | |
| 25 | + * @property string $ownerKey | |
| 26 | + * @property string $langKey | |
| 27 | + * @property DeliveryLang[] $modelLangs | |
| 28 | + * @property bool $transactionStatus | |
| 29 | + * @method string getOwnerKey() | |
| 30 | + * @method void setOwnerKey( string $value ) | |
| 31 | + * @method string getLangKey() | |
| 32 | + * @method void setLangKey( string $value ) | |
| 33 | + * @method ActiveQuery getLangs() | |
| 34 | + * @method ActiveQuery getLang( integer $language_id ) | |
| 35 | + * @method DeliveryLang[] generateLangs() | |
| 36 | + * @method void loadLangs( Request $request ) | |
| 37 | + * @method bool linkLangs() | |
| 38 | + * @method bool saveLangs() | |
| 39 | + * @method bool getTransactionStatus() | |
| 40 | + * @method bool loadWithLangs( Request $request ) | |
| 41 | + * @method bool saveWithLangs() | |
| 42 | + * * End language behavior * | |
| 43 | + * @see LanguageBehavior | |
| 18 | 44 | */ |
| 19 | 45 | class Delivery extends \yii\db\ActiveRecord |
| 20 | 46 | { |
| ... | ... | @@ -25,7 +51,7 @@ |
| 25 | 51 | { |
| 26 | 52 | return 'delivery'; |
| 27 | 53 | } |
| 28 | - | |
| 54 | + | |
| 29 | 55 | /** |
| 30 | 56 | * @inheritdoc |
| 31 | 57 | */ |
| ... | ... | @@ -46,7 +72,19 @@ |
| 46 | 72 | ], |
| 47 | 73 | ]; |
| 48 | 74 | } |
| 49 | - | |
| 75 | + | |
| 76 | + /** | |
| 77 | + * @inheritdoc | |
| 78 | + */ | |
| 79 | + public function behaviors() | |
| 80 | + { | |
| 81 | + return [ | |
| 82 | + 'language' => [ | |
| 83 | + 'class' => LanguageBehavior::className(), | |
| 84 | + ], | |
| 85 | + ]; | |
| 86 | + } | |
| 87 | + | |
| 50 | 88 | /** |
| 51 | 89 | * @inheritdoc |
| 52 | 90 | */ |
| ... | ... | @@ -59,7 +97,7 @@ |
| 59 | 97 | 'status' => Yii::t('order', 'Status'), |
| 60 | 98 | ]; |
| 61 | 99 | } |
| 62 | - | |
| 100 | + | |
| 63 | 101 | /** |
| 64 | 102 | * @return \yii\db\ActiveQuery |
| 65 | 103 | */ |
| ... | ... | @@ -67,7 +105,7 @@ |
| 67 | 105 | { |
| 68 | 106 | return $this->hasMany(DeliveryLang::className(), [ 'delivery_id' => 'id' ]); |
| 69 | 107 | } |
| 70 | - | |
| 108 | + | |
| 71 | 109 | /** |
| 72 | 110 | * @return \yii\db\ActiveQuery |
| 73 | 111 | */ |
| ... | ... | @@ -76,7 +114,7 @@ |
| 76 | 114 | return $this->hasMany(Language::className(), [ 'id' => 'language_id' ]) |
| 77 | 115 | ->viaTable('delivery_lang', [ 'delivery_id' => 'id' ]); |
| 78 | 116 | } |
| 79 | - | |
| 117 | + | |
| 80 | 118 | /** |
| 81 | 119 | * @return \yii\db\ActiveQuery |
| 82 | 120 | */ | ... | ... |
models/Order.php
| ... | ... | @@ -3,7 +3,8 @@ |
| 3 | 3 | namespace artbox\order\models; |
| 4 | 4 | |
| 5 | 5 | use Yii; |
| 6 | - | |
| 6 | + use yii\db\ActiveRecord; | |
| 7 | + | |
| 7 | 8 | /** |
| 8 | 9 | * This is the model class for table "order". |
| 9 | 10 | * |
| ... | ... | @@ -27,7 +28,7 @@ |
| 27 | 28 | * @property Payment $payment |
| 28 | 29 | * @property OrderProduct[] $orderProducts |
| 29 | 30 | */ |
| 30 | - class Order extends \yii\db\ActiveRecord | |
| 31 | + class Order extends ActiveRecord | |
| 31 | 32 | { |
| 32 | 33 | /** |
| 33 | 34 | * @inheritdoc | ... | ... |
models/Payment.php
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | namespace artbox\order\models; |
| 4 | - | |
| 4 | + | |
| 5 | + use artbox\core\behaviors\LanguageBehavior; | |
| 5 | 6 | use artbox\core\models\Language; |
| 6 | 7 | use Yii; |
| 7 | - | |
| 8 | + use yii\db\ActiveQuery; | |
| 9 | + use yii\web\Request; | |
| 10 | + | |
| 8 | 11 | /** |
| 9 | 12 | * This is the model class for table "payment". |
| 10 | 13 | * |
| ... | ... | @@ -14,6 +17,29 @@ |
| 14 | 17 | * @property Order[] $orders |
| 15 | 18 | * @property PaymentLang[] $paymentLangs |
| 16 | 19 | * @property Language[] $languages |
| 20 | + * * From language behavior * | |
| 21 | + * @property PaymentLang $lang | |
| 22 | + * @property PaymentLang[] $langs | |
| 23 | + * @property PaymentLang $objectLang | |
| 24 | + * @property string $ownerKey | |
| 25 | + * @property string $langKey | |
| 26 | + * @property PaymentLang[] $modelLangs | |
| 27 | + * @property bool $transactionStatus | |
| 28 | + * @method string getOwnerKey() | |
| 29 | + * @method void setOwnerKey( string $value ) | |
| 30 | + * @method string getLangKey() | |
| 31 | + * @method void setLangKey( string $value ) | |
| 32 | + * @method ActiveQuery getLangs() | |
| 33 | + * @method ActiveQuery getLang( integer $language_id ) | |
| 34 | + * @method PaymentLang[] generateLangs() | |
| 35 | + * @method void loadLangs( Request $request ) | |
| 36 | + * @method bool linkLangs() | |
| 37 | + * @method bool saveLangs() | |
| 38 | + * @method bool getTransactionStatus() | |
| 39 | + * @method bool loadWithLangs( Request $request ) | |
| 40 | + * @method bool saveWithLangs() | |
| 41 | + * * End language behavior * | |
| 42 | + * @see LanguageBehavior | |
| 17 | 43 | */ |
| 18 | 44 | class Payment extends \yii\db\ActiveRecord |
| 19 | 45 | { |
| ... | ... | @@ -24,7 +50,19 @@ |
| 24 | 50 | { |
| 25 | 51 | return 'payment'; |
| 26 | 52 | } |
| 27 | - | |
| 53 | + | |
| 54 | + /** | |
| 55 | + * @inheritdoc | |
| 56 | + */ | |
| 57 | + public function behaviors() | |
| 58 | + { | |
| 59 | + return [ | |
| 60 | + 'language' => [ | |
| 61 | + 'class' => LanguageBehavior::className(), | |
| 62 | + ], | |
| 63 | + ]; | |
| 64 | + } | |
| 65 | + | |
| 28 | 66 | /** |
| 29 | 67 | * @inheritdoc |
| 30 | 68 | */ |
| ... | ... | @@ -41,7 +79,7 @@ |
| 41 | 79 | ], |
| 42 | 80 | ]; |
| 43 | 81 | } |
| 44 | - | |
| 82 | + | |
| 45 | 83 | /** |
| 46 | 84 | * @inheritdoc |
| 47 | 85 | */ |
| ... | ... | @@ -53,7 +91,7 @@ |
| 53 | 91 | 'status' => Yii::t('order', 'Status'), |
| 54 | 92 | ]; |
| 55 | 93 | } |
| 56 | - | |
| 94 | + | |
| 57 | 95 | /** |
| 58 | 96 | * @return \yii\db\ActiveQuery |
| 59 | 97 | */ |
| ... | ... | @@ -61,7 +99,7 @@ |
| 61 | 99 | { |
| 62 | 100 | return $this->hasMany(Order::className(), [ 'payment_id' => 'id' ]); |
| 63 | 101 | } |
| 64 | - | |
| 102 | + | |
| 65 | 103 | /** |
| 66 | 104 | * @return \yii\db\ActiveQuery |
| 67 | 105 | */ |
| ... | ... | @@ -69,7 +107,7 @@ |
| 69 | 107 | { |
| 70 | 108 | return $this->hasMany(PaymentLang::className(), [ 'payment_id' => 'id' ]); |
| 71 | 109 | } |
| 72 | - | |
| 110 | + | |
| 73 | 111 | /** |
| 74 | 112 | * @return \yii\db\ActiveQuery |
| 75 | 113 | */ | ... | ... |
views/basket/cart.php
| 1 | 1 | <?php |
| 2 | - use yii\helpers\Url; | |
| 2 | + use yii\bootstrap\Html; | |
| 3 | 3 | use yii\web\View; |
| 4 | 4 | |
| 5 | 5 | /** |
| ... | ... | @@ -7,7 +7,21 @@ |
| 7 | 7 | * @var int $count |
| 8 | 8 | */ |
| 9 | 9 | ?> |
| 10 | -<a href="<?php echo Url::to([ 'order/basket' ]); ?>" class="basket_"> | |
| 11 | - <span class="ico_b_"><span><?php echo $count; ?></span></span> | |
| 12 | - <p><span class="name_bas"><?= \Yii::t('app', 'basket') ?></span><span class="separator_bas"><i></i></span></p> | |
| 13 | -</a> | |
| 10 | +<span class="badge"><?= $count; ?></span> | |
| 11 | +<?php | |
| 12 | + echo Html::a( | |
| 13 | + Html::tag( | |
| 14 | + 'span', | |
| 15 | + \Yii::t('app', 'ะะพัะทะธะฝะฐ'), | |
| 16 | + [ | |
| 17 | + 'class' => 'sub-title', | |
| 18 | + ] | |
| 19 | + ), | |
| 20 | + [ | |
| 21 | + '/basket/index', | |
| 22 | + ], | |
| 23 | + [ | |
| 24 | + 'class' => 'cart-item-link', | |
| 25 | + ] | |
| 26 | + ); | |
| 27 | +?> | ... | ... |
views/basket/modal_items.php
| 1 | 1 | <?php |
| 2 | 2 | use artbox\catalog\models\Variant; |
| 3 | 3 | use artbox\order\models\Basket; |
| 4 | - use yii\bootstrap\Html; | |
| 5 | - use yii\helpers\Url; | |
| 6 | 4 | use yii\web\View; |
| 7 | - use yii\widgets\ActiveForm; | |
| 8 | - | |
| 9 | 5 | /** |
| 10 | 6 | * @var View $this |
| 11 | 7 | * @var Variant[] $models |
| 12 | 8 | * @var Basket $basket |
| 13 | 9 | * @var array $data |
| 14 | 10 | */ |
| 15 | - $data = $basket->getData(); | |
| 16 | -?> | |
| 17 | -<div class="container"> | |
| 18 | - <div class="row"> | |
| 19 | - <div class="col-xs-12 col-sm-12"> | |
| 20 | - <div class="style basket-modal-bg"> | |
| 21 | - <span id="modal_close"></span> | |
| 22 | - <div class="style model-name-test"> <?= \Yii::t('app', 'you_add') ?></div> | |
| 23 | - <?php | |
| 24 | - echo $this->render( | |
| 25 | - '@frontend/views/basket/basket_table', | |
| 26 | - [ | |
| 27 | - 'models' => $models, | |
| 28 | - 'basket' => $basket, | |
| 29 | - 'data' => $data, | |
| 30 | - ] | |
| 31 | - ); | |
| 32 | - ?> | |
| 33 | - <div class="style"> | |
| 34 | - <?php | |
| 35 | - $form = ActiveForm::begin( | |
| 36 | - [ | |
| 37 | - 'id' => 'basket-modal-form', | |
| 38 | - 'method' => 'POST', | |
| 39 | - 'action' => Url::to([ 'order/basket' ]), | |
| 40 | - ] | |
| 41 | - ); | |
| 42 | - echo Html::a( | |
| 43 | - \Yii::t('app', 'ะพัะพัะผะธัั ะทะฐะบะฐะท'), | |
| 44 | - [ | |
| 45 | - 'order/basket', | |
| 46 | - ], | |
| 47 | - [ | |
| 48 | - 'class' => 'btn_link_basket', | |
| 49 | - ] | |
| 50 | - ); | |
| 51 | - ?> | |
| 52 | - <span id="modal_close-2"><?= \Yii::t('app', 'cont_buy') ?></span> | |
| 53 | - <?php | |
| 54 | - $form::end(); | |
| 55 | - ?> | |
| 56 | - </div> | |
| 57 | - </div> | |
| 58 | - </div> | |
| 59 | - </div> | |
| 60 | -</div> | ... | ... |
web/js/artbox_basket.js
| 1 | -"use strict"; | |
| 2 | -Object.defineProperty(exports, "__esModule", { value: true }); | |
| 3 | -var $ = require("jquery"); | |
| 1 | +///<reference path="node_modules/@types/jquery/index.d.ts" /> | |
| 4 | 2 | var ArtboxBasket = (function () { |
| 5 | 3 | function ArtboxBasket(settings) { |
| 6 | 4 | if (settings === void 0) { settings = {}; } |
| ... | ... | @@ -58,7 +56,7 @@ var ArtboxBasket = (function () { |
| 58 | 56 | }.bind(this)); |
| 59 | 57 | }; |
| 60 | 58 | ArtboxBasket.prototype.add = function (variant_id, count) { |
| 61 | - $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 59 | + return $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 62 | 60 | this._items = data.basket; |
| 63 | 61 | this.updateModal(data.modal, data.cart, true); |
| 64 | 62 | }.bind(this), 'json').fail(function (xhr, status, error) { |
| ... | ... | @@ -66,7 +64,7 @@ var ArtboxBasket = (function () { |
| 66 | 64 | }); |
| 67 | 65 | }; |
| 68 | 66 | ArtboxBasket.prototype.set = function (variant_id, count) { |
| 69 | - $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 67 | + return $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 70 | 68 | this._items = data.basket; |
| 71 | 69 | this.updateModal(data.modal, data.cart, true); |
| 72 | 70 | }.bind(this), 'json').fail(function (xhr, status, error) { |
| ... | ... | @@ -74,7 +72,7 @@ var ArtboxBasket = (function () { |
| 74 | 72 | }); |
| 75 | 73 | }; |
| 76 | 74 | ArtboxBasket.prototype.remove = function (variant_id) { |
| 77 | - $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) { | |
| 75 | + return $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) { | |
| 78 | 76 | this._items = data.basket; |
| 79 | 77 | this.updateModal(data.modal, data.cart, true); |
| 80 | 78 | }.bind(this), 'json').fail(function (xhr, status, error) { | ... | ... |
web/js/artbox_basket.ts
| 1 | -import * as $ from 'jquery'; | |
| 2 | - | |
| 1 | +///<reference path="node_modules/@types/jquery/index.d.ts" /> | |
| 3 | 2 | class ArtboxBasket { |
| 4 | 3 | private _items; |
| 5 | 4 | private _language; |
| ... | ... | @@ -52,8 +51,8 @@ class ArtboxBasket { |
| 52 | 51 | }.bind(this)); |
| 53 | 52 | } |
| 54 | 53 | |
| 55 | - public add(variant_id, count) { | |
| 56 | - $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 54 | + public add(variant_id, count): JQueryPromise<JQueryXHR> { | |
| 55 | + return $.post('/' + this.language + '/' + this._settings['url'] + '/add?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 57 | 56 | this._items = data.basket; |
| 58 | 57 | this.updateModal(data.modal, data.cart, true); |
| 59 | 58 | }.bind(this), 'json').fail(function (xhr, status, error) { |
| ... | ... | @@ -61,8 +60,8 @@ class ArtboxBasket { |
| 61 | 60 | }); |
| 62 | 61 | } |
| 63 | 62 | |
| 64 | - public set(variant_id, count) { | |
| 65 | - $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 63 | + public set(variant_id, count): JQueryPromise<JQueryXHR> { | |
| 64 | + return $.post('/' + this.language + '/' + this._settings['url'] + '/set?variant_id=' + variant_id + '&count=' + count, function (data) { | |
| 66 | 65 | this._items = data.basket; |
| 67 | 66 | this.updateModal(data.modal, data.cart, true); |
| 68 | 67 | }.bind(this), 'json').fail(function (xhr, status, error) { |
| ... | ... | @@ -70,8 +69,8 @@ class ArtboxBasket { |
| 70 | 69 | }); |
| 71 | 70 | } |
| 72 | 71 | |
| 73 | - public remove(variant_id) { | |
| 74 | - $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) { | |
| 72 | + public remove(variant_id): JQueryPromise<JQueryXHR> { | |
| 73 | + return $.post('/' + this.language + '/' + this._settings['url'] + '/remove?variant_id=' + variant_id, function (data) { | |
| 75 | 74 | this._items = data.basket; |
| 76 | 75 | this.updateModal(data.modal, data.cart, true); |
| 77 | 76 | }.bind(this), 'json').fail(function (xhr, status, error) { | ... | ... |