Commit ac6e2c678d15730f6fbd5a5b4864e638f709d186
1 parent
db63ba79
-Cabinet ready
Showing
7 changed files
with
416 additions
and
223 deletions
Show diff stats
frontend/assets/AppAsset.php
frontend/controllers/AccountController.php
... | ... | @@ -5,9 +5,13 @@ |
5 | 5 | use artbox\order\models\Customer; |
6 | 6 | use artbox\order\models\Order; |
7 | 7 | use artbox\order\models\PasswordForm; |
8 | + use artbox\order\models\Wishlist; | |
9 | + use yii\data\ActiveDataProvider; | |
10 | + use yii\db\ActiveQuery; | |
8 | 11 | use yii\web\Controller; |
9 | 12 | use yii\web\ForbiddenHttpException; |
10 | 13 | use yii\web\NotFoundHttpException; |
14 | + use yii\web\Response; | |
11 | 15 | |
12 | 16 | /** |
13 | 17 | * Class AccountController |
... | ... | @@ -82,6 +86,43 @@ |
82 | 86 | ); |
83 | 87 | } |
84 | 88 | |
89 | + public function actionWishlist() | |
90 | + { | |
91 | + /** | |
92 | + * @var Customer $user | |
93 | + */ | |
94 | + $user = \Yii::$app->user->identity; | |
95 | + $query = $user->getWishVariants() | |
96 | + ->with( | |
97 | + [ | |
98 | + 'lang', | |
99 | + 'product' => function (ActiveQuery $query) { | |
100 | + $query->with( | |
101 | + [ | |
102 | + 'lang', | |
103 | + 'image', | |
104 | + ] | |
105 | + ); | |
106 | + }, | |
107 | + ] | |
108 | + ); | |
109 | + $dataProvider = new ActiveDataProvider( | |
110 | + [ | |
111 | + 'query' => $query, | |
112 | + 'pagination' => [ | |
113 | + 'pageSize' => 8, | |
114 | + ], | |
115 | + ] | |
116 | + ); | |
117 | + | |
118 | + return $this->render( | |
119 | + 'wishlist', | |
120 | + [ | |
121 | + 'dataProvider' => $dataProvider, | |
122 | + ] | |
123 | + ); | |
124 | + } | |
125 | + | |
85 | 126 | public function actionChangePassword() |
86 | 127 | { |
87 | 128 | /** |
... | ... | @@ -130,7 +171,7 @@ |
130 | 171 | * @var Customer $model |
131 | 172 | */ |
132 | 173 | $model = \Yii::$app->user->identity; |
133 | - | |
174 | + | |
134 | 175 | if ($model->load(\Yii::$app->request->post())) { |
135 | 176 | // VarDumper::dump($model, 10, 1);die(); |
136 | 177 | $model->markAttributeDirty('birthday'); |
... | ... | @@ -146,4 +187,35 @@ |
146 | 187 | ] |
147 | 188 | ); |
148 | 189 | } |
190 | + | |
191 | + public function actionWishlistDelete() | |
192 | + { | |
193 | + \Yii::$app->response->format = Response::FORMAT_JSON; | |
194 | + if (\Yii::$app->request->isPost) { | |
195 | + $model = Wishlist::find() | |
196 | + ->where( | |
197 | + [ | |
198 | + 'user_id' => \Yii::$app->request->post('user'), | |
199 | + ] | |
200 | + ) | |
201 | + ->andWhere( | |
202 | + [ | |
203 | + 'variant_id' => \Yii::$app->request->post('variant'), | |
204 | + | |
205 | + ] | |
206 | + ) | |
207 | + ->one(); | |
208 | + if (!empty($model) && $model->delete()) { | |
209 | + return [ | |
210 | + 'success' => true, | |
211 | + 'message' => 'ะขะพะฒะฐั ัะดะฐะปะตะฝ ะธะท ะธะทะฑัะฐะฝะฝะพะณะพ', | |
212 | + ]; | |
213 | + } | |
214 | + | |
215 | + return [ | |
216 | + 'success' => false, | |
217 | + 'message' => 'ะัะธะฑะบะฐ', | |
218 | + ]; | |
219 | + } | |
220 | + } | |
149 | 221 | } |
150 | 222 | \ No newline at end of file | ... | ... |
frontend/controllers/ProductController.php
... | ... | @@ -3,10 +3,14 @@ |
3 | 3 | |
4 | 4 | use artbox\catalog\models\Product; |
5 | 5 | use artbox\core\components\SeoComponent; |
6 | + use artbox\order\models\Wishlist; | |
6 | 7 | use yii\db\ActiveQuery; |
8 | + use yii\helpers\Html; | |
9 | + use yii\helpers\Url; | |
7 | 10 | use yii\web\Controller; |
8 | 11 | use yii\web\NotFoundHttpException; |
9 | 12 | use Yii; |
13 | + use yii\web\Response; | |
10 | 14 | |
11 | 15 | /** |
12 | 16 | * Class ProductController |
... | ... | @@ -77,7 +81,7 @@ |
77 | 81 | ) |
78 | 82 | ->where([ 'id' => $id ]) |
79 | 83 | ->one(); |
80 | - if (!empty( $model )) { | |
84 | + if (!empty($model)) { | |
81 | 85 | if ($model->lang->alias_id !== $seo->aliasId) { |
82 | 86 | throw new NotFoundHttpException('Wrong language'); |
83 | 87 | } |
... | ... | @@ -86,4 +90,114 @@ |
86 | 90 | throw new NotFoundHttpException('Model not found'); |
87 | 91 | } |
88 | 92 | } |
93 | + | |
94 | + public function actionWishlistRm() | |
95 | + { | |
96 | + \Yii::$app->response->format = Response::FORMAT_JSON; | |
97 | + if (\Yii::$app->request->isPost) { | |
98 | + $model = Wishlist::find() | |
99 | + ->where( | |
100 | + [ | |
101 | + 'user_id' => \Yii::$app->request->post('user'), | |
102 | + ] | |
103 | + ) | |
104 | + ->andWhere( | |
105 | + [ | |
106 | + 'variant_id' => \Yii::$app->request->post('variant'), | |
107 | + | |
108 | + ] | |
109 | + ) | |
110 | + ->one(); | |
111 | + if (!empty($model) && $model->delete()) { | |
112 | + return [ | |
113 | + 'button' => Html::button( | |
114 | + Html::tag('i', '', [ 'class' => 'fa fa-heart-o' ]), | |
115 | + [ | |
116 | + 'title' => 'ะะพะฑะฐะฒะธัั ะฒ ะธะทะฑัะฐะฝะฝะพะต', | |
117 | + 'data' => [ | |
118 | + 'toggle' => 'tooltip', | |
119 | + 'placement' => 'top', | |
120 | + 'product' => \Yii::$app->request->post('product'), | |
121 | + 'variant' => \Yii::$app->request->post('variant'), | |
122 | + 'user' => \Yii::$app->request->post('user'), | |
123 | + 'url' => Url::to([ 'product/wishlist-add' ]), | |
124 | + ], | |
125 | + 'class' => 'wishlist-add btn btn-success pull-right', | |
126 | + ] | |
127 | + ), | |
128 | + 'message' => 'ะขะพะฒะฐั ัะฑัะฐะฝ ะธะท ะธะทะฑัะฐะฝะฝะพะณะพ', | |
129 | + ]; | |
130 | + } | |
131 | + | |
132 | + return [ | |
133 | + 'button' => Html::button( | |
134 | + Html::tag('i', '', [ 'class' => 'fa fa-heart' ]), | |
135 | + [ | |
136 | + 'title' => 'ะฃะฑัะฐัั ะธะท ะธะทะฑัะฐะฝะฝะพะณะพ', | |
137 | + 'data' => [ | |
138 | + 'toggle' => 'tooltip', | |
139 | + 'placement' => 'top', | |
140 | + 'product' => \Yii::$app->request->post('product'), | |
141 | + 'variant' => \Yii::$app->request->post('variant'), | |
142 | + 'user' => \Yii::$app->request->post('user'), | |
143 | + 'url' => Url::to([ 'product/wishlist-rm' ]), | |
144 | + ], | |
145 | + 'class' => 'wishlist-rm btn btn-success pull-right', | |
146 | + ] | |
147 | + ), | |
148 | + 'message' => 'ะขะพะฒะฐั ะฝะต ะฝะฐะนะดะตะฝ', | |
149 | + ]; | |
150 | + } | |
151 | + } | |
152 | + | |
153 | + public function actionWishlistAdd() | |
154 | + { | |
155 | + \Yii::$app->response->format = Response::FORMAT_JSON; | |
156 | + if (\Yii::$app->request->isPost) { | |
157 | + $model = new Wishlist(); | |
158 | + $model->user_id = \Yii::$app->request->post('user'); | |
159 | + $model->variant_id = \Yii::$app->request->post('variant'); | |
160 | + $model->product_id = \Yii::$app->request->post('product'); | |
161 | + | |
162 | + if ($model->save()) { | |
163 | + return [ | |
164 | + 'button' => Html::button( | |
165 | + Html::tag('i', '', [ 'class' => 'fa fa-heart' ]), | |
166 | + [ | |
167 | + 'title' => 'ะฃะฑัะฐัั ะธะท ะธะทะฑัะฐะฝะฝะพะณะพ', | |
168 | + 'data' => [ | |
169 | + 'toggle' => 'tooltip', | |
170 | + 'placement' => 'top', | |
171 | + 'product' => \Yii::$app->request->post('product'), | |
172 | + 'variant' => \Yii::$app->request->post('variant'), | |
173 | + 'user' => \Yii::$app->request->post('user'), | |
174 | + 'url' => Url::to([ 'product/wishlist-rm' ]), | |
175 | + ], | |
176 | + 'class' => 'wishlist-rm btn btn-success pull-right', | |
177 | + ] | |
178 | + ), | |
179 | + 'message' => 'ะขะพะฒะฐั ะดะพะฑะฐะฒะปะตะฝ ะฒ ะธะทะฑัะฐะฝะฝะพะต', | |
180 | + ]; | |
181 | + } | |
182 | + | |
183 | + return [ | |
184 | + 'button' => Html::button( | |
185 | + Html::tag('i', '', [ 'class' => 'fa fa-heart-o' ]), | |
186 | + [ | |
187 | + 'title' => 'ะะพะฑะฐะฒะธัั ะฒ ะธะทะฑัะฐะฝะฝะพะต', | |
188 | + 'data' => [ | |
189 | + 'toggle' => 'tooltip', | |
190 | + 'placement' => 'top', | |
191 | + 'product' => \Yii::$app->request->post('product'), | |
192 | + 'variant' => \Yii::$app->request->post('variant'), | |
193 | + 'user' => \Yii::$app->request->post('user'), | |
194 | + 'url' => Url::to([ 'product/wishlist-add' ]), | |
195 | + ], | |
196 | + 'class' => 'wishlist-add btn btn-success pull-right', | |
197 | + ] | |
198 | + ), | |
199 | + 'message' => 'ะขะพะฒะฐั ะดะพะฑะฐะฒะธัั ะฝะต ะฒััะปะพ', | |
200 | + ]; | |
201 | + } | |
202 | + } | |
89 | 203 | } |
90 | 204 | \ No newline at end of file | ... | ... |
1 | +<?php | |
2 | + | |
3 | + use artbox\catalog\models\Variant; | |
4 | + use artbox\core\helpers\ImageHelper; | |
5 | + use yii\helpers\Html; | |
6 | + use yii\helpers\Url; | |
7 | + use yii\web\View; | |
8 | + | |
9 | + /** | |
10 | + * @var View $this | |
11 | + * @var Variant $model | |
12 | + */ | |
13 | + | |
14 | +?> | |
15 | + | |
16 | +<div class="col-md-3 col-sm-4"> | |
17 | + <div class="product"> | |
18 | + <div class="image"> | |
19 | + <a href="<?= Url::to( | |
20 | + [ | |
21 | + 'product/view', | |
22 | + 'id' => $model->product->id, | |
23 | + ] | |
24 | + ) ?>"> | |
25 | + <?= Html::a( | |
26 | + Html::tag( | |
27 | + 'i', | |
28 | + '', | |
29 | + [ | |
30 | + 'class' => 'fa fa-close', | |
31 | + ] | |
32 | + ), | |
33 | + '#', | |
34 | + [ | |
35 | + 'class' => 'wishlist-delete', | |
36 | + 'data' => [ | |
37 | + 'user' => \Yii::$app->user->identity->getId(), | |
38 | + 'variant' => $model->id, | |
39 | + 'product' => $model->product->id, | |
40 | + 'url' => Url::to([ 'account/wishlist-delete' ]), | |
41 | + ], | |
42 | + ] | |
43 | + ) ?> | |
44 | + <?= ImageHelper::set( | |
45 | + empty($model->product->image) ? '@frontend/web/img/no-image.png' : $model->product->image->getPath() | |
46 | + ) | |
47 | + ->cropResize(190, 190) | |
48 | + ->renderImage( | |
49 | + [ | |
50 | + 'class' => 'img-responsive image1', | |
51 | + ] | |
52 | + ) ?> | |
53 | + </a> | |
54 | + </div> | |
55 | + <!-- /.image --> | |
56 | + <div class="text"> | |
57 | + <h3><a href="<?= Url::to( | |
58 | + [ | |
59 | + 'product/view', | |
60 | + 'id' => $model->product->id, | |
61 | + ] | |
62 | + ) ?>"><?= $model->product->lang->title ?></a></h3> | |
63 | + <p class="price">ะฆะตะฝะฐ: <?= $model->price ?> ะณัะฝ.</p> | |
64 | + <p class="buttons"> | |
65 | + <?php | |
66 | + if ($model->canBuy()) { | |
67 | + echo Html::a( | |
68 | + Html::tag( | |
69 | + 'i', | |
70 | + '', | |
71 | + [ | |
72 | + 'class' => 'fa fa-shopping-cart', | |
73 | + ] | |
74 | + ) . \Yii::t('app', 'ะ ะบะพัะทะธะฝั'), | |
75 | + '#', | |
76 | + [ | |
77 | + 'class' => 'btn btn-template-main add-to-basket', | |
78 | + 'data-id' => $model->id, | |
79 | + ] | |
80 | + ); | |
81 | + } else { | |
82 | + echo Html::a( | |
83 | + \Yii::t('app', 'ะะตั ะฒ ะฝะฐะปะธัะธะธ'), | |
84 | + '#', | |
85 | + [ | |
86 | + 'class' => 'btn btn-info disabled', | |
87 | + 'data-id' => $model->id, | |
88 | + ] | |
89 | + ); | |
90 | + } | |
91 | + ?> | |
92 | + </p> | |
93 | + </div> | |
94 | + <!-- /.text --> | |
95 | + </div> | |
96 | + <!-- /.product --> | |
97 | +</div> | ... | ... |
frontend/views/account/wishlist.php
1 | 1 | <?php |
2 | 2 | |
3 | + use yii\data\ActiveDataProvider; | |
3 | 4 | use yii\web\View; |
5 | + use yii\widgets\ListView; | |
6 | + use yii\widgets\Pjax; | |
4 | 7 | |
5 | 8 | /** |
6 | - * @var View $this | |
9 | + * @var View $this | |
10 | + * @var ActiveDataProvider $dataProvider | |
7 | 11 | */ |
8 | - | |
12 | + | |
13 | + $this->params[ 'breadcrumbs' ][] = \Yii::t('app', 'ะะพะธ ะฟะพะถะตะปะฐะฝะธั'); | |
9 | 14 | ?> |
10 | 15 | |
11 | 16 | <div id="content"> |
... | ... | @@ -19,221 +24,23 @@ _________________________________________________________ --> |
19 | 24 | <div class="col-md-9 clearfix"> |
20 | 25 | |
21 | 26 | <div class="row products"> |
27 | + <?php | |
28 | + Pjax::begin( | |
29 | + [ | |
30 | + 'id' => 'wishlist-products', | |
31 | + ] | |
32 | + ); | |
33 | + echo ListView::widget( | |
34 | + [ | |
35 | + 'dataProvider' => $dataProvider, | |
36 | + 'itemView' => '_product', | |
37 | + 'layout' => '{items}{pager}', | |
38 | + ] | |
39 | + ); | |
40 | + Pjax::end(); | |
41 | + ?> | |
22 | 42 | |
23 | - <div class="col-md-3 col-sm-4"> | |
24 | - <div class="product"> | |
25 | - <div class="image"> | |
26 | - <a href="shop-detail.html"> | |
27 | - <img src="img/product1.jpg" alt="" class="img-responsive image1"> | |
28 | - </a> | |
29 | - </div> | |
30 | - <!-- /.image --> | |
31 | - <div class="text"> | |
32 | - <h3><a href="shop-detail.html">Fur coat with very but very very long name</a></h3> | |
33 | - <p class="price">143.00</p> | |
34 | - <p class="buttons"> | |
35 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
36 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
37 | - </p> | |
38 | - </div> | |
39 | - <!-- /.text --> | |
40 | - </div> | |
41 | - <!-- /.product --> | |
42 | - </div> | |
43 | - | |
44 | - <div class="col-md-3 col-sm-4"> | |
45 | - <div class="product"> | |
46 | - <div class="image"> | |
47 | - <a href="shop-detail.html"> | |
48 | - <img src="img/product2.jpg" alt="" class="img-responsive image1"> | |
49 | - </a> | |
50 | - </div> | |
51 | - <!-- /.image --> | |
52 | - <div class="text"> | |
53 | - <h3><a href="shop-detail.html">White Blouse Armani</a></h3> | |
54 | - <p class="price"> | |
55 | - <del>280</del> | |
56 | - 143.00 | |
57 | - </p> | |
58 | - <p class="buttons"> | |
59 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
60 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
61 | - </p> | |
62 | - </div> | |
63 | - <!-- /.text --> | |
64 | - | |
65 | - <div class="ribbon sale"> | |
66 | - <div class="theribbon">SALE</div> | |
67 | - <div class="ribbon-background"></div> | |
68 | - </div> | |
69 | - <!-- /.ribbon --> | |
70 | - | |
71 | - <div class="ribbon new"> | |
72 | - <div class="theribbon">NEW</div> | |
73 | - <div class="ribbon-background"></div> | |
74 | - </div> | |
75 | - <!-- /.ribbon --> | |
76 | - </div> | |
77 | - <!-- /.product --> | |
78 | - </div> | |
79 | - | |
80 | - <div class="col-md-3 col-sm-4"> | |
81 | - <div class="product"> | |
82 | - <div class="image"> | |
83 | - <a href="shop-detail.html"> | |
84 | - <img src="img/product3.jpg" alt="" class="img-responsive image1"> | |
85 | - </a> | |
86 | - </div> | |
87 | - <!-- /.image --> | |
88 | - <div class="text"> | |
89 | - <h3><a href="shop-detail.html">Black Blouse Versace</a></h3> | |
90 | - <p class="price">143.00</p> | |
91 | - <p class="buttons"> | |
92 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
93 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
94 | - </p> | |
95 | - | |
96 | - </div> | |
97 | - <!-- /.text --> | |
98 | - </div> | |
99 | - <!-- /.product --> | |
100 | - </div> | |
101 | - | |
102 | - <div class="col-md-3 col-sm-4"> | |
103 | - <div class="product"> | |
104 | - <div class="image"> | |
105 | - <a href="shop-detail.html"> | |
106 | - <img src="img/product4.jpg" alt="" class="img-responsive image1"> | |
107 | - </a> | |
108 | - </div> | |
109 | - <!-- /.image --> | |
110 | - <div class="text"> | |
111 | - <h3><a href="shop-detail.html">Black Blouse Versace</a></h3> | |
112 | - <p class="price">143.00</p> | |
113 | - <p class="buttons"> | |
114 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
115 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
116 | - </p> | |
117 | - | |
118 | - </div> | |
119 | - <!-- /.text --> | |
120 | - </div> | |
121 | - <!-- /.product --> | |
122 | - </div> | |
123 | - | |
124 | - <div class="col-md-3 col-sm-4"> | |
125 | - <div class="product"> | |
126 | - <div class="image"> | |
127 | - <a href="shop-detail.html"> | |
128 | - <img src="img/product3.jpg" alt="" class="img-responsive image1"> | |
129 | - </a> | |
130 | - </div> | |
131 | - <!-- /.image --> | |
132 | - <div class="text"> | |
133 | - <h3><a href="shop-detail.html">White Blouse Armani</a></h3> | |
134 | - <p class="price"> | |
135 | - <del>280</del> | |
136 | - 143.00 | |
137 | - </p> | |
138 | - <p class="buttons"> | |
139 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
140 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
141 | - </p> | |
142 | - </div> | |
143 | - <!-- /.text --> | |
144 | - | |
145 | - <div class="ribbon sale"> | |
146 | - <div class="theribbon">SALE</div> | |
147 | - <div class="ribbon-background"></div> | |
148 | - </div> | |
149 | - <!-- /.ribbon --> | |
150 | - | |
151 | - <div class="ribbon new"> | |
152 | - <div class="theribbon">NEW</div> | |
153 | - <div class="ribbon-background"></div> | |
154 | - </div> | |
155 | - <!-- /.ribbon --> | |
156 | - </div> | |
157 | - <!-- /.product --> | |
158 | - </div> | |
159 | - | |
160 | - <div class="col-md-3 col-sm-4"> | |
161 | - <div class="product"> | |
162 | - <div class="image"> | |
163 | - <a href="shop-detail.html"> | |
164 | - <img src="img/product4.jpg" alt="" class="img-responsive image1"> | |
165 | - </a> | |
166 | - </div> | |
167 | - <!-- /.image --> | |
168 | - <div class="text"> | |
169 | - <h3><a href="shop-detail.html">White Blouse Versace</a></h3> | |
170 | - <p class="price">143.00</p> | |
171 | - <p class="buttons"> | |
172 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
173 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
174 | - </p> | |
175 | - | |
176 | - </div> | |
177 | - <!-- /.text --> | |
178 | - | |
179 | - <div class="ribbon new"> | |
180 | - <div class="theribbon">NEW</div> | |
181 | - <div class="ribbon-background"></div> | |
182 | - </div> | |
183 | - <!-- /.ribbon --> | |
184 | - </div> | |
185 | - <!-- /.product --> | |
186 | - </div> | |
187 | - | |
188 | - <div class="col-md-3 col-sm-4"> | |
189 | - <div class="product"> | |
190 | - <div class="image"> | |
191 | - <a href="shop-detail.html"> | |
192 | - <img src="img/product2.jpg" alt="" class="img-responsive image1"> | |
193 | - </a> | |
194 | - </div> | |
195 | - <!-- /.image --> | |
196 | - <div class="text"> | |
197 | - <h3><a href="shop-detail.html">White Blouse Versace</a></h3> | |
198 | - <p class="price">143.00</p> | |
199 | - <p class="buttons"> | |
200 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
201 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
202 | - </p> | |
203 | - | |
204 | - </div> | |
205 | - <!-- /.text --> | |
206 | - | |
207 | - <div class="ribbon new"> | |
208 | - <div class="theribbon">NEW</div> | |
209 | - <div class="ribbon-background"></div> | |
210 | - </div> | |
211 | - <!-- /.ribbon --> | |
212 | - </div> | |
213 | - <!-- /.product --> | |
214 | - </div> | |
215 | 43 | |
216 | - <div class="col-md-3 col-sm-4"> | |
217 | - <div class="product"> | |
218 | - <div class="image"> | |
219 | - <a href="shop-detail.html"> | |
220 | - <img src="img/product1.jpg" alt="" class="img-responsive image1"> | |
221 | - </a> | |
222 | - </div> | |
223 | - <!-- /.image --> | |
224 | - <div class="text"> | |
225 | - <h3><a href="shop-detail.html">Fur coat</a></h3> | |
226 | - <p class="price">143.00</p> | |
227 | - <p class="buttons"> | |
228 | - <a href="shop-detail.html" class="btn btn-default">ะะพะดัะพะฑะฝะตะต</a> | |
229 | - <a href="shop-basket.html" class="btn btn-template-main"><i class="fa fa-shopping-cart"></i>ะ ะบะพัะทะธะฝั</a> | |
230 | - </p> | |
231 | - | |
232 | - </div> | |
233 | - <!-- /.text --> | |
234 | - </div> | |
235 | - <!-- /.product --> | |
236 | - </div> | |
237 | 44 | <!-- /.col-md-4 --> |
238 | 45 | </div> |
239 | 46 | <!-- /.products --> | ... | ... |
frontend/views/product/view.php
... | ... | @@ -8,6 +8,7 @@ |
8 | 8 | use yii\bootstrap\ActiveForm; |
9 | 9 | use yii\bootstrap\Html; |
10 | 10 | use yii\helpers\ArrayHelper; |
11 | + use yii\helpers\Url; | |
11 | 12 | use yii\web\View; |
12 | 13 | |
13 | 14 | /** |
... | ... | @@ -201,12 +202,51 @@ |
201 | 202 | } |
202 | 203 | ?> |
203 | 204 | <?php |
204 | - /* | |
205 | - ?> | |
206 | - <button class="btn btn-default pull-right" data-toggle="tooltip" data-placement="top" title="ะะพะฑะฐะฒะธัั ะฒ ะธะทะฑัะฐะฝะฝะพะต"> | |
207 | - <i class="fa fa-heart-o"></i> | |
208 | - </button> | |
209 | - */ | |
205 | + if (\Yii::$app->user->isGuest) { | |
206 | + echo Html::button( | |
207 | + Html::tag('i', '', [ 'class' => 'fa fa-heart-o' ]), | |
208 | + [ | |
209 | + 'title' => 'ะะพะฑะฐะฒะธัั ะฒ ะธะทะฑัะฐะฝะฝะพะต', | |
210 | + 'data' => [ | |
211 | + 'toggle' => 'tooltip', | |
212 | + 'placement' => 'top', | |
213 | + ], | |
214 | + 'class' => 'btn btn-default pull-right disabled', | |
215 | + ] | |
216 | + ); | |
217 | + } elseif (in_array($variant->id, \Yii::$app->user->identity->wishlist)) { | |
218 | + echo Html::button( | |
219 | + Html::tag('i', '', [ 'class' => 'fa fa-heart' ]), | |
220 | + [ | |
221 | + 'title' => 'ะฃะฑัะฐัั ะธะท ะธะทะฑัะฐะฝะฝะพะณะพ', | |
222 | + 'data' => [ | |
223 | + 'toggle' => 'tooltip', | |
224 | + 'placement' => 'top', | |
225 | + 'product' => $model->id, | |
226 | + 'variant' => $variant->id, | |
227 | + 'user' => \Yii::$app->user->identity->getId(), | |
228 | + 'url' => Url::to([ 'product/wishlist-rm' ]), | |
229 | + ], | |
230 | + 'class' => 'wishlist-rm btn btn-success pull-right', | |
231 | + ] | |
232 | + ); | |
233 | + } else { | |
234 | + echo Html::button( | |
235 | + Html::tag('i', '', [ 'class' => 'fa fa-heart-o' ]), | |
236 | + [ | |
237 | + 'title' => 'ะะพะฑะฐะฒะธัั ะฒ ะธะทะฑัะฐะฝะฝะพะต', | |
238 | + 'data' => [ | |
239 | + 'toggle' => 'tooltip', | |
240 | + 'placement' => 'top', | |
241 | + 'product' => $model->id, | |
242 | + 'variant' => $variant->id, | |
243 | + 'user' => \Yii::$app->user->identity->getId(), | |
244 | + 'url' => Url::to([ 'product/wishlist-add' ]), | |
245 | + ], | |
246 | + 'class' => 'wishlist-add btn btn-success pull-right', | |
247 | + ] | |
248 | + ); | |
249 | + } | |
210 | 250 | ?> |
211 | 251 | </p> |
212 | 252 | <hr> | ... | ... |
frontend/web/js/script.js
... | ... | @@ -171,6 +171,68 @@ $(function() { |
171 | 171 | } |
172 | 172 | }.bind(this)); |
173 | 173 | |
174 | + $(document) | |
175 | + .on( | |
176 | + 'click', '.wishlist-rm, .wishlist-add', function() { | |
177 | + var button = $(this); | |
178 | + $.ajax( | |
179 | + { | |
180 | + url: button.data('url'), | |
181 | + type: "POST", | |
182 | + data: { | |
183 | + 'variant': button.data('variant'), | |
184 | + 'product': button.data('product'), | |
185 | + 'user': button.data('user') | |
186 | + }, | |
187 | + success: function(data) { | |
188 | + button.replaceWith(data.button); | |
189 | + new PNotify( | |
190 | + { | |
191 | + title: 'Info', | |
192 | + text: data.message, | |
193 | + type: 'info', | |
194 | + styling: 'fontawesome' | |
195 | + } | |
196 | + ); | |
197 | + | |
198 | + } | |
199 | + } | |
200 | + ) | |
201 | + } | |
202 | + ); | |
203 | + | |
204 | + $(document) | |
205 | + .on( | |
206 | + 'click', '.wishlist-delete', function(e) { | |
207 | + e.preventDefault(); | |
208 | + var button = $(this); | |
209 | + $.ajax( | |
210 | + { | |
211 | + url: button.data('url'), | |
212 | + type: "POST", | |
213 | + data: { | |
214 | + 'product': button.data('product'), | |
215 | + 'variant': button.data('variant'), | |
216 | + 'user': button.data('user') | |
217 | + }, | |
218 | + success: function(data) { | |
219 | + if (data.success) { | |
220 | + $.pjax.reload({container: '#wishlist-products'}); | |
221 | + new PNotify( | |
222 | + { | |
223 | + title: 'Info', | |
224 | + text: data.message, | |
225 | + type: 'info', | |
226 | + styling: 'fontawesome' | |
227 | + } | |
228 | + ); | |
229 | + } | |
230 | + } | |
231 | + } | |
232 | + ); | |
233 | + } | |
234 | + ); | |
235 | + | |
174 | 236 | }); |
175 | 237 | function showLoader(container) { |
176 | 238 | $(container) | ... | ... |