Commit 83be3cfb57df129f132aa7793949c02d1842778b

Authored by Karnovsky A
1 parent 34b5f15a

-

common/config/main.php
... ... @@ -165,6 +165,11 @@ return [
165 165 'master' => null
166 166 ],
167 167 ],
  168 + 'admin_thumb' => [
  169 + 'resize' => [
  170 + 'width' => 256,
  171 + ],
  172 + ],
168 173 ]
169 174 ],
170 175 ],
... ...
common/modules/product/controllers/ManageController.php
... ... @@ -157,12 +157,17 @@ class ManageController extends Controller
157 157 $model = $this->findModel($id);
158 158 if ($model->load(Yii::$app->request->post())) {
159 159 $model->imagesUpload = UploadedFile::getInstances($model, 'imagesUpload');
160   -
  160 + $variantImagesUpload = UploadedFile::getInstances($model, 'variants');
  161 + $model->variantImagesUpload = [];
  162 + foreach ($_POST['Product']['variants'] as $i => $variant) {
  163 + if (!empty($variant['product_variant_id'])) {
  164 + $model->variantImagesUpload[$variant['product_variant_id']] = $variantImagesUpload[$i];
  165 + }
  166 + }
161 167 if ($model->save()) {
162 168 // foreach ($model->images as $image) {
163 169 // $image->delete();
164 170 // }
165   -
166 171 if ( ($images = $model->imagesUpload()) !== FALSE) {
167 172 foreach ($images as $image) {
168 173 $imageModel = new ProductImage();
... ... @@ -172,6 +177,16 @@ class ManageController extends Controller
172 177 }
173 178 }
174 179  
  180 + if ( ($images = $model->variantImagesUpload()) !== FALSE) {
  181 + foreach ($images as $product_variant_id => $image) {
  182 + $imageModel = new ProductImage();
  183 + $imageModel->product_id = $model->product_id;
  184 + $imageModel->product_variant_id = $product_variant_id;
  185 + $imageModel->image = $image;
  186 + $imageModel->save();
  187 + }
  188 + }
  189 +
175 190 return $this->redirect(['view', 'id' => $model->product_id]);
176 191 }
177 192 } else {
... ...
common/modules/product/models/Product.php
... ... @@ -34,6 +34,7 @@ class Product extends \yii\db\ActiveRecord
34 34  
35 35 /** @var array $_images */
36 36 public $imagesUpload = [];
  37 + public $variantImagesUpload = [];
37 38 /**
38 39 * @inheritdoc
39 40 */
... ... @@ -154,7 +155,7 @@ class Product extends \yii\db\ActiveRecord
154 155 */
155 156 public function getVariants()
156 157 {
157   - return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id'])->orderBy('product_variant_id');
  158 + return $this->hasMany(ProductVariant::className(), ['product_id' => 'product_id'])->orderBy('product_variant.product_variant_id', SORT_ASC);
158 159 }
159 160  
160 161 public function setVariants($variants) {
... ... @@ -233,9 +234,9 @@ class Product extends \yii\db\ActiveRecord
233 234 $model->product_id = $this->product_id;
234 235 $model->save();
235 236 }
236   - if (!empty($todel)) {
237   - ProductVariant::deleteAll(['product_variant_id' => $todel]);
238   - }
  237 +// if (!empty($todel)) {
  238 +// ProductVariant::deleteAll(['product_variant_id' => $todel]);
  239 +// }
239 240 }
240 241  
241 242 public function beforeDelete() {
... ... @@ -244,6 +245,27 @@ class Product extends \yii\db\ActiveRecord
244 245 ProductVariant::deleteAll(['product_id' => $this->product_id]);
245 246 }
246 247  
  248 + public function variantImagesUpload()
  249 + {
  250 + if ($this->validate()) {
  251 + $images = [];
  252 + foreach ($this->variantImagesUpload as $product_variant_id => $image) {
  253 + $imageName = $image->baseName .'.'. $image->extension;
  254 + $i = 0;
  255 + while(file_exists(Yii::getAlias('@imagesDir/products/' . $imageName))) {
  256 + $i++;
  257 + $imageName = $image->baseName .'_'. $i .'.'. $image->extension;
  258 + }
  259 +
  260 + $image->saveAs(Yii::getAlias('@imagesDir/products/' .$imageName));
  261 + $images[$product_variant_id] = $imageName;
  262 + }
  263 + return $images;
  264 + } else {
  265 + return false;
  266 + }
  267 + }
  268 +
247 269 public function imagesUpload()
248 270 {
249 271 if ($this->validate()) {
... ... @@ -251,12 +273,12 @@ class Product extends \yii\db\ActiveRecord
251 273 foreach ($this->imagesUpload as $image) {
252 274 $imageName = $image->baseName .'.'. $image->extension;
253 275 $i = 0;
254   - while(file_exists(Yii::getAlias('@frontend/web/images/products/' . $imageName))) {
  276 + while(file_exists(Yii::getAlias('@imagesDir/products/' . $imageName))) {
255 277 $i++;
256 278 $imageName = $image->baseName .'_'. $i .'.'. $image->extension;
257 279 }
258 280  
259   - $image->saveAs(Yii::getAlias('@frontend/web/images/products/' .$imageName));
  281 + $image->saveAs(Yii::getAlias('@imagesDir/products/' .$imageName));
260 282 $images[] = $imageName;
261 283 }
262 284 return $images;
... ... @@ -269,7 +291,7 @@ class Product extends \yii\db\ActiveRecord
269 291 $op = [];
270 292 if ($this->images) {
271 293 foreach ($this->images as $image) {
272   - $op[] = Html::img($image->imageUrl);
  294 + $op[] = \common\components\artboximage\ArtboxImageHelper::getImage($image->imageUrl, 'admin_thumb');
273 295 }
274 296 }
275 297 return $op;
... ...
frontend/views/catalog/product.php
... ... @@ -99,10 +99,10 @@ $this->registerJs ("
99 99 <h1><?= $product->fullname ?></h1>
100 100 <div class="begin">Цветовые решения</div>
101 101 <ul class="product_mod">
102   - <?php foreach ($product->variants as $variant): ?>
  102 + <?php foreach (array_reverse($product->variants) as $variant): ?>
103 103 <?php if (!is_null($variant->stock) && empty($variant->stock)) continue;?>
104 104 <li>
105   - <a id='m<?= $variant->product_variant_id ?>' href="#"
  105 + <a id='m<?= $variant->product_variant_id ?>' href="#<?=$variant->product_variant_id ?>"
106 106 data-cost="<?= $variant->price ?>"
107 107 data-old_cost="<?= $variant->price_old ?>" data-id="<?= $variant->product_variant_id ?>" data-art="<?= $variant->sku ?>"
108 108 data-color="<?= $variant->name ?>"
... ...
frontend/views/catalog/product_item.php
... ... @@ -51,15 +51,12 @@ use yii\helpers\Url;
51 51  
52 52 <div class="mycarousel">
53 53 <ul class="jcarousel jcarousel-skin-tango">
54   - <?php foreach ($product->variants as $variant) : ?>
  54 + <?php foreach (array_reverse($product->variants) as $variant) : ?>
55 55 <?php if (!is_null($variant->stock) && empty($variant->stock)) continue;?>
56 56 <?php if (!empty($variant->image)) :?>
57 57 <li>
58   - <a href="<?= Url::to([
59   - 'catalog/product',
60   - 'product' => $product,
61   - '#' => 'm' . $variant->product_variant_id]) ?>">
62   - <?= \common\components\artboximage\ArtboxImageHelper::getImage($variant->image->imageUrl, 'product_variant')?>
  58 + <a href="<?= Url::to(['catalog/product', 'product' => $product, '#' => 'm' . $variant->product_variant_id]) ?>">
  59 + <?= \common\components\artboximage\ArtboxImageHelper::getImage($variant->imageUrl, 'product_variant')?>
63 60 </a>
64 61 </li>
65 62 <?php endif; ?>
... ...