Commit 550f051a4f30fa03da64f26f1844360d10936152
1 parent
c790ef09
Karnovsky-05052016-0900
Showing
31 changed files
with
674 additions
and
85 deletions
Show diff stats
backend/controllers/BrandController.php
| @@ -9,6 +9,8 @@ use yii\web\Controller; | @@ -9,6 +9,8 @@ use yii\web\Controller; | ||
| 9 | use yii\web\NotFoundHttpException; | 9 | use yii\web\NotFoundHttpException; |
| 10 | use yii\filters\VerbFilter; | 10 | use yii\filters\VerbFilter; |
| 11 | use yii\filters\AccessControl; | 11 | use yii\filters\AccessControl; |
| 12 | +use yii\web\UploadedFile; | ||
| 13 | + | ||
| 12 | /** | 14 | /** |
| 13 | * BrandController implements the CRUD actions for Brand model. | 15 | * BrandController implements the CRUD actions for Brand model. |
| 14 | */ | 16 | */ |
| @@ -78,8 +80,14 @@ class BrandController extends Controller | @@ -78,8 +80,14 @@ class BrandController extends Controller | ||
| 78 | public function actionCreate() | 80 | public function actionCreate() |
| 79 | { | 81 | { |
| 80 | $model = new Brand(); | 82 | $model = new Brand(); |
| 81 | - if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
| 82 | - exit; | 83 | + if ($model->load(Yii::$app->request->post())) { |
| 84 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | ||
| 85 | + $model->image = $image->name; | ||
| 86 | + } | ||
| 87 | + if ($model->save() && $image) { | ||
| 88 | + $image->saveAs(Yii::getAlias('@frontend/web/images/brand/' . $image->name)); | ||
| 89 | + } | ||
| 90 | + | ||
| 83 | return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->brand_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); | 91 | return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->brand_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); |
| 84 | } else { | 92 | } else { |
| 85 | return $this->render('create', [ | 93 | return $this->render('create', [ |
| @@ -98,7 +106,14 @@ class BrandController extends Controller | @@ -98,7 +106,14 @@ class BrandController extends Controller | ||
| 98 | { | 106 | { |
| 99 | $model = $this->findModel($id); | 107 | $model = $this->findModel($id); |
| 100 | 108 | ||
| 101 | - if ($model->load(Yii::$app->request->post()) && $model->save()) { | 109 | + if ($model->load(Yii::$app->request->post())) { |
| 110 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | ||
| 111 | + $model->image = $image->name; | ||
| 112 | + } | ||
| 113 | + if ($model->save() && $image) { | ||
| 114 | + $image->saveAs(Yii::getAlias('@frontend/web/images/brand/' . $image->name)); | ||
| 115 | + } | ||
| 116 | + | ||
| 102 | return $this->redirect(['view', 'id' => $model->brand_id]); | 117 | return $this->redirect(['view', 'id' => $model->brand_id]); |
| 103 | } else { | 118 | } else { |
| 104 | return $this->render('update', [ | 119 | return $this->render('update', [ |
backend/controllers/CategoryController.php
| @@ -11,6 +11,8 @@ use yii\web\Controller; | @@ -11,6 +11,8 @@ use yii\web\Controller; | ||
| 11 | use yii\web\NotFoundHttpException; | 11 | use yii\web\NotFoundHttpException; |
| 12 | use yii\filters\VerbFilter; | 12 | use yii\filters\VerbFilter; |
| 13 | use yii\filters\AccessControl; | 13 | use yii\filters\AccessControl; |
| 14 | +use yii\web\UploadedFile; | ||
| 15 | + | ||
| 14 | /** | 16 | /** |
| 15 | * CategoryController implements the CRUD actions for Category model. | 17 | * CategoryController implements the CRUD actions for Category model. |
| 16 | */ | 18 | */ |
| @@ -81,7 +83,14 @@ class CategoryController extends Controller | @@ -81,7 +83,14 @@ class CategoryController extends Controller | ||
| 81 | { | 83 | { |
| 82 | $model = new Category(); | 84 | $model = new Category(); |
| 83 | 85 | ||
| 84 | - if ($model->load(Yii::$app->request->post()) && $model->save()) { | 86 | + if ($model->load(Yii::$app->request->post())) { |
| 87 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | ||
| 88 | + $model->image = $image->name; | ||
| 89 | + } | ||
| 90 | + if ($model->save() && $image) { | ||
| 91 | + $image->saveAs(Yii::getAlias('@frontend/web/images/category/' . $image->name)); | ||
| 92 | + } | ||
| 93 | + | ||
| 85 | return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->category_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); | 94 | return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(['view', 'id' => $model->category_id]) : $this->redirect(array_merge(['create'], Yii::$app->request->queryParams)); |
| 86 | } else { | 95 | } else { |
| 87 | if (!empty(Yii::$app->request->queryParams['parent'])) { | 96 | if (!empty(Yii::$app->request->queryParams['parent'])) { |
| @@ -104,7 +113,14 @@ class CategoryController extends Controller | @@ -104,7 +113,14 @@ class CategoryController extends Controller | ||
| 104 | { | 113 | { |
| 105 | $model = $this->findModel($id); | 114 | $model = $this->findModel($id); |
| 106 | 115 | ||
| 107 | - if ($model->load(Yii::$app->request->post()) && $model->save()) { | 116 | + if ($model->load(Yii::$app->request->post())) { |
| 117 | + if ( ($image = UploadedFile::getInstance($model, 'imageUpload')) ) { | ||
| 118 | + $model->image = $image->name; | ||
| 119 | + } | ||
| 120 | + if ($model->save() && $image) { | ||
| 121 | + $image->saveAs(Yii::getAlias('@frontend/web/images/category/' . $image->name)); | ||
| 122 | + } | ||
| 123 | + | ||
| 108 | return $this->redirect(['view', 'id' => $model->category_id]); | 124 | return $this->redirect(['view', 'id' => $model->category_id]); |
| 109 | } else { | 125 | } else { |
| 110 | return $this->render('update', [ | 126 | return $this->render('update', [ |
backend/views/brand/_form.php
| @@ -10,26 +10,27 @@ use yii\widgets\ActiveForm; | @@ -10,26 +10,27 @@ use yii\widgets\ActiveForm; | ||
| 10 | 10 | ||
| 11 | <div class="brand-form"> | 11 | <div class="brand-form"> |
| 12 | 12 | ||
| 13 | - <?php $form = ActiveForm::begin(); ?> | 13 | + <?php $form = ActiveForm::begin([ |
| 14 | + 'options' => ['enctype'=>'multipart/form-data'] | ||
| 15 | + ]); ?> | ||
| 14 | 16 | ||
| 15 | <?= $form->field($model, 'name')->textInput() ?> | 17 | <?= $form->field($model, 'name')->textInput() ?> |
| 16 | 18 | ||
| 17 | <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> | 19 | <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> |
| 18 | 20 | ||
| 19 | - <?= \common\modules\file\widgets\ImageUploader::widget([ | ||
| 20 | - 'model'=> $model, | ||
| 21 | - 'field'=>'image', | ||
| 22 | - 'size' => [ | ||
| 23 | - [ | ||
| 24 | - 'width'=>102, | ||
| 25 | - 'height'=>57, | ||
| 26 | - ] | 21 | + <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ |
| 22 | + 'options' => [ | ||
| 23 | + 'accept' => 'image/*', | ||
| 27 | ], | 24 | ], |
| 28 | - 'multi'=>false, | ||
| 29 | - 'gallery' => $model->image, | ||
| 30 | - 'name' => 'Загрузить изображение' | ||
| 31 | - ]); | ||
| 32 | - ?> | 25 | + 'pluginOptions' => [ |
| 26 | + 'allowedFileExtensions' => ['jpg','gif','png'], | ||
| 27 | + 'initialPreview' => function() use ($model) { | ||
| 28 | + if (!empty($model->imageUrl)) | ||
| 29 | + return Html::img($model->imageUrl); | ||
| 30 | + }, | ||
| 31 | + 'overwriteInitial' => false, | ||
| 32 | + ], | ||
| 33 | + ]); ?> | ||
| 33 | 34 | ||
| 34 | <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> | 35 | <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> |
| 35 | 36 |
backend/views/brand/index.php
| @@ -20,13 +20,16 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -20,13 +20,16 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 20 | </p> | 20 | </p> |
| 21 | <?= GridView::widget([ | 21 | <?= GridView::widget([ |
| 22 | 'dataProvider' => $dataProvider, | 22 | 'dataProvider' => $dataProvider, |
| 23 | -// 'filterModel' => $searchModel, | 23 | + 'filterModel' => $searchModel, |
| 24 | 'columns' => [ | 24 | 'columns' => [ |
| 25 | ['class' => 'yii\grid\SerialColumn'], | 25 | ['class' => 'yii\grid\SerialColumn'], |
| 26 | - | ||
| 27 | - 'name', | 26 | + [ |
| 27 | + 'label' => Yii::t('product', 'Brand'), | ||
| 28 | + 'value' => 'brandName.value', | ||
| 29 | + 'attribute' => 'brand_name' | ||
| 30 | + ], | ||
| 28 | 'alias', | 31 | 'alias', |
| 29 | - | 32 | + 'imageUrl:image', |
| 30 | ['class' => 'yii\grid\ActionColumn'], | 33 | ['class' => 'yii\grid\ActionColumn'], |
| 31 | ], | 34 | ], |
| 32 | ]); ?> | 35 | ]); ?> |
backend/views/brand/update.php
| @@ -7,9 +7,9 @@ use yii\helpers\Html; | @@ -7,9 +7,9 @@ use yii\helpers\Html; | ||
| 7 | 7 | ||
| 8 | $this->title = Yii::t('product', 'Update {modelClass}: ', [ | 8 | $this->title = Yii::t('product', 'Update {modelClass}: ', [ |
| 9 | 'modelClass' => 'Brand', | 9 | 'modelClass' => 'Brand', |
| 10 | -]) . ' ' . $model->brand_id; | 10 | +]) . ' ' . $model->name; |
| 11 | $this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Brands'), 'url' => ['index']]; | 11 | $this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Brands'), 'url' => ['index']]; |
| 12 | -$this->params['breadcrumbs'][] = ['label' => $model->brand_id, 'url' => ['view', 'id' => $model->brand_id]]; | 12 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->brand_id]]; |
| 13 | $this->params['breadcrumbs'][] = Yii::t('product', 'Update'); | 13 | $this->params['breadcrumbs'][] = Yii::t('product', 'Update'); |
| 14 | ?> | 14 | ?> |
| 15 | <div class="brand-update"> | 15 | <div class="brand-update"> |
backend/views/brand/view.php
| @@ -31,7 +31,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -31,7 +31,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 31 | 'brand_id', | 31 | 'brand_id', |
| 32 | 'brand_name_id', | 32 | 'brand_name_id', |
| 33 | 'alias', | 33 | 'alias', |
| 34 | - 'image', | 34 | + 'imageUrl:image', |
| 35 | 'meta_title', | 35 | 'meta_title', |
| 36 | 'meta_desc:ntext', | 36 | 'meta_desc:ntext', |
| 37 | 'meta_robots', | 37 | 'meta_robots', |
backend/views/category/_form.php
| @@ -12,18 +12,46 @@ use kartik\select2\Select2; | @@ -12,18 +12,46 @@ use kartik\select2\Select2; | ||
| 12 | 12 | ||
| 13 | <div class="category-form"> | 13 | <div class="category-form"> |
| 14 | 14 | ||
| 15 | - <?php $form = ActiveForm::begin(); ?> | 15 | + <?php $form = ActiveForm::begin([ |
| 16 | + 'options' => ['enctype'=>'multipart/form-data'] | ||
| 17 | + ]); ?> | ||
| 16 | 18 | ||
| 17 | <?= $form->field($model, 'name')->textInput() ?> | 19 | <?= $form->field($model, 'name')->textInput() ?> |
| 18 | 20 | ||
| 19 | <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> | 21 | <?= $form->field($model, 'alias')->textInput(['maxlength' => true]) ?> |
| 20 | 22 | ||
| 21 | - <?= $form->field($model, 'parent_id')->dropDownList($categories, [ | 23 | + <?php /*= $form->field($model, 'parent_id')->dropDownList($categories, [ |
| 22 | 'prompt' => Yii::t('rubrication', 'Root category'), | 24 | 'prompt' => Yii::t('rubrication', 'Root category'), |
| 23 | 'options' => [ | 25 | 'options' => [ |
| 24 | $model->category_id => ['disabled' => true] | 26 | $model->category_id => ['disabled' => true] |
| 25 | ] | 27 | ] |
| 26 | - ])->label(Yii::t('product', 'Parent category')) ?> | 28 | + ])->label(Yii::t('rubrication', 'Parent category')) */?> |
| 29 | + | ||
| 30 | + <?= $form->field($model, 'parent_id')->widget(Select2::className(), [ | ||
| 31 | + 'data' => $categories, | ||
| 32 | + 'language' => 'ru', | ||
| 33 | + 'options' => [ | ||
| 34 | + 'placeholder' => Yii::t('product', 'Parent category'), | ||
| 35 | + 'multiple' => false, | ||
| 36 | + ], | ||
| 37 | + 'pluginOptions' => [ | ||
| 38 | + 'allowClear' => true | ||
| 39 | + ], | ||
| 40 | + ] | ||
| 41 | + ) ?> | ||
| 42 | + | ||
| 43 | + <?= $form->field($model, 'product_unit_id')->widget(Select2::className(), [ | ||
| 44 | + 'data' => \yii\helpers\ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'), | ||
| 45 | + 'language' => 'ru', | ||
| 46 | + 'options' => [ | ||
| 47 | + 'placeholder' => Yii::t('product', 'Select unit'), | ||
| 48 | + 'multiple' => false, | ||
| 49 | + ], | ||
| 50 | + 'pluginOptions' => [ | ||
| 51 | + 'allowClear' => true | ||
| 52 | + ], | ||
| 53 | + ] | ||
| 54 | + ) ?> | ||
| 27 | 55 | ||
| 28 | <?php /* | 56 | <?php /* |
| 29 | <?= $form->field($model, 'group_to_category')->dropDownList( | 57 | <?= $form->field($model, 'group_to_category')->dropDownList( |
| @@ -45,20 +73,14 @@ use kartik\select2\Select2; | @@ -45,20 +73,14 @@ use kartik\select2\Select2; | ||
| 45 | ] | 73 | ] |
| 46 | ) ?> | 74 | ) ?> |
| 47 | 75 | ||
| 48 | - <?= ImageUploader::widget([ | ||
| 49 | - 'model'=> $model, | ||
| 50 | - 'field'=>'image', | ||
| 51 | - 'size' => [ | ||
| 52 | - [ | ||
| 53 | - 'width'=>340, | ||
| 54 | - 'height'=>260, | ||
| 55 | - ] | 76 | + <?= $form->field($model, 'imageUpload')->widget(\kartik\file\FileInput::classname(), [ |
| 77 | + 'options' => [ | ||
| 78 | + 'accept' => 'image/*', | ||
| 79 | + ], | ||
| 80 | + 'pluginOptions' => [ | ||
| 81 | + 'allowedFileExtensions' => ['jpg','gif','png'], | ||
| 56 | ], | 82 | ], |
| 57 | - 'multi'=>false, | ||
| 58 | - 'gallery' => $model->image, | ||
| 59 | - 'name' => 'Загрузить изображение' | ||
| 60 | - ]); | ||
| 61 | - ?> | 83 | + ]); ?> |
| 62 | 84 | ||
| 63 | <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> | 85 | <?= $form->field($model, 'meta_title')->textInput(['maxlength' => true]) ?> |
| 64 | 86 |
backend/views/category/index.php
| @@ -35,6 +35,7 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -35,6 +35,7 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 35 | // return str_repeat('-', $data->depth) .' '. $data->name; | 35 | // return str_repeat('-', $data->depth) .' '. $data->name; |
| 36 | } | 36 | } |
| 37 | ], | 37 | ], |
| 38 | +// 'imageUrl:image', | ||
| 38 | [ | 39 | [ |
| 39 | 'class' => 'yii\grid\ActionColumn', | 40 | 'class' => 'yii\grid\ActionColumn', |
| 40 | 'template' => '{view} {update} {delete} {populary}', | 41 | 'template' => '{view} {update} {delete} {populary}', |
backend/views/category/view.php
| @@ -33,10 +33,8 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -33,10 +33,8 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 33 | 'model' => $model, | 33 | 'model' => $model, |
| 34 | 'attributes' => [ | 34 | 'attributes' => [ |
| 35 | 'category_id', | 35 | 'category_id', |
| 36 | - 'parent_id', | ||
| 37 | - 'path', | ||
| 38 | - 'depth', | ||
| 39 | - 'image', | 36 | + 'parent.name', |
| 37 | + 'imageUrl:image', | ||
| 40 | 'meta_title', | 38 | 'meta_title', |
| 41 | 'meta_desc:ntext', | 39 | 'meta_desc:ntext', |
| 42 | 'meta_robots', | 40 | 'meta_robots', |
backend/views/layouts/main-sidebar.php
| @@ -33,6 +33,7 @@ use yii\widgets\Menu; | @@ -33,6 +33,7 @@ use yii\widgets\Menu; | ||
| 33 | ['label' => 'Категории', 'url' => ['/category']], | 33 | ['label' => 'Категории', 'url' => ['/category']], |
| 34 | ['label' => 'Бренды', 'url' => ['/brand']], | 34 | ['label' => 'Бренды', 'url' => ['/brand']], |
| 35 | ['label' => 'Характеристики', 'url' => ['/rubrication/tax-group']], | 35 | ['label' => 'Характеристики', 'url' => ['/rubrication/tax-group']], |
| 36 | + ['label' => 'Единицы измерения', 'url' => ['/product/product-unit']], | ||
| 36 | ['label' => 'Статистика импорта', 'url' => ['/product/manage/import-stat']], | 37 | ['label' => 'Статистика импорта', 'url' => ['/product/manage/import-stat']], |
| 37 | ] | 38 | ] |
| 38 | ], | 39 | ], |
common/modules/product/CatalogUrlManager.php
| @@ -111,6 +111,7 @@ class CatalogUrlManager implements UrlRuleInterface { | @@ -111,6 +111,7 @@ class CatalogUrlManager implements UrlRuleInterface { | ||
| 111 | $params['word'] = [$params['word']]; | 111 | $params['word'] = [$params['word']]; |
| 112 | } | 112 | } |
| 113 | $url .= 'word:'. implode(';', $params['word']); | 113 | $url .= 'word:'. implode(';', $params['word']); |
| 114 | + unset($params['word']); | ||
| 114 | } | 115 | } |
| 115 | 116 | ||
| 116 | $filter = []; | 117 | $filter = []; |
| @@ -147,6 +148,10 @@ class CatalogUrlManager implements UrlRuleInterface { | @@ -147,6 +148,10 @@ class CatalogUrlManager implements UrlRuleInterface { | ||
| 147 | $url .= 'filter:'. implode(';', $filter); | 148 | $url .= 'filter:'. implode(';', $filter); |
| 148 | } | 149 | } |
| 149 | 150 | ||
| 151 | + if (!empty($params) && ($query = http_build_query($params)) !== '') { | ||
| 152 | + $url .= '?' . $query; | ||
| 153 | + } | ||
| 154 | + | ||
| 150 | return $url; | 155 | return $url; |
| 151 | break; | 156 | break; |
| 152 | 157 | ||
| @@ -155,6 +160,11 @@ class CatalogUrlManager implements UrlRuleInterface { | @@ -155,6 +160,11 @@ class CatalogUrlManager implements UrlRuleInterface { | ||
| 155 | $product_alias = is_object($params['product']) ? $params['product']->alias : strtolower($params['product']); | 160 | $product_alias = is_object($params['product']) ? $params['product']->alias : strtolower($params['product']); |
| 156 | } | 161 | } |
| 157 | $url = 'product/'. $product_alias; | 162 | $url = 'product/'. $product_alias; |
| 163 | + | ||
| 164 | + if (!empty($params) && ($query = http_build_query($params)) !== '') { | ||
| 165 | + $url .= '?' . $query; | ||
| 166 | + } | ||
| 167 | + | ||
| 158 | return $url; | 168 | return $url; |
| 159 | break; | 169 | break; |
| 160 | } | 170 | } |
common/modules/product/controllers/ProductUnitController.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace common\modules\product\controllers; | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | +use common\modules\product\models\ProductUnit; | ||
| 7 | +use common\modules\product\models\ProductUnitSearch; | ||
| 8 | +use yii\web\Controller; | ||
| 9 | +use yii\web\NotFoundHttpException; | ||
| 10 | +use yii\filters\VerbFilter; | ||
| 11 | + | ||
| 12 | +/** | ||
| 13 | + * ProductUnitController implements the CRUD actions for ProductUnit model. | ||
| 14 | + */ | ||
| 15 | +class ProductUnitController extends Controller | ||
| 16 | +{ | ||
| 17 | + /** | ||
| 18 | + * @inheritdoc | ||
| 19 | + */ | ||
| 20 | + public function behaviors() | ||
| 21 | + { | ||
| 22 | + return [ | ||
| 23 | + 'verbs' => [ | ||
| 24 | + 'class' => VerbFilter::className(), | ||
| 25 | + 'actions' => [ | ||
| 26 | + 'delete' => ['POST'], | ||
| 27 | + ], | ||
| 28 | + ], | ||
| 29 | + ]; | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + /** | ||
| 33 | + * Lists all ProductUnit models. | ||
| 34 | + * @return mixed | ||
| 35 | + */ | ||
| 36 | + public function actionIndex() | ||
| 37 | + { | ||
| 38 | + $searchModel = new ProductUnitSearch(); | ||
| 39 | + $dataProvider = $searchModel->search(Yii::$app->request->queryParams); | ||
| 40 | + | ||
| 41 | + return $this->render('index', [ | ||
| 42 | + 'searchModel' => $searchModel, | ||
| 43 | + 'dataProvider' => $dataProvider, | ||
| 44 | + ]); | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + /** | ||
| 48 | + * Displays a single ProductUnit model. | ||
| 49 | + * @param integer $id | ||
| 50 | + * @return mixed | ||
| 51 | + */ | ||
| 52 | + public function actionView($id) | ||
| 53 | + { | ||
| 54 | + return $this->render('view', [ | ||
| 55 | + 'model' => $this->findModel($id), | ||
| 56 | + ]); | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + /** | ||
| 60 | + * Creates a new ProductUnit model. | ||
| 61 | + * If creation is successful, the browser will be redirected to the 'view' page. | ||
| 62 | + * @return mixed | ||
| 63 | + */ | ||
| 64 | + public function actionCreate() | ||
| 65 | + { | ||
| 66 | + $model = new ProductUnit(); | ||
| 67 | + | ||
| 68 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
| 69 | + return $this->redirect(['view', 'id' => $model->product_unit_id]); | ||
| 70 | + } else { | ||
| 71 | + return $this->render('create', [ | ||
| 72 | + 'model' => $model, | ||
| 73 | + ]); | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + /** | ||
| 78 | + * Updates an existing ProductUnit model. | ||
| 79 | + * If update is successful, the browser will be redirected to the 'view' page. | ||
| 80 | + * @param integer $id | ||
| 81 | + * @return mixed | ||
| 82 | + */ | ||
| 83 | + public function actionUpdate($id) | ||
| 84 | + { | ||
| 85 | + $model = $this->findModel($id); | ||
| 86 | + | ||
| 87 | + if ($model->load(Yii::$app->request->post()) && $model->save()) { | ||
| 88 | + return $this->redirect(['view', 'id' => $model->product_unit_id]); | ||
| 89 | + } else { | ||
| 90 | + return $this->render('update', [ | ||
| 91 | + 'model' => $model, | ||
| 92 | + ]); | ||
| 93 | + } | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + /** | ||
| 97 | + * Deletes an existing ProductUnit model. | ||
| 98 | + * If deletion is successful, the browser will be redirected to the 'index' page. | ||
| 99 | + * @param integer $id | ||
| 100 | + * @return mixed | ||
| 101 | + */ | ||
| 102 | + public function actionDelete($id) | ||
| 103 | + { | ||
| 104 | + $this->findModel($id)->delete(); | ||
| 105 | + | ||
| 106 | + return $this->redirect(['index']); | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + /** | ||
| 110 | + * Finds the ProductUnit model based on its primary key value. | ||
| 111 | + * If the model is not found, a 404 HTTP exception will be thrown. | ||
| 112 | + * @param integer $id | ||
| 113 | + * @return ProductUnit the loaded model | ||
| 114 | + * @throws NotFoundHttpException if the model cannot be found | ||
| 115 | + */ | ||
| 116 | + protected function findModel($id) | ||
| 117 | + { | ||
| 118 | + if (($model = ProductUnit::findOne($id)) !== null) { | ||
| 119 | + return $model; | ||
| 120 | + } else { | ||
| 121 | + throw new NotFoundHttpException('The requested page does not exist.'); | ||
| 122 | + } | ||
| 123 | + } | ||
| 124 | +} |
common/modules/product/models/Brand.php
| @@ -24,6 +24,8 @@ use Yii; | @@ -24,6 +24,8 @@ use Yii; | ||
| 24 | */ | 24 | */ |
| 25 | class Brand extends \yii\db\ActiveRecord | 25 | class Brand extends \yii\db\ActiveRecord |
| 26 | { | 26 | { |
| 27 | + public $imageUpload; | ||
| 28 | + | ||
| 27 | public function behaviors() | 29 | public function behaviors() |
| 28 | { | 30 | { |
| 29 | return [ | 31 | return [ |
| @@ -64,6 +66,8 @@ class Brand extends \yii\db\ActiveRecord | @@ -64,6 +66,8 @@ class Brand extends \yii\db\ActiveRecord | ||
| 64 | [['alias', 'name'], 'string', 'max' => 250], | 66 | [['alias', 'name'], 'string', 'max' => 250], |
| 65 | [['image', 'meta_title'], 'string', 'max' => 255], | 67 | [['image', 'meta_title'], 'string', 'max' => 255], |
| 66 | [['meta_robots'], 'string', 'max' => 50], | 68 | [['meta_robots'], 'string', 'max' => 50], |
| 69 | + [['imageUpload'], 'safe'], | ||
| 70 | + [['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'], | ||
| 67 | // [['brand_name_id'], 'exist', 'skipOnError' => true, 'targetClass' => BrandName::className(), 'targetAttribute' => ['brand_name_id' => 'brand_name_id']], | 71 | // [['brand_name_id'], 'exist', 'skipOnError' => true, 'targetClass' => BrandName::className(), 'targetAttribute' => ['brand_name_id' => 'brand_name_id']], |
| 68 | ]; | 72 | ]; |
| 69 | } | 73 | } |
| @@ -79,6 +83,7 @@ class Brand extends \yii\db\ActiveRecord | @@ -79,6 +83,7 @@ class Brand extends \yii\db\ActiveRecord | ||
| 79 | 'brand_name_id' => Yii::t('product', 'Brand Name ID'), | 83 | 'brand_name_id' => Yii::t('product', 'Brand Name ID'), |
| 80 | 'alias' => Yii::t('product', 'Alias'), | 84 | 'alias' => Yii::t('product', 'Alias'), |
| 81 | 'image' => Yii::t('product', 'Image'), | 85 | 'image' => Yii::t('product', 'Image'), |
| 86 | + 'imageUrl' => Yii::t('product', 'Image'), | ||
| 82 | 'meta_title' => Yii::t('product', 'Meta Title'), | 87 | 'meta_title' => Yii::t('product', 'Meta Title'), |
| 83 | 'meta_desc' => Yii::t('product', 'Meta Desc'), | 88 | 'meta_desc' => Yii::t('product', 'Meta Desc'), |
| 84 | 'meta_robots' => Yii::t('product', 'Meta Robots'), | 89 | 'meta_robots' => Yii::t('product', 'Meta Robots'), |
| @@ -113,4 +118,8 @@ class Brand extends \yii\db\ActiveRecord | @@ -113,4 +118,8 @@ class Brand extends \yii\db\ActiveRecord | ||
| 113 | public function getName() { | 118 | public function getName() { |
| 114 | return empty($this->brand_name_id) ? null : $this->brandName->value; | 119 | return empty($this->brand_name_id) ? null : $this->brandName->value; |
| 115 | } | 120 | } |
| 121 | + | ||
| 122 | + public function getImageUrl() { | ||
| 123 | + return empty($this->image) ? null : '/images/brand/'. $this->image; | ||
| 124 | + } | ||
| 116 | } | 125 | } |
common/modules/product/models/BrandSearch.php
| @@ -12,6 +12,7 @@ use common\modules\product\models\Brand; | @@ -12,6 +12,7 @@ use common\modules\product\models\Brand; | ||
| 12 | */ | 12 | */ |
| 13 | class BrandSearch extends Brand | 13 | class BrandSearch extends Brand |
| 14 | { | 14 | { |
| 15 | + public $brand_name; | ||
| 15 | /** | 16 | /** |
| 16 | * @inheritdoc | 17 | * @inheritdoc |
| 17 | */ | 18 | */ |
| @@ -19,7 +20,7 @@ class BrandSearch extends Brand | @@ -19,7 +20,7 @@ class BrandSearch extends Brand | ||
| 19 | { | 20 | { |
| 20 | return [ | 21 | return [ |
| 21 | [['brand_id', 'brand_name_id'], 'integer'], | 22 | [['brand_id', 'brand_name_id'], 'integer'], |
| 22 | - [['alias', 'image', 'meta_title', 'meta_desc', 'meta_robots', 'seo_text'], 'safe'], | 23 | + [['alias', 'image', 'meta_title', 'meta_desc', 'meta_robots', 'seo_text', 'brand_name'], 'safe'], |
| 23 | ]; | 24 | ]; |
| 24 | } | 25 | } |
| 25 | 26 | ||
| @@ -57,18 +58,28 @@ class BrandSearch extends Brand | @@ -57,18 +58,28 @@ class BrandSearch extends Brand | ||
| 57 | return $dataProvider; | 58 | return $dataProvider; |
| 58 | }*/ | 59 | }*/ |
| 59 | 60 | ||
| 61 | + $dataProvider->setSort([ | ||
| 62 | + 'attributes' => [ | ||
| 63 | + 'brand_name', | ||
| 64 | + 'alias' | ||
| 65 | + ] | ||
| 66 | + ]); | ||
| 67 | + | ||
| 60 | // grid filtering conditions | 68 | // grid filtering conditions |
| 61 | $query->andFilterWhere([ | 69 | $query->andFilterWhere([ |
| 62 | 'brand_id' => $this->brand_id, | 70 | 'brand_id' => $this->brand_id, |
| 63 | 'brand_name_id' => $this->brand_name_id, | 71 | 'brand_name_id' => $this->brand_name_id, |
| 64 | ]); | 72 | ]); |
| 65 | 73 | ||
| 66 | - $query->andFilterWhere(['like', 'alias', $this->alias]) | ||
| 67 | - ->andFilterWhere(['like', 'image', $this->image]) | ||
| 68 | - ->andFilterWhere(['like', 'meta_title', $this->meta_title]) | ||
| 69 | - ->andFilterWhere(['like', 'meta_desc', $this->meta_desc]) | ||
| 70 | - ->andFilterWhere(['like', 'meta_robots', $this->meta_robots]) | ||
| 71 | - ->andFilterWhere(['like', 'seo_text', $this->seo_text]); | 74 | + $query->joinWith('brandName'); |
| 75 | + | ||
| 76 | + $query->andFilterWhere(['ilike', 'alias', $this->alias]) | ||
| 77 | + ->andFilterWhere(['ilike', 'image', $this->image]) | ||
| 78 | + ->andFilterWhere(['ilike', 'meta_title', $this->meta_title]) | ||
| 79 | + ->andFilterWhere(['ilike', 'meta_desc', $this->meta_desc]) | ||
| 80 | + ->andFilterWhere(['ilike', 'meta_robots', $this->meta_robots]) | ||
| 81 | + ->andFilterWhere(['ilike', 'seo_text', $this->seo_text]) | ||
| 82 | + ->andFilterWhere(['ilike', 'brand_name.value', $this->brand_name]); | ||
| 72 | 83 | ||
| 73 | return $dataProvider; | 84 | return $dataProvider; |
| 74 | } | 85 | } |
common/modules/product/models/Category.php
| @@ -34,6 +34,8 @@ use Yii; | @@ -34,6 +34,8 @@ use Yii; | ||
| 34 | */ | 34 | */ |
| 35 | class Category extends \yii\db\ActiveRecord | 35 | class Category extends \yii\db\ActiveRecord |
| 36 | { | 36 | { |
| 37 | + public $imageUpload; | ||
| 38 | + | ||
| 37 | public function behaviors() | 39 | public function behaviors() |
| 38 | { | 40 | { |
| 39 | return [ | 41 | return [ |
| @@ -89,7 +91,8 @@ class Category extends \yii\db\ActiveRecord | @@ -89,7 +91,8 @@ class Category extends \yii\db\ActiveRecord | ||
| 89 | [['populary'], 'boolean'], | 91 | [['populary'], 'boolean'], |
| 90 | [['group_to_category', 'remote_category'], 'safe'], | 92 | [['group_to_category', 'remote_category'], 'safe'], |
| 91 | [['category_name_id'], 'exist', 'skipOnError' => true, 'targetClass' => CategoryName::className(), 'targetAttribute' => ['category_name_id' => 'category_name_id']], | 93 | [['category_name_id'], 'exist', 'skipOnError' => true, 'targetClass' => CategoryName::className(), 'targetAttribute' => ['category_name_id' => 'category_name_id']], |
| 92 | - // [['image'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, gif'], | 94 | + [['imageUpload'], 'safe'], |
| 95 | + [['imageUpload'], 'file', 'extensions' => 'jpg, gif, png'], | ||
| 93 | // [['product_unit_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductUnit::className(), 'targetAttribute' => ['product_unit_id' => 'product_unit_id']], | 96 | // [['product_unit_id'], 'exist', 'skipOnError' => true, 'targetClass' => ProductUnit::className(), 'targetAttribute' => ['product_unit_id' => 'product_unit_id']], |
| 94 | ]; | 97 | ]; |
| 95 | } | 98 | } |
| @@ -105,6 +108,7 @@ class Category extends \yii\db\ActiveRecord | @@ -105,6 +108,7 @@ class Category extends \yii\db\ActiveRecord | ||
| 105 | 'path' => Yii::t('product', 'Path'), | 108 | 'path' => Yii::t('product', 'Path'), |
| 106 | 'depth' => Yii::t('product', 'Depth'), | 109 | 'depth' => Yii::t('product', 'Depth'), |
| 107 | 'image' => Yii::t('product', 'Image'), | 110 | 'image' => Yii::t('product', 'Image'), |
| 111 | + 'imageUrl' => Yii::t('product', 'Image'), | ||
| 108 | 'meta_title' => Yii::t('product', 'Meta Title'), | 112 | 'meta_title' => Yii::t('product', 'Meta Title'), |
| 109 | 'meta_desc' => Yii::t('product', 'Meta Desc'), | 113 | 'meta_desc' => Yii::t('product', 'Meta Desc'), |
| 110 | 'meta_robots' => Yii::t('product', 'Meta Robots'), | 114 | 'meta_robots' => Yii::t('product', 'Meta Robots'), |
| @@ -117,7 +121,8 @@ class Category extends \yii\db\ActiveRecord | @@ -117,7 +121,8 @@ class Category extends \yii\db\ActiveRecord | ||
| 117 | ]; | 121 | ]; |
| 118 | } | 122 | } |
| 119 | 123 | ||
| 120 | - public static function find() { | 124 | + public static function find() |
| 125 | + { | ||
| 121 | return new CategoryQuery(get_called_class()); | 126 | return new CategoryQuery(get_called_class()); |
| 122 | } | 127 | } |
| 123 | 128 | ||
| @@ -145,28 +150,38 @@ class Category extends \yii\db\ActiveRecord | @@ -145,28 +150,38 @@ class Category extends \yii\db\ActiveRecord | ||
| 145 | return $this->hasMany(ProductCategory::className(), ['category_id' => 'category_id']); | 150 | return $this->hasMany(ProductCategory::className(), ['category_id' => 'category_id']); |
| 146 | } | 151 | } |
| 147 | 152 | ||
| 148 | - public function getTaxGroups() { | 153 | + public function getTaxGroups() |
| 154 | + { | ||
| 149 | return $this->getRelations('tax_group_to_category'); | 155 | return $this->getRelations('tax_group_to_category'); |
| 150 | } | 156 | } |
| 151 | 157 | ||
| 152 | - public function getRemote_category() { | 158 | + public function getRemote_category() |
| 159 | + { | ||
| 153 | return ArtboxTreeHelper::getArrayField($this->remote_id); | 160 | return ArtboxTreeHelper::getArrayField($this->remote_id); |
| 154 | } | 161 | } |
| 155 | 162 | ||
| 156 | - public function setRemote_category($value) { | 163 | + public function setRemote_category($value) |
| 164 | + { | ||
| 157 | if (!empty($value) && is_array($value)) { | 165 | if (!empty($value) && is_array($value)) { |
| 158 | $this->remote_id = ArtboxTreeHelper::setArrayField($value, false); | 166 | $this->remote_id = ArtboxTreeHelper::setArrayField($value, false); |
| 159 | } | 167 | } |
| 160 | } | 168 | } |
| 161 | 169 | ||
| 162 | - public function getCategoryName() { | 170 | + public function getCategoryName() |
| 171 | + { | ||
| 163 | return $this->hasOne(CategoryName::className(), ['category_name_id' => 'category_name_id']); | 172 | return $this->hasOne(CategoryName::className(), ['category_name_id' => 'category_name_id']); |
| 164 | } | 173 | } |
| 165 | 174 | ||
| 166 | - public function getName() { | 175 | + public function getName() |
| 176 | + { | ||
| 167 | return empty($this->categoryName) ? null : $this->categoryName->value; | 177 | return empty($this->categoryName) ? null : $this->categoryName->value; |
| 168 | } | 178 | } |
| 169 | 179 | ||
| 180 | + public function getImageUrl() | ||
| 181 | + { | ||
| 182 | + return empty($this->image) ? null : '/images/category/' . $this->image; | ||
| 183 | + } | ||
| 184 | + | ||
| 170 | public function beforeSave($insert) | 185 | public function beforeSave($insert) |
| 171 | { | 186 | { |
| 172 | if (parent::beforeSave($insert)) { | 187 | if (parent::beforeSave($insert)) { |
common/modules/product/models/Product.php
| @@ -19,6 +19,8 @@ use yii\db\ActiveQuery; | @@ -19,6 +19,8 @@ use yii\db\ActiveQuery; | ||
| 19 | * @property ProductVariant $variant | 19 | * @property ProductVariant $variant |
| 20 | * @property ProductImage $image | 20 | * @property ProductImage $image |
| 21 | * @property array $images | 21 | * @property array $images |
| 22 | + * @property boolean $is_top | ||
| 23 | + * @property boolean $is_new | ||
| 22 | */ | 24 | */ |
| 23 | class Product extends \yii\db\ActiveRecord | 25 | class Product extends \yii\db\ActiveRecord |
| 24 | { | 26 | { |
| @@ -69,6 +71,7 @@ class Product extends \yii\db\ActiveRecord | @@ -69,6 +71,7 @@ class Product extends \yii\db\ActiveRecord | ||
| 69 | [['categories', 'variants', 'options'], 'safe'], | 71 | [['categories', 'variants', 'options'], 'safe'], |
| 70 | // [['imagesUpload'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, gif'], | 72 | // [['imagesUpload'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg, gif'], |
| 71 | [['description', 'video'], 'safe'], | 73 | [['description', 'video'], 'safe'], |
| 74 | + [['is_top', 'is_new'], 'boolean'], | ||
| 72 | // [['product_id'], 'exist', 'skipOnError' => true, 'targetClass' => Product::className(), 'targetAttribute' => ['product_id' => 'product_id']], | 75 | // [['product_id'], 'exist', 'skipOnError' => true, 'targetClass' => Product::className(), 'targetAttribute' => ['product_id' => 'product_id']], |
| 73 | ]; | 76 | ]; |
| 74 | } | 77 | } |
| @@ -86,6 +89,11 @@ class Product extends \yii\db\ActiveRecord | @@ -86,6 +89,11 @@ class Product extends \yii\db\ActiveRecord | ||
| 86 | 'category' => Yii::t('product', 'Category'), // relation behavior field | 89 | 'category' => Yii::t('product', 'Category'), // relation behavior field |
| 87 | 'image' => Yii::t('product', 'Image'), | 90 | 'image' => Yii::t('product', 'Image'), |
| 88 | 'images' => Yii::t('product', 'Images'), | 91 | 'images' => Yii::t('product', 'Images'), |
| 92 | + 'description' => Yii::t('product', 'Description'), | ||
| 93 | + 'video' => Yii::t('product', 'Video embeded'), | ||
| 94 | + 'variants' => Yii::t('product', 'Variants'), | ||
| 95 | + 'is_top' => Yii::t('product', 'Is top'), | ||
| 96 | + 'is_new' => Yii::t('product', 'Is new'), | ||
| 89 | ]; | 97 | ]; |
| 90 | } | 98 | } |
| 91 | 99 | ||
| @@ -146,7 +154,8 @@ class Product extends \yii\db\ActiveRecord | @@ -146,7 +154,8 @@ class Product extends \yii\db\ActiveRecord | ||
| 146 | } | 154 | } |
| 147 | 155 | ||
| 148 | public function getCategories() { | 156 | public function getCategories() { |
| 149 | - return $this->getRelations('product_categories'); | 157 | + return $this->hasMany(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']); |
| 158 | +// return $this->getRelations('product_categories'); | ||
| 150 | } | 159 | } |
| 151 | 160 | ||
| 152 | public function getCategoriesNames() { | 161 | public function getCategoriesNames() { |
| @@ -158,12 +167,7 @@ class Product extends \yii\db\ActiveRecord | @@ -158,12 +167,7 @@ class Product extends \yii\db\ActiveRecord | ||
| 158 | } | 167 | } |
| 159 | 168 | ||
| 160 | public function getCategory() { | 169 | public function getCategory() { |
| 161 | - /** @var ActiveQuery $categories */ | ||
| 162 | - $categories = $this->getRelations('product_categories'); | ||
| 163 | - $count = $categories->count(); | ||
| 164 | - if ($count == 0) | ||
| 165 | - return; | ||
| 166 | - return $categories->one(); | 170 | + return $this->hasOne(Category::className(), ['category_id' => 'category_id'])->viaTable('product_category', ['product_id' => 'product_id']); |
| 167 | } | 171 | } |
| 168 | 172 | ||
| 169 | public function getOptions() { | 173 | public function getOptions() { |
common/modules/product/models/ProductSearch.php
| @@ -13,14 +13,18 @@ use yii\web\NotFoundHttpException; | @@ -13,14 +13,18 @@ use yii\web\NotFoundHttpException; | ||
| 13 | */ | 13 | */ |
| 14 | class ProductSearch extends Product | 14 | class ProductSearch extends Product |
| 15 | { | 15 | { |
| 16 | + public $brand_name; | ||
| 17 | + public $category_name; | ||
| 18 | + | ||
| 16 | /** | 19 | /** |
| 17 | * @inheritdoc | 20 | * @inheritdoc |
| 18 | */ | 21 | */ |
| 19 | public function rules() | 22 | public function rules() |
| 20 | { | 23 | { |
| 21 | return [ | 24 | return [ |
| 22 | - [['name'], 'safe'], | 25 | + [['name', 'brand_name', 'category_name'], 'safe'], |
| 23 | [['tax_brand_id', 'product_id'], 'integer'], | 26 | [['tax_brand_id', 'product_id'], 'integer'], |
| 27 | + [['is_top', 'is_new'], 'boolean'], | ||
| 24 | ]; | 28 | ]; |
| 25 | } | 29 | } |
| 26 | 30 | ||
| @@ -58,13 +62,27 @@ class ProductSearch extends Product | @@ -58,13 +62,27 @@ class ProductSearch extends Product | ||
| 58 | return $dataProvider; | 62 | return $dataProvider; |
| 59 | } | 63 | } |
| 60 | 64 | ||
| 65 | + $dataProvider->setSort([ | ||
| 66 | + 'attributes' => [ | ||
| 67 | + 'name', | ||
| 68 | + 'brand_name', | ||
| 69 | + 'category_name' | ||
| 70 | + ] | ||
| 71 | + ]); | ||
| 72 | + | ||
| 73 | + $query->joinWith(['brand', 'brand.brandNames', 'categories', 'categories.categoryNames']); | ||
| 74 | + | ||
| 61 | // grid filtering conditions | 75 | // grid filtering conditions |
| 62 | $query->andFilterWhere([ | 76 | $query->andFilterWhere([ |
| 63 | 'tax_brand_id' => $this->tax_brand_id, | 77 | 'tax_brand_id' => $this->tax_brand_id, |
| 64 | 'product_id' => $this->product_id, | 78 | 'product_id' => $this->product_id, |
| 79 | + 'is_top' => (bool)$this->is_top, | ||
| 80 | + 'is_new' => (bool)$this->is_new, | ||
| 65 | ]); | 81 | ]); |
| 66 | 82 | ||
| 67 | - $query->andFilterWhere(['like', 'name', $this->name]); | 83 | + $query->andFilterWhere(['ilike', 'name', $this->name]); |
| 84 | + $query->andFilterWhere(['ilike', 'brand_name.value', $this->brand_name]); | ||
| 85 | + $query->andFilterWhere(['ilike', 'category_name.value', $this->category_name]); | ||
| 68 | 86 | ||
| 69 | return $dataProvider; | 87 | return $dataProvider; |
| 70 | } | 88 | } |
common/modules/product/models/ProductUnitSearch.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace common\modules\product\models; | ||
| 4 | + | ||
| 5 | +use Yii; | ||
| 6 | +use yii\base\Model; | ||
| 7 | +use yii\data\ActiveDataProvider; | ||
| 8 | +use common\modules\product\models\ProductUnit; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * ProductUnitSearch represents the model behind the search form about `common\modules\product\models\ProductUnit`. | ||
| 12 | + */ | ||
| 13 | +class ProductUnitSearch extends ProductUnit | ||
| 14 | +{ | ||
| 15 | + /** | ||
| 16 | + * @inheritdoc | ||
| 17 | + */ | ||
| 18 | + public function rules() | ||
| 19 | + { | ||
| 20 | + return [ | ||
| 21 | + [['product_unit_id'], 'integer'], | ||
| 22 | + [['name', 'code'], 'safe'], | ||
| 23 | + [['is_default'], 'boolean'], | ||
| 24 | + ]; | ||
| 25 | + } | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * @inheritdoc | ||
| 29 | + */ | ||
| 30 | + public function scenarios() | ||
| 31 | + { | ||
| 32 | + // bypass scenarios() implementation in the parent class | ||
| 33 | + return Model::scenarios(); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * Creates data provider instance with search query applied | ||
| 38 | + * | ||
| 39 | + * @param array $params | ||
| 40 | + * | ||
| 41 | + * @return ActiveDataProvider | ||
| 42 | + */ | ||
| 43 | + public function search($params) | ||
| 44 | + { | ||
| 45 | + $query = ProductUnit::find(); | ||
| 46 | + | ||
| 47 | + // add conditions that should always apply here | ||
| 48 | + | ||
| 49 | + $dataProvider = new ActiveDataProvider([ | ||
| 50 | + 'query' => $query, | ||
| 51 | + ]); | ||
| 52 | + | ||
| 53 | + $this->load($params); | ||
| 54 | + | ||
| 55 | + if (!$this->validate()) { | ||
| 56 | + // uncomment the following line if you do not want to return any records when validation fails | ||
| 57 | + // $query->where('0=1'); | ||
| 58 | + return $dataProvider; | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + // grid filtering conditions | ||
| 62 | + $query->andFilterWhere([ | ||
| 63 | + 'product_unit_id' => $this->product_unit_id, | ||
| 64 | + 'is_default' => $this->is_default, | ||
| 65 | + ]); | ||
| 66 | + | ||
| 67 | + $query->andFilterWhere(['like', 'name', $this->name]) | ||
| 68 | + ->andFilterWhere(['like', 'code', $this->code]); | ||
| 69 | + | ||
| 70 | + return $dataProvider; | ||
| 71 | + } | ||
| 72 | +} |
common/modules/product/models/ProductVariant.php
| @@ -58,6 +58,7 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -58,6 +58,7 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
| 58 | 'price_old' => Yii::t('product', 'Price Old'), | 58 | 'price_old' => Yii::t('product', 'Price Old'), |
| 59 | 'stock' => Yii::t('product', 'Stock'), | 59 | 'stock' => Yii::t('product', 'Stock'), |
| 60 | 'product_unit_id' => Yii::t('product', 'Product Unit ID'), | 60 | 'product_unit_id' => Yii::t('product', 'Product Unit ID'), |
| 61 | + 'stock_caption' => Yii::t('product', 'Stock'), | ||
| 61 | ]; | 62 | ]; |
| 62 | } | 63 | } |
| 63 | 64 | ||
| @@ -77,6 +78,14 @@ class ProductVariant extends \yii\db\ActiveRecord | @@ -77,6 +78,14 @@ class ProductVariant extends \yii\db\ActiveRecord | ||
| 77 | return $this->hasOne(Product::className(), ['product_id' => 'product_id']); | 78 | return $this->hasOne(Product::className(), ['product_id' => 'product_id']); |
| 78 | } | 79 | } |
| 79 | 80 | ||
| 81 | + public function getEnabled() { | ||
| 82 | + return $this->stock !== 0; | ||
| 83 | + } | ||
| 84 | + | ||
| 85 | + public function getStock_caption() { | ||
| 86 | + return is_null($this->stock) ? '∞' : intval($this->stock); | ||
| 87 | + } | ||
| 88 | + | ||
| 80 | /** | 89 | /** |
| 81 | * @inheritdoc | 90 | * @inheritdoc |
| 82 | * @return ProductVariantQuery the active query used by this AR class. | 91 | * @return ProductVariantQuery the active query used by this AR class. |
common/modules/product/views/manage/_form.php
| @@ -22,7 +22,7 @@ use kartik\select2\Select2; | @@ -22,7 +22,7 @@ use kartik\select2\Select2; | ||
| 22 | <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> | 22 | <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> |
| 23 | 23 | ||
| 24 | <?= $form->field($model, 'description')->widget(\mihaildev\ckeditor\CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> | 24 | <?= $form->field($model, 'description')->widget(\mihaildev\ckeditor\CKEditor::className(),['editorOptions' => [ 'preset' => 'full', 'inline' => false, ], ]); ?> |
| 25 | - <?= $form->field($model, 'video')->textarea()->label('Video embeded'); ?> | 25 | + <?= $form->field($model, 'video')->textarea(); ?> |
| 26 | 26 | ||
| 27 | <?= $form->field($model, 'brand_id')->dropDownList( | 27 | <?= $form->field($model, 'brand_id')->dropDownList( |
| 28 | ArrayHelper::map(ProductHelper::getBrands()->all(), 'brand_id', 'name'), | 28 | ArrayHelper::map(ProductHelper::getBrands()->all(), 'brand_id', 'name'), |
| @@ -35,7 +35,7 @@ use kartik\select2\Select2; | @@ -35,7 +35,7 @@ use kartik\select2\Select2; | ||
| 35 | 'data' => ArtboxTreeHelper::treeMap(ProductHelper::getCategories(), 'category_id', 'name'), | 35 | 'data' => ArtboxTreeHelper::treeMap(ProductHelper::getCategories(), 'category_id', 'name'), |
| 36 | 'language' => 'ru', | 36 | 'language' => 'ru', |
| 37 | 'options' => [ | 37 | 'options' => [ |
| 38 | - 'placeholder' => 'Select a state ...', | 38 | + 'placeholder' => Yii::t('product', 'Select categories'), |
| 39 | 'multiple' => true, | 39 | 'multiple' => true, |
| 40 | ], | 40 | ], |
| 41 | 'pluginOptions' => [ | 41 | 'pluginOptions' => [ |
| @@ -62,33 +62,33 @@ use kartik\select2\Select2; | @@ -62,33 +62,33 @@ use kartik\select2\Select2; | ||
| 62 | [ | 62 | [ |
| 63 | 'name' => 'name', | 63 | 'name' => 'name', |
| 64 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | 64 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, |
| 65 | - 'title' => 'Name', | 65 | + 'title' => Yii::t('product', 'Name'), |
| 66 | ], | 66 | ], |
| 67 | [ | 67 | [ |
| 68 | 'name' => 'sku', | 68 | 'name' => 'sku', |
| 69 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | 69 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, |
| 70 | - 'title' => 'SKU', | 70 | + 'title' => Yii::t('product', 'SKU'), |
| 71 | ], | 71 | ], |
| 72 | [ | 72 | [ |
| 73 | 'name' => 'price', | 73 | 'name' => 'price', |
| 74 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | 74 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, |
| 75 | - 'title' => 'Price', | 75 | + 'title' => Yii::t('product', 'Price'), |
| 76 | ], | 76 | ], |
| 77 | [ | 77 | [ |
| 78 | 'name' => 'price_old', | 78 | 'name' => 'price_old', |
| 79 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | 79 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, |
| 80 | - 'title' => 'Old Price', | 80 | + 'title' => Yii::t('product', 'Old Price'), |
| 81 | ], | 81 | ], |
| 82 | [ | 82 | [ |
| 83 | 'name' => 'product_unit_id', | 83 | 'name' => 'product_unit_id', |
| 84 | 'type' => MultipleInputColumn::TYPE_DROPDOWN, | 84 | 'type' => MultipleInputColumn::TYPE_DROPDOWN, |
| 85 | - 'title' => 'Unit', | 85 | + 'title' => Yii::t('product', 'Unit'), |
| 86 | 'items' => ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'), | 86 | 'items' => ArrayHelper::map(\common\modules\product\models\ProductUnit::find()->all(), 'product_unit_id', 'name'), |
| 87 | ], | 87 | ], |
| 88 | [ | 88 | [ |
| 89 | 'name' => 'stock', | 89 | 'name' => 'stock', |
| 90 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, | 90 | 'type' => MultipleInputColumn::TYPE_TEXT_INPUT, |
| 91 | - 'title' => 'Stock', | 91 | + 'title' => Yii::t('product', 'Stock'), |
| 92 | 'options' => [ | 92 | 'options' => [ |
| 93 | 'placeholder' => '∞' | 93 | 'placeholder' => '∞' |
| 94 | ], | 94 | ], |
common/modules/product/views/manage/index.php
| @@ -22,12 +22,57 @@ $this->params['breadcrumbs'][] = $this->title; | @@ -22,12 +22,57 @@ $this->params['breadcrumbs'][] = $this->title; | ||
| 22 | 'filterModel' => $searchModel, | 22 | 'filterModel' => $searchModel, |
| 23 | 'columns' => [ | 23 | 'columns' => [ |
| 24 | ['class' => 'yii\grid\SerialColumn'], | 24 | ['class' => 'yii\grid\SerialColumn'], |
| 25 | - 'product_id', | 25 | +// 'product_id', |
| 26 | 'name', | 26 | 'name', |
| 27 | - 'brand.name', | ||
| 28 | - 'category.name', | 27 | + [ |
| 28 | + 'label' => Yii::t('product', 'Brand'), | ||
| 29 | + 'attribute' => 'brand_name', | ||
| 30 | + 'value' => 'brand.name', | ||
| 31 | + ], | ||
| 32 | + [ | ||
| 33 | + 'label' => Yii::t('product', 'Category'), | ||
| 34 | + 'attribute' => 'category_name', | ||
| 35 | + 'value' => 'category.name', | ||
| 36 | + ], | ||
| 37 | + 'variant.price', | ||
| 38 | + 'variant.stock_caption', | ||
| 29 | 39 | ||
| 30 | - ['class' => 'yii\grid\ActionColumn'], | 40 | + |
| 41 | + [ | ||
| 42 | + 'class' => 'yii\grid\ActionColumn', | ||
| 43 | + 'template' => '{view} {is_top} {is_new} {update} {delete}', | ||
| 44 | + 'buttons' => [ | ||
| 45 | + 'is_top' => function ($url, $model) { | ||
| 46 | + return Html::a('<span class="glyphicon glyphicon-star' . ($model->is_top ? '' : '-empty') . '"></span>', $url, [ | ||
| 47 | + 'title' => Yii::t('product', ($model->is_top ? 'Set not is top' : 'Set is top')), | ||
| 48 | + ]); | ||
| 49 | + }, | ||
| 50 | + 'is_new' => function ($url, $model) { | ||
| 51 | + return Html::a('<span class="glyphicon glyphicon-heart' . ($model->is_new ? '' : '-empty') . '"></span>', $url, [ | ||
| 52 | + 'title' => Yii::t('product', ($model->is_new ? 'Set not is new' : 'Set is new')), | ||
| 53 | + ]); | ||
| 54 | + }, | ||
| 55 | + ], | ||
| 56 | + 'urlCreator' => function ($action, $model, $key, $index) { | ||
| 57 | + switch ($action) { | ||
| 58 | + case 'is_top': | ||
| 59 | + return \yii\helpers\Url::to(['manage/is_top', 'id' => $model->product_id]); | ||
| 60 | + break; | ||
| 61 | + case 'is_new': | ||
| 62 | + return \yii\helpers\Url::to(['manage/is_new', 'id' => $model->product_id]); | ||
| 63 | + break; | ||
| 64 | + case 'view': | ||
| 65 | + return \yii\helpers\Url::to(['/catalog/product', 'id' => $model->product_id, ['target' => '_blank']]); | ||
| 66 | + break; | ||
| 67 | + case 'update': | ||
| 68 | + return \yii\helpers\Url::to(['manage/update', 'id' => $model->product_id]); | ||
| 69 | + break; | ||
| 70 | + case 'delete': | ||
| 71 | + return \yii\helpers\Url::to(['manage/delete', 'id' => $model->product_id]); | ||
| 72 | + break; | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + ], | ||
| 31 | ], | 76 | ], |
| 32 | ]); ?> | 77 | ]); ?> |
| 33 | </div> | 78 | </div> |
common/modules/product/views/product-unit/_form.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\widgets\ActiveForm; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model common\modules\product\models\ProductUnit */ | ||
| 8 | +/* @var $form yii\widgets\ActiveForm */ | ||
| 9 | +?> | ||
| 10 | + | ||
| 11 | +<div class="product-unit-form"> | ||
| 12 | + | ||
| 13 | + <?php $form = ActiveForm::begin(); ?> | ||
| 14 | + | ||
| 15 | + <?= $form->field($model, 'name')->textInput(['maxlength' => true]) ?> | ||
| 16 | + | ||
| 17 | + <?= $form->field($model, 'code')->textInput(['maxlength' => true]) ?> | ||
| 18 | + | ||
| 19 | + <?= $form->field($model, 'is_default')->checkbox() ?> | ||
| 20 | + | ||
| 21 | + <div class="form-group"> | ||
| 22 | + <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> | ||
| 23 | + </div> | ||
| 24 | + | ||
| 25 | + <?php ActiveForm::end(); ?> | ||
| 26 | + | ||
| 27 | +</div> |
common/modules/product/views/product-unit/_search.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\widgets\ActiveForm; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model common\modules\product\models\ProductUnitSearch */ | ||
| 8 | +/* @var $form yii\widgets\ActiveForm */ | ||
| 9 | +?> | ||
| 10 | + | ||
| 11 | +<div class="product-unit-search"> | ||
| 12 | + | ||
| 13 | + <?php $form = ActiveForm::begin([ | ||
| 14 | + 'action' => ['index'], | ||
| 15 | + 'method' => 'get', | ||
| 16 | + ]); ?> | ||
| 17 | + | ||
| 18 | + <?= $form->field($model, 'product_unit_id') ?> | ||
| 19 | + | ||
| 20 | + <?= $form->field($model, 'name') ?> | ||
| 21 | + | ||
| 22 | + <?= $form->field($model, 'code') ?> | ||
| 23 | + | ||
| 24 | + <?= $form->field($model, 'is_default')->checkbox() ?> | ||
| 25 | + | ||
| 26 | + <div class="form-group"> | ||
| 27 | + <?= Html::submitButton(Yii::t('product', 'Search'), ['class' => 'btn btn-primary']) ?> | ||
| 28 | + <?= Html::resetButton(Yii::t('product', 'Reset'), ['class' => 'btn btn-default']) ?> | ||
| 29 | + </div> | ||
| 30 | + | ||
| 31 | + <?php ActiveForm::end(); ?> | ||
| 32 | + | ||
| 33 | +</div> |
common/modules/product/views/product-unit/create.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model common\modules\product\models\ProductUnit */ | ||
| 8 | + | ||
| 9 | +$this->title = Yii::t('product', 'Create Product Unit'); | ||
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Product Units'), 'url' => ['index']]; | ||
| 11 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 12 | +?> | ||
| 13 | +<div class="product-unit-create"> | ||
| 14 | + | ||
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 16 | + | ||
| 17 | + <?= $this->render('_form', [ | ||
| 18 | + 'model' => $model, | ||
| 19 | + ]) ?> | ||
| 20 | + | ||
| 21 | +</div> |
common/modules/product/views/product-unit/index.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\grid\GridView; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $searchModel common\modules\product\models\ProductUnitSearch */ | ||
| 8 | +/* @var $dataProvider yii\data\ActiveDataProvider */ | ||
| 9 | + | ||
| 10 | +$this->title = Yii::t('product', 'Product Units'); | ||
| 11 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 12 | +?> | ||
| 13 | +<div class="product-unit-index"> | ||
| 14 | + | ||
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 16 | + <?php // echo $this->render('_search', ['model' => $searchModel]); ?> | ||
| 17 | + | ||
| 18 | + <p> | ||
| 19 | + <?= Html::a(Yii::t('product', 'Create Product Unit'), ['create'], ['class' => 'btn btn-success']) ?> | ||
| 20 | + </p> | ||
| 21 | + <?= GridView::widget([ | ||
| 22 | + 'dataProvider' => $dataProvider, | ||
| 23 | + 'filterModel' => $searchModel, | ||
| 24 | + 'columns' => [ | ||
| 25 | + ['class' => 'yii\grid\SerialColumn'], | ||
| 26 | + | ||
| 27 | + 'name', | ||
| 28 | + 'code:html', | ||
| 29 | + 'is_default:boolean', | ||
| 30 | + | ||
| 31 | + ['class' => 'yii\grid\ActionColumn'], | ||
| 32 | + ], | ||
| 33 | + ]); ?> | ||
| 34 | +</div> |
common/modules/product/views/product-unit/update.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | + | ||
| 5 | +/* @var $this yii\web\View */ | ||
| 6 | +/* @var $model common\modules\product\models\ProductUnit */ | ||
| 7 | + | ||
| 8 | +$this->title = Yii::t('product', 'Update {modelClass}: ', [ | ||
| 9 | + 'modelClass' => 'Product Unit', | ||
| 10 | +]) . $model->name; | ||
| 11 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Product Units'), 'url' => ['index']]; | ||
| 12 | +$this->params['breadcrumbs'][] = ['label' => $model->name, 'url' => ['view', 'id' => $model->product_unit_id]]; | ||
| 13 | +$this->params['breadcrumbs'][] = Yii::t('product', 'Update'); | ||
| 14 | +?> | ||
| 15 | +<div class="product-unit-update"> | ||
| 16 | + | ||
| 17 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 18 | + | ||
| 19 | + <?= $this->render('_form', [ | ||
| 20 | + 'model' => $model, | ||
| 21 | + ]) ?> | ||
| 22 | + | ||
| 23 | +</div> |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +use yii\helpers\Html; | ||
| 4 | +use yii\widgets\DetailView; | ||
| 5 | + | ||
| 6 | +/* @var $this yii\web\View */ | ||
| 7 | +/* @var $model common\modules\product\models\ProductUnit */ | ||
| 8 | + | ||
| 9 | +$this->title = $model->name; | ||
| 10 | +$this->params['breadcrumbs'][] = ['label' => Yii::t('product', 'Product Units'), 'url' => ['index']]; | ||
| 11 | +$this->params['breadcrumbs'][] = $this->title; | ||
| 12 | +?> | ||
| 13 | +<div class="product-unit-view"> | ||
| 14 | + | ||
| 15 | + <h1><?= Html::encode($this->title) ?></h1> | ||
| 16 | + | ||
| 17 | + <p> | ||
| 18 | + <?= Html::a(Yii::t('product', 'Update'), ['update', 'id' => $model->product_unit_id], ['class' => 'btn btn-primary']) ?> | ||
| 19 | + <?= Html::a(Yii::t('product', 'Delete'), ['delete', 'id' => $model->product_unit_id], [ | ||
| 20 | + 'class' => 'btn btn-danger', | ||
| 21 | + 'data' => [ | ||
| 22 | + 'confirm' => Yii::t('product', 'Are you sure you want to delete this item?'), | ||
| 23 | + 'method' => 'post', | ||
| 24 | + ], | ||
| 25 | + ]) ?> | ||
| 26 | + </p> | ||
| 27 | + | ||
| 28 | + <?= DetailView::widget([ | ||
| 29 | + 'model' => $model, | ||
| 30 | + 'attributes' => [ | ||
| 31 | + 'product_unit_id', | ||
| 32 | + 'name', | ||
| 33 | + 'code', | ||
| 34 | + 'is_default:boolean', | ||
| 35 | + ], | ||
| 36 | + ]) ?> | ||
| 37 | + | ||
| 38 | +</div> |
common/modules/product/widgets/views/brandsCarousel.php
| @@ -3,7 +3,7 @@ | @@ -3,7 +3,7 @@ | ||
| 3 | <div class="prods_carousel"> | 3 | <div class="prods_carousel"> |
| 4 | <ul> | 4 | <ul> |
| 5 | <?php foreach($brands as $brand) :?> | 5 | <?php foreach($brands as $brand) :?> |
| 6 | - <li><span><a href="<?= \yii\helpers\Url::to('/brands/'. $brand->alias)?>" title="<?= $brand->name?>"><img src="<?= $brand->image?>"></a></span></li> | 6 | + <li><span><a href="<?= \yii\helpers\Url::to('/brands/'. $brand->alias)?>" title="<?= $brand->name?>"><img src="<?= $brand->imageUrl?>"></a></span></li> |
| 7 | <?php endforeach?> | 7 | <?php endforeach?> |
| 8 | </ul> | 8 | </ul> |
| 9 | </div> | 9 | </div> |
common/modules/product/widgets/views/submenu.php
| @@ -12,7 +12,7 @@ | @@ -12,7 +12,7 @@ | ||
| 12 | <?php if (empty($_item->image)) :?> | 12 | <?php if (empty($_item->image)) :?> |
| 13 | <img valign="top" src="/images/no_photo.png"> | 13 | <img valign="top" src="/images/no_photo.png"> |
| 14 | <?php else :?> | 14 | <?php else :?> |
| 15 | - <img valign="top" src="<?= $_item->image?>"> | 15 | + <img valign="top" src="<?= $_item->imageUrl?>"> |
| 16 | <?php endif?> | 16 | <?php endif?> |
| 17 | </div> | 17 | </div> |
| 18 | <div class="title"><?= $_item->categoryName->value?></div> | 18 | <div class="title"><?= $_item->categoryName->value?></div> |
| @@ -34,7 +34,7 @@ | @@ -34,7 +34,7 @@ | ||
| 34 | <?php if (empty($_item['item']->image)) :?> | 34 | <?php if (empty($_item['item']->image)) :?> |
| 35 | <img valign="top" src="/images/no_photo.png"> | 35 | <img valign="top" src="/images/no_photo.png"> |
| 36 | <?php else :?> | 36 | <?php else :?> |
| 37 | - <img valign="top" src="<?= $_item['item']->image?>" alt="<?= $_item['item']->categoryName->value?>"> | 37 | + <img valign="top" src="<?= $_item['item']->imageUrl?>" alt="<?= $_item['item']->categoryName->value?>"> |
| 38 | <?php endif?> | 38 | <?php endif?> |
| 39 | </div> | 39 | </div> |
| 40 | <div class="title"><?= $_item['item']->categoryName->value?></div> | 40 | <div class="title"><?= $_item['item']->categoryName->value?></div> |
common/translation/ru/product.php
| 1 | <?php | 1 | <?php |
| 2 | return [ | 2 | return [ |
| 3 | + 'Create' => 'Создать', | ||
| 4 | + 'Create and continue' => 'Создать и продолжить', | ||
| 5 | + 'Update' => 'Изменить', | ||
| 6 | + 'Delete' => 'Удалить', | ||
| 7 | + 'Is Default' => 'По-умолчанию', | ||
| 8 | + 'Name' => 'Наименование', | ||
| 9 | + 'Code' => 'Код', | ||
| 10 | + 'Description' => 'Описание', | ||
| 11 | + 'Video embeded' => 'Встраиваемое видео', | ||
| 12 | + 'Category' => 'Категория', | ||
| 3 | 'Categories' => 'Категории', | 13 | 'Categories' => 'Категории', |
| 14 | + 'Select categories' => 'Выберите категории', | ||
| 4 | 'Create Category' => 'Создать Категорию', | 15 | 'Create Category' => 'Создать Категорию', |
| 5 | - 'Name' => 'Наименование', | 16 | + 'Product' => 'Товар', |
| 17 | + 'Products' => 'Товары', | ||
| 18 | + 'Variants' => 'Варианты', | ||
| 19 | + 'Variant' => 'Вариант', | ||
| 20 | + 'Sku' => 'Артикул', | ||
| 21 | + 'SKU' => 'Артикул', | ||
| 22 | + 'Unit' => 'Ед.измерения', | ||
| 23 | + 'Stock' => 'Остаток', | ||
| 24 | + 'Is top' => 'ТОП', | ||
| 25 | + 'Is new' => 'Новинка', | ||
| 26 | + 'Create Product' => 'Создать Товар', | ||
| 27 | + 'Price' => 'Цена', | ||
| 28 | + 'Old price' => 'Старая цена', | ||
| 6 | 'Set populary' => 'Сделать популярной', | 29 | 'Set populary' => 'Сделать популярной', |
| 7 | 'Set not populary' => 'Сделать не популярной', | 30 | 'Set not populary' => 'Сделать не популярной', |
| 8 | 'Remote ID' => 'ID в 1С', | 31 | 'Remote ID' => 'ID в 1С', |
| 9 | 'Search for "{keywords}"' => 'Поиск по "{keywords}"', | 32 | 'Search for "{keywords}"' => 'Поиск по "{keywords}"', |
| 10 | 'Search for "{keywords}" in category "{category}"' => 'Поиск по "{keywords}" в категории "{category}"', | 33 | 'Search for "{keywords}" in category "{category}"' => 'Поиск по "{keywords}" в категории "{category}"', |
| 34 | + 'Name of the brand' => 'Имя бренда', | ||
| 35 | + 'Brand' => 'Бренд', | ||
| 36 | + 'Brands' => 'Бренды', | ||
| 37 | + 'Select brand' => 'Выберите бренд', | ||
| 38 | + 'Create Brand' => 'Создать бренд', | ||
| 39 | + 'Category Name' => 'Имя категории', | ||
| 40 | + 'Alias' => 'Псевдоним', | ||
| 41 | + 'Product Units' => 'Единицы измерения', | ||
| 42 | + 'Product Unit' => 'Единица измерения', | ||
| 43 | + 'Image' => 'Изображение', | ||
| 11 | ]; | 44 | ]; |
| 12 | \ No newline at end of file | 45 | \ No newline at end of file |