Commit 8d168e89eb24de5e992e90079b0d138f2457ffe1
Merge remote-tracking branch 'origin/master'
Showing
6 changed files
with
102 additions
and
25 deletions
Show diff stats
models/Category.php
@@ -291,6 +291,7 @@ | @@ -291,6 +291,7 @@ | ||
291 | 'tax_option.id as tax_option_id', | 291 | 'tax_option.id as tax_option_id', |
292 | 'tax_option_lang.alias as option_alias', | 292 | 'tax_option_lang.alias as option_alias', |
293 | 'tax_group_lang.alias as group_alias', | 293 | 'tax_group_lang.alias as group_alias', |
294 | + 'tax_group_lang.title as title', | ||
294 | 'tax_option_lang.value as value', | 295 | 'tax_option_lang.value as value', |
295 | 'tax_option.sort AS tax_option_sort', | 296 | 'tax_option.sort AS tax_option_sort', |
296 | 'tax_group.sort AS tax_group_sort', | 297 | 'tax_group.sort AS tax_group_sort', |
models/Product.php
@@ -2,6 +2,7 @@ | @@ -2,6 +2,7 @@ | ||
2 | 2 | ||
3 | namespace artweb\artbox\ecommerce\models; | 3 | namespace artweb\artbox\ecommerce\models; |
4 | 4 | ||
5 | + use artweb\artbox\behaviors\SaveImgBehavior; | ||
5 | use artweb\artbox\comment\models\CommentModel; | 6 | use artweb\artbox\comment\models\CommentModel; |
6 | use artweb\artbox\comment\models\interfaces\RatingCacheInterface; | 7 | use artweb\artbox\comment\models\interfaces\RatingCacheInterface; |
7 | use artweb\artbox\ecommerce\behaviors\DefaultVariantBehavior; | 8 | use artweb\artbox\ecommerce\behaviors\DefaultVariantBehavior; |
@@ -22,6 +23,7 @@ | @@ -22,6 +23,7 @@ | ||
22 | * @property integer $brand_id | 23 | * @property integer $brand_id |
23 | * @property integer $id | 24 | * @property integer $id |
24 | * @property ProductVideo[] $videos | 25 | * @property ProductVideo[] $videos |
26 | + * @property string $size_image | ||
25 | * @property Category $category | 27 | * @property Category $category |
26 | * @property Category[] $categories | 28 | * @property Category[] $categories |
27 | * @property ProductVariant $variant | 29 | * @property ProductVariant $variant |
@@ -122,7 +124,7 @@ | @@ -122,7 +124,7 @@ | ||
122 | 'product_id' => 'id', | 124 | 'product_id' => 'id', |
123 | ], | 125 | ], |
124 | 'conditions' => [ | 126 | 'conditions' => [ |
125 | - 'product_image.product_variant_id' => null, | 127 | + 'product_image.product_variant_id' => NULL, |
126 | ], | 128 | ], |
127 | 'model' => ProductImage::className(), | 129 | 'model' => ProductImage::className(), |
128 | 'config' => [ | 130 | 'config' => [ |
@@ -140,6 +142,15 @@ | @@ -140,6 +142,15 @@ | ||
140 | 'cacheRating' => true, | 142 | 'cacheRating' => true, |
141 | 'cacheModelName' => ProductToRating::className(), | 143 | 'cacheModelName' => ProductToRating::className(), |
142 | ], | 144 | ], |
145 | + 'size_image' => [ | ||
146 | + 'class' => SaveImgBehavior::className(), | ||
147 | + 'fields' => [ | ||
148 | + [ | ||
149 | + 'name' => 'size_image', | ||
150 | + 'directory' => 'products', | ||
151 | + ], | ||
152 | + ], | ||
153 | + ], | ||
143 | ]; | 154 | ]; |
144 | } | 155 | } |
145 | 156 | ||
@@ -184,6 +195,10 @@ | @@ -184,6 +195,10 @@ | ||
184 | ], | 195 | ], |
185 | 'boolean', | 196 | 'boolean', |
186 | ], | 197 | ], |
198 | + [ | ||
199 | + [ 'size_image' ], | ||
200 | + 'string', | ||
201 | + ], | ||
187 | ]; | 202 | ]; |
188 | } | 203 | } |
189 | 204 | ||
@@ -204,6 +219,7 @@ | @@ -204,6 +219,7 @@ | ||
204 | 'is_top' => Yii::t('product', 'Is top'), | 219 | 'is_top' => Yii::t('product', 'Is top'), |
205 | 'is_new' => Yii::t('product', 'Is new'), | 220 | 'is_new' => Yii::t('product', 'Is new'), |
206 | 'is_discount' => Yii::t('product', 'Is promo'), | 221 | 'is_discount' => Yii::t('product', 'Is promo'), |
222 | + 'size_image' => Yii::t('product', 'Sizes table'), | ||
207 | ]; | 223 | ]; |
208 | } | 224 | } |
209 | 225 |
models/ProductFrontendSearch.php
@@ -161,20 +161,31 @@ | @@ -161,20 +161,31 @@ | ||
161 | * | 161 | * |
162 | * @return array | 162 | * @return array |
163 | */ | 163 | */ |
164 | - | ||
165 | - public function priceLimits($category = null) | ||
166 | - { | ||
167 | - if (!empty( $category )) { | 164 | + |
165 | + public function priceLimits($category = null, $params = []) { | ||
166 | + if (!empty($category)) { | ||
168 | /** @var ActiveQuery $query */ | 167 | /** @var ActiveQuery $query */ |
168 | +// $query = $category->getRelations('product_categories'); | ||
169 | $query = $category->getProducts(); | 169 | $query = $category->getProducts(); |
170 | } else { | 170 | } else { |
171 | $query = Product::find(); | 171 | $query = Product::find(); |
172 | } | 172 | } |
173 | $query->joinWith('variant'); | 173 | $query->joinWith('variant'); |
174 | - | 174 | + |
175 | + // Price filter fix | ||
176 | + unset($params['prices']); | ||
177 | + | ||
178 | + FilterHelper::setQueryParams($query, $params); | ||
179 | + $query->andWhere( | ||
180 | + [ | ||
181 | + '>=', | ||
182 | + ProductVariant::tableName() . '.stock', | ||
183 | + 1, | ||
184 | + ] | ||
185 | + ); | ||
175 | return [ | 186 | return [ |
176 | - 'min' => $query->min(ProductVariant::tableName() . '.price'), | ||
177 | - 'max' => $query->max(ProductVariant::tableName() . '.price'), | 187 | + 'min' => $query->min(ProductVariant::tableName() .'.price'), |
188 | + 'max' => $query->max(ProductVariant::tableName() .'.price'), | ||
178 | ]; | 189 | ]; |
179 | } | 190 | } |
180 | } | 191 | } |
181 | \ No newline at end of file | 192 | \ No newline at end of file |
models/TaxGroupSearch.php
@@ -14,6 +14,10 @@ | @@ -14,6 +14,10 @@ | ||
14 | 14 | ||
15 | public $groupName; | 15 | public $groupName; |
16 | 16 | ||
17 | + public $alias; | ||
18 | + | ||
19 | + public $description; | ||
20 | + | ||
17 | public function behaviors() | 21 | public function behaviors() |
18 | { | 22 | { |
19 | $behaviors = parent::behaviors(); | 23 | $behaviors = parent::behaviors(); |
@@ -33,6 +37,7 @@ | @@ -33,6 +37,7 @@ | ||
33 | [ | 37 | [ |
34 | 'id', | 38 | 'id', |
35 | 'level', | 39 | 'level', |
40 | + 'sort', | ||
36 | ], | 41 | ], |
37 | 'integer', | 42 | 'integer', |
38 | ], | 43 | ], |
@@ -45,6 +50,8 @@ | @@ -45,6 +50,8 @@ | ||
45 | [ | 50 | [ |
46 | [ | 51 | [ |
47 | 'groupName', | 52 | 'groupName', |
53 | + 'alias', | ||
54 | + 'description', | ||
48 | ], | 55 | ], |
49 | 'safe', | 56 | 'safe', |
50 | ], | 57 | ], |
@@ -67,7 +74,7 @@ | @@ -67,7 +74,7 @@ | ||
67 | * | 74 | * |
68 | * @return ActiveDataProvider | 75 | * @return ActiveDataProvider |
69 | */ | 76 | */ |
70 | - public function search($params, int $level = null) | 77 | + public function search($params, int $level = NULL) |
71 | { | 78 | { |
72 | $query = TaxGroup::find() | 79 | $query = TaxGroup::find() |
73 | ->joinWith('lang'); | 80 | ->joinWith('lang'); |
@@ -78,11 +85,20 @@ | @@ -78,11 +85,20 @@ | ||
78 | 'sort' => [ | 85 | 'sort' => [ |
79 | 'attributes' => [ | 86 | 'attributes' => [ |
80 | 'id', | 87 | 'id', |
88 | + 'sort', | ||
81 | 'is_filter', | 89 | 'is_filter', |
82 | - 'groupName' => [ | 90 | + 'groupName' => [ |
83 | 'asc' => [ 'tax_group_lang.title' => SORT_ASC ], | 91 | 'asc' => [ 'tax_group_lang.title' => SORT_ASC ], |
84 | 'desc' => [ 'tax_group_lang.title' => SORT_DESC ], | 92 | 'desc' => [ 'tax_group_lang.title' => SORT_DESC ], |
85 | ], | 93 | ], |
94 | + 'alias' => [ | ||
95 | + 'asc' => [ 'tax_group_lang.alias' => SORT_ASC ], | ||
96 | + 'desc' => [ 'tax_group_lang.alias' => SORT_DESC ], | ||
97 | + ], | ||
98 | + 'description' => [ | ||
99 | + 'asc' => [ 'tax_group_lang.description' => SORT_ASC ], | ||
100 | + 'desc' => [ 'tax_group_lang.description' => SORT_DESC ], | ||
101 | + ], | ||
86 | ], | 102 | ], |
87 | ], | 103 | ], |
88 | ] | 104 | ] |
@@ -105,6 +121,7 @@ | @@ -105,6 +121,7 @@ | ||
105 | 'id' => $this->id, | 121 | 'id' => $this->id, |
106 | 'is_filter' => $this->is_filter, | 122 | 'is_filter' => $this->is_filter, |
107 | 'level' => $this->level, | 123 | 'level' => $this->level, |
124 | + 'sort' => $this->sort, | ||
108 | ] | 125 | ] |
109 | ) | 126 | ) |
110 | ->andFilterWhere( | 127 | ->andFilterWhere( |
@@ -113,6 +130,20 @@ | @@ -113,6 +130,20 @@ | ||
113 | 'tax_group_lang.title', | 130 | 'tax_group_lang.title', |
114 | $this->groupName, | 131 | $this->groupName, |
115 | ] | 132 | ] |
133 | + ) | ||
134 | + ->andFilterWhere( | ||
135 | + [ | ||
136 | + 'ilike', | ||
137 | + 'tax_group_lang.alias', | ||
138 | + $this->alias, | ||
139 | + ] | ||
140 | + ) | ||
141 | + ->andFilterWhere( | ||
142 | + [ | ||
143 | + 'ilike', | ||
144 | + 'tax_group_lang.description', | ||
145 | + $this->description, | ||
146 | + ] | ||
116 | ); | 147 | ); |
117 | 148 | ||
118 | return $dataProvider; | 149 | return $dataProvider; |
views/manage/_form.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | + use artweb\artbox\components\artboximage\ArtboxImageHelper; | ||
3 | use artweb\artbox\ecommerce\models\ProductVideo; | 4 | use artweb\artbox\ecommerce\models\ProductVideo; |
4 | use artweb\artbox\language\widgets\LanguageForm; | 5 | use artweb\artbox\language\widgets\LanguageForm; |
5 | use artweb\artbox\ecommerce\models\Brand; | 6 | use artweb\artbox\ecommerce\models\Brand; |
@@ -181,6 +182,33 @@ $(".dynamicform_wrapper").on("limitReached", function(e, item) { | @@ -181,6 +182,33 @@ $(".dynamicform_wrapper").on("limitReached", function(e, item) { | ||
181 | ] | 182 | ] |
182 | ); ?> | 183 | ); ?> |
183 | 184 | ||
185 | + <?= $form->field($model, 'size_image') | ||
186 | + ->widget( | ||
187 | + \kartik\file\FileInput::className(), | ||
188 | + [ | ||
189 | + 'language' => 'ru', | ||
190 | + 'options' => [ | ||
191 | + 'accept' => 'image/*', | ||
192 | + 'multiple' => false, | ||
193 | + ], | ||
194 | + 'pluginOptions' => [ | ||
195 | + 'allowedFileExtensions' => [ | ||
196 | + 'jpg', | ||
197 | + 'gif', | ||
198 | + 'png', | ||
199 | + ], | ||
200 | + 'initialPreview' => !empty( $model->getBehavior('size_image')->imageUrl ) ? ArtboxImageHelper::getImage( | ||
201 | + $model->getBehavior('size_image')->imageUrl, | ||
202 | + 'list' | ||
203 | + ) : '', | ||
204 | + 'overwriteInitial' => true, | ||
205 | + 'showRemove' => false, | ||
206 | + 'showUpload' => false, | ||
207 | + 'previewFileType' => 'image', | ||
208 | + ], | ||
209 | + ] | ||
210 | + ); ?> | ||
211 | + | ||
184 | <?php if (!empty( $groups )) { | 212 | <?php if (!empty( $groups )) { |
185 | foreach ($groups->with('lang') | 213 | foreach ($groups->with('lang') |
186 | ->all() as $group) { | 214 | ->all() as $group) { |
views/tax-group/index.php
@@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
41 | 'filterModel' => $searchModel, | 41 | 'filterModel' => $searchModel, |
42 | 'columns' => [ | 42 | 'columns' => [ |
43 | [ 'class' => 'yii\grid\SerialColumn' ], | 43 | [ 'class' => 'yii\grid\SerialColumn' ], |
44 | - 'id', | 44 | + 'sort', |
45 | [ | 45 | [ |
46 | 'attribute' => 'is_filter', | 46 | 'attribute' => 'is_filter', |
47 | 'format' => 'boolean', | 47 | 'format' => 'boolean', |
@@ -52,22 +52,12 @@ | @@ -52,22 +52,12 @@ | ||
52 | 'value' => 'lang.title', | 52 | 'value' => 'lang.title', |
53 | ], | 53 | ], |
54 | [ | 54 | [ |
55 | - 'label' => \Yii::t('rubrication', 'Options count'), | ||
56 | - 'value' => function ($model) { | ||
57 | - /** | ||
58 | - * @var TaxGroup $model | ||
59 | - */ | ||
60 | - return count($model->options); | ||
61 | - }, | 55 | + 'attribute' => 'alias', |
56 | + 'value' => 'lang.alias' | ||
62 | ], | 57 | ], |
63 | [ | 58 | [ |
64 | - 'label' => \Yii::t('rubrication', 'Categories count'), | ||
65 | - 'value' => function ($model) { | ||
66 | - /** | ||
67 | - * @var TaxGroup $model | ||
68 | - */ | ||
69 | - return count($model->categories); | ||
70 | - }, | 59 | + 'attribute' => 'description', |
60 | + 'value' => 'lang.description' | ||
71 | ], | 61 | ], |
72 | [ | 62 | [ |
73 | 'class' => 'yii\grid\ActionColumn', | 63 | 'class' => 'yii\grid\ActionColumn', |