Commit 2ffeed3da6a52e17bb1f4a9dc71362c9060fa2e4

Authored by Yarik
1 parent 664d2171

Image delete functionality

controllers/BrandController.php
@@ -40,6 +40,7 @@ @@ -40,6 +40,7 @@
40 'update', 40 'update',
41 'view', 41 'view',
42 'delete', 42 'delete',
  43 + 'delete-image',
43 ], 44 ],
44 'allow' => true, 45 'allow' => true,
45 'roles' => [ '@' ], 46 'roles' => [ '@' ],
@@ -49,7 +50,8 @@ @@ -49,7 +50,8 @@
49 'verbs' => [ 50 'verbs' => [
50 'class' => VerbFilter::className(), 51 'class' => VerbFilter::className(),
51 'actions' => [ 52 'actions' => [
52 - 'logout' => [ 'post' ], 53 + 'logout' => [ 'post' ],
  54 + 'delete-image' => [ 'post' ],
53 ], 55 ],
54 ], 56 ],
55 ]; 57 ];
@@ -57,6 +59,7 @@ @@ -57,6 +59,7 @@
57 59
58 /** 60 /**
59 * Lists all Brand models. 61 * Lists all Brand models.
  62 + *
60 * @return mixed 63 * @return mixed
61 */ 64 */
62 public function actionIndex() 65 public function actionIndex()
@@ -64,10 +67,13 @@ @@ -64,10 +67,13 @@
64 $searchModel = new BrandSearch(); 67 $searchModel = new BrandSearch();
65 $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 68 $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
66 69
67 - return $this->render('index', [  
68 - 'searchModel' => $searchModel,  
69 - 'dataProvider' => $dataProvider,  
70 - ]); 70 + return $this->render(
  71 + 'index',
  72 + [
  73 + 'searchModel' => $searchModel,
  74 + 'dataProvider' => $dataProvider,
  75 + ]
  76 + );
71 } 77 }
72 78
73 /** 79 /**
@@ -79,33 +85,42 @@ @@ -79,33 +85,42 @@
79 */ 85 */
80 public function actionView($id) 86 public function actionView($id)
81 { 87 {
82 - return $this->render('view', [  
83 - 'model' => $this->findModel($id),  
84 - ]); 88 + return $this->render(
  89 + 'view',
  90 + [
  91 + 'model' => $this->findModel($id),
  92 + ]
  93 + );
85 } 94 }
86 95
87 /** 96 /**
88 * Creates a new Brand model. 97 * Creates a new Brand model.
89 * If creation is successful, the browser will be redirected to the 'view' page. 98 * If creation is successful, the browser will be redirected to the 'view' page.
  99 + *
90 * @return mixed 100 * @return mixed
91 */ 101 */
92 public function actionCreate() 102 public function actionCreate()
93 { 103 {
94 $model = new Brand(); 104 $model = new Brand();
95 $model->generateLangs(); 105 $model->generateLangs();
96 - if($model->load(Yii::$app->request->post())) { 106 + if ($model->load(Yii::$app->request->post())) {
97 $model->loadLangs(\Yii::$app->request); 107 $model->loadLangs(\Yii::$app->request);
98 - if($model->save() && $model->transactionStatus) {  
99 - return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect([  
100 - 'view',  
101 - 'id' => $model->id,  
102 - ]) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams)); 108 + if ($model->save() && $model->transactionStatus) {
  109 + return is_null(Yii::$app->request->post('create_and_new')) ? $this->redirect(
  110 + [
  111 + 'view',
  112 + 'id' => $model->id,
  113 + ]
  114 + ) : $this->redirect(array_merge([ 'create' ], Yii::$app->request->queryParams));
103 } 115 }
104 } 116 }
105 - return $this->render('create', [  
106 - 'model' => $model,  
107 - 'modelLangs' => $model->modelLangs,  
108 - ]); 117 + return $this->render(
  118 + 'create',
  119 + [
  120 + 'model' => $model,
  121 + 'modelLangs' => $model->modelLangs,
  122 + ]
  123 + );
109 } 124 }
110 125
111 /** 126 /**
@@ -121,19 +136,24 @@ @@ -121,19 +136,24 @@
121 $model = $this->findModel($id); 136 $model = $this->findModel($id);
122 $model->generateLangs(); 137 $model->generateLangs();
123 138
124 - if($model->load(Yii::$app->request->post())) { 139 + if ($model->load(Yii::$app->request->post())) {
125 $model->loadLangs(\Yii::$app->request); 140 $model->loadLangs(\Yii::$app->request);
126 - if($model->save() && $model->transactionStatus) {  
127 - return $this->redirect([  
128 - 'view',  
129 - 'id' => $model->id,  
130 - ]); 141 + if ($model->save() && $model->transactionStatus) {
  142 + return $this->redirect(
  143 + [
  144 + 'view',
  145 + 'id' => $model->id,
  146 + ]
  147 + );
131 } 148 }
132 } 149 }
133 - return $this->render('update', [  
134 - 'model' => $model,  
135 - 'modelLangs' => $model->modelLangs,  
136 - ]); 150 + return $this->render(
  151 + 'update',
  152 + [
  153 + 'model' => $model,
  154 + 'modelLangs' => $model->modelLangs,
  155 + ]
  156 + );
137 } 157 }
138 158
139 /** 159 /**
@@ -152,6 +172,14 @@ @@ -152,6 +172,14 @@
152 return $this->redirect([ 'index' ]); 172 return $this->redirect([ 'index' ]);
153 } 173 }
154 174
  175 + public function actionDeleteImage($id)
  176 + {
  177 + $model = $this->findModel($id);
  178 + $model->image = null;
  179 + $model->updateAttributes(['image']);
  180 + return true;
  181 + }
  182 +
155 /** 183 /**
156 * Finds the Brand model based on its primary key value. 184 * Finds the Brand model based on its primary key value.
157 * If the model is not found, a 404 HTTP exception will be thrown. 185 * If the model is not found, a 404 HTTP exception will be thrown.
@@ -163,7 +191,11 @@ @@ -163,7 +191,11 @@
163 */ 191 */
164 protected function findModel($id) 192 protected function findModel($id)
165 { 193 {
166 - if(( $model = Brand::find()->with('lang')->where(['id' => $id])->one() ) !== NULL) { 194 + if (( $model = Brand::find()
  195 + ->with('lang')
  196 + ->where([ 'id' => $id ])
  197 + ->one() ) !== null
  198 + ) {
167 return $model; 199 return $model;
168 } else { 200 } else {
169 throw new NotFoundHttpException('The requested page does not exist.'); 201 throw new NotFoundHttpException('The requested page does not exist.');
controllers/CategoryController.php
@@ -210,6 +210,22 @@ @@ -210,6 +210,22 @@
210 210
211 return $this->redirect([ 'index' ]); 211 return $this->redirect([ 'index' ]);
212 } 212 }
  213 +
  214 + public function actionDeleteImage($id)
  215 + {
  216 + $model = $this->findModel($id);
  217 + $model->image = null;
  218 + $model->updateAttributes(['image']);
  219 + return true;
  220 + }
  221 +
  222 + public function actionDeleteIcon($id)
  223 + {
  224 + $model = $this->findModel($id);
  225 + $model->icon = null;
  226 + $model->updateAttributes(['icon']);
  227 + return true;
  228 + }
213 229
214 /** 230 /**
215 * Finds the Category model based on its primary key value. 231 * Finds the Category model based on its primary key value.
controllers/ManageController.php
@@ -123,6 +123,7 @@ @@ -123,6 +123,7 @@
123 [ 123 [
124 'model' => $model, 124 'model' => $model,
125 'modelLangs' => $model->modelLangs, 125 'modelLangs' => $model->modelLangs,
  126 + 'videos' => !empty( $model->videos ) ? $model->videos : [ new ProductVideo() ],
126 ] 127 ]
127 ); 128 );
128 } 129 }
@@ -409,6 +410,14 @@ @@ -409,6 +410,14 @@
409 ] 410 ]
410 ); 411 );
411 } 412 }
  413 +
  414 + public function actionDeleteSize($id)
  415 + {
  416 + $model = $this->findModel($id);
  417 + $model->size_image = null;
  418 + $model->updateAttributes(['size_image']);
  419 + return true;
  420 + }
412 421
413 /** 422 /**
414 * Finds the Product model based on its primary key value. 423 * Finds the Product model based on its primary key value.
controllers/TaxOptionController.php
@@ -156,6 +156,14 @@ @@ -156,6 +156,14 @@
156 ] 156 ]
157 ); 157 );
158 } 158 }
  159 +
  160 + public function actionDeleteImage($id)
  161 + {
  162 + $model = $this->findModel($id);
  163 + $model->image = null;
  164 + $model->updateAttributes(['image']);
  165 + return true;
  166 + }
159 167
160 /** 168 /**
161 * Finds the TaxOption model based on its primary key value. 169 * Finds the TaxOption model based on its primary key value.
views/brand/_form.php
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 use artweb\artbox\ecommerce\models\Brand; 5 use artweb\artbox\ecommerce\models\Brand;
6 use artweb\artbox\ecommerce\models\BrandLang; 6 use artweb\artbox\ecommerce\models\BrandLang;
7 use yii\helpers\Html; 7 use yii\helpers\Html;
  8 + use yii\helpers\Url;
8 use yii\web\View; 9 use yii\web\View;
9 use yii\widgets\ActiveForm; 10 use yii\widgets\ActiveForm;
10 11
@@ -18,47 +19,77 @@ @@ -18,47 +19,77 @@
18 19
19 <div class="brand-form"> 20 <div class="brand-form">
20 21
21 - <?php $form = ActiveForm::begin([  
22 - 'enableClientValidation' => false,  
23 - 'options' => [ 'enctype' => 'multipart/form-data' ],  
24 - ]); ?> 22 + <?php $form = ActiveForm::begin(
  23 + [
  24 + 'enableClientValidation' => false,
  25 + 'options' => [ 'enctype' => 'multipart/form-data' ],
  26 + ]
  27 + ); ?>
25 28
26 <?= $form->field($model, 'image') 29 <?= $form->field($model, 'image')
27 - ->widget(\kartik\file\FileInput::className(), [  
28 - 'language' => 'ru',  
29 - 'options' => [  
30 - 'accept' => 'image/*',  
31 - 'multiple' => false,  
32 - ],  
33 - 'pluginOptions' => [  
34 - 'allowedFileExtensions' => [  
35 - 'jpg',  
36 - 'gif',  
37 - 'png', 30 + ->widget(
  31 + \kartik\file\FileInput::className(),
  32 + [
  33 + 'language' => 'ru',
  34 + 'options' => [
  35 + 'accept' => 'image/*',
  36 + 'multiple' => false,
  37 + 'deleteurl' => $model->isNewRecord?false:Url::to(['/ecommerce/brand/delete-image', 'id' => $model->id]),
  38 + 'class' => $model->isNewRecord?'':'artbox-delete-file',
38 ], 39 ],
39 - 'initialPreview' => !empty( $model->imageUrl ) ? ArtboxImageHelper::getImage($model->imageUrl, 'list') : '',  
40 - 'overwriteInitial' => true,  
41 - 'showRemove' => false,  
42 - 'showUpload' => false,  
43 - 'previewFileType' => 'image',  
44 - ],  
45 - ]); ?> 40 + 'pluginOptions' => [
  41 + 'allowedFileExtensions' => [
  42 + 'jpg',
  43 + 'gif',
  44 + 'png',
  45 + ],
  46 + 'initialPreview' => !empty( $model->getImageUrl(
  47 + 0,
  48 + false
  49 + ) ) ? ArtboxImageHelper::getImage(
  50 + $model->imageUrl,
  51 + 'list',
  52 + []
  53 + ) : '',
  54 + 'initialPreviewShowDelete' => false,
  55 + 'overwriteInitial' => true,
  56 + 'showRemove' => true,
  57 + 'showUpload' => false,
  58 + 'showClose' => false,
  59 + 'previewFileType' => 'image',
  60 + ],
  61 + ]
  62 + ); ?>
46 63
47 - <?= $form->field($model, 'in_menu')->dropDownList([\Yii::t('product', 'No'), \Yii::t('product', 'Yes')]); ?> 64 + <?= $form->field($model, 'in_menu')
  65 + ->dropDownList(
  66 + [
  67 + \Yii::t('product', 'No'),
  68 + \Yii::t('product', 'Yes'),
  69 + ]
  70 + ); ?>
48 71
49 - <?= LanguageForm::widget([  
50 - 'modelLangs' => $modelLangs,  
51 - 'formView' => '@artweb/artbox/ecommerce/views/brand/_form_language',  
52 - 'form' => $form,  
53 - ]) ?> 72 + <?= LanguageForm::widget(
  73 + [
  74 + 'modelLangs' => $modelLangs,
  75 + 'formView' => '@artweb/artbox/ecommerce/views/brand/_form_language',
  76 + 'form' => $form,
  77 + ]
  78 + ) ?>
54 79
55 <div class="form-group"> 80 <div class="form-group">
56 - <?= Html::submitButton($model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'), [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]) ?>  
57 - <?php if($model->isNewRecord) : ?>  
58 - <?= Html::submitButton(Yii::t('product', 'Create and continue'), [  
59 - 'name' => 'create_and_new',  
60 - 'class' => 'btn btn-primary',  
61 - ]) ?> 81 + <?= Html::submitButton(
  82 + $model->isNewRecord ? Yii::t('product', 'Create') : Yii::t('product', 'Update'),
  83 + [ 'class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary' ]
  84 + ) ?>
  85 + <?php if ($model->isNewRecord) : ?>
  86 + <?= Html::submitButton(
  87 + Yii::t('product', 'Create and continue'),
  88 + [
  89 + 'name' => 'create_and_new',
  90 + 'class' => 'btn btn-primary',
  91 + ]
  92 + ) ?>
62 <?php endif ?> 93 <?php endif ?>
63 </div> 94 </div>
64 95
views/category/_form.php
@@ -5,6 +5,7 @@ @@ -5,6 +5,7 @@
5 use artweb\artbox\ecommerce\models\Category; 5 use artweb\artbox\ecommerce\models\Category;
6 use artweb\artbox\ecommerce\models\CategoryLang; 6 use artweb\artbox\ecommerce\models\CategoryLang;
7 use yii\helpers\Html; 7 use yii\helpers\Html;
  8 + use yii\helpers\Url;
8 use yii\web\View; 9 use yii\web\View;
9 use yii\widgets\ActiveForm; 10 use yii\widgets\ActiveForm;
10 11
@@ -55,6 +56,8 @@ @@ -55,6 +56,8 @@
55 'options' => [ 56 'options' => [
56 'accept' => 'image/*', 57 'accept' => 'image/*',
57 'multiple' => false, 58 'multiple' => false,
  59 + 'deleteurl' => $model->isNewRecord?false:Url::to(['/ecommerce/category/delete-image', 'id' => $model->id]),
  60 + 'class' => $model->isNewRecord?'':'artbox-delete-file',
58 ], 61 ],
59 'pluginOptions' => [ 62 'pluginOptions' => [
60 'allowedFileExtensions' => [ 63 'allowedFileExtensions' => [
@@ -62,14 +65,16 @@ @@ -62,14 +65,16 @@
62 'gif', 65 'gif',
63 'png', 66 'png',
64 ], 67 ],
65 - 'initialPreview' => !empty( $model->imageUrl ) ? ArtboxImageHelper::getImage( 68 + 'initialPreview' => !empty( $model->getImageUrl(0, false) ) ? ArtboxImageHelper::getImage(
66 $model->imageUrl, 69 $model->imageUrl,
67 'list' 70 'list'
68 ) : '', 71 ) : '',
69 - 'overwriteInitial' => true,  
70 - 'showRemove' => false,  
71 - 'showUpload' => false,  
72 - 'previewFileType' => 'image', 72 + 'initialPreviewShowDelete' => false,
  73 + 'overwriteInitial' => true,
  74 + 'showRemove' => true,
  75 + 'showUpload' => false,
  76 + 'showClose' => false,
  77 + 'previewFileType' => 'image',
73 ], 78 ],
74 ] 79 ]
75 ); ?> 80 ); ?>
@@ -82,6 +87,8 @@ @@ -82,6 +87,8 @@
82 'options' => [ 87 'options' => [
83 'accept' => 'image/*', 88 'accept' => 'image/*',
84 'multiple' => false, 89 'multiple' => false,
  90 + 'deleteurl' => $model->isNewRecord?false:Url::to(['/ecommerce/category/delete-icon', 'id' => $model->id]),
  91 + 'class' => $model->isNewRecord?'':'artbox-delete-file',
85 ], 92 ],
86 'pluginOptions' => [ 93 'pluginOptions' => [
87 'allowedFileExtensions' => [ 94 'allowedFileExtensions' => [
@@ -96,10 +103,12 @@ @@ -96,10 +103,12 @@
96 $model->getImageUrl(1, false), 103 $model->getImageUrl(1, false),
97 'list' 104 'list'
98 ) : '', 105 ) : '',
99 - 'overwriteInitial' => true,  
100 - 'showRemove' => false,  
101 - 'showUpload' => false,  
102 - 'previewFileType' => 'image', 106 + 'initialPreviewShowDelete' => false,
  107 + 'overwriteInitial' => true,
  108 + 'showRemove' => true,
  109 + 'showUpload' => false,
  110 + 'showClose' => false,
  111 + 'previewFileType' => 'image',
103 ], 112 ],
104 ] 113 ]
105 ); ?> 114 ); ?>
views/manage/_form.php
@@ -9,6 +9,7 @@ @@ -9,6 +9,7 @@
9 use wbraganca\dynamicform\DynamicFormWidget; 9 use wbraganca\dynamicform\DynamicFormWidget;
10 use yii\db\ActiveQuery; 10 use yii\db\ActiveQuery;
11 use yii\helpers\Html; 11 use yii\helpers\Html;
  12 + use yii\helpers\Url;
12 use yii\widgets\ActiveForm; 13 use yii\widgets\ActiveForm;
13 use yii\helpers\ArrayHelper; 14 use yii\helpers\ArrayHelper;
14 use artweb\artbox\components\artboxtree\ArtboxTreeHelper; 15 use artweb\artbox\components\artboxtree\ArtboxTreeHelper;
@@ -190,6 +191,8 @@ $(&quot;.dynamicform_wrapper&quot;).on(&quot;limitReached&quot;, function(e, item) { @@ -190,6 +191,8 @@ $(&quot;.dynamicform_wrapper&quot;).on(&quot;limitReached&quot;, function(e, item) {
190 'options' => [ 191 'options' => [
191 'accept' => 'image/*', 192 'accept' => 'image/*',
192 'multiple' => false, 193 'multiple' => false,
  194 + 'deleteurl' => $model->isNewRecord?false:Url::to(['/ecommerce/manage/delete-size', 'id' => $model->id]),
  195 + 'class' => $model->isNewRecord?'':'artbox-delete-file',
193 ], 196 ],
194 'pluginOptions' => [ 197 'pluginOptions' => [
195 'allowedFileExtensions' => [ 198 'allowedFileExtensions' => [
@@ -197,14 +200,16 @@ $(&quot;.dynamicform_wrapper&quot;).on(&quot;limitReached&quot;, function(e, item) { @@ -197,14 +200,16 @@ $(&quot;.dynamicform_wrapper&quot;).on(&quot;limitReached&quot;, function(e, item) {
197 'gif', 200 'gif',
198 'png', 201 'png',
199 ], 202 ],
200 - 'initialPreview' => !empty( $model->getBehavior('size_image')->imageUrl ) ? ArtboxImageHelper::getImage( 203 + 'initialPreview' => !empty( $model->getBehavior('size_image')->getImageUrl(0, false)) ? ArtboxImageHelper::getImage(
201 $model->getBehavior('size_image')->imageUrl, 204 $model->getBehavior('size_image')->imageUrl,
202 'list' 205 'list'
203 ) : '', 206 ) : '',
204 - 'overwriteInitial' => true,  
205 - 'showRemove' => false,  
206 - 'showUpload' => false,  
207 - 'previewFileType' => 'image', 207 + 'initialPreviewShowDelete' => false,
  208 + 'overwriteInitial' => true,
  209 + 'showRemove' => true,
  210 + 'showUpload' => false,
  211 + 'showClose' => false,
  212 + 'previewFileType' => 'image',
208 ], 213 ],
209 ] 214 ]
210 ); ?> 215 ); ?>
views/manage/create.php
@@ -2,13 +2,15 @@ @@ -2,13 +2,15 @@
2 2
3 use artweb\artbox\ecommerce\models\Product; 3 use artweb\artbox\ecommerce\models\Product;
4 use artweb\artbox\ecommerce\models\ProductLang; 4 use artweb\artbox\ecommerce\models\ProductLang;
  5 + use artweb\artbox\ecommerce\models\ProductVideo;
5 use yii\helpers\Html; 6 use yii\helpers\Html;
6 use yii\web\View; 7 use yii\web\View;
7 8
8 /** 9 /**
9 - * @var View $this  
10 - * @var Product $model  
11 - * @var ProductLang[] $modelLangs 10 + * @var View $this
  11 + * @var Product $model
  12 + * @var ProductLang[] $modelLangs
  13 + * @var ProductVideo[] $videos
12 */ 14 */
13 15
14 $this->title = Yii::t('product', 'Create Product'); 16 $this->title = Yii::t('product', 'Create Product');
@@ -22,9 +24,13 @@ @@ -22,9 +24,13 @@
22 24
23 <h1><?= Html::encode($this->title) ?></h1> 25 <h1><?= Html::encode($this->title) ?></h1>
24 26
25 - <?= $this->render('_form', [  
26 - 'model' => $model,  
27 - 'modelLangs' => $modelLangs,  
28 - ]) ?> 27 + <?= $this->render(
  28 + '_form',
  29 + [
  30 + 'model' => $model,
  31 + 'modelLangs' => $modelLangs,
  32 + 'videos' => $videos,
  33 + ]
  34 + ) ?>
29 35
30 </div> 36 </div>
views/tax-option/_form.php
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
6 use artweb\artbox\ecommerce\models\TaxOptionLang; 6 use artweb\artbox\ecommerce\models\TaxOptionLang;
7 use yii\helpers\ArrayHelper; 7 use yii\helpers\ArrayHelper;
8 use yii\helpers\Html; 8 use yii\helpers\Html;
  9 + use yii\helpers\Url;
9 use yii\widgets\ActiveForm; 10 use yii\widgets\ActiveForm;
10 use artweb\artbox\ecommerce\models\TaxOption; 11 use artweb\artbox\ecommerce\models\TaxOption;
11 12
@@ -48,6 +49,8 @@ @@ -48,6 +49,8 @@
48 'options' => [ 49 'options' => [
49 'accept' => 'image/*', 50 'accept' => 'image/*',
50 'multiple' => false, 51 'multiple' => false,
  52 + 'deleteurl' => $model->isNewRecord?false:Url::to(['/ecommerce/tax-option/delete-image', 'id' => $model->id]),
  53 + 'class' => $model->isNewRecord?'':'artbox-delete-file',
51 ], 54 ],
52 'pluginOptions' => [ 55 'pluginOptions' => [
53 'allowedFileExtensions' => [ 56 'allowedFileExtensions' => [
@@ -55,14 +58,16 @@ @@ -55,14 +58,16 @@
55 'gif', 58 'gif',
56 'png', 59 'png',
57 ], 60 ],
58 - 'initialPreview' => !empty( $model->imageUrl ) ? ArtboxImageHelper::getImage( 61 + 'initialPreview' => !empty( $model->getImageUrl(0, false) ) ? ArtboxImageHelper::getImage(
59 $model->imageUrl, 62 $model->imageUrl,
60 'list' 63 'list'
61 ) : '', 64 ) : '',
62 - 'overwriteInitial' => true,  
63 - 'showRemove' => false,  
64 - 'showUpload' => false,  
65 - 'previewFileType' => 'image', 65 + 'initialPreviewShowDelete' => false,
  66 + 'overwriteInitial' => true,
  67 + 'showRemove' => true,
  68 + 'showUpload' => false,
  69 + 'showClose' => false,
  70 + 'previewFileType' => 'image',
66 ], 71 ],
67 ] 72 ]
68 ) 73 )