Commit 551235233ce73c71f45295424e0aa5429374af57

Authored by Alexey Boroda
1 parent 85958295

-Status switcher

Showing 2 changed files with 70 additions and 24 deletions   Show diff stats
controllers/ManageController.php
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
11 use artweb\artbox\ecommerce\models\Product; 11 use artweb\artbox\ecommerce\models\Product;
12 use artweb\artbox\ecommerce\models\ProductSearch; 12 use artweb\artbox\ecommerce\models\ProductSearch;
13 use yii\db\ActiveQuery; 13 use yii\db\ActiveQuery;
  14 + use yii\helpers\Html;
14 use yii\helpers\VarDumper; 15 use yii\helpers\VarDumper;
15 use yii\web\Controller; 16 use yii\web\Controller;
16 use yii\web\NotFoundHttpException; 17 use yii\web\NotFoundHttpException;
@@ -220,13 +221,27 @@ @@ -220,13 +221,27 @@
220 */ 221 */
221 public function actionIsTop($id) 222 public function actionIsTop($id)
222 { 223 {
223 - $model = $this->findModel($id);  
224 -  
225 - $model->is_top = intval(empty( $model->is_top ));  
226 -  
227 - $model->save(false, [ 'is_top' ]);  
228 -  
229 - return $this->redirect([ 'index' ]); 224 + \Yii::$app->response->format = Response::FORMAT_JSON;
  225 + $product = Product::findOne($id);
  226 + $product->is_top = !$product->is_top;
  227 + if ($product->save()) {
  228 + if ($product->is_top) {
  229 + $tag = Html::tag('span', '', [
  230 + 'class' => 'glyphicon glyphicon-star',
  231 + ]);
  232 + } else {
  233 + $tag = Html::tag('span', '', [
  234 + 'class' => 'glyphicon glyphicon-star-empty',
  235 + ]);
  236 + }
  237 + return [
  238 + 'success' => true,
  239 + 'tag' => $tag,
  240 + 'message' => 'Статус ТОП успешно изменен',
  241 + ];
  242 + } else {
  243 + return [];
  244 + }
230 } 245 }
231 246
232 /** 247 /**
@@ -238,13 +253,27 @@ @@ -238,13 +253,27 @@
238 */ 253 */
239 public function actionIsNew($id) 254 public function actionIsNew($id)
240 { 255 {
241 - $model = $this->findModel($id);  
242 -  
243 - $model->is_new = intval(empty( $model->is_new ));  
244 -  
245 - $model->save(false, [ 'is_new' ]);  
246 -  
247 - return $this->redirect([ 'index' ]); 256 + \Yii::$app->response->format = Response::FORMAT_JSON;
  257 + $product = Product::findOne($id);
  258 + $product->is_new = !$product->is_new;
  259 + if ($product->save()) {
  260 + if ($product->is_new) {
  261 + $tag = Html::tag('span', '', [
  262 + 'class' => 'glyphicon glyphicon-heart',
  263 + ]);
  264 + } else {
  265 + $tag = Html::tag('span', '', [
  266 + 'class' => 'glyphicon glyphicon-heart-empty',
  267 + ]);
  268 + }
  269 + return [
  270 + 'success' => true,
  271 + 'tag' => $tag,
  272 + 'message' => 'Статус НОВЫЙ успешно изменен',
  273 + ];
  274 + } else {
  275 + return [];
  276 + }
248 } 277 }
249 278
250 /** 279 /**
@@ -256,13 +285,27 @@ @@ -256,13 +285,27 @@
256 */ 285 */
257 public function actionIsDiscount($id) 286 public function actionIsDiscount($id)
258 { 287 {
259 - $model = $this->findModel($id);  
260 -  
261 - $model->is_discount = intval(empty( $model->is_discount ));  
262 -  
263 - $model->save(false, [ 'is_discount' ]);  
264 -  
265 - return $this->redirect([ 'index' ]); 288 + \Yii::$app->response->format = Response::FORMAT_JSON;
  289 + $product = Product::findOne($id);
  290 + $product->is_discount = !$product->is_discount;
  291 + if ($product->save()) {
  292 + if ($product->is_discount) {
  293 + $tag = Html::tag('span', '', [
  294 + 'class' => 'glyphicon glyphicon-tags',
  295 + ]);
  296 + } else {
  297 + $tag = Html::tag('span', '', [
  298 + 'class' => 'glyphicon glyphicon-tag',
  299 + ]);
  300 + }
  301 + return [
  302 + 'success' => true,
  303 + 'tag' => $tag,
  304 + 'message' => 'Статус АКЦИОННЫЙ успешно изменен',
  305 + ];
  306 + } else {
  307 + return [];
  308 + }
266 } 309 }
267 310
268 /** 311 /**
views/manage/index.php
@@ -120,7 +120,7 @@ @@ -120,7 +120,7 @@
120 ], 120 ],
121 [ 121 [
122 'class' => 'yii\grid\ActionColumn', 122 'class' => 'yii\grid\ActionColumn',
123 - 'template' => '{items} {view} |{is_top} {is_new} {is_discount} | {update} {delete}', 123 + 'template' => '{items} {view} | {is_top} {is_new} {is_discount} | {update} {delete}',
124 'buttons' => [ 124 'buttons' => [
125 'is_top' => function ($url, $model) { 125 'is_top' => function ($url, $model) {
126 return Html::a( 126 return Html::a(
@@ -128,6 +128,7 @@ @@ -128,6 +128,7 @@
128 $url, 128 $url,
129 [ 129 [
130 'title' => Yii::t('product', ( $model->is_top ? 'Set not is top' : 'Set is top' )), 130 'title' => Yii::t('product', ( $model->is_top ? 'Set not is top' : 'Set is top' )),
  131 + 'class' => 'toggle-status',
131 ] 132 ]
132 ); 133 );
133 }, 134 },
@@ -137,6 +138,7 @@ @@ -137,6 +138,7 @@
137 $url, 138 $url,
138 [ 139 [
139 'title' => Yii::t('product', ( $model->is_new ? 'Set not is new' : 'Set is new' )), 140 'title' => Yii::t('product', ( $model->is_new ? 'Set not is new' : 'Set is new' )),
  141 + 'class' => 'toggle-status',
140 ] 142 ]
141 ); 143 );
142 }, 144 },
@@ -149,6 +151,7 @@ @@ -149,6 +151,7 @@
149 'product', 151 'product',
150 ( $model->is_discount ? 'Set not is promotion' : 'Set is promotion' ) 152 ( $model->is_discount ? 'Set not is promotion' : 'Set is promotion' )
151 ), 153 ),
  154 + 'class' => 'toggle-status',
152 ] 155 ]
153 ); 156 );
154 }, 157 },
@@ -179,7 +182,7 @@ @@ -179,7 +182,7 @@
179 case 'is_top': 182 case 'is_top':
180 return \yii\helpers\Url::to( 183 return \yii\helpers\Url::to(
181 [ 184 [
182 - 'manage/is_top', 185 + 'manage/is-top',
183 'id' => $model->id, 186 'id' => $model->id,
184 ] 187 ]
185 ); 188 );
@@ -187,7 +190,7 @@ @@ -187,7 +190,7 @@
187 case 'is_new': 190 case 'is_new':
188 return \yii\helpers\Url::to( 191 return \yii\helpers\Url::to(
189 [ 192 [
190 - 'manage/is_new', 193 + 'manage/is-new',
191 'id' => $model->id, 194 'id' => $model->id,
192 ] 195 ]
193 ); 196 );