From 41068668f9feea6ffb045860f9441949cd4deb45 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 14 Jul 2016 20:41:30 +0300 Subject: [PATCH] 29.06.16 --- common/modules/product/controllers/ManageController.php | 2 +- common/modules/product/controllers/VariantController.php | 39 +++++++++++++++++++++++++++++++++------ common/modules/product/models/ProductStock.php | 2 +- common/modules/product/models/ProductVariant.php | 14 +++++++++++++- common/modules/product/models/ProductVariantListSearch.php | 0 common/modules/product/models/ProductVariantOption.php | 0 common/modules/product/models/Stock.php | 1 + common/modules/product/views/variant/_form.php | 123 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------- common/modules/product/views/variant/_search.php | 0 common/modules/product/views/variant/create.php | 2 ++ common/modules/product/views/variant/index.php | 0 common/modules/product/views/variant/update.php | 1 + common/modules/product/views/variant/view.php | 0 composer.json | 4 +++- frontend/components/SeoComponent.php | 0 frontend/controllers/SiteController.php | 2 +- frontend/web/img/404.png | Bin 16575 -> 0 bytes frontend/web/sitemap.xml | 0 18 files changed, 140 insertions(+), 50 deletions(-) mode change 100644 => 100755 common/modules/product/controllers/VariantController.php mode change 100644 => 100755 common/modules/product/models/ProductVariantListSearch.php mode change 100644 => 100755 common/modules/product/models/ProductVariantOption.php mode change 100644 => 100755 common/modules/product/views/variant/_form.php mode change 100644 => 100755 common/modules/product/views/variant/_search.php mode change 100644 => 100755 common/modules/product/views/variant/create.php mode change 100644 => 100755 common/modules/product/views/variant/index.php mode change 100644 => 100755 common/modules/product/views/variant/update.php mode change 100644 => 100755 common/modules/product/views/variant/view.php mode change 100644 => 100755 frontend/components/SeoComponent.php mode change 100644 => 100755 frontend/web/img/404.png mode change 100644 => 100755 frontend/web/sitemap.xml diff --git a/common/modules/product/controllers/ManageController.php b/common/modules/product/controllers/ManageController.php index f92ab39..211d38d 100755 --- a/common/modules/product/controllers/ManageController.php +++ b/common/modules/product/controllers/ManageController.php @@ -133,7 +133,7 @@ class ManageController extends Controller return $this->redirect(['view', 'id' => $model->product_id]); } } else { - $groups = $model->category->getTaxGroups(); + $groups = $model->category-> getTaxGroupsByLevel(0); return $this->render('update', [ 'model' => $model, diff --git a/common/modules/product/controllers/VariantController.php b/common/modules/product/controllers/VariantController.php old mode 100644 new mode 100755 index 3bd3673..92bd8a5 --- a/common/modules/product/controllers/VariantController.php +++ b/common/modules/product/controllers/VariantController.php @@ -4,8 +4,10 @@ namespace common\modules\product\controllers; use common\modules\product\models\Product; use common\modules\product\models\ProductImage; +use common\modules\product\models\ProductStock; use common\modules\product\models\ProductVariant; use common\modules\product\models\ProductVariantListSearch; +use common\modules\product\models\Stock; use Yii; use yii\web\Controller; use yii\web\NotFoundHttpException; @@ -94,8 +96,12 @@ class VariantController extends Controller return $this->redirect(['index', 'product_id' => $product_id]); } } else { + $groups = $model->category->getTaxGroupsByLevel(1); + return $this->render('create', [ 'model' => $model, + 'groups' => $groups, + 'stocks' => [new ProductStock()], ]); } } @@ -112,14 +118,9 @@ class VariantController extends Controller $model = $this->findModel($id); if ($model->load(Yii::$app->request->post())) { - - - - - - if ($model->save()) { + if ( ($image = UploadedFile::getInstance($model, 'image')) ) { $imageModel = ProductImage::find()->where(['product_variant_id' => $model->product_variant_id])->one(); @@ -146,6 +147,31 @@ class VariantController extends Controller $image->saveAs(Yii::getAlias('@storage/products/' . $image->name)); } + + $ProductStocks = Yii::$app->request->post('ProductStock'); + $Stocks = Yii::$app->request->post('Stock'); + + foreach($ProductStocks as $index => $ProductStock){ + $stock = Stock::find()->where(['name'=>$Stocks[$index]['name']])->one(); + if(!$stock instanceof Stock){ + $stock = new Stock(); + $stock->name = $Stocks[$index]['name']; + $stock->save(); + } + $psModel = ProductStock::find()->where(['product_variant_id'=>$model->product_variant_id, 'stock_id' =>$stock->stock_id ]); + if(!$psModel instanceof ProductStock){ + $psModel = new ProductStock; + $psModel->load(['ProductStock'=>$ProductStock]); + $psModel->stock_id = $stock->stock_id; + $psModel->save(); + } else { + $psModel->load(['ProductStock'=>$ProductStock]); + $psModel->save(); + } + + } + + } return $this->redirect(['index', 'product_id'=>$product_id]); @@ -172,6 +198,7 @@ class VariantController extends Controller return $this->render('update', [ 'model' => $model, 'groups' => $groups, + 'stocks' => (!empty($model->variantStocks)) ? $model->variantStocks : [new ProductStock], ]); } } diff --git a/common/modules/product/models/ProductStock.php b/common/modules/product/models/ProductStock.php index 9e0ec1c..e2e15b2 100755 --- a/common/modules/product/models/ProductStock.php +++ b/common/modules/product/models/ProductStock.php @@ -47,7 +47,7 @@ class ProductStock extends \yii\db\ActiveRecord return [ 'product_id' => 'Product ID', 'stock_id' => 'Stock ID', - 'quantity' => 'Quantity', + 'quantity' => 'Количество', 'product_variant_id' => 'Product Variant ID', ]; } diff --git a/common/modules/product/models/ProductVariant.php b/common/modules/product/models/ProductVariant.php index 9534e2b..f084f64 100755 --- a/common/modules/product/models/ProductVariant.php +++ b/common/modules/product/models/ProductVariant.php @@ -37,7 +37,7 @@ class ProductVariant extends \yii\db\ActiveRecord public $translit; public $translit_rubric; private $data; - public $stocks; + /** @var array $_images */ public $imagesUpload = []; @@ -142,6 +142,18 @@ class ProductVariant extends \yii\db\ActiveRecord return is_null($this->stock) ? '∞' : ($this->stock > 0 ? Yii::t('product', 'Enable') : Yii::t('product', 'Disable')); // intval($this->stock); } + public function getVariantStocks(){ + + return $this->hasMany(ProductStock::className(),['product_variant_id'=> 'product_variant_id'])->joinWith('stock'); + } + + public function getStocks(){ + + return $this->hasMany(Stock::className(),['stock_id'=>'stock_id']) + ->viaTable(ProductStock::tableName(),['product_variant_id'=> 'product_variant_id']); + } + + public function getFilters(){ return $this->hasMany(TaxOption::className(), ['tax_option_id' => 'option_id']) diff --git a/common/modules/product/models/ProductVariantListSearch.php b/common/modules/product/models/ProductVariantListSearch.php old mode 100644 new mode 100755 index 4593951..4593951 --- a/common/modules/product/models/ProductVariantListSearch.php +++ b/common/modules/product/models/ProductVariantListSearch.php diff --git a/common/modules/product/models/ProductVariantOption.php b/common/modules/product/models/ProductVariantOption.php old mode 100644 new mode 100755 index c1d30ae..c1d30ae --- a/common/modules/product/models/ProductVariantOption.php +++ b/common/modules/product/models/ProductVariantOption.php diff --git a/common/modules/product/models/Stock.php b/common/modules/product/models/Stock.php index 0d02c32..db3e191 100755 --- a/common/modules/product/models/Stock.php +++ b/common/modules/product/models/Stock.php @@ -29,6 +29,7 @@ class Stock extends \yii\db\ActiveRecord { return [ [['name'], 'string', 'max' => 150], + [['name'], 'required'], ]; } diff --git a/common/modules/product/views/variant/_form.php b/common/modules/product/views/variant/_form.php old mode 100644 new mode 100755 index abcbf05..bd74bf5 --- a/common/modules/product/views/variant/_form.php +++ b/common/modules/product/views/variant/_form.php @@ -1,23 +1,48 @@ +/* @var $stocks common\modules\product\models\Stock */ + + +$js = ' +$(".dynamicform_wrapper").on("beforeInsert", function(e, item) { + console.log("beforeInsert"); +}); + +$(".dynamicform_wrapper").on("afterInsert", function(e, item) { + console.log("afterInsert"); +}); + +$(".dynamicform_wrapper").on("beforeDelete", function(e, item) { + if (! confirm("Are you sure you want to delete this item?")) { + return false; + } + return true; +}); +$(".dynamicform_wrapper").on("afterDelete", function(e) { + console.log("Deleted item!"); +}); + +$(".dynamicform_wrapper").on("limitReached", function(e, item) { + alert("Limit reached"); +}); +'; + +$this->registerJs($js, View::POS_END); +?>
'dynamic-form', 'options' => ['enctype' => 'multipart/form-data'] ]); ?> @@ -44,38 +69,58 @@ use kartik\select2\Select2; ], ]); ?> - field($model, 'variants')->widget(MultipleInput::className(), [ - 'columns' => [ - [ - 'name' => '', - 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, - 'title' => Yii::t('product', 'Name'), - ], - [ - 'name' => 'sku', - 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, - 'title' => Yii::t('product', 'SKU'), - ], - [ - 'name' => 'price', - 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, - 'title' => Yii::t('product', 'Price'), - ], - [ - 'name' => 'price_old', - 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, - 'title' => Yii::t('product', 'Old Price'), - ], - [ - 'name' => 'product_unit_id', - 'type' => MultipleInputColumn::TYPE_DROPDOWN, - 'title' => Yii::t('product', 'Unit'), - 'items' => ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'), - ], - + 'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_] + 'widgetBody' => '.container-items', // required: css class selector + 'widgetItem' => '.item', // required: css class + 'limit' => 10, // the maximum times, an element can be added (default 999) + 'min' => 0, // 0 or 1 (default 1) + 'insertButton' => '.add-item', // css class + 'deleteButton' => '.remove-item', // css class + 'model' => $stocks[0], + 'formId' => 'dynamic-form', + 'formFields' => [ + 'quantity', + 'name', ], - ]); - ?> + ]); ?> + +
+
+

+ Склады + +

+
+
+
+ $stock): ?> +
+
+ isNewRecord) { + echo Html::activeHiddenInput($stock, "[{$i}]stock_id"); + } + ?> +
+
+ field($stock, "[{$i}]quantity")->textInput(['maxlength' => true]) ?> +
+
+ field($stock->stock, "[{$i}]name")->textInput(['maxlength' => true]) ?> +
+
+ +
+
+
+
+ +
+
+
+ field($model, 'product_unit_id')->dropDownList( ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'), diff --git a/common/modules/product/views/variant/_search.php b/common/modules/product/views/variant/_search.php old mode 100644 new mode 100755 index 00015dc..00015dc --- a/common/modules/product/views/variant/_search.php +++ b/common/modules/product/views/variant/_search.php diff --git a/common/modules/product/views/variant/create.php b/common/modules/product/views/variant/create.php old mode 100644 new mode 100755 index e5f7902..1c3d2de --- a/common/modules/product/views/variant/create.php +++ b/common/modules/product/views/variant/create.php @@ -16,6 +16,8 @@ $this->params['breadcrumbs'][] = $this->title; render('_form', [ 'model' => $model, + 'groups' => $groups, + 'stocks' => $stocks, ]) ?>
diff --git a/common/modules/product/views/variant/index.php b/common/modules/product/views/variant/index.php old mode 100644 new mode 100755 index 4355909..4355909 --- a/common/modules/product/views/variant/index.php +++ b/common/modules/product/views/variant/index.php diff --git a/common/modules/product/views/variant/update.php b/common/modules/product/views/variant/update.php old mode 100644 new mode 100755 index a5f6e31..a146f7d --- a/common/modules/product/views/variant/update.php +++ b/common/modules/product/views/variant/update.php @@ -21,6 +21,7 @@ $this->params['breadcrumbs'][] = Yii::t('product', 'Update'); render('_form', [ 'model' => $model, 'groups' => $groups, + 'stocks' => $stocks, ]) ?> diff --git a/common/modules/product/views/variant/view.php b/common/modules/product/views/variant/view.php old mode 100644 new mode 100755 index 5eaecd8..5eaecd8 --- a/common/modules/product/views/variant/view.php +++ b/common/modules/product/views/variant/view.php diff --git a/composer.json b/composer.json index 2f74ae4..9d55521 100755 --- a/composer.json +++ b/composer.json @@ -13,6 +13,7 @@ "source": "https://github.com/yiisoft/yii2" }, "minimum-stability": "dev", + "require": { "php": ">=5.4.0", "yiisoft/yii2": ">=2.0.6", @@ -42,7 +43,8 @@ "iutbay/yii2-imagecache": "*", "yurkinx/yii2-image": "dev-master", "cics/yii2-video-embed-widget": "dev-master", - "sersid/yii2-owl-carousel-asset": "*" + "sersid/yii2-owl-carousel-asset": "*", + "wbraganca/yii2-dynamicform": "dev-master" }, "require-dev": { "yiisoft/yii2-codeception": "*", diff --git a/frontend/components/SeoComponent.php b/frontend/components/SeoComponent.php old mode 100644 new mode 100755 index 78341b1..78341b1 --- a/frontend/components/SeoComponent.php +++ b/frontend/components/SeoComponent.php diff --git a/frontend/controllers/SiteController.php b/frontend/controllers/SiteController.php index 48872a7..537f262 100755 --- a/frontend/controllers/SiteController.php +++ b/frontend/controllers/SiteController.php @@ -167,7 +167,7 @@ class SiteController extends Controller print "" . htmlspecialchars($product->category->category_id) . ""; print "" . $product->brand->name . ""; print "" . htmlspecialchars($variant->sku) . ""; - print "" . htmlspecialchars($product->name) . " "; + print "" . htmlspecialchars($product->name)." " .htmlspecialchars($variant->name). " "; print "" . htmlspecialchars($product->description) . ""; print "http://rukzachok.com.ua{$product->url}#{$variant->product_variant_id}"; print "http://rukzachok.com.ua{$variant->imageUrl}"; diff --git a/frontend/web/img/404.png b/frontend/web/img/404.png old mode 100644 new mode 100755 index d496e2e..d496e2e Binary files a/frontend/web/img/404.png and b/frontend/web/img/404.png differ diff --git a/frontend/web/sitemap.xml b/frontend/web/sitemap.xml old mode 100644 new mode 100755 index 9b8060d..9b8060d --- a/frontend/web/sitemap.xml +++ b/frontend/web/sitemap.xml -- libgit2 0.21.4