Commit fa61b27ce693ca02d4c178e457e2050c14b55af8
Merge remote-tracking branch 'origin/master'
Showing
26 changed files
with
1648 additions
and
518 deletions
Show diff stats
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Alex Savenko | ||
5 | + * Date: 20.12.2016 | ||
6 | + * Time: 13:35 | ||
7 | + */ | ||
8 | + | ||
9 | +namespace controllers; | ||
10 | + | ||
11 | +use Phalcon\Mvc\Controller; | ||
12 | + | ||
13 | +/** | ||
14 | + * Class DiscountController | ||
15 | + * @package controllers | ||
16 | + * @property \models models | ||
17 | + */ | ||
18 | +class DiscountController extends Controller | ||
19 | +{ | ||
20 | + | ||
21 | + /** | ||
22 | + * Displays all discounts with pagination | ||
23 | + * @return \Phalcon\Http\ResponseInterface | ||
24 | + */ | ||
25 | + public function indexAction() { | ||
26 | + | ||
27 | + if( !$this->session->get('isAdminAuth') ) { | ||
28 | + | ||
29 | + return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
30 | + | ||
31 | + } | ||
32 | + | ||
33 | + $params = $this->dispatcher->getParams(); | ||
34 | + $page = !empty( $params['page'] ) ? $params['page'] : 1; | ||
35 | + $data = $this->models->getDiscount()->getAllData(); | ||
36 | + $total = $this->models->getDiscount()->countData(); | ||
37 | + | ||
38 | + if( $total['0']['total'] > \config::get( 'limits/items') ) { | ||
39 | + | ||
40 | + $paginate = $this->common->paginate( | ||
41 | + [ | ||
42 | + 'page' => $page, | ||
43 | + 'items_per_page' => \config::get( 'limits/admin_orders', 5), | ||
44 | + 'total_items' => $total[0]['total'], | ||
45 | + 'url_for' => [ 'for' => 'discount_index_paged', 'page' => $page ], | ||
46 | + 'index_page' => 'discount_index' | ||
47 | + ], true | ||
48 | + ); | ||
49 | + | ||
50 | + } | ||
51 | + $this->view->setVars([ | ||
52 | + 'info' => $data, | ||
53 | + 'paginate' => !empty($paginate['output']) ? $paginate['output'] : '' , | ||
54 | + ]); | ||
55 | + | ||
56 | + } | ||
57 | + | ||
58 | + /** | ||
59 | + * Add discount form | ||
60 | + * @return \Phalcon\Http\ResponseInterface | ||
61 | + */ | ||
62 | + public function addAction() { | ||
63 | + | ||
64 | + $titlecmp = function ($a, $b) { | ||
65 | + | ||
66 | + return strcasecmp($a['title'], $b['title']); | ||
67 | + | ||
68 | + }; | ||
69 | + | ||
70 | + $lang_id = 1; // ua language | ||
71 | + if( !$this->session->get('isAdminAuth') ) { | ||
72 | + | ||
73 | + return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
74 | + | ||
75 | + } | ||
76 | + | ||
77 | + if( $this->request->isPost() ) { | ||
78 | + | ||
79 | + $data['name'] = $this->request->getPost('name', 'string', NULL ); | ||
80 | + $data['description'] = $this->request->getPost('description'); | ||
81 | + $data['start_date'] = $this->request->getPost('start_date'); | ||
82 | + $data['end_date'] = $this->request->getPost('end_date'); | ||
83 | + $data['discount'] = $this->request->getPost('discount', 'string', NULL ); | ||
84 | + $data['status'] = 1; | ||
85 | + | ||
86 | + | ||
87 | + //$data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); | ||
88 | + $data['group_ids'] = $this->request->getPost('items', 'string', NULL ); | ||
89 | + //$data['all_items'] = $this->request->getPost('all_items', 'int', NULL); | ||
90 | + | ||
91 | + if ($data['discount'] > 100) { | ||
92 | + | ||
93 | + $this->flash->error( 'Размер скидки не может привышать 100' ); | ||
94 | + | ||
95 | + } | ||
96 | + else { | ||
97 | + | ||
98 | + if(!empty($data['group_ids']) && $this->models->getDiscount()->addData( $data )) { | ||
99 | + | ||
100 | + $this->flash->success( 'Сохранение прошло успешно' ); | ||
101 | + return $this->response->redirect([ 'for' => 'discount_index' ]); | ||
102 | + | ||
103 | + } | ||
104 | + else { | ||
105 | + | ||
106 | + $this->flash->error( 'Выберите товары на которые распространяется скидка' ); | ||
107 | + | ||
108 | + } | ||
109 | + | ||
110 | + } | ||
111 | + | ||
112 | + } | ||
113 | + | ||
114 | + $catalog_temp = $this->common->getTypeSubtype1(NULL, $lang_id)['catalog']; | ||
115 | + usort($catalog_temp, $titlecmp); | ||
116 | + | ||
117 | + | ||
118 | + $this->view->setVar('catalog_temp', $catalog_temp); | ||
119 | + $this->view->pick( 'discount/addEdit' ); | ||
120 | + | ||
121 | + } | ||
122 | + | ||
123 | + /** | ||
124 | + * Delete discount by $id | ||
125 | + * @param $id | ||
126 | + * @return \Phalcon\Http\ResponseInterface | ||
127 | + */ | ||
128 | + public function deleteAction($id) { | ||
129 | + | ||
130 | + if( !$this->session->get('isAdminAuth') ) { | ||
131 | + | ||
132 | + return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
133 | + | ||
134 | + } | ||
135 | + | ||
136 | + $this->models->getDiscount()->deleteData($id); | ||
137 | + | ||
138 | + return $this->response->redirect([ 'for' => 'discount_index' ]); | ||
139 | + | ||
140 | + } | ||
141 | + | ||
142 | + /** | ||
143 | + * Update discount form | ||
144 | + * @param $id | ||
145 | + * @return \Phalcon\Http\ResponseInterface | ||
146 | + */ | ||
147 | + public function updateAction($id) { | ||
148 | + | ||
149 | + $titlecmp = function ($a, $b) { | ||
150 | + | ||
151 | + return strcasecmp($a['title'], $b['title']); | ||
152 | + | ||
153 | + }; | ||
154 | + | ||
155 | + $lang_id = 1; // ua language | ||
156 | + | ||
157 | + if( !$this->session->get('isAdminAuth') ) { | ||
158 | + | ||
159 | + return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
160 | + | ||
161 | + } | ||
162 | + | ||
163 | + $data = $this->models->getDiscount()->getOneData($id); | ||
164 | + | ||
165 | + if( $this->request->isPost() ) { | ||
166 | + | ||
167 | + $data[0]['name'] = $this->request->getPost('name', 'string', NULL ); | ||
168 | + $data[0]['discount'] = $this->request->getPost('discount', 'int', 0 ); | ||
169 | + $data[0]['start_date'] = $this->request->getPost('start_date'); | ||
170 | + $data[0]['end_date'] = $this->request->getPost('end_date'); | ||
171 | + $data[0]['description'] = $this->request->getPost('description'); | ||
172 | + $data[0]['group_ids'] = $this->request->getPost('items', 'string', NULL ); | ||
173 | + | ||
174 | + if ($data[0]['discount'] > 100) { | ||
175 | + | ||
176 | + $this->flash->error( 'Размер скидки не может привышать 100' ); | ||
177 | + | ||
178 | + } | ||
179 | + else { | ||
180 | + | ||
181 | + if($this->models->getDiscount()->updateData( $data[0], $id ) ) { | ||
182 | + | ||
183 | + $this->flash->success( 'Сохранение прошло успешно' ); | ||
184 | + return $this->response->redirect([ 'for' => 'discount_index' ]); | ||
185 | + | ||
186 | + } | ||
187 | + else { | ||
188 | + | ||
189 | + $this->flash->error( 'Update error.' ); | ||
190 | + | ||
191 | + } | ||
192 | + | ||
193 | + } | ||
194 | + | ||
195 | + | ||
196 | + } | ||
197 | + | ||
198 | + $data[0]['group_ids'] = $this->common->parseArray($data[0]['group_ids']); | ||
199 | + //$data[0]['catalog_ids'] = $this->common->parseArray($data[0]['catalog_ids']); | ||
200 | + | ||
201 | + $catalog_temp = $this->common->getTypeSubtype1(NULL, $lang_id)['catalog']; | ||
202 | + usort($catalog_temp, $titlecmp); | ||
203 | + | ||
204 | + foreach($catalog_temp as &$group) { | ||
205 | + | ||
206 | + usort($group['sub'], $titlecmp); | ||
207 | + | ||
208 | + } | ||
209 | + | ||
210 | + if(!empty($data[0]['group_ids'][0])) { | ||
211 | + | ||
212 | + $groups = $this->models->getItems()->getItemsByIds($lang_id, $data[0]['group_ids']); | ||
213 | + usort($groups, $titlecmp); | ||
214 | + | ||
215 | + } | ||
216 | + | ||
217 | + $this->view->pick( 'discount/addEdit' ); | ||
218 | + | ||
219 | + $this->view->setVars([ | ||
220 | + 'page' => $data, | ||
221 | + 'catalog_temp' => $catalog_temp, | ||
222 | + 'groups' => !empty($groups) ? $groups : null | ||
223 | + ]); | ||
224 | + | ||
225 | + } | ||
226 | + | ||
227 | + /** | ||
228 | + * Switch status indicator | ||
229 | + * @param $id | ||
230 | + * @return \Phalcon\Http\ResponseInterface | ||
231 | + */ | ||
232 | + public function switchAction($id) { | ||
233 | + | ||
234 | + if( !$this->session->get('isAdminAuth') ) { | ||
235 | + | ||
236 | + return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
237 | + | ||
238 | + } | ||
239 | + | ||
240 | + $status = $this->models->getDiscount()->getStatus($id); | ||
241 | + | ||
242 | + if ($status == 1) { | ||
243 | + | ||
244 | + $this->models->getDiscount()->updateStatus('0', $id); | ||
245 | + | ||
246 | + } | ||
247 | + elseif ($status == 0) { | ||
248 | + | ||
249 | + $this->models->getDiscount()->updateStatus('1', $id); | ||
250 | + | ||
251 | + } | ||
252 | + else { | ||
253 | + | ||
254 | + $this->flash->error(var_dump($status)); | ||
255 | + | ||
256 | + } | ||
257 | + | ||
258 | + return $this->response->redirect([ 'for' => 'discount_index' ]); | ||
259 | + | ||
260 | + } | ||
261 | +} | ||
0 | \ No newline at end of file | 262 | \ No newline at end of file |
src/app/backend/controllers/PromoCodesController.php
@@ -26,8 +26,8 @@ class PromoCodesController extends Controller | @@ -26,8 +26,8 @@ class PromoCodesController extends Controller | ||
26 | 'page' => $page, | 26 | 'page' => $page, |
27 | 'items_per_page' => \config::get( 'limits/admin_orders', 5), | 27 | 'items_per_page' => \config::get( 'limits/admin_orders', 5), |
28 | 'total_items' => $total[0]['total'], | 28 | 'total_items' => $total[0]['total'], |
29 | - 'url_for' => [ 'for' => 'promo_codes_index_paged', 'page' => $page ], | ||
30 | - 'index_page' => 'promo_codes_index' | 29 | + 'url_for' => [ 'for' => 'discount_index_paged', 'page' => $page ], |
30 | + 'index_page' => 'discount_index' | ||
31 | ], true | 31 | ], true |
32 | ); | 32 | ); |
33 | } | 33 | } |
@@ -38,54 +38,54 @@ class PromoCodesController extends Controller | @@ -38,54 +38,54 @@ class PromoCodesController extends Controller | ||
38 | } | 38 | } |
39 | 39 | ||
40 | public function addAction() { | 40 | public function addAction() { |
41 | - $titlecmp = function ($a, $b) { | ||
42 | - return strcasecmp($a['title'], $b['title']); | ||
43 | - }; | ||
44 | - $lang_id = 1; // ua language | ||
45 | - if( !$this->session->get('isAdminAuth') ) | ||
46 | - { | ||
47 | - return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
48 | - } | 41 | + $titlecmp = function ($a, $b) { |
42 | + return strcasecmp($a['title'], $b['title']); | ||
43 | + }; | ||
44 | + $lang_id = 1; // ua language | ||
45 | + if( !$this->session->get('isAdminAuth') ) | ||
46 | + { | ||
47 | + return $this->response->redirect([ 'for' => 'admin_login' ]); | ||
48 | + } | ||
49 | 49 | ||
50 | - if( $this->request->isPost() ) | 50 | + if( $this->request->isPost() ) |
51 | + { | ||
52 | + | ||
53 | + $data['name'] = $this->request->getPost('name', 'string', NULL ); | ||
54 | + $data['code'] = $this->request->getPost('code', 'string', NULL ); | ||
55 | + $data['start_date'] = $this->request->getPost('start_date'); | ||
56 | + $data['end_date'] = $this->request->getPost('end_date'); | ||
57 | + $data['single_use'] = $this->request->getPost('single_use'); | ||
58 | + $data['discount'] = $this->request->getPost('discount', 'string', NULL ); | ||
59 | + $data['description'] = $this->request->getPost('description'); | ||
60 | + $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); | ||
61 | + $data['group_ids'] = $this->request->getPost('items', 'string', NULL ); | ||
62 | + $data['all_items'] = $this->request->getPost('all_items', 'int', NULL); | ||
63 | + $data['image'] = $this->uploadImage(); | ||
64 | + | ||
65 | + if( empty($this->models->getPromoCodes()->getPromoByCode( $data['code'] )[0]) ) | ||
51 | { | 66 | { |
52 | - | ||
53 | - $data['name'] = $this->request->getPost('name', 'string', NULL ); | ||
54 | - $data['code'] = $this->request->getPost('code', 'string', NULL ); | ||
55 | - $data['start_date'] = $this->request->getPost('start_date'); | ||
56 | - $data['end_date'] = $this->request->getPost('end_date'); | ||
57 | - $data['single_use'] = $this->request->getPost('single_use'); | ||
58 | - $data['discount'] = $this->request->getPost('discount', 'string', NULL ); | ||
59 | - $data['description'] = $this->request->getPost('description'); | ||
60 | - $data['catalog_ids'] = $this->request->getPost('catalog', 'string', NULL ); | ||
61 | - $data['group_ids'] = $this->request->getPost('items', 'string', NULL ); | ||
62 | - $data['all_items'] = $this->request->getPost('all_items', 'int', NULL); | ||
63 | - $data['image'] = $this->uploadImage(); | ||
64 | - | ||
65 | - if( empty($this->models->getPromoCodes()->getPromoByCode( $data['code'] )[0]) ) | 67 | + if(!empty($data['group_ids']) && $this->models->getPromoCodes()->addData( $data )) |
66 | { | 68 | { |
67 | - if(!empty($data['group_ids']) && $this->models->getPromoCodes()->addData( $data )) | ||
68 | - { | ||
69 | - $this->flash->success( 'Сохранение прошло успешно' ); | ||
70 | - return $this->response->redirect([ 'for' => 'promo_codes_index' ]); | ||
71 | - } | ||
72 | - else | ||
73 | - { | ||
74 | - $this->flash->error( 'Выберите товары для промокода' ); | ||
75 | - } | 69 | + $this->flash->success( 'Сохранение прошло успешно' ); |
70 | + return $this->response->redirect([ 'for' => 'promo_codes_index' ]); | ||
76 | } | 71 | } |
77 | - else { | ||
78 | - $this->flash->error('Такой промокод уже существует'); | 72 | + else |
73 | + { | ||
74 | + $this->flash->error( 'Выберите товары для промокода' ); | ||
79 | } | 75 | } |
80 | } | 76 | } |
77 | + else { | ||
78 | + $this->flash->error('Такой промокод уже существует'); | ||
79 | + } | ||
80 | + } | ||
81 | 81 | ||
82 | - $catalog_temp = $this->common->getTypeSubtype1(NULL, $lang_id)['catalog']; | ||
83 | - usort($catalog_temp, $titlecmp); | 82 | + $catalog_temp = $this->common->getTypeSubtype1(NULL, $lang_id)['catalog']; |
83 | + usort($catalog_temp, $titlecmp); | ||
84 | 84 | ||
85 | 85 | ||
86 | - $this->view->setVar('catalog_temp', $catalog_temp); | ||
87 | - $this->view->pick( 'promo_codes/addEdit' ); | ||
88 | - } | 86 | + $this->view->setVar('catalog_temp', $catalog_temp); |
87 | + $this->view->pick( 'promo_codes/addEdit' ); | ||
88 | +} | ||
89 | 89 | ||
90 | public function deleteAction($id) { | 90 | public function deleteAction($id) { |
91 | if( !$this->session->get('isAdminAuth') ) | 91 | if( !$this->session->get('isAdminAuth') ) |
1 | +<div id="addEdit"> | ||
2 | + <div class="inner"><?= $this->flash->output(); ?></div> | ||
3 | + <div class="inner"> | ||
4 | + <div class="sidebar_content_wrapper clearfix"> | ||
5 | + <div class="sidebar_wrapper float"> | ||
6 | + <div class="sidebar clearfix"> | ||
7 | + <?= $this->partial('partial/sidebar') ?> | ||
8 | + </div> | ||
9 | + </div> | ||
10 | + <div class="content_wrapper float"> | ||
11 | + <div class="content_wrapper_list clearfix"> | ||
12 | + <div class="table_name header_gradient"></div> | ||
13 | + | ||
14 | + <div class="table_pages_wrapper"> | ||
15 | + <form enctype="multipart/form-data" method="post" action="" id="discount_add_edit"> | ||
16 | + | ||
17 | + <div class="clearfix input_wrapper"> | ||
18 | + <div class="label"><label for="name">Название</label></div> | ||
19 | + <div class="input"><input required type="text" name="name" id="name" value='<?= (isset( $page['0']['name'] ) && !empty( $page['0']['name'] ) ? $page['0']['name'] : '') ?>'></div> | ||
20 | + </div> | ||
21 | + | ||
22 | + <div class="clearfix input_wrapper"> | ||
23 | + <div class="label"><label for="discount">Скидка</label></div> | ||
24 | + <div class="input"><input required type="text" name="discount" id="discount" value='<?= (isset( $page['0']['discount'] ) && !empty( $page['0']['discount'] ) ? $page['0']['discount'] : '') ?>'></div> | ||
25 | + </div> | ||
26 | + | ||
27 | + <div class="clearfix input_wrapper"> | ||
28 | + <div class="label"><label for="start_date">Дата начала действия скидки (включительно)</label></div> | ||
29 | + <div class="input"> | ||
30 | + <input required type="text" name="start_date" id="start_date" | ||
31 | + value="<?= (isset( $page['0']['start_date'] ) && !empty( $page['0']['start_date'] ) ? date('d-m-Y H:i:s', strtotime($page['0']['start_date'])) : '') ?>"> | ||
32 | + | ||
33 | + </div> | ||
34 | + </div> | ||
35 | + | ||
36 | + <div class="clearfix input_wrapper"> | ||
37 | + <div class="label"><label for="end_date">Дата окончания действия скидки (включительно)</label></div> | ||
38 | + <div class="input"> | ||
39 | + <input required type="text" name="end_date" id="end_date" | ||
40 | + value="<?= (isset( $page['0']['end_date'] ) && !empty( $page['0']['end_date'] ) ? date('d-m-Y H:i:s' , strtotime($page['0']['end_date'])) : '') ?>"> | ||
41 | + </div> | ||
42 | + </div> | ||
43 | + | ||
44 | + <div class="clearfix input_wrapper"> | ||
45 | + <div class="label"><label for="description">Описание</label></div> | ||
46 | + <div class="input"> | ||
47 | + <textarea name="description" id="description"> | ||
48 | + <?= (isset( $page['0']['description'] ) && !empty( $page['0']['description'] ) ? $page['0']['description'] : '') ?> | ||
49 | + </textarea> | ||
50 | + </div> | ||
51 | + </div> | ||
52 | + | ||
53 | + <div class="clearfix input_wrapper"> | ||
54 | + <div class="label"><label for="catalog">Категории товаров</label></div> | ||
55 | + <div class="input"> | ||
56 | + <select class="catalog" id="catalog"> | ||
57 | + <option selected label=" "></option> | ||
58 | + <?php foreach($catalog_temp as $group): ?> | ||
59 | + <option value="<?= $group['id'] ?>"><?= $group['title'] ?></option> | ||
60 | + <?php endforeach; ?> | ||
61 | + </select> | ||
62 | + </div> | ||
63 | + <button type="button" id="apply_filter">Применить</button> | ||
64 | + <div class="input"> | ||
65 | + <div>Цена</div> | ||
66 | + <label for="from_price">От</label> | ||
67 | + <input type="text" id="from_price"> | ||
68 | + <label for="to_price">До</label> | ||
69 | + <input type="text" id="to_price"> | ||
70 | + </div> | ||
71 | + <div class="filter"> | ||
72 | + | ||
73 | + </div> | ||
74 | + </div> | ||
75 | + | ||
76 | + | ||
77 | + <div class="clearfix input_wrapper products"> | ||
78 | + | ||
79 | + </div> | ||
80 | + | ||
81 | + <div class="clearfix input_wrapper chose_items"> | ||
82 | + <?php if(isset($groups) && !empty($groups)): ?> | ||
83 | + <?php foreach($groups as $group): ?> | ||
84 | + <div> | ||
85 | + <label> | ||
86 | + <input disabled checked style="display:inline-block" id="items" name="items[]" class="items" type="checkbox" | ||
87 | + value="<?= $group['id'] ?>"> <?= $group['title'] ?> <?= $group['size'] ?> <?= $group['price2'] ?> грн. | ||
88 | + </label> | ||
89 | + <button type="button" class="delete_item">Удалить</button> | ||
90 | + </div> | ||
91 | + <?php endforeach; ?> | ||
92 | + <?php endif; ?> | ||
93 | + </div> | ||
94 | + | ||
95 | + <div class="clearfix submit_wrapper"> | ||
96 | + <a href="<?= $this->url->get([ 'for' => 'discount_index' ]) ?>" class="news_cancel float">Отмена</a> | ||
97 | + <input type="submit" class="news_submit float" name="save" value="Сохранить"> | ||
98 | + </div> | ||
99 | + | ||
100 | + </form> | ||
101 | + </div> | ||
102 | + </div> | ||
103 | + </div> | ||
104 | + </div> | ||
105 | + </div> | ||
106 | +</div> | ||
107 | +<script> | ||
108 | + | ||
109 | + var datepicker = { | ||
110 | + format: "d-m-Y H:i:s" | ||
111 | + }; | ||
112 | + var $body = $('body'); | ||
113 | + var filter = new Filter(); | ||
114 | + var catalog = new Catalog(<?= json_encode($catalog_temp) ?>); | ||
115 | + console.log(catalog.getCatalog()); | ||
116 | + | ||
117 | + $('#start_date').datetimepicker(datepicker); | ||
118 | + $('#end_date').datetimepicker(datepicker); | ||
119 | + | ||
120 | + $("form").submit(function() { | ||
121 | + $("input").removeAttr("disabled"); | ||
122 | + }); | ||
123 | + | ||
124 | + $('#add_category, #add_item').click(function() { | ||
125 | + var parent = $(this).parent(); | ||
126 | + var select = parent.find('.input'); | ||
127 | + var clone = select.clone()[0]; | ||
128 | + parent.append(clone); | ||
129 | + }); | ||
130 | + | ||
131 | + $('#generate').click(function() { | ||
132 | + var length = 7; | ||
133 | + var code = generateCode(length); | ||
134 | + $('#code').val(code); | ||
135 | + }); | ||
136 | + | ||
137 | + $body.on('click', '.delete_item', function() { | ||
138 | + var parent = $(this).parent(); | ||
139 | + parent.remove(); | ||
140 | + }); | ||
141 | + | ||
142 | + | ||
143 | + $body.on('change', '.catalog', function () { | ||
144 | + var $filter = $('.filter'); | ||
145 | + var catalog_id = $(this).val(); | ||
146 | + var sub = catalog.getSub(catalog_id, catalog.getCatalog()); | ||
147 | + | ||
148 | + if(!sub) { | ||
149 | + $.ajax({ | ||
150 | + url: '/get_filters_by_catalog', | ||
151 | + method: 'GET', | ||
152 | + data: { | ||
153 | + catalog_id : catalog_id | ||
154 | + }, | ||
155 | + dataType: 'json' | ||
156 | + }).done(function (data) { | ||
157 | + filter.setFilters(data); | ||
158 | + filter.render($filter); | ||
159 | + }); | ||
160 | + } else { | ||
161 | + var next = $(this).next('select'); | ||
162 | + | ||
163 | + while(next.length) { | ||
164 | + next.remove(); | ||
165 | + next = $(this).next('select'); | ||
166 | + } | ||
167 | + | ||
168 | + $(this).after(catalog.renderSub(sub)); | ||
169 | + } | ||
170 | + }); | ||
171 | + | ||
172 | + $('#apply_filter').click(function (e) { | ||
173 | + e.preventDefault(); | ||
174 | + var $catalog = $('.catalog'); | ||
175 | + var l = $catalog.length; | ||
176 | + var $input = $('.products'); | ||
177 | + var prices = []; | ||
178 | + | ||
179 | + prices.push(Number($('#from_price').val()) || 0); | ||
180 | + prices.push(Number($('#to_price').val()) || Number.MAX_SAFE_INTEGER || 1000000); | ||
181 | + $.ajax({ | ||
182 | + url: '/get_items_by_filter', | ||
183 | + method: 'POST', | ||
184 | + data: { | ||
185 | + filters : filter.getFilters(), | ||
186 | + catalog_id : $catalog[l-1].value, | ||
187 | + prices : prices | ||
188 | + }, | ||
189 | + dataType: 'json' | ||
190 | + }).done(function (data) { | ||
191 | + renderItems(data, $input); | ||
192 | + }); | ||
193 | + }); | ||
194 | + | ||
195 | + $body.on('click', '#add_goods', function () { | ||
196 | + var parent_items = $('.filter_item:checked').parent().parent().clone(); | ||
197 | + parent_items.append('<button type="button" class="delete_item">Удалить</button>'); | ||
198 | + var inputs = parent_items.find('input'); | ||
199 | + inputs.prop('disabled', true); | ||
200 | + inputs.prop('name', 'items[]'); | ||
201 | + inputs.prop('class', 'items'); | ||
202 | + inputs.prop('id', 'items'); | ||
203 | + $('.chose_items').append(parent_items); | ||
204 | + }); | ||
205 | + | ||
206 | + $body.on('click', '.delete_item', function () { | ||
207 | + var parent = $(this).parent(); | ||
208 | + parent.remove(); | ||
209 | + }); | ||
210 | + | ||
211 | + $body.on('change', '#choose_all', function () { | ||
212 | + var checked = $(this).prop('checked'); | ||
213 | + $('.filter_item').prop( "checked", checked ); | ||
214 | + }); | ||
215 | + | ||
216 | + | ||
217 | + function renderItems(data, parent) { | ||
218 | + parent.empty(); | ||
219 | + | ||
220 | + var items = '<div><label><input style="display: inline-block" id="choose_all" type="checkbox">Выбрать все</label></div>'; | ||
221 | + | ||
222 | + data.forEach(function(element){ | ||
223 | + items += '<div><label><input style="display:inline-block" class="filter_item" type="checkbox" value="' | ||
224 | + + element.item_id + '">' + element.title + ' ' + element.size + ' ' + element.price2 + ' грн.' | ||
225 | + + '</label></div>'; | ||
226 | + }); | ||
227 | + items += '<div><button type="button" id="add_goods">Добавить товары</button></div>'; | ||
228 | + parent.append(items); | ||
229 | + } | ||
230 | + | ||
231 | + function Filter() { | ||
232 | + var _filters = {}; | ||
233 | + this.render = function ($parent) { | ||
234 | + $parent.empty(); | ||
235 | + var html = ''; | ||
236 | + forEach(_filters, function(element, key) { | ||
237 | + html += '<div style="display: inline-block; margin: 5px;"><h4>' + key + '</h4>'; | ||
238 | + html += '<div>'; | ||
239 | + forEach(element, function (v) { | ||
240 | + html += '<label><input type="checkbox" style="display:inline-block" id="' + v['id'] + '" value="' + v['filter_value_id'] +'">' | ||
241 | + + v['filter_value_value'] + '</label></input><br/>'; | ||
242 | + $('body').on('change', '#' + v['id'], function() { | ||
243 | + updateFilters(v['id']); | ||
244 | + }); | ||
245 | + }); | ||
246 | + | ||
247 | + html += '</div></div>'; | ||
248 | + }); | ||
249 | + $parent.append(html); | ||
250 | + | ||
251 | + }; | ||
252 | + this.setFilters = function (filters) { | ||
253 | + _filters = filters; | ||
254 | + }; | ||
255 | + | ||
256 | + this.getFilters = function () { | ||
257 | + var ids = []; | ||
258 | + forEach(_filters, function(element) { | ||
259 | + forEach(element, function (v) { | ||
260 | + if(v.checked) | ||
261 | + ids.push(v.id); | ||
262 | + }); | ||
263 | + }); | ||
264 | + return ids; | ||
265 | + }; | ||
266 | + | ||
267 | + function updateFilters (filter_id) { | ||
268 | + forEach(_filters, function(element) { | ||
269 | + forEach(element, function (v) { | ||
270 | + if(v.id == filter_id) | ||
271 | + v.checked = !v.checked; | ||
272 | + }); | ||
273 | + }); | ||
274 | + } | ||
275 | + } | ||
276 | + | ||
277 | + function Catalog(catalog) { | ||
278 | + var _catalog = catalog; | ||
279 | + | ||
280 | + this.getCatalog = function() { | ||
281 | + return _catalog; | ||
282 | + }; | ||
283 | + | ||
284 | + this.getSub = function getSub(catalog_id, catalog) { | ||
285 | + var result = null; | ||
286 | + forEach(catalog, function (element) { | ||
287 | + if(element.id == catalog_id) { | ||
288 | + result = element.sub; | ||
289 | + } | ||
290 | + if(element.sub) { | ||
291 | + var t = getSub(catalog_id, element.sub); | ||
292 | + result = t || result; | ||
293 | + } | ||
294 | + }); | ||
295 | + return result; | ||
296 | + }; | ||
297 | + | ||
298 | + this.renderSub = function (sub) { | ||
299 | + var select = '<select class="catalog" id="catalog">'; | ||
300 | + select += '<option disabled selected label=" "></option>'; | ||
301 | + forEach(sub, function (element) { | ||
302 | + select += '<option value="' + element.id + '">' + element.title + '</option>'; | ||
303 | + }); | ||
304 | + select += '</select>'; | ||
305 | + return select; | ||
306 | + } | ||
307 | + } | ||
308 | + | ||
309 | + function generateCode(length) { | ||
310 | + var code = ''; | ||
311 | + for(var i = 0; i < length; i++) | ||
312 | + code += Math.floor(Math.random() * 10); | ||
313 | + return code; | ||
314 | + } | ||
315 | + | ||
316 | + function forEach(obj, callback) { | ||
317 | + for(var key in obj) { | ||
318 | + if(obj.hasOwnProperty(key)) { | ||
319 | + callback(obj[key], key); | ||
320 | + } | ||
321 | + } | ||
322 | + } | ||
323 | + | ||
324 | + | ||
325 | +</script> | ||
0 | \ No newline at end of file | 326 | \ No newline at end of file |
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Alex Savenko | ||
5 | + * Date: 20.12.2016 | ||
6 | + * Time: 15:46 | ||
7 | + */ | ||
8 | +?> | ||
9 | + | ||
10 | +<div id="static_page"> | ||
11 | + <div class="inner"><?= $this->flash->output(); ?></div> | ||
12 | +<div class="inner"> | ||
13 | + <div class="sidebar_content_wrapper clearfix"> | ||
14 | + <div class="sidebar_wrapper float"> | ||
15 | + <div class="sidebar clearfix"> | ||
16 | + <?= $this->partial('partial/sidebar') ?> | ||
17 | + </div> | ||
18 | + </div> | ||
19 | + <div class="content_wrapper float"> | ||
20 | + <div class="h_700"> | ||
21 | + <div class="content_wrapper_list clearfix"> | ||
22 | + <div class="table_name header_gradient">Скидки</div> | ||
23 | + <div class="table_add_page"><a href="<?= $this->url->get([ 'for' => 'discount_add' ]) ?>" title="Добавить">Добавить</a></div> | ||
24 | + | ||
25 | + <div class="table_pages_wrapper"> | ||
26 | + | ||
27 | + <?php | ||
28 | + | ||
29 | + if( !empty( $info ) ) | ||
30 | + { | ||
31 | + $data_pages = ''; | ||
32 | + | ||
33 | + foreach( $info as $p ) | ||
34 | + { | ||
35 | + if ($p['status'] == '1') { | ||
36 | + $status_class = 'one_page_status_on_ico'; | ||
37 | + } else { | ||
38 | + $status_class = 'one_page_status_off_ico'; | ||
39 | + } | ||
40 | + | ||
41 | + $data_pages .= | ||
42 | + '<div class="one_page_edit header_gradient clearfix">'. | ||
43 | + '<div class="one_page_edit_check float"></div>'. | ||
44 | + '<div class="one_page_edit_name float"><a href="/discount_update/'.$p['id'].'" title="">'.$p['name'].'</a></div>'. | ||
45 | + '<div class="'.$status_class.' float_right"><a href="/discount_switch/'.$p['id'].'" title="Изменить статус" onclick="return confirm(\'Вы действительно хотите изменить статус?\')"></a></div>'. | ||
46 | + '<div class="one_page_delete_ico float_right"><a href="/discount_delete/'.$p['id'].'" title="Удалить" onclick="return confirm(\'Вы действительно хотите удалить информацию?\')"></a></div>'. | ||
47 | + '<div class="one_page_edit_ico float_right"><a href="/discount_update/'.$p['id'].'" title="Редактировать"></a></div>'. | ||
48 | + '</div>'; | ||
49 | + } | ||
50 | + | ||
51 | + | ||
52 | + echo( $data_pages ); | ||
53 | + } | ||
54 | + | ||
55 | + ?> | ||
56 | + | ||
57 | + </div> | ||
58 | + | ||
59 | + </div> | ||
60 | + <div class="inner"> | ||
61 | + <div class="paginate"> | ||
62 | + <?=$paginate?> | ||
63 | + </div> | ||
64 | + </div> | ||
65 | + </div> | ||
66 | + | ||
67 | + </div> | ||
68 | + | ||
69 | + </div> | ||
70 | +</div> | ||
71 | +</div> |
src/app/backend/views/partial/sidebar.php
@@ -57,6 +57,7 @@ | @@ -57,6 +57,7 @@ | ||
57 | <ul class="body"> | 57 | <ul class="body"> |
58 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'reviews_index' ]) ?>" title="Акции">Отзывы</a></li> | 58 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'reviews_index' ]) ?>" title="Акции">Отзывы</a></li> |
59 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'sales_index' ]) ?>" title="Акции">Акции основного сайта</a></li> | 59 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'sales_index' ]) ?>" title="Акции">Акции основного сайта</a></li> |
60 | + <li class="point4"><a href="<?= $this->url->get([ 'for' => 'discount_index' ]) ?>" title="Промокоды">Скидки</a></li> | ||
60 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'promo_codes_index' ]) ?>" title="Промокоды">Промокоды</a></li> | 61 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'promo_codes_index' ]) ?>" title="Промокоды">Промокоды</a></li> |
61 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'action_discount_index' ]) ?>" title="Акции">Акции для магазина</a></li> | 62 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'action_discount_index' ]) ?>" title="Акции">Акции для магазина</a></li> |
62 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'actions_index' ]) ?>" title="Пределы">Пределы акций для магазина</a></li> | 63 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'actions_index' ]) ?>" title="Пределы">Пределы акций для магазина</a></li> |
src/app/backend/views/promo_codes/addEdit.php
@@ -273,7 +273,7 @@ | @@ -273,7 +273,7 @@ | ||
273 | parent.append(items); | 273 | parent.append(items); |
274 | } | 274 | } |
275 | 275 | ||
276 | - /* var data = JSON.parse('<?php //echo json_encode($catalog_temp); ?>');*/ | 276 | + // var data = JSON.parse("<?php //echo json_encode($catalog_temp); ?>"); |
277 | 277 | ||
278 | /*$('#name').autocomplete({ | 278 | /*$('#name').autocomplete({ |
279 | minLength: 2, | 279 | minLength: 2, |
src/app/frontend/controllers/MenuController.php
@@ -17,25 +17,22 @@ class MenuController extends \controllers\ControllerBase | @@ -17,25 +17,22 @@ class MenuController extends \controllers\ControllerBase | ||
17 | return $this->response->redirect('dealer/cart'); | 17 | return $this->response->redirect('dealer/cart'); |
18 | } | 18 | } |
19 | 19 | ||
20 | - $lang_url = $this->seoUrl->getChangeLangUrl(); | ||
21 | - $in_cart = $this->session->get('in_cart', []); | ||
22 | - $customer_id = $this->session->get('id'); | ||
23 | - $customer_email = $this->session->get('customer_email'); | ||
24 | - | 20 | + $lang_url = $this->seoUrl->getChangeLangUrl(); |
21 | + $in_cart = $this->session->get('in_cart', []); | ||
22 | + $customer_id = $this->session->get('id'); | ||
23 | + $customer_email = $this->session->get('customer_email'); | ||
25 | $session_promo_code = $this->session->get('promo_code'); | 24 | $session_promo_code = $this->session->get('promo_code'); |
25 | + $customer = !empty( $customer_id ) ? $this->models->getCustomers()->getCustomer( $customer_id ) : []; | ||
26 | 26 | ||
27 | - $customer = !empty( $customer_id ) ? $this->models->getCustomers()->getCustomer( $customer_id ) : []; | ||
28 | - $this->session->set( 'return_url', 'basket' ); // для redirect после авторизации на соц сетях | ||
29 | - | ||
30 | - $items = []; | ||
31 | - $total_price = 0; | ||
32 | - $err = 0; | 27 | + $this->session->set( 'return_url', 'basket' ); // для redirect после авторизации на соц сетях |
33 | 28 | ||
34 | - $cities_ = $this->novaposhta->city(); | 29 | + $items = []; |
30 | + $total_price = 0; | ||
31 | + $err = 0; | ||
32 | + $cities_ = $this->novaposhta->city(); | ||
35 | 33 | ||
36 | foreach( $cities_->item as $c ) | 34 | foreach( $cities_->item as $c ) |
37 | { | 35 | { |
38 | - | ||
39 | $cities[strval($c->CityID)] = strval($c->Description); | 36 | $cities[strval($c->CityID)] = strval($c->Description); |
40 | } | 37 | } |
41 | 38 | ||
@@ -43,24 +40,33 @@ class MenuController extends \controllers\ControllerBase | @@ -43,24 +40,33 @@ class MenuController extends \controllers\ControllerBase | ||
43 | { | 40 | { |
44 | $cart = $this->common->getCartItems($in_cart, $this->lang_id); | 41 | $cart = $this->common->getCartItems($in_cart, $this->lang_id); |
45 | 42 | ||
43 | + //promocode | ||
46 | if(!empty($session_promo_code)) { | 44 | if(!empty($session_promo_code)) { |
47 | if($this->common->applyPromoCode($session_promo_code, $cart['items'])) { | 45 | if($this->common->applyPromoCode($session_promo_code, $cart['items'])) { |
48 | $this->common->countOrderSum($cart); | 46 | $this->common->countOrderSum($cart); |
49 | $cart['total_price'] = $cart['total_sum']; | 47 | $cart['total_price'] = $cart['total_sum']; |
50 | } | 48 | } |
51 | } | 49 | } |
52 | - $total_price = $cart['total_price']; | ||
53 | - $items = $cart['items']; | ||
54 | - $items_ = $cart['items_']; | ||
55 | 50 | ||
56 | - } | 51 | + //discount |
52 | + $discount = $this->getDi()->get('models')->getDiscount()->getActiveData(); | ||
53 | + if (!empty($discount)) { | ||
54 | + $discount = $discount[0]; | ||
55 | + } | ||
56 | + if ($this->common->applyPromoCode($discount, $cart['items'])) { | ||
57 | + $this->common->countOrderSum($cart); | ||
58 | + $cart['total_price'] = $cart['total_sum']; | ||
59 | + } | ||
57 | 60 | ||
61 | + $total_price = $cart['total_price']; | ||
62 | + $items = $cart['items']; | ||
63 | + $items_ = $cart['items_']; | ||
64 | + } | ||
58 | 65 | ||
59 | if ( $this->request->isPost() ) | 66 | if ( $this->request->isPost() ) |
60 | { | 67 | { |
61 | $order['email'] = $this->request->getPost('login_email', 'string', NULL ); | 68 | $order['email'] = $this->request->getPost('login_email', 'string', NULL ); |
62 | $order['passwd'] = $this->request->getPost('login_passwd', 'string', NULL ); | 69 | $order['passwd'] = $this->request->getPost('login_passwd', 'string', NULL ); |
63 | - | ||
64 | $promo_code = $this->request->getPost('promo_code', 'string', NULL ); | 70 | $promo_code = $this->request->getPost('promo_code', 'string', NULL ); |
65 | 71 | ||
66 | if(empty($session_promo_code)) { | 72 | if(empty($session_promo_code)) { |
@@ -73,8 +79,8 @@ class MenuController extends \controllers\ControllerBase | @@ -73,8 +79,8 @@ class MenuController extends \controllers\ControllerBase | ||
73 | 79 | ||
74 | $order_items = $this->request->getPost('count_items', NULL, [] ); | 80 | $order_items = $this->request->getPost('count_items', NULL, [] ); |
75 | $order_color = $this->request->getPost('color', NULL, [] ); | 81 | $order_color = $this->request->getPost('color', NULL, [] ); |
76 | - $order_size = $this->request->getPost('size', NULL, [] ); | ||
77 | - $order_is = $this->request->getPost('is', NULL, [] ); | 82 | + $order_size = $this->request->getPost('size', NULL, [] ); |
83 | + $order_is = $this->request->getPost('is', NULL, [] ); | ||
78 | $order['total_sum'] = 0; | 84 | $order['total_sum'] = 0; |
79 | 85 | ||
80 | foreach( $order_items as $key => $val ) | 86 | foreach( $order_items as $key => $val ) |
@@ -83,15 +89,12 @@ class MenuController extends \controllers\ControllerBase | @@ -83,15 +89,12 @@ class MenuController extends \controllers\ControllerBase | ||
83 | $items_[$key]['total_price'] = round($val*$items_[$key]['price2'], 1); | 89 | $items_[$key]['total_price'] = round($val*$items_[$key]['price2'], 1); |
84 | 90 | ||
85 | if(isset($order_color[$key])) | 91 | if(isset($order_color[$key])) |
86 | - $items_[$key]['color'] = $order_color[$key]; | 92 | + $items_[$key]['color'] = $order_color[$key]; |
87 | 93 | ||
88 | - $items_[$key]['size'] = $order_size[$key]; | ||
89 | - $items_[$key]['is'] = $order_is[$key]; | ||
90 | - | 94 | + $items_[$key]['size'] = $order_size[$key]; |
95 | + $items_[$key]['is'] = $order_is[$key]; | ||
91 | $order['items'][] = $items_[$key]; | 96 | $order['items'][] = $items_[$key]; |
92 | $order['total_sum'] += $items_[$key]['total_price']; | 97 | $order['total_sum'] += $items_[$key]['total_price']; |
93 | - | ||
94 | - | ||
95 | $item_id_in_cart = $this->common->array_column( $in_cart, 'item_id' ); | 98 | $item_id_in_cart = $this->common->array_column( $in_cart, 'item_id' ); |
96 | 99 | ||
97 | if( in_array( $key, $item_id_in_cart ) ) | 100 | if( in_array( $key, $item_id_in_cart ) ) |
@@ -106,9 +109,10 @@ class MenuController extends \controllers\ControllerBase | @@ -106,9 +109,10 @@ class MenuController extends \controllers\ControllerBase | ||
106 | } | 109 | } |
107 | } | 110 | } |
108 | 111 | ||
109 | - $order['total_sum'] = round( $order['total_sum'], 1 ); | 112 | + $order['total_sum'] = round( $order['total_sum'], 1 ); |
110 | 113 | ||
111 | $this->session->set( 'in_cart', $in_cart ); | 114 | $this->session->set( 'in_cart', $in_cart ); |
115 | + | ||
112 | if ( !empty( $order['email'] ) && !empty( $order['passwd'] ) ) | 116 | if ( !empty( $order['email'] ) && !empty( $order['passwd'] ) ) |
113 | { | 117 | { |
114 | 118 | ||
@@ -130,8 +134,6 @@ class MenuController extends \controllers\ControllerBase | @@ -130,8 +134,6 @@ class MenuController extends \controllers\ControllerBase | ||
130 | $this->flash->success($this->languages->getTranslation()->_("please_change_the_password")); | 134 | $this->flash->success($this->languages->getTranslation()->_("please_change_the_password")); |
131 | $this->session->set( 'customer_email', $order['email'] ); | 135 | $this->session->set( 'customer_email', $order['email'] ); |
132 | return $this->response->redirect([ 'for' => 'finish_registration', 'language' => $this->lang_name ]); | 136 | return $this->response->redirect([ 'for' => 'finish_registration', 'language' => $this->lang_name ]); |
133 | - | ||
134 | - | ||
135 | } | 137 | } |
136 | } | 138 | } |
137 | 139 | ||
@@ -178,7 +180,22 @@ class MenuController extends \controllers\ControllerBase | @@ -178,7 +180,22 @@ class MenuController extends \controllers\ControllerBase | ||
178 | $order['passwd_'] = $passwd_; | 180 | $order['passwd_'] = $passwd_; |
179 | $order['passwd'] = $this->common->hashPasswd( $passwd_ ); | 181 | $order['passwd'] = $this->common->hashPasswd( $passwd_ ); |
180 | 182 | ||
181 | - // save order | 183 | + //promocode |
184 | + if(!empty($promo_code)) { | ||
185 | + if($this->common->applyPromoCode($promo_code[0], $order['items'])) | ||
186 | + $this->common->countOrderSum($order); | ||
187 | + } | ||
188 | + | ||
189 | + //discount | ||
190 | + $discount = $this->getDi()->get('models')->getDiscount()->getActiveData(); | ||
191 | + if (!empty($discount)) { | ||
192 | + $discount = $discount[0]; | ||
193 | + } | ||
194 | + if ($this->common->applyPromoCode($discount, $order['items'])) { | ||
195 | + $this->common->countOrderSum($order); | ||
196 | + } | ||
197 | + | ||
198 | + // save order | ||
182 | $proposal_number = $this->models->getOrders()->addOrder($order); | 199 | $proposal_number = $this->models->getOrders()->addOrder($order); |
183 | $order['proposal_number'] = $proposal_number['proposal_number']; | 200 | $order['proposal_number'] = $proposal_number['proposal_number']; |
184 | $order['confirmed'] = $proposal_number['confirmed']; | 201 | $order['confirmed'] = $proposal_number['confirmed']; |
@@ -187,11 +204,6 @@ class MenuController extends \controllers\ControllerBase | @@ -187,11 +204,6 @@ class MenuController extends \controllers\ControllerBase | ||
187 | $sms_text = "Vash zakaz prinyat. #:".$proposal_number['proposal_number']." V blijayshee vremya menedjer svyajetsya s Vami (044) 581-67-15"; | 204 | $sms_text = "Vash zakaz prinyat. #:".$proposal_number['proposal_number']." V blijayshee vremya menedjer svyajetsya s Vami (044) 581-67-15"; |
188 | $this->sms->sendSMS($order['phone'], $sms_text); | 205 | $this->sms->sendSMS($order['phone'], $sms_text); |
189 | 206 | ||
190 | - if(!empty($promo_code)) { | ||
191 | - if($this->common->applyPromoCode($promo_code[0], $order['items'])) | ||
192 | - $this->common->countOrderSum($order); | ||
193 | - } | ||
194 | - | ||
195 | // novaposhta | 207 | // novaposhta |
196 | if (!empty($proposal_number['novaposhta_tnn'])) | 208 | if (!empty($proposal_number['novaposhta_tnn'])) |
197 | { | 209 | { |
@@ -251,7 +263,6 @@ class MenuController extends \controllers\ControllerBase | @@ -251,7 +263,6 @@ class MenuController extends \controllers\ControllerBase | ||
251 | return $this->response->redirect([ 'for' => 'basket', 'language' => $this->lang_name ]); | 263 | return $this->response->redirect([ 'for' => 'basket', 'language' => $this->lang_name ]); |
252 | } | 264 | } |
253 | } | 265 | } |
254 | - | ||
255 | } | 266 | } |
256 | 267 | ||
257 | $static_page_alias = '/basket'. $this->lang_name; | 268 | $static_page_alias = '/basket'. $this->lang_name; |
@@ -271,7 +282,6 @@ class MenuController extends \controllers\ControllerBase | @@ -271,7 +282,6 @@ class MenuController extends \controllers\ControllerBase | ||
271 | ]); | 282 | ]); |
272 | } | 283 | } |
273 | 284 | ||
274 | - | ||
275 | public function orderCompletedAction() { | 285 | public function orderCompletedAction() { |
276 | $completed = $this->languages->getTranslation()->_("successfully_realized_order"); | 286 | $completed = $this->languages->getTranslation()->_("successfully_realized_order"); |
277 | 287 | ||
@@ -329,7 +339,6 @@ class MenuController extends \controllers\ControllerBase | @@ -329,7 +339,6 @@ class MenuController extends \controllers\ControllerBase | ||
329 | ]); | 339 | ]); |
330 | } | 340 | } |
331 | 341 | ||
332 | - | ||
333 | public function getCitiesAction( ) | 342 | public function getCitiesAction( ) |
334 | { | 343 | { |
335 | header('Content-Type: application/json; charset=utf8'); | 344 | header('Content-Type: application/json; charset=utf8'); |
@@ -357,7 +366,6 @@ class MenuController extends \controllers\ControllerBase | @@ -357,7 +366,6 @@ class MenuController extends \controllers\ControllerBase | ||
357 | die( json_encode( $selected_cities ) ); | 366 | die( json_encode( $selected_cities ) ); |
358 | } | 367 | } |
359 | 368 | ||
360 | - | ||
361 | public function getOfficesAction( ) | 369 | public function getOfficesAction( ) |
362 | { | 370 | { |
363 | header('Content-Type: application/json; charset=utf8'); | 371 | header('Content-Type: application/json; charset=utf8'); |
@@ -378,7 +386,6 @@ class MenuController extends \controllers\ControllerBase | @@ -378,7 +386,6 @@ class MenuController extends \controllers\ControllerBase | ||
378 | die( json_encode( $offices ) ); | 386 | die( json_encode( $offices ) ); |
379 | } | 387 | } |
380 | 388 | ||
381 | - | ||
382 | public function addProductBasketAction(){ | 389 | public function addProductBasketAction(){ |
383 | $item_id = $_GET['productID']; | 390 | $item_id = $_GET['productID']; |
384 | $count_items = $_GET['productCount']; | 391 | $count_items = $_GET['productCount']; |
@@ -392,21 +399,31 @@ class MenuController extends \controllers\ControllerBase | @@ -392,21 +399,31 @@ class MenuController extends \controllers\ControllerBase | ||
392 | } | 399 | } |
393 | 400 | ||
394 | public function getCartItemsAction() { | 401 | public function getCartItemsAction() { |
402 | + | ||
395 | $this->view->disable(); | 403 | $this->view->disable(); |
396 | 404 | ||
397 | $in_cart = $this->session->get('in_cart', []); | 405 | $in_cart = $this->session->get('in_cart', []); |
398 | 406 | ||
399 | - | ||
400 | - | ||
401 | $cart_items = $this->common->getCartItems($in_cart, $this->lang_id); | 407 | $cart_items = $this->common->getCartItems($in_cart, $this->lang_id); |
402 | 408 | ||
403 | - | ||
404 | - | ||
405 | if($this->session->get('special_users_id') != null) { | 409 | if($this->session->get('special_users_id') != null) { |
406 | $special_users_id = $this->session->get('special_users_id'); | 410 | $special_users_id = $this->session->get('special_users_id'); |
407 | $special_user = $this->models->getSpecialUsers()->getOneData($special_users_id)[0]; | 411 | $special_user = $this->models->getSpecialUsers()->getOneData($special_users_id)[0]; |
408 | } | 412 | } |
409 | 413 | ||
414 | + //discount | ||
415 | + | ||
416 | + $discount = $this->models->getDiscount()->getActiveData(); | ||
417 | + if (!empty($discount)) { | ||
418 | + $discount = $discount[0]; | ||
419 | + } | ||
420 | + if ($this->common->applyPromoCode($discount, $cart_items['items'])) { | ||
421 | + $this->common->countOrderSum($cart_items); | ||
422 | + $cart_items['total_price'] = $cart_items['total_sum']; | ||
423 | + } | ||
424 | + | ||
425 | + /************************/ | ||
426 | + | ||
410 | foreach($cart_items['items'] as $k => $item) { | 427 | foreach($cart_items['items'] as $k => $item) { |
411 | 428 | ||
412 | $cart_items['items'][$k]['group_sizes'] = $this->models->getItems()->getSizesByGroupId( $this->lang_id, $item['group_id'] ); | 429 | $cart_items['items'][$k]['group_sizes'] = $this->models->getItems()->getSizesByGroupId( $this->lang_id, $item['group_id'] ); |
@@ -420,7 +437,6 @@ class MenuController extends \controllers\ControllerBase | @@ -420,7 +437,6 @@ class MenuController extends \controllers\ControllerBase | ||
420 | ? $cart_items['items'][$k]['prices'][$special_user['status']] | 437 | ? $cart_items['items'][$k]['prices'][$special_user['status']] |
421 | : $item['price2'], 2, '.', '' | 438 | : $item['price2'], 2, '.', '' |
422 | ); | 439 | ); |
423 | - | ||
424 | $cart_items['items'][$k]['total_price'] = $cart_items['items'][$k]['price'] * $item['count']; | 440 | $cart_items['items'][$k]['total_price'] = $cart_items['items'][$k]['price'] * $item['count']; |
425 | 441 | ||
426 | $cart_items['new_total_price'] += $cart_items['items'][$k]['total_price']; | 442 | $cart_items['new_total_price'] += $cart_items['items'][$k]['total_price']; |
@@ -429,13 +445,13 @@ class MenuController extends \controllers\ControllerBase | @@ -429,13 +445,13 @@ class MenuController extends \controllers\ControllerBase | ||
429 | 445 | ||
430 | } else { | 446 | } else { |
431 | $cart_items['items'][$k]['price'] = $item['price2']; | 447 | $cart_items['items'][$k]['price'] = $item['price2']; |
432 | - } | 448 | + } |
449 | + | ||
433 | } | 450 | } |
434 | 451 | ||
435 | echo json_encode($cart_items); | 452 | echo json_encode($cart_items); |
436 | } | 453 | } |
437 | 454 | ||
438 | - | ||
439 | public function addToBasketAction() | 455 | public function addToBasketAction() |
440 | { | 456 | { |
441 | $count = 0; | 457 | $count = 0; |
src/app/frontend/controllers/PageController.php
@@ -135,7 +135,16 @@ | @@ -135,7 +135,16 @@ | ||
135 | $timestamp_left = $left_date->getTimestamp(); | 135 | $timestamp_left = $left_date->getTimestamp(); |
136 | $active_sales[$k]['seconds_left'] = $timestamp_left - $now; | 136 | $active_sales[$k]['seconds_left'] = $timestamp_left - $now; |
137 | } | 137 | } |
138 | - /* | 138 | + |
139 | + $discount = $this->models->getDiscount()->getActiveData(); | ||
140 | + if (!empty($discount)) { | ||
141 | + $discount = $discount[0]; | ||
142 | + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); | ||
143 | + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); | ||
144 | + $discount['group_ids'] = explode(',', $discount['group_ids']); | ||
145 | + | ||
146 | + } | ||
147 | + | ||
139 | $css = [ | 148 | $css = [ |
140 | '/landing_sales/style.css', | 149 | '/landing_sales/style.css', |
141 | 150 | ||
@@ -146,7 +155,7 @@ | @@ -146,7 +155,7 @@ | ||
146 | $js = [ | 155 | $js = [ |
147 | '/landing_sales/flipclock.min.js' | 156 | '/landing_sales/flipclock.min.js' |
148 | ]; | 157 | ]; |
149 | - */ | 158 | + |
150 | $css = null; | 159 | $css = null; |
151 | $js = null; | 160 | $js = null; |
152 | 161 | ||
@@ -171,7 +180,8 @@ | @@ -171,7 +180,8 @@ | ||
171 | 'meta_title' => $meta_title[$this->lang_id], | 180 | 'meta_title' => $meta_title[$this->lang_id], |
172 | 'meta_description' => $meta_description[$this->lang_id], | 181 | 'meta_description' => $meta_description[$this->lang_id], |
173 | 'slider' => $slider, | 182 | 'slider' => $slider, |
174 | - 'active_sales' => $active_sales | 183 | + 'active_sales' => $active_sales, |
184 | + 'discount' => $discount | ||
175 | ]); | 185 | ]); |
176 | } | 186 | } |
177 | 187 | ||
@@ -424,7 +434,15 @@ | @@ -424,7 +434,15 @@ | ||
424 | '1' => (isset( $seo['description'] ) && !empty( $seo['description'] ) ? $seo['description'] : 'Замовити '.$catalog['catalog']['title'].' у Києві за найкращою ціною. Якість товара підтверджена професіоналами.').(isset( $page ) && !empty( $page ) && $page != '1' ? ' страница '.$page : ''), | 434 | '1' => (isset( $seo['description'] ) && !empty( $seo['description'] ) ? $seo['description'] : 'Замовити '.$catalog['catalog']['title'].' у Києві за найкращою ціною. Якість товара підтверджена професіоналами.').(isset( $page ) && !empty( $page ) && $page != '1' ? ' страница '.$page : ''), |
425 | '2' => (isset( $seo['description'] ) && !empty( $seo['description'] ) ? $seo['description'] : 'Заказать '.$catalog['catalog']['title'].' в Киеве по лучшей цене. Качество товара подтверждена профессионалами.').(isset( $page ) && !empty( $page ) && $page != '1' ? ' страница '.$page : '') | 435 | '2' => (isset( $seo['description'] ) && !empty( $seo['description'] ) ? $seo['description'] : 'Заказать '.$catalog['catalog']['title'].' в Киеве по лучшей цене. Качество товара подтверждена профессионалами.').(isset( $page ) && !empty( $page ) && $page != '1' ? ' страница '.$page : '') |
426 | ]; | 436 | ]; |
427 | - | 437 | + |
438 | + $discount = $this->models->getDiscount()->getActiveData(); | ||
439 | + if (!empty($discount)) { | ||
440 | + $discount = $discount[0]; | ||
441 | + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); | ||
442 | + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); | ||
443 | + $discount['group_ids'] = explode(',', $discount['group_ids']); | ||
444 | + } | ||
445 | + | ||
428 | if($subtype==='semena_gazonnykh_trav_1c_21') | 446 | if($subtype==='semena_gazonnykh_trav_1c_21') |
429 | $this->view->setMainView('landing'); | 447 | $this->view->setMainView('landing'); |
430 | elseif($subtype==='nasinnja_gazonnikh_trav_1c1') | 448 | elseif($subtype==='nasinnja_gazonnikh_trav_1c1') |
@@ -457,7 +475,8 @@ | @@ -457,7 +475,8 @@ | ||
457 | 'subtype_alias' => $subtype_alias, | 475 | 'subtype_alias' => $subtype_alias, |
458 | 'catalog_sales' => $catalog_sales, | 476 | 'catalog_sales' => $catalog_sales, |
459 | 'css' => $cssSale, | 477 | 'css' => $cssSale, |
460 | - 'js' => $jsSale | 478 | + 'js' => $jsSale, |
479 | + 'discount' => $discount | ||
461 | ]); | 480 | ]); |
462 | } | 481 | } |
463 | else | 482 | else |
@@ -685,6 +704,14 @@ | @@ -685,6 +704,14 @@ | ||
685 | $catalog_sales[] = $active_sales[$k]; | 704 | $catalog_sales[] = $active_sales[$k]; |
686 | } | 705 | } |
687 | } | 706 | } |
707 | + | ||
708 | + $discount = $this->models->getDiscount()->getActiveData(); | ||
709 | + if (!empty($discount)) { | ||
710 | + $discount = $discount[0]; | ||
711 | + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); | ||
712 | + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); | ||
713 | + $discount['group_ids'] = explode(',', $discount['group_ids']); | ||
714 | + } | ||
688 | 715 | ||
689 | $cssSale = [ | 716 | $cssSale = [ |
690 | 'https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic', | 717 | 'https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic', |
@@ -726,8 +753,9 @@ | @@ -726,8 +753,9 @@ | ||
726 | 'meta_link_next' => $meta_link_next[1], | 753 | 'meta_link_next' => $meta_link_next[1], |
727 | 'meta_link_prev' => $meta_link_prev[1], | 754 | 'meta_link_prev' => $meta_link_prev[1], |
728 | 'catalog_sales' => $catalog_sales, | 755 | 'catalog_sales' => $catalog_sales, |
729 | - 'css' => $cssSale, | ||
730 | - 'js' => $jsSale | 756 | + 'css' => $cssSale, |
757 | + 'js' => $jsSale, | ||
758 | + 'discount' => $discount | ||
731 | ]); | 759 | ]); |
732 | } | 760 | } |
733 | 761 | ||
@@ -771,7 +799,6 @@ | @@ -771,7 +799,6 @@ | ||
771 | if( !empty( $type_child ) ) | 799 | if( !empty( $type_child ) ) |
772 | { | 800 | { |
773 | $type_alias = $type.'--'.$type_child; | 801 | $type_alias = $type.'--'.$type_child; |
774 | - | ||
775 | } | 802 | } |
776 | else | 803 | else |
777 | { | 804 | { |
@@ -855,7 +882,7 @@ | @@ -855,7 +882,7 @@ | ||
855 | $news[$k]['link'] = $this->url->get(['for' => 'one_tips', 'tips_id' => $n['id'], 'tips_alias' => $n['alias']]); | 882 | $news[$k]['link'] = $this->url->get(['for' => 'one_tips', 'tips_id' => $n['id'], 'tips_alias' => $n['alias']]); |
856 | } | 883 | } |
857 | 884 | ||
858 | - // get popular items_groups | 885 | + // get popular items_groups |
859 | // | 886 | // |
860 | // $popular_groups = $this->models->getItems()->getPopularItems($this->lang_id); | 887 | // $popular_groups = $this->models->getItems()->getPopularItems($this->lang_id); |
861 | // $popular_groups = $this->common->explodeAlias($popular_groups); | 888 | // $popular_groups = $this->common->explodeAlias($popular_groups); |
@@ -893,7 +920,14 @@ | @@ -893,7 +920,14 @@ | ||
893 | '1' => isset($seo['description']) && !empty($seo['description']) ? $seo['description'] : 'Професіонали рекомендують ' . $catalog_name . ' ' . $item['0']['title'] . ' в інтернет магазині насіння Semena.in.ua.', | 920 | '1' => isset($seo['description']) && !empty($seo['description']) ? $seo['description'] : 'Професіонали рекомендують ' . $catalog_name . ' ' . $item['0']['title'] . ' в інтернет магазині насіння Semena.in.ua.', |
894 | '2' => isset($seo['description']) && !empty($seo['description']) ? $seo['description'] : 'Профессионалы рекомендуют ' . $catalog_name . ' ' . $item['0']['title'] . ' в интернет магазине семян Semena.in.ua.' | 921 | '2' => isset($seo['description']) && !empty($seo['description']) ? $seo['description'] : 'Профессионалы рекомендуют ' . $catalog_name . ' ' . $item['0']['title'] . ' в интернет магазине семян Semena.in.ua.' |
895 | ]; | 922 | ]; |
896 | - | 923 | + |
924 | + $discount = $this->models->getDiscount()->getActiveData(); | ||
925 | + if (!empty($discount)) { | ||
926 | + $discount = $discount[0]; | ||
927 | + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); | ||
928 | + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); | ||
929 | + $discount['group_ids'] = explode(',', $discount['group_ids']); | ||
930 | + } | ||
897 | 931 | ||
898 | $this->view->setVars([ | 932 | $this->view->setVars([ |
899 | 'change_lang_url' => $lang_url, | 933 | 'change_lang_url' => $lang_url, |
@@ -914,8 +948,9 @@ | @@ -914,8 +948,9 @@ | ||
914 | 'meta_description' => $meta_description[$this->lang_id], | 948 | 'meta_description' => $meta_description[$this->lang_id], |
915 | 'breadcrumbs' => $breadcrumbs, | 949 | 'breadcrumbs' => $breadcrumbs, |
916 | 'catalog_id' => $catalog_id, | 950 | 'catalog_id' => $catalog_id, |
917 | - 'type_alias' => $type_alias, | ||
918 | - 'subtype_alias' => $subtype_alias | 951 | + 'type_alias' => $type_alias, |
952 | + 'subtype_alias' => $subtype_alias, | ||
953 | + 'discount' => $discount | ||
919 | ]); | 954 | ]); |
920 | } | 955 | } |
921 | else | 956 | else |
@@ -996,10 +1031,8 @@ | @@ -996,10 +1031,8 @@ | ||
996 | { | 1031 | { |
997 | $item_id = $this->request->getPost( 'item_id', 'int', '' ); | 1032 | $item_id = $this->request->getPost( 'item_id', 'int', '' ); |
998 | $group_alias = $this->request->getPost( 'group_alias', 'string', '' ); | 1033 | $group_alias = $this->request->getPost( 'group_alias', 'string', '' ); |
999 | - | ||
1000 | $item = $this->models->getItems()->getOneItem( $this->lang_id, $item_id ); | 1034 | $item = $this->models->getItems()->getOneItem( $this->lang_id, $item_id ); |
1001 | $filters = $this->models->getFilters()->getFiltersByItemId( $this->lang_id, $item_id ); | 1035 | $filters = $this->models->getFilters()->getFiltersByItemId( $this->lang_id, $item_id ); |
1002 | - | ||
1003 | $colors_info = $this->models->getItems()->getColorsInfoByColorId( $this->lang_id, $item['0']['color_id'] ); | 1036 | $colors_info = $this->models->getItems()->getColorsInfoByColorId( $this->lang_id, $item['0']['color_id'] ); |
1004 | 1037 | ||
1005 | $item['0']['color_title'] = NULL; | 1038 | $item['0']['color_title'] = NULL; |
@@ -1017,11 +1050,10 @@ | @@ -1017,11 +1050,10 @@ | ||
1017 | '<div class="float properties" style="color:'.$colors_info['0']['absolute_color'].'">'.$colors_info['0']['color_title'].'</div>'; | 1050 | '<div class="float properties" style="color:'.$colors_info['0']['absolute_color'].'">'.$colors_info['0']['color_title'].'</div>'; |
1018 | } | 1051 | } |
1019 | 1052 | ||
1020 | - $item['0']['explode'] = explode( '/', $item['0']['full_alias'] ); | ||
1021 | - $item['0']['type_alias'] = $item['0']['explode']['1']; | ||
1022 | - $item['0']['subtype_alias'] = $item['0']['explode']['2']; | ||
1023 | - unset( $item['0']['explode'] ); | ||
1024 | - | 1053 | + $item['0']['explode'] = explode( '/', $item['0']['full_alias'] ); |
1054 | + $item['0']['type_alias'] = $item['0']['explode']['1']; | ||
1055 | + $item['0']['subtype_alias'] = $item['0']['explode']['2']; | ||
1056 | + unset( $item['0']['explode'] ); | ||
1025 | $item['0']['alias'] = $this->url->get([ 'for' => 'item', 'type' => $item['0']['type_alias'], 'subtype' => $item['0']['subtype_alias'], 'group_alias' => $group_alias, 'item_id' => $item_id ]); | 1057 | $item['0']['alias'] = $this->url->get([ 'for' => 'item', 'type' => $item['0']['type_alias'], 'subtype' => $item['0']['subtype_alias'], 'group_alias' => $group_alias, 'item_id' => $item_id ]); |
1026 | $item['0']['filters'] = $filters; | 1058 | $item['0']['filters'] = $filters; |
1027 | $item['0']['images'] = $this->etc->int2arr( $item['0']['photogallery'] ); | 1059 | $item['0']['images'] = $this->etc->int2arr( $item['0']['photogallery'] ); |
@@ -1074,10 +1106,25 @@ | @@ -1074,10 +1106,25 @@ | ||
1074 | 'special_user' => $special_user | 1106 | 'special_user' => $special_user |
1075 | ]); | 1107 | ]); |
1076 | } | 1108 | } |
1109 | + | ||
1110 | + $discount = $this->models->getDiscount()->getActiveData(); | ||
1111 | + if (!empty($discount)) { | ||
1112 | + $discount = $discount[0]; | ||
1113 | + $discount['group_ids'] = str_replace('{', '', $discount['group_ids']); | ||
1114 | + $discount['group_ids'] = str_replace('}', '', $discount['group_ids']); | ||
1115 | + $discount['group_ids'] = explode(',', $discount['group_ids']); | ||
1116 | + if ($discount['discount'] > 0 && $discount['discount'] <= 100 && in_array($item_id, $discount['group_ids'])) { | ||
1117 | + $discount = $discount['discount']; | ||
1118 | + } | ||
1119 | + else { | ||
1120 | + $discount = 0; | ||
1121 | + } | ||
1122 | + } | ||
1077 | 1123 | ||
1078 | $this->view->pick('page/changeWithSize'); | 1124 | $this->view->pick('page/changeWithSize'); |
1079 | $this->view->setVars([ | 1125 | $this->view->setVars([ |
1080 | - 'item' => $item['0'] | 1126 | + 'item' => $item['0'], |
1127 | + 'discount' => $discount | ||
1081 | ]); | 1128 | ]); |
1082 | $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); | 1129 | $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); |
1083 | } | 1130 | } |
@@ -1419,15 +1466,19 @@ | @@ -1419,15 +1466,19 @@ | ||
1419 | public function aboutuaAction(){ | 1466 | public function aboutuaAction(){ |
1420 | $this->view->setMainView('about_ukr'); | 1467 | $this->view->setMainView('about_ukr'); |
1421 | } | 1468 | } |
1469 | + | ||
1422 | public function aboutengAction(){ | 1470 | public function aboutengAction(){ |
1423 | $this->view->setMainView('about_eng'); | 1471 | $this->view->setMainView('about_eng'); |
1424 | } | 1472 | } |
1473 | + | ||
1425 | public function please_returnAction(){ | 1474 | public function please_returnAction(){ |
1426 | $this->view->setMainView('please_return'); | 1475 | $this->view->setMainView('please_return'); |
1427 | } | 1476 | } |
1428 | - public function basket_uaAction(){ | 1477 | + |
1478 | + public function basket_uaAction(){ | ||
1429 | $this->view->setMainView('basket_ua'); | 1479 | $this->view->setMainView('basket_ua'); |
1430 | } | 1480 | } |
1481 | + | ||
1431 | public function basket_ruAction(){ | 1482 | public function basket_ruAction(){ |
1432 | $this->view->setMainView('basket_ru'); | 1483 | $this->view->setMainView('basket_ru'); |
1433 | } | 1484 | } |
@@ -1544,4 +1595,4 @@ | @@ -1544,4 +1595,4 @@ | ||
1544 | header(!empty($language) ? "Location:".$language : 'Location:/'); | 1595 | header(!empty($language) ? "Location:".$language : 'Location:/'); |
1545 | } | 1596 | } |
1546 | 1597 | ||
1547 | - } | ||
1548 | \ No newline at end of file | 1598 | \ No newline at end of file |
1599 | + } |
src/app/frontend/views/index.php
@@ -93,7 +93,6 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | @@ -93,7 +93,6 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | ||
93 | </div> | 93 | </div> |
94 | <div class="contact_mob_phones"> | 94 | <div class="contact_mob_phones"> |
95 | <span class="small_digits">(093)</span><span> 026-86-64</span> | 95 | <span class="small_digits">(093)</span><span> 026-86-64</span> |
96 | - | ||
97 | <div style="float:right;font-size:12px;margin-right:65px;" class="contact_callback_phones"> | 96 | <div style="float:right;font-size:12px;margin-right:65px;" class="contact_callback_phones"> |
98 | <a href="<?= $this->seoUrl->setUrl('/callback') ?>" class="callback" title="<?= $t->_("Feedback")?>" id="ajax_simple" data-options="width: 940, height: 400" target="<?= $this->seoUrl->setUrl( $this->url->get([ 'for' => 'callback' ])) ?>" data-type="ajax"><?= $t->_("Feedback")?></a> | 97 | <a href="<?= $this->seoUrl->setUrl('/callback') ?>" class="callback" title="<?= $t->_("Feedback")?>" id="ajax_simple" data-options="width: 940, height: 400" target="<?= $this->seoUrl->setUrl( $this->url->get([ 'for' => 'callback' ])) ?>" data-type="ajax"><?= $t->_("Feedback")?></a> |
99 | </div> | 98 | </div> |
@@ -245,8 +244,8 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | @@ -245,8 +244,8 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | ||
245 | </div> | 244 | </div> |
246 | </div> | 245 | </div> |
247 | 246 | ||
248 | -<div class="open-delivery-modal"> | ||
249 | - <div></div> | 247 | +<div class="open-delivery-modal hidden_modal"> |
248 | + <div><img src="/images/popup_full.png" class="popup_full"><img src="/images/popup_open.png" class="popup_mobile"><span class="modal_close"></span></div> | ||
250 | </div> | 249 | </div> |
251 | <link rel="stylesheet" type="text/css" href="css/fontlato.css"> | 250 | <link rel="stylesheet" type="text/css" href="css/fontlato.css"> |
252 | <div class="delivery-form-par"> | 251 | <div class="delivery-form-par"> |
@@ -268,7 +267,10 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | @@ -268,7 +267,10 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | ||
268 | </div> | 267 | </div> |
269 | 268 | ||
270 | <script> | 269 | <script> |
271 | - $(".open-delivery-modal").click(function(){ | 270 | + $(document).ready(function(){ |
271 | + setTimeout(function(){$(".open-delivery-modal").show();},1000); | ||
272 | + }); | ||
273 | + $(".open-delivery-modal div img").click(function(){ | ||
272 | $(".delivery-form-par").show(); | 274 | $(".delivery-form-par").show(); |
273 | $(".delivery-form-par").animate({opacity: "1"}, 500, function() {}); | 275 | $(".delivery-form-par").animate({opacity: "1"}, 500, function() {}); |
274 | $(".delivery-form-par .popup-main-delivery").animate({opacity: "1",top: "15%"}, 300, function() {}); | 276 | $(".delivery-form-par .popup-main-delivery").animate({opacity: "1",top: "15%"}, 300, function() {}); |
@@ -278,6 +280,9 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | @@ -278,6 +280,9 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; | ||
278 | $(".delivery-form-par").animate({opacity: "0"}, 500, function() {}); | 280 | $(".delivery-form-par").animate({opacity: "0"}, 500, function() {}); |
279 | setTimeout(function(){$(".delivery-form-par").hide();}, 600); | 281 | setTimeout(function(){$(".delivery-form-par").hide();}, 600); |
280 | }); | 282 | }); |
283 | + $(".modal_close").click(function(){ | ||
284 | + $(".open-delivery-modal").hide(); | ||
285 | + }); | ||
281 | </script> | 286 | </script> |
282 | <?php | 287 | <?php |
283 | if( !IS_PRODUCTION ) | 288 | if( !IS_PRODUCTION ) |
src/app/frontend/views/page/changeWithSize.php
@@ -6,9 +6,25 @@ if(isset($special_user)) { | @@ -6,9 +6,25 @@ if(isset($special_user)) { | ||
6 | } else { | 6 | } else { |
7 | $data['price'] = $item['price2']; | 7 | $data['price'] = $item['price2']; |
8 | } | 8 | } |
9 | -$data['html'] = '<div class="clearfix buy_compare"> | ||
10 | - <div class="one_item_price float">'. $t->_("price") . | ||
11 | - ' <span>' . $data['price'] . '</span> грн'; | 9 | +$old_price = $data['price']; |
10 | +$data['price'] = $data['price']*(1-$discount/100); | ||
11 | +$data['price'] = number_format($data['price'], 2, '.', ' '); | ||
12 | +if ($discount == 0) { | ||
13 | + $data['html'] = | ||
14 | + '<div class="clearfix buy_compare"> | ||
15 | + <div class="one_item_price float">'. $t->_("price") . | ||
16 | + ' <span>' . $data['price'] . '</span> грн | ||
17 | + '; | ||
18 | +} | ||
19 | +else { | ||
20 | + $data['html'] = ' | ||
21 | + <div class="clearfix buy_compare"> | ||
22 | + <div class="one_item_price float">'. $t->_("price") . | ||
23 | + ' <span style="text-decoration: line-through;"><span>' . $old_price . '</span> грн</span> | ||
24 | + <br/> | ||
25 | + <span>' . $data['price'] . '</span> грн | ||
26 | + '; | ||
27 | +} | ||
12 | 28 | ||
13 | $data['html'] .= '</ul></div><div data-group_id="' . $item['group_id'] .'" class="one_item_buttons float">'; | 29 | $data['html'] .= '</ul></div><div data-group_id="' . $item['group_id'] .'" class="one_item_buttons float">'; |
14 | 30 | ||
@@ -52,5 +68,4 @@ if(!empty($item['prices'][0])) { | @@ -52,5 +68,4 @@ if(!empty($item['prices'][0])) { | ||
52 | } | 68 | } |
53 | } | 69 | } |
54 | 70 | ||
55 | - | ||
56 | echo json_encode($data); | 71 | echo json_encode($data); |
57 | \ No newline at end of file | 72 | \ No newline at end of file |
src/app/frontend/views/page/item.php
1 | <div id="content" class="clearfix"> | 1 | <div id="content" class="clearfix"> |
2 | -<div class="item"> | ||
3 | -<div class="breadcrumbs"> | ||
4 | - <div class="inner"> | ||
5 | - <div class="item_menu_shadow"></div> | ||
6 | - <?= $breadcrumbs ?> | ||
7 | - </div> | ||
8 | -</div> | ||
9 | - <?php $url = $this->router->getRewriteUri(); ?> | 2 | + <div class="item"> |
3 | + <div class="breadcrumbs"> | ||
4 | + <div class="inner"> | ||
5 | + <div class="item_menu_shadow"></div> | ||
6 | + <?= $breadcrumbs ?> | ||
7 | + </div> | ||
8 | + </div> | ||
9 | + <?php $url = $this->router->getRewriteUri(); ?> | ||
10 | 10 | ||
11 | - <div class="<?= strstr($url, '/dobriva_ta_zasobi_zakhistu_1c0/zasobi_zakhistu_1c1') || strstr($url, '/udobrenija_i_sredstva_zashchity_1c_20/sredstva_zashchity_1c_21') ? 'zasobi_zakhistu_logo' : null ?> item_wrapper" itemscope itemtype="http://schema.org/Product"> | ||
12 | - <div class="inner clearfix"> | ||
13 | - <div class="float item_images"> | ||
14 | - <ul class="thumbnails"> | ||
15 | - <?php | 11 | + <div class="<?= strstr($url, '/dobriva_ta_zasobi_zakhistu_1c0/zasobi_zakhistu_1c1') || strstr($url, '/udobrenija_i_sredstva_zashchity_1c_20/sredstva_zashchity_1c_21') ? 'zasobi_zakhistu_logo' : null ?> item_wrapper" itemscope itemtype="http://schema.org/Product"> |
12 | + <div class="inner clearfix"> | ||
13 | + <div class="float item_images"> | ||
14 | + <ul class="thumbnails"> | ||
15 | + <?php | ||
16 | 16 | ||
17 | - $data_images = ''; | 17 | + $data_images = ''; |
18 | 18 | ||
19 | - if( !empty( $item['images'] ) ) | ||
20 | - { | ||
21 | - $data_images .= | ||
22 | - '<li class="float width_400 '.(count($item['images'])%3==0 ? 'last' : '').'">'. | ||
23 | - '<a href="'.$this->storage->getPhotoUrl( $item['images'][0], 'group', '800x' ).'" title="'.$item['title'].'" data-options="thumbnail: \''.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '128x' ).'\'" class="thumbnail">'. | ||
24 | - '<img src="'.$this->storage->getPhotoUrl( $item['images'][0], 'group', '400x400' ).'" alt="'.$item['title'].'" class="image_400">'. | ||
25 | - '</a>'. | ||
26 | - '</li>'; | ||
27 | - | ||
28 | - foreach( $item['images'] as $k => $i ) | 19 | + if( !empty( $item['images'] ) ) |
29 | { | 20 | { |
30 | $data_images .= | 21 | $data_images .= |
31 | - '<li class="float width_128 '.(($k+1)%3==0 ? 'last' : '').'">'. | ||
32 | - '<a href="'.$this->storage->getPhotoUrl( $i, 'group', '800x' ).'" title="'.$item['title'].'" data-options="thumbnail: \''.$this->storage->getPhotoUrl( $i, 'group', '128x128' ).'\'" class="thumbnail">'. | ||
33 | - '<img itemprop="image" title="'.$item['title'].'" src="'.$this->storage->getPhotoUrl( $i, 'group', '128x128' ).'" alt="Купити '.$item['title'].' в Києві та Львові" class="image_128">'. | 22 | + '<li class="float width_400 '.(count($item['images'])%3==0 ? 'last' : '').'">'. |
23 | + '<a href="'.$this->storage->getPhotoUrl( $item['images'][0], 'group', '800x' ).'" title="'.$item['title'].'" data-options="thumbnail: \''.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '128x' ).'\'" class="thumbnail">'. | ||
24 | + '<img src="'.$this->storage->getPhotoUrl( $item['images'][0], 'group', '400x400' ).'" alt="'.$item['title'].'" class="image_400">'. | ||
34 | '</a>'. | 25 | '</a>'. |
35 | '</li>'; | 26 | '</li>'; |
36 | - } | ||
37 | 27 | ||
28 | + foreach( $item['images'] as $k => $i ) | ||
29 | + { | ||
30 | + $data_images .= | ||
31 | + '<li class="float width_128 '.(($k+1)%3==0 ? 'last' : '').'">'. | ||
32 | + '<a href="'.$this->storage->getPhotoUrl( $i, 'group', '800x' ).'" title="'.$item['title'].'" data-options="thumbnail: \''.$this->storage->getPhotoUrl( $i, 'group', '128x128' ).'\'" class="thumbnail">'. | ||
33 | + '<img itemprop="image" title="'.$item['title'].'" src="'.$this->storage->getPhotoUrl( $i, 'group', '128x128' ).'" alt="Купити '.$item['title'].' в Києві та Львові" class="image_128">'. | ||
34 | + '</a>'. | ||
35 | + '</li>'; | ||
36 | + } | ||
38 | 37 | ||
39 | - } | ||
40 | - elseif( !empty( $item['cover'] ) && empty( $item['images'] ) ) | ||
41 | - { | ||
42 | - $data_images .= | ||
43 | - '<li class="float width_400">'. | ||
44 | - '<a href="'.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '800x' ).'" title="'.$item['title'].'" data-options="thumbnail: \''.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '128x' ).'\'" class="thumbnail">'. | ||
45 | - '<img src="'.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '400x' ).'" alt="'.$item['title'].'" class="image_400">'. | ||
46 | - '</a>'. | ||
47 | - '</li>'; | ||
48 | - } | ||
49 | - else | ||
50 | - { | ||
51 | - $data_images .= | ||
52 | - '<li class="float width_400"> | ||
53 | - <img src="/images/item_main_photo.jpg" alt="" width="400" height="400"> | ||
54 | - </li> | ||
55 | - | ||
56 | - <li class="float width_128"><img src="/images/item_photo.jpg" alt="" width="128" height="128"></li> | ||
57 | - <li class="float width_128 last"><img src="/images/item_photo.jpg" alt="" width="128" height="128"></li>'; | ||
58 | - } | ||
59 | - echo( $data_images ); | ||
60 | 38 | ||
61 | - ?> | 39 | + } |
40 | + elseif( !empty( $item['cover'] ) && empty( $item['images'] ) ) | ||
41 | + { | ||
42 | + $data_images .= | ||
43 | + '<li class="float width_400">'. | ||
44 | + '<a href="'.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '800x' ).'" title="'.$item['title'].'" data-options="thumbnail: \''.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '128x' ).'\'" class="thumbnail">'. | ||
45 | + '<img src="'.$this->storage->getPhotoUrl( $item['cover'], 'avatar', '400x' ).'" alt="'.$item['title'].'" class="image_400">'. | ||
46 | + '</a>'. | ||
47 | + '</li>'; | ||
48 | + } | ||
49 | + else | ||
50 | + { | ||
51 | + $data_images .= | ||
52 | + '<li class="float width_400"> | ||
53 | + <img src="/images/item_main_photo.jpg" alt="" width="400" height="400"> | ||
54 | + </li> | ||
55 | + | ||
56 | + <li class="float width_128"><img src="/images/item_photo.jpg" alt="" width="128" height="128"></li> | ||
57 | + <li class="float width_128 last"><img src="/images/item_photo.jpg" alt="" width="128" height="128"></li>'; | ||
58 | + } | ||
59 | + echo( $data_images ); | ||
62 | 60 | ||
63 | - </ul> | ||
64 | - <?php if(!empty($item['front_video'])):?> | ||
65 | - <br> | ||
66 | - <div class="front_video_block"> | ||
67 | - <?php if(!empty($item['front_video'])){ | ||
68 | - $video = explode(',',$item['front_video']); | ||
69 | - foreach($video as $v): ?> | ||
70 | - <iframe class="video_iframe" width="400" height="220" src="<?= $v ?>" frameborder="0" allowfullscreen></iframe> | ||
71 | - <?php endforeach; | ||
72 | - }?> | ||
73 | - </div> | ||
74 | - <?php endif;?> | ||
75 | - </div> | 61 | + ?> |
76 | 62 | ||
77 | - <div class="float item_content"> | ||
78 | - <div class="item_title"><h1 class="item_name_h1" itemprop="name"><?= $item['title'] ?></h1></div> | ||
79 | - <div class="item_decription"><?= $item['description'] ?></div> | ||
80 | - <div style="float:right;width:270px;font-weight:bold;line-height:20px;"> | ||
81 | - <img src="/images/truck.jpg" width="64" height="64" border="0" align="left" style="margin-right:10px;" /> | ||
82 | - <?= $t->_("truck")?> | ||
83 | - </div> | ||
84 | - <div style="float:left"> | ||
85 | - <div class="clearfix"> | ||
86 | - <div class="float properties">Код:</div> | ||
87 | - <div class="float properties properties_article"><?= $item['product_id'] ?></div> | ||
88 | - </div> | ||
89 | - <div class="clearfix"> | ||
90 | - <div class="float properties"><?= $t->_("availability")?>:</div> | ||
91 | - <div class="float presence_status"> | ||
92 | - <?= $item['status'] == 1 ? '<div data-stock="1" id="stock" class="properties properties_presence ">'.$t->_("in_stock").'</div>' : ($item['status'] == 2 ? '<div data-stock="0" id="stock" class="properties properties_absent">'.$t->_("znyt").'</div>' : '<div data-stock="0" id="stock" class="properties properties_absent">'.$t->_("missing").'</div>'); ?> | ||
93 | - </div> | 63 | + </ul> |
64 | + <?php if(!empty($item['front_video'])):?> | ||
65 | + <br> | ||
66 | + <div class="front_video_block"> | ||
67 | + <?php if(!empty($item['front_video'])){ | ||
68 | + $video = explode(',',$item['front_video']); | ||
69 | + foreach($video as $v): ?> | ||
70 | + <iframe class="video_iframe" width="400" height="220" src="<?= $v ?>" frameborder="0" allowfullscreen></iframe> | ||
71 | + <?php endforeach; | ||
72 | + }?> | ||
73 | + </div> | ||
74 | + <?php endif;?> | ||
94 | </div> | 75 | </div> |
95 | 76 | ||
96 | - <div class="clearfix"> | ||
97 | - <div class="float properties"><?= $t->_("number_of") ?>:</div> | ||
98 | - <div class="float count minus"> | 77 | + <div class="float item_content"> |
78 | + <div class="item_title"><h1 class="item_name_h1" itemprop="name"><?= $item['title'] ?></h1></div> | ||
79 | + <div class="item_decription"><?= $item['description'] ?></div> | ||
80 | + <div style="float:right;width:270px;font-weight:bold;line-height:20px;"> | ||
81 | + <img src="/images/truck.jpg" width="64" height="64" border="0" align="left" style="margin-right:10px;" /> | ||
82 | + <?= $t->_("truck")?> | ||
99 | </div> | 83 | </div> |
100 | - <div class="float count count_input"> | ||
101 | - <input name="count_items" class="count_items" type="text" value="1" /> | 84 | + <div style="float:left"> |
85 | + <div class="clearfix"> | ||
86 | + <div class="float properties">Код:</div> | ||
87 | + <div class="float properties properties_article"><?= $item['product_id'] ?></div> | ||
102 | </div> | 88 | </div> |
103 | - <div class="float count plus"> | 89 | + <div class="clearfix"> |
90 | + <div class="float properties"><?= $t->_("availability")?>:</div> | ||
91 | + <div class="float presence_status"> | ||
92 | + <?= $item['status'] == 1 ? '<div data-stock="1" id="stock" class="properties properties_presence ">'.$t->_("in_stock").'</div>' : ($item['status'] == 2 ? '<div data-stock="0" id="stock" class="properties properties_absent">'.$t->_("znyt").'</div>' : '<div data-stock="0" id="stock" class="properties properties_absent">'.$t->_("missing").'</div>'); ?> | ||
93 | + </div> | ||
104 | </div> | 94 | </div> |
105 | - </div> | ||
106 | - </div><div style="clear:both;"></div> | ||
107 | - <div class="clearfix packing"> | ||
108 | - <div class="float properties"><?= $t->_("packing")?>:</div> | ||
109 | - <div class="float packing_images clearfix"> | ||
110 | - <?php | ||
111 | 95 | ||
112 | - $data_sizes = ''; | 96 | + <div class="clearfix"> |
97 | + <div class="float properties"><?= $t->_("number_of") ?>:</div> | ||
98 | + <div class="float count minus"> | ||
99 | + </div> | ||
100 | + <div class="float count count_input"> | ||
101 | + <input name="count_items" class="count_items" type="text" value="1" /> | ||
102 | + </div> | ||
103 | + <div class="float count plus"> | ||
104 | + </div> | ||
105 | + </div> | ||
106 | + </div><div style="clear:both;"></div> | ||
107 | + <div class="clearfix packing"> | ||
108 | + <div class="float properties"><?= $t->_("packing")?>:</div> | ||
109 | + <div class="float packing_images clearfix"> | ||
110 | + <?php | ||
111 | + | ||
112 | + $data_sizes = ''; | ||
113 | 113 | ||
114 | - if( !empty( $sizes_colors__ ) ) | ||
115 | - { | ||
116 | - $i = 0; | ||
117 | - foreach( $sizes_colors['sizes'] as $k => $s ) | 114 | + if( !empty( $sizes_colors__ ) ) |
118 | { | 115 | { |
119 | - if( isset( $sizes_colors__[$item['color_id']][$s] ) ) | 116 | + $i = 0; |
117 | + foreach( $sizes_colors['sizes'] as $k => $s ) | ||
120 | { | 118 | { |
121 | - $data_sizes .= | ||
122 | - '<a href="'.$sizes_colors__[$item['color_id']][$s]['link'].'" class="group_sizes'.($s == $item['size'] ? ' active' : '').' exist" style="padding-top:'.($i*3).'px; width:'.(31+($i*3)).'px" data-item_id="'.$sizes_colors__[$item['color_id']][$s]['id'].'" data-catalog_id="'.$catalog_id.'" data-group_alias="'.$group_alias.'">'. | ||
123 | - '<span class="group_sizes_header"></span>'. | ||
124 | - '<span class="group_sizes_content">'.$s.'</span>'. | ||
125 | - '</a>'; | 119 | + if( isset( $sizes_colors__[$item['color_id']][$s] ) ) |
120 | + { | ||
121 | + $data_sizes .= | ||
122 | + '<a href="'.$sizes_colors__[$item['color_id']][$s]['link'].'" class="group_sizes'.($s == $item['size'] ? ' active' : '').' exist" style="padding-top:'.($i*3).'px; width:'.(31+($i*3)).'px" data-item_id="'.$sizes_colors__[$item['color_id']][$s]['id'].'" data-catalog_id="'.$catalog_id.'" data-group_alias="'.$group_alias.'">'. | ||
123 | + '<span class="group_sizes_header"></span>'. | ||
124 | + '<span class="group_sizes_content">'.$s.'</span>'. | ||
125 | + '</a>'; | ||
126 | + } | ||
127 | + else | ||
128 | + { | ||
129 | + $data_sizes .= | ||
130 | + '<a href="#" onClick="return false;" class="group_sizes'.($s == $item['size'] ? ' active' : '').' not_exist" style="padding-top:'.($i*3).'px; width:'.(31+($i*3)).'px" data-item_id="" data-catalog_id="'.$catalog_id.'" data-group_alias="'.$group_alias.'">'. | ||
131 | + '<span class="group_sizes_header"></span>'. | ||
132 | + '<span class="group_sizes_content">'.$s.'</span>'. | ||
133 | + '</a>'; | ||
134 | + } | ||
135 | + | ||
136 | + $i++; | ||
126 | } | 137 | } |
127 | - else | 138 | + } |
139 | + else | ||
140 | + { | ||
141 | + foreach( $sizes as $k => $s ) | ||
128 | { | 142 | { |
129 | $data_sizes .= | 143 | $data_sizes .= |
130 | - '<a href="#" onClick="return false;" class="group_sizes'.($s == $item['size'] ? ' active' : '').' not_exist" style="padding-top:'.($i*3).'px; width:'.(31+($i*3)).'px" data-item_id="" data-catalog_id="'.$catalog_id.'" data-group_alias="'.$group_alias.'">'. | 144 | + '<a href="'.$this->seoUrl->setUrl($s['link']).'" class="group_sizes'.($k == $active_size ? ' active' : '').'" style="padding-top:'.($k*3).'px; width:'.(31+($k*3)).'px" data-item_id="'.$s['id'].'" data-catalog_id="'.$catalog_id.'" data-group_alias="'.$group_alias.'">'. |
131 | '<span class="group_sizes_header"></span>'. | 145 | '<span class="group_sizes_header"></span>'. |
132 | - '<span class="group_sizes_content">'.$s.'</span>'. | 146 | + '<span class="group_sizes_content">'.$s['size'].'</span>'. |
133 | '</a>'; | 147 | '</a>'; |
134 | } | 148 | } |
135 | - | ||
136 | - $i++; | ||
137 | - } | ||
138 | - } | ||
139 | - else | ||
140 | - { | ||
141 | - foreach( $sizes as $k => $s ) | ||
142 | - { | ||
143 | - $data_sizes .= | ||
144 | - '<a href="'.$this->seoUrl->setUrl($s['link']).'" class="group_sizes'.($k == $active_size ? ' active' : '').'" style="padding-top:'.($k*3).'px; width:'.(31+($k*3)).'px" data-item_id="'.$s['id'].'" data-catalog_id="'.$catalog_id.'" data-group_alias="'.$group_alias.'">'. | ||
145 | - '<span class="group_sizes_header"></span>'. | ||
146 | - '<span class="group_sizes_content">'.$s['size'].'</span>'. | ||
147 | - '</a>'; | ||
148 | } | 149 | } |
149 | - } | ||
150 | 150 | ||
151 | - echo( $data_sizes ); | 151 | + echo( $data_sizes ); |
152 | 152 | ||
153 | - ?> | 153 | + ?> |
154 | 154 | ||
155 | + </div> | ||
155 | </div> | 156 | </div> |
156 | - </div> | ||
157 | 157 | ||
158 | - <?php | 158 | + <?php |
159 | 159 | ||
160 | - if( !empty( $sizes_colors__ ) ) | ||
161 | - { | ||
162 | - $data_colors = | ||
163 | - '<div class="clearfix colors">'. | ||
164 | - '<div class="float properties">'.$t->_("choose_color").': </div>'. | ||
165 | - '<div class="float properties" style="color:'.$item['absolute_color'].'">'.$item['color_title'].'</div>'. | ||
166 | - '</div>'. | 160 | + if( !empty( $sizes_colors__ ) ) |
161 | + { | ||
162 | + $data_colors = | ||
163 | + '<div class="clearfix colors">'. | ||
164 | + '<div class="float properties">'.$t->_("choose_color").': </div>'. | ||
165 | + '<div class="float properties" style="color:'.$item['absolute_color'].'">'.$item['color_title'].'</div>'. | ||
166 | + '</div>'. | ||
167 | 167 | ||
168 | - '<div class="sliderkit carousel-demo1 colors_images clearfix">'. | ||
169 | - '<div class="sliderkit-nav">'; | 168 | + '<div class="sliderkit carousel-demo1 colors_images clearfix">'. |
169 | + '<div class="sliderkit-nav">'; | ||
170 | 170 | ||
171 | - $data_colors .= '<div class="sliderkit-nav-clip" '.( count( $sizes_colors__ ) > 6 ? 'style="margin: 0 30px"' : '' ).'><ul>'; | 171 | + $data_colors .= '<div class="sliderkit-nav-clip" '.( count( $sizes_colors__ ) > 6 ? 'style="margin: 0 30px"' : '' ).'><ul>'; |
172 | 172 | ||
173 | - foreach( $sizes_colors__ as $k => $s ) | ||
174 | - { | ||
175 | - sort($s); | ||
176 | - $data_colors .= | ||
177 | - '<li class="change_with_color" data-item_id="'.$s['0']['id'].'" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'" data-group_alias="'.$group_alias.'" data-color_id="'.$s['0']['color_id'].'">'. | ||
178 | - '<a href="'.$this->seoUrl->setUrl($s['0']['link']).'" title="'.$s['0']['color_title'].'" '.( $s['0']['color_id'] == $item['color_id'] ? 'class="active" style="border-color:'.$item['absolute_color'].'"' : '' ).' ><img src="'.$s['0']['image'].'" alt="'.$s['0']['color_title'].'" width="60" height="60" /></a>'. | ||
179 | - '</li>'; | ||
180 | - } | 173 | + foreach( $sizes_colors__ as $k => $s ) |
174 | + { | ||
175 | + sort($s); | ||
176 | + $data_colors .= | ||
177 | + '<li class="change_with_color" data-item_id="'.$s['0']['id'].'" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'" data-group_alias="'.$group_alias.'" data-color_id="'.$s['0']['color_id'].'">'. | ||
178 | + '<a href="'.$this->seoUrl->setUrl($s['0']['link']).'" title="'.$s['0']['color_title'].'" '.( $s['0']['color_id'] == $item['color_id'] ? 'class="active" style="border-color:'.$item['absolute_color'].'"' : '' ).' ><img src="'.$s['0']['image'].'" alt="'.$s['0']['color_title'].'" width="60" height="60" /></a>'. | ||
179 | + '</li>'; | ||
180 | + } | ||
181 | 181 | ||
182 | - $data_colors .= '</ul></div>'; | 182 | + $data_colors .= '</ul></div>'; |
183 | 183 | ||
184 | - if( count( $sizes_colors__ ) > 6 ) | ||
185 | - { | ||
186 | - $data_colors .= | ||
187 | - '<div class="sliderkit-btn sliderkit-nav-btn sliderkit-nav-prev"><a href="#" title="Previous line"><span>Previous</span></a></div>'. | ||
188 | - '<div class="sliderkit-btn sliderkit-nav-btn sliderkit-nav-next"><a href="#" title="Next line"><span>Next</span></a></div>'; | ||
189 | - } | 184 | + if( count( $sizes_colors__ ) > 6 ) |
185 | + { | ||
186 | + $data_colors .= | ||
187 | + '<div class="sliderkit-btn sliderkit-nav-btn sliderkit-nav-prev"><a href="#" title="Previous line"><span>Previous</span></a></div>'. | ||
188 | + '<div class="sliderkit-btn sliderkit-nav-btn sliderkit-nav-next"><a href="#" title="Next line"><span>Next</span></a></div>'; | ||
189 | + } | ||
190 | 190 | ||
191 | - $data_colors .= | ||
192 | - '</div>'. | ||
193 | - '</div>'; | 191 | + $data_colors .= |
192 | + '</div>'. | ||
193 | + '</div>'; | ||
194 | 194 | ||
195 | - echo $data_colors; | ||
196 | - } | 195 | + echo $data_colors; |
196 | + } | ||
197 | 197 | ||
198 | - ?> | 198 | + ?> |
199 | 199 | ||
200 | - <div class="change_with_size"> | ||
201 | - <div class="clearfix buy_compare"> | ||
202 | - <div class="one_item_price float" itemprop="offers" itemscope itemtype="http://schema.org/Offer" ><?= $t->_("price")?> | ||
203 | - <ul> | ||
204 | - <li> | ||
205 | - <span itemprop="price"><?= number_format($item['price2'],2,'.',' ') ?></span> грн<span style="display:none;" itemprop="priceCurrency">UAH</span> | ||
206 | - <div style="display: none" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> | ||
207 | - <span itemprop="ratingValue">5</span> | ||
208 | - <span itemprop="reviewCount">31</span> | ||
209 | - </div> | ||
210 | - </li> | ||
211 | - </ul> | 200 | + <div class="change_with_size"> |
201 | + <div class="clearfix buy_compare"> | ||
202 | + <div class="one_item_price float" itemprop="offers" itemscope itemtype="http://schema.org/Offer" ><?= $t->_("price")?> | ||
203 | + <ul> | ||
204 | + <li> | ||
205 | + <?php | ||
206 | + // скидка | ||
207 | + if (!empty($discount)) { | ||
208 | + if (isset($discount) && $discount['discount'] > 0 && $discount['discount'] <= 100 && in_array($item['id'], $discount['group_ids'])) { | ||
209 | + echo '<span itemprop="price">'.number_format($item['price2']*(1-$discount['discount']/100), 2, '.', ' ').'</span> грн<span style="display:none;" itemprop="priceCurrency">UAH</span>'; | ||
210 | + } | ||
211 | + else { | ||
212 | + //echo '<span itemprop="price">'.number_format($item['price2'], 2, '.', ' ').'</span> грн<span style="display:none;" itemprop="priceCurrency">UAH</span>'; | ||
213 | + } | ||
214 | + } | ||
215 | + else { | ||
216 | + //echo '<span itemprop="price">'.number_format($item['price2'], 2, '.', ' ').'</span> грн<span style="display:none;" itemprop="priceCurrency">UAH</span>'; | ||
217 | + } | ||
218 | + ?> | ||
219 | + <!--<span itemprop="price"><?//= number_format($item['price2'], 2, '.', ' '); ?></span> грн<span style="display:none;" itemprop="priceCurrency">UAH</span>--> | ||
220 | + <div style="display: none" itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating"> | ||
221 | + <span itemprop="ratingValue">5</span> | ||
222 | + <span itemprop="reviewCount">31</span> | ||
223 | + </div> | ||
224 | + </li> | ||
225 | + </ul> | ||
226 | + </div> | ||
227 | + <div class="one_item_buttons float"> | ||
228 | + <a href="<?= $this->seoUrl->setUrl($this->url->get([ 'for' => 'item', 'type' => $type_alias, 'subtype' => $subtype_alias, 'group_alias' => $group_alias, 'item_id' => $item_id ])); ?>" title="Додати <?= $item['title'] ?> у корзину" class="<?= $item['status'] == 1 ? 'btn green buy' : 'not_available grey'?>"><?= $t->_("buy")?></a> | ||
229 | + </div> | ||
230 | + <div class="one_item_compare float"> | ||
231 | + <?= '<input type="checkbox" id="compare_item_'.$item['id'].'" class="compare_item" value="'.$item['type'].'-'.$catalog_id.'-'.$item['id'].'" '.(!empty($item['checked']) ? 'checked="checked"' : '').' />' ?> | ||
232 | + <label for="compare_item_<?= $item['id'] ?>"><span></span><?= $t->_("compared_to")?></label> | ||
233 | + <input type="hidden" class="item_id_for_basket" value="<?= $item['id'] ?>"> | ||
234 | + <input type="hidden" class="current_item_size" value="<?= $item['size'] ?>"> | ||
235 | + </div> | ||
212 | </div> | 236 | </div> |
213 | - <div class="one_item_buttons float"> | ||
214 | - <a href="<?= $this->seoUrl->setUrl($this->url->get([ 'for' => 'item', 'type' => $type_alias, 'subtype' => $subtype_alias, 'group_alias' => $group_alias, 'item_id' => $item_id ])); ?>" title="Додати <?= $item['title'] ?> у корзину" class="<?= $item['status'] == 1 ? 'btn green buy' : 'not_available grey'?>"><?= $t->_("buy")?></a> | ||
215 | - </div> | ||
216 | - <div class="one_item_compare float"> | ||
217 | - <?= '<input type="checkbox" id="compare_item_'.$item['id'].'" class="compare_item" value="'.$item['type'].'-'.$catalog_id.'-'.$item['id'].'" '.(!empty($item['checked']) ? 'checked="checked"' : '').' />' ?> | ||
218 | - <label for="compare_item_<?= $item['id'] ?>"><span></span><?= $t->_("compared_to")?></label> | ||
219 | - <input type="hidden" class="item_id_for_basket" value="<?= $item['id'] ?>"> | ||
220 | - <input type="hidden" class="current_item_size" value="<?= $item['size'] ?>"> | ||
221 | - </div> | ||
222 | - </div> | ||
223 | - <div class="clearfix features"> | ||
224 | - <?php | 237 | + <div class="clearfix features"> |
238 | + <?php | ||
225 | 239 | ||
226 | - $data_features = ''; | 240 | + $data_features = ''; |
227 | 241 | ||
228 | - foreach( $filters as $f ) | ||
229 | - { | ||
230 | - $data_features .= '<a href="#" class="float">'.$f['value_value'].'</a>'; | ||
231 | - } | 242 | + foreach( $filters as $f ) |
243 | + { | ||
244 | + $data_features .= '<a href="#" class="float">'.$f['value_value'].'</a>'; | ||
245 | + } | ||
232 | 246 | ||
233 | - echo( $data_features ); | 247 | + echo( $data_features ); |
234 | 248 | ||
235 | - ?> | ||
236 | - </div> | ||
237 | - </div> | ||
238 | - <div class="clearfix item_menu"> | ||
239 | - <div class="item_menu_header_menu clearfix"> | ||
240 | - <div class="tabs clearfix"> | ||
241 | - <ul class="change_item_description"> | ||
242 | - <li class="float active_tab first_tab" data-change_item_description="tabs_description"><a href="#" title=""><?= $t->_("description")?></a></li> | ||
243 | - <li class="float not_active" data-change_item_description="tabs_properties"><a href="#" title=""><?= $t->_("features")?></a></li> | ||
244 | - <?php if(!empty($item['content_video'])):?><li class="float not_active" data-change_item_description="tabs_video"><a href="#" title=""><?= $t->_("video")?></a></li><?php endif;?> | ||
245 | - <li class="float last_tab not_active" data-change_item_description="tabs_comments"><a href="#" title=""><?= $t->_("reviews")?></a></li> | ||
246 | - </ul> | 249 | + ?> |
247 | </div> | 250 | </div> |
248 | </div> | 251 | </div> |
249 | - <div class="item_menu_content"> | ||
250 | - <div class="tabs_description item_menu_content_wrapper" itemprop="description"><?= $item['content_description'] ?></div> | ||
251 | - <div class="display_none tabs_properties item_menu_content_wrapper"> | ||
252 | - <?php | ||
253 | - | ||
254 | - $data_properties = ''; | ||
255 | - | ||
256 | - if( isset( $item['brand'] ) && !empty( $item['brand'] ) ) | ||
257 | - { | ||
258 | - $data_properties .= | ||
259 | - '<div class="clearfix properties_producer">'. | ||
260 | - '<p class="float key_value">'.$t->_("producer").':</p>'. | ||
261 | - '<a class="float" href="#" title="'.$item['brand'].'">'.$item['brand'].'</a>'. | ||
262 | - '</div>'; | ||
263 | - } | 252 | + <div class="clearfix item_menu"> |
253 | + <div class="item_menu_header_menu clearfix"> | ||
254 | + <div class="tabs clearfix"> | ||
255 | + <ul class="change_item_description"> | ||
256 | + <li class="float active_tab first_tab" data-change_item_description="tabs_description"><a href="#" title=""><?= $t->_("description")?></a></li> | ||
257 | + <li class="float not_active" data-change_item_description="tabs_properties"><a href="#" title=""><?= $t->_("features")?></a></li> | ||
258 | + <?php if(!empty($item['content_video'])):?><li class="float not_active" data-change_item_description="tabs_video"><a href="#" title=""><?= $t->_("video")?></a></li><?php endif;?> | ||
259 | + <li class="float last_tab not_active" data-change_item_description="tabs_comments"><a href="#" title=""><?= $t->_("reviews")?></a></li> | ||
260 | + </ul> | ||
261 | + </div> | ||
262 | + </div> | ||
263 | + <div class="item_menu_content"> | ||
264 | + <div class="tabs_description item_menu_content_wrapper" itemprop="description"><?= $item['content_description'] ?></div> | ||
265 | + <div class="display_none tabs_properties item_menu_content_wrapper"> | ||
266 | + <?php | ||
264 | 267 | ||
265 | - if( isset( $properties ) && !empty( $properties ) ) | ||
266 | - { | ||
267 | - $data_properties .= '<div class="item_properties">'; | 268 | + $data_properties = ''; |
268 | 269 | ||
269 | - foreach( $properties as $p ) | 270 | + if( isset( $item['brand'] ) && !empty( $item['brand'] ) ) |
270 | { | 271 | { |
271 | $data_properties .= | 272 | $data_properties .= |
272 | - '<div class="clearfix">'. | ||
273 | - '<p class="float key_value">'.$p['key_value'].':</p>'. | ||
274 | - '<a class="float" href="#">'.$p['value_value'].'</a>'. | 273 | + '<div class="clearfix properties_producer">'. |
274 | + '<p class="float key_value">'.$t->_("producer").':</p>'. | ||
275 | + '<a class="float" href="#" title="'.$item['brand'].'">'.$item['brand'].'</a>'. | ||
275 | '</div>'; | 276 | '</div>'; |
276 | } | 277 | } |
277 | 278 | ||
278 | - $data_properties .= '</div>'; | ||
279 | - } | ||
280 | - | ||
281 | - echo( $data_properties ); | 279 | + if( isset( $properties ) && !empty( $properties ) ) |
280 | + { | ||
281 | + $data_properties .= '<div class="item_properties">'; | ||
282 | + | ||
283 | + foreach( $properties as $p ) | ||
284 | + { | ||
285 | + $data_properties .= | ||
286 | + '<div class="clearfix">'. | ||
287 | + '<p class="float key_value">'.$p['key_value'].':</p>'. | ||
288 | + '<a class="float" href="#">'.$p['value_value'].'</a>'. | ||
289 | + '</div>'; | ||
290 | + } | ||
291 | + | ||
292 | + $data_properties .= '</div>'; | ||
293 | + } | ||
282 | 294 | ||
283 | - ?> | 295 | + echo( $data_properties ); |
296 | + | ||
297 | + ?> | ||
298 | + </div> | ||
299 | + <div class="display_none tabs_video item_menu_content_wrapper"> | ||
300 | + <?php if(!empty($item['content_video'])){ | ||
301 | + $video = explode(',',$item['content_video']); | ||
302 | + foreach($video as $v): ?> | ||
303 | + <iframe class="video_iframe" width="520" height="340" src="<?= $v ?>" frameborder="0" allowfullscreen></iframe> | ||
304 | + <?php endforeach; | ||
305 | + }?> | ||
306 | + </div> | ||
307 | + <div class="display_none tabs_comments item_menu_content_wrapper"> | ||
308 | + <div id="mc-review"></div> | ||
309 | + <script type="text/javascript"> | ||
310 | + cackle_widget = window.cackle_widget || []; | ||
311 | + cackle_widget.push({widget: 'Review', id: 38277}); | ||
312 | + (function() { | ||
313 | + var mc = document.createElement('script'); | ||
314 | + mc.type = 'text/javascript'; | ||
315 | + mc.async = true; | ||
316 | + mc.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://cackle.me/widget.js'; | ||
317 | + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mc, s.nextSibling); | ||
318 | + })(); | ||
319 | + </script> | ||
320 | + <a id="mc-link" href="http://cackle.ru">Социальные отзывы <b style="color:#4FA3DA">Cackl</b><b style="color:#F65077">e</b></a> | ||
321 | + </div> | ||
284 | </div> | 322 | </div> |
285 | - <div class="display_none tabs_video item_menu_content_wrapper"> | ||
286 | - <?php if(!empty($item['content_video'])){ | ||
287 | - $video = explode(',',$item['content_video']); | ||
288 | - foreach($video as $v): ?> | ||
289 | - <iframe class="video_iframe" width="520" height="340" src="<?= $v ?>" frameborder="0" allowfullscreen></iframe> | ||
290 | - <?php endforeach; | ||
291 | - }?> | 323 | + </div> |
324 | + </div> | ||
325 | + </div> | ||
326 | + </div> | ||
327 | + | ||
328 | + <div class="other_items"> | ||
329 | + <div class="item_menu_header_menu clearfix"> | ||
330 | + <div class="inner"> | ||
331 | + <div class="tabs clearfix"> | ||
332 | + <ul class="change_similar_items"> | ||
333 | + <li class="float active_tab first_tab"> | ||
334 | + <?= '<a href="#" title="'.$t->_("related_items").'" data-change_similar_items="buy_with" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("related_items").'</a>' ?> | ||
335 | + </li> | ||
336 | + <li class="float not_active"> | ||
337 | + <?= '<a href="#" title="'.$t->_("similar_items").'" data-change_similar_items="same" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("similar_items").'</a>' ?> | ||
338 | + </li> | ||
339 | + <li class="float not_active"> | ||
340 | + <?= '<a href="#" title="'.$t->_("popular_items").'" data-change_similar_items="popular" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("popular_items").'</a>' ?> | ||
341 | + </li> | ||
342 | + <li class="float last_tab not_active"> | ||
343 | + <?= '<a href="#" title="'.$t->_("watched").'" data-change_similar_items="viewed" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("watched").'</a>' ?> | ||
344 | + </li> | ||
345 | + </ul> | ||
292 | </div> | 346 | </div> |
293 | - <div class="display_none tabs_comments item_menu_content_wrapper"> | ||
294 | - <div id="mc-review"></div> | ||
295 | - <script type="text/javascript"> | ||
296 | - cackle_widget = window.cackle_widget || []; | ||
297 | - cackle_widget.push({widget: 'Review', id: 38277}); | ||
298 | - (function() { | ||
299 | - var mc = document.createElement('script'); | ||
300 | - mc.type = 'text/javascript'; | ||
301 | - mc.async = true; | ||
302 | - mc.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://cackle.me/widget.js'; | ||
303 | - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(mc, s.nextSibling); | ||
304 | - })(); | ||
305 | - </script> | ||
306 | - <a id="mc-link" href="http://cackle.ru">Социальные отзывы <b style="color:#4FA3DA">Cackl</b><b style="color:#F65077">e</b></a> | ||
307 | - </div> | ||
308 | </div> | 347 | </div> |
309 | </div> | 348 | </div> |
349 | + <div class="items inner clearfix"> | ||
350 | + <?php if( !empty( $popular_groups ) ): | ||
351 | + foreach( $popular_groups as $k => $p ): | ||
352 | + $this->partial('partial/item_group', ['k' => $k, 'i' => $p, 'limit' => 5]); | ||
353 | + endforeach; | ||
354 | + endif; ?> | ||
355 | + </div> | ||
310 | </div> | 356 | </div> |
311 | - </div> | ||
312 | -</div> | ||
313 | 357 | ||
358 | + <?php | ||
359 | + if( !empty( $news ) ) | ||
360 | + { | ||
361 | + $data_news = | ||
362 | + '<div class="news_wrapper">'. | ||
363 | + '<div class="inner clearfix">'; | ||
314 | 364 | ||
365 | + foreach( $news as $k => $n ) | ||
366 | + { | ||
367 | + $data_news .= | ||
368 | + '<div class="one_news float'.( ($k+1)%2==0 ? ' last' : '' ).'">'. | ||
369 | + '<div class="one_news_img float">'. | ||
370 | + ( !empty( $n['cover'] ) | ||
371 | + ? | ||
372 | + '<a href="'.$this->seoUrl->setUrl($n['link']).'" title="'.$n['title'].'">'. | ||
373 | + '<img src="'.$n['image'].'" alt="" width="180" height="120" />'. | ||
374 | + '</a>' | ||
375 | + : | ||
376 | + ''). | ||
377 | + '</div>'. | ||
378 | + '<div class="one_news_content float'.( empty( $n['cover'] ) ? ' full_width' : '').'">'. | ||
379 | + '<a href="'.$this->seoUrl->setUrl($n['link']).'" title="'.$n['title'].'">'. | ||
380 | + '<h2>'.$n['title'].'</h2>'. | ||
381 | + '</a>'. | ||
382 | + '<p>'.$this->common->shortenString( $n['abstract_info'], 230 ).'</p>'. | ||
383 | + '<a href="'.$this->seoUrl->setUrl($n['link']).'" title="'.$n['title'].'" class="news_more">Докладніше</a>'. | ||
384 | + '</div>'. | ||
385 | + '</div>'; | ||
386 | + } | ||
315 | 387 | ||
316 | -<div class="other_items"> | ||
317 | - <div class="item_menu_header_menu clearfix"> | ||
318 | - <div class="inner"> | ||
319 | - <div class="tabs clearfix"> | ||
320 | - <ul class="change_similar_items"> | ||
321 | - <li class="float active_tab first_tab"> | ||
322 | - <?= '<a href="#" title="'.$t->_("related_items").'" data-change_similar_items="buy_with" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("related_items").'</a>' ?> | ||
323 | - </li> | ||
324 | - <li class="float not_active"> | ||
325 | - <?= '<a href="#" title="'.$t->_("similar_items").'" data-change_similar_items="same" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("similar_items").'</a>' ?> | ||
326 | - </li> | ||
327 | - <li class="float not_active"> | ||
328 | - <?= '<a href="#" title="'.$t->_("popular_items").'" data-change_similar_items="popular" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("popular_items").'</a>' ?> | ||
329 | - </li> | ||
330 | - <li class="float last_tab not_active"> | ||
331 | - <?= '<a href="#" title="'.$t->_("watched").'" data-change_similar_items="viewed" data-catalog_id="'.$catalog_id.'" data-group_id="'.$item['group_id'].'">'.$t->_("watched").'</a>' ?> | ||
332 | - </li> | ||
333 | - </ul> | ||
334 | - </div> | ||
335 | - </div> | ||
336 | - </div> | ||
337 | - <div class="items inner clearfix"> | ||
338 | - <?php if( !empty( $popular_groups ) ): | ||
339 | - foreach( $popular_groups as $k => $p ): | ||
340 | - $this->partial('partial/item_group', ['k' => $k, 'i' => $p, 'limit' => 5]); | ||
341 | - endforeach; | ||
342 | - endif; ?> | ||
343 | - </div> | ||
344 | -</div> | 388 | + $data_news .= '</div></div>'; |
345 | 389 | ||
346 | -<?php | ||
347 | - | ||
348 | -if( !empty( $news ) ) | ||
349 | -{ | ||
350 | - $data_news = | ||
351 | - '<div class="news_wrapper">'. | ||
352 | - '<div class="inner clearfix">'; | ||
353 | - | ||
354 | - foreach( $news as $k => $n ) | ||
355 | - { | ||
356 | - $data_news .= | ||
357 | - '<div class="one_news float'.( ($k+1)%2==0 ? ' last' : '' ).'">'. | ||
358 | - '<div class="one_news_img float">'. | ||
359 | - ( !empty( $n['cover'] ) | ||
360 | - ? | ||
361 | - '<a href="'.$this->seoUrl->setUrl($n['link']).'" title="'.$n['title'].'">'. | ||
362 | - '<img src="'.$n['image'].'" alt="" width="180" height="120" />'. | ||
363 | - '</a>' | ||
364 | - : | ||
365 | - ''). | ||
366 | - '</div>'. | ||
367 | - '<div class="one_news_content float'.( empty( $n['cover'] ) ? ' full_width' : '').'">'. | ||
368 | - '<a href="'.$this->seoUrl->setUrl($n['link']).'" title="'.$n['title'].'">'. | ||
369 | - '<h2>'.$n['title'].'</h2>'. | ||
370 | - '</a>'. | ||
371 | - '<p>'.$this->common->shortenString( $n['abstract_info'], 230 ).'</p>'. | ||
372 | - '<a href="'.$this->seoUrl->setUrl($n['link']).'" title="'.$n['title'].'" class="news_more">Докладніше</a>'. | ||
373 | - '</div>'. | ||
374 | - '</div>'; | ||
375 | - } | ||
376 | - | ||
377 | - $data_news .= '</div></div>'; | ||
378 | - | ||
379 | - echo( $data_news ); | ||
380 | -} | ||
381 | - | ||
382 | -?> | ||
383 | - | ||
384 | -<!--<div class="content_accost"> | 390 | + echo( $data_news ); |
391 | + } | ||
392 | + ?> | ||
393 | + | ||
394 | + <!-- | ||
395 | + <div class="content_accost"> | ||
396 | + <div class="shadow_to_down"></div> | ||
397 | + <div class="inner"> | ||
398 | + <div class="content_accost_title"></div> | ||
399 | + <div class="content_accost_content"> | ||
400 | + <p> | ||
401 | + Інтернет - магазин ТМ "Професійне насіння" | ||
402 | + </p> | ||
403 | + </div> | ||
404 | + </div> | ||
405 | + </div> content_accost | ||
406 | + --> | ||
407 | + <div class="content_accost"> | ||
385 | <div class="shadow_to_down"></div> | 408 | <div class="shadow_to_down"></div> |
386 | <div class="inner"> | 409 | <div class="inner"> |
387 | <div class="content_accost_title"></div> | 410 | <div class="content_accost_title"></div> |
388 | <div class="content_accost_content"> | 411 | <div class="content_accost_content"> |
389 | <p> | 412 | <p> |
390 | - Інтернет - магазин ТМ "Професійне насіння" | 413 | + <?= isset( $seo['seo_text'] ) && !empty( $seo['seo_text'] ) ? $seo['seo_text'] : ''?> |
391 | </p> | 414 | </p> |
392 | </div> | 415 | </div> |
393 | </div> | 416 | </div> |
394 | - </div> content_accost --> | ||
395 | - <div class="content_accost"> | ||
396 | - <div class="shadow_to_down"></div> | ||
397 | - <div class="inner"> | ||
398 | - <div class="content_accost_title"></div> | ||
399 | - <div class="content_accost_content"> | ||
400 | - <p> | ||
401 | - <?= isset( $seo['seo_text'] ) && !empty( $seo['seo_text'] ) ? $seo['seo_text'] : ''?> | ||
402 | - </p> | ||
403 | - </div> | ||
404 | </div> | 417 | </div> |
405 | - </div> | ||
406 | -<div class="content_blog"> | ||
407 | - <div class="inner"> | ||
408 | 418 | ||
409 | - <div class="links clearfix"> | 419 | + <div class="content_blog"> |
420 | + <div class="inner"> | ||
410 | 421 | ||
411 | - <div class="float fb"> | ||
412 | - <div id="fb-root"></div> | 422 | + <div class="links clearfix"> |
413 | 423 | ||
414 | - <div class="fb-like" data-href="#" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div> | ||
415 | - </div> | ||
416 | - <div class="float ok"> | ||
417 | - <div id="ok_shareWidget"></div> | ||
418 | - </div> | ||
419 | - <div class="float vk"> | ||
420 | - <script type="text/javascript"><!-- | ||
421 | - document.write(VK.Share.button(false,{type: "round", text: "Нравится"})); | ||
422 | - --> | ||
423 | - </script> | ||
424 | - </div> | 424 | + <div class="float fb"> |
425 | + <div id="fb-root"></div> | ||
426 | + | ||
427 | + <div class="fb-like" data-href="#" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div> | ||
428 | + </div> | ||
429 | + <div class="float ok"> | ||
430 | + <div id="ok_shareWidget"></div> | ||
431 | + </div> | ||
432 | + <div class="float vk"> | ||
433 | + <script type="text/javascript"><!-- | ||
434 | + document.write(VK.Share.button(false,{type: "round", text: "Нравится"})); | ||
435 | + --> | ||
436 | + </script> | ||
437 | + </div> | ||
425 | 438 | ||
426 | - <div class="float share"> | ||
427 | - <p class="share_title float"><?= $t->_("share")?>:</p> | 439 | + <div class="float share"> |
440 | + <p class="share_title float"><?= $t->_("share")?>:</p> | ||
428 | 441 | ||
429 | - <div class="pluso float" data-background="#ebebeb" data-options="small,square,line,horizontal,nocounter,theme=04" data-services="facebook,google,livejournal,moimir,odnoklassniki,vkontakte,twitter"></div> | 442 | + <div class="pluso float" data-background="#ebebeb" data-options="small,square,line,horizontal,nocounter,theme=04" data-services="facebook,google,livejournal,moimir,odnoklassniki,vkontakte,twitter"></div> |
443 | + </div> | ||
430 | </div> | 444 | </div> |
431 | </div> | 445 | </div> |
432 | - </div> | ||
433 | 446 | ||
434 | -</div><!-- content_blog --> | ||
435 | -</div><!-- catalog --> | 447 | + </div><!-- content_blog --> |
448 | + | ||
449 | + </div><!-- catalog --> | ||
436 | </div> | 450 | </div> |
451 | + | ||
437 | </div> | 452 | </div> |
453 | + | ||
438 | <script> | 454 | <script> |
439 | 455 | ||
440 | <?php | 456 | <?php |
441 | - | ||
442 | $customer_id = $this->session->get('id'); | 457 | $customer_id = $this->session->get('id'); |
443 | - | ||
444 | - | ||
445 | ?> | 458 | ?> |
446 | $( document ).ready(function() { | 459 | $( document ).ready(function() { |
460 | + | ||
447 | $('body').on('click','.one_item_buttons a', function(){ | 461 | $('body').on('click','.one_item_buttons a', function(){ |
448 | 462 | ||
449 | <?php if( !empty( $customer_id ) ) : ?> | 463 | <?php if( !empty( $customer_id ) ) : ?> |
@@ -481,7 +495,6 @@ if( !empty( $news ) ) | @@ -481,7 +495,6 @@ if( !empty( $news ) ) | ||
481 | 495 | ||
482 | }); | 496 | }); |
483 | 497 | ||
484 | - | ||
485 | }); | 498 | }); |
486 | 499 | ||
487 | 500 |
src/app/frontend/views/page/subtype.php
@@ -197,7 +197,10 @@ | @@ -197,7 +197,10 @@ | ||
197 | $minPrice = 0; | 197 | $minPrice = 0; |
198 | ?> | 198 | ?> |
199 | <?php foreach ($groups as $k => $i): ?> | 199 | <?php foreach ($groups as $k => $i): ?> |
200 | - <?php $this->partial('partial/item_group', ['k' => $k, 'i' => $i, 'limit' => 3]) ?> | 200 | + <?php |
201 | + if (empty($discount)) $discount = 0; | ||
202 | + $this->partial('partial/item_group', ['k' => $k, 'i' => $i, 'limit' => 3, 'discount' => $discount]) | ||
203 | + ?> | ||
201 | <?php | 204 | <?php |
202 | if ($i['price'] > $maxPrice) { | 205 | if ($i['price'] > $maxPrice) { |
203 | $maxPrice = $i['price']; | 206 | $maxPrice = $i['price']; |
src/app/frontend/views/partial/item_group.php
@@ -31,7 +31,24 @@ | @@ -31,7 +31,24 @@ | ||
31 | </a> | 31 | </a> |
32 | </div> | 32 | </div> |
33 | <div class="align_bottom"> | 33 | <div class="align_bottom"> |
34 | - <div class="one_item_price"><?= $t->_("price_from") ?> <span><?= $i['price'] ?></span> грн</div> | 34 | + <div class="one_item_price"> |
35 | + <?= $t->_("price_from") ?> | ||
36 | + <?php | ||
37 | + // скидка | ||
38 | + if (!empty($discount)) { | ||
39 | + if ($discount['discount'] > 0 && $discount['discount'] <= 100 && in_array($i['id'], $discount['group_ids'])) { | ||
40 | + echo '<span style="text-decoration: line-through;"><span>'.$i['price'].'</span></span> грн<br/>'; | ||
41 | + echo '<span>'.round($i['price']*(1-$discount['discount']/100), 1).'</span> грн'; | ||
42 | + } | ||
43 | + else { | ||
44 | + echo '<span>'.$i['price'].'</span> грн'; | ||
45 | + } | ||
46 | + } | ||
47 | + else { | ||
48 | + echo '<span>'.$i['price'].'</span> грн'; | ||
49 | + } | ||
50 | + ?> | ||
51 | + </div> | ||
35 | <div class="one_item_buttons"> | 52 | <div class="one_item_buttons"> |
36 | <a href="<?= $this->seoUrl->setUrl($i['alias']) ?>" title="" class="btn grey"><?= $t->_("details") ?></a> | 53 | <a href="<?= $this->seoUrl->setUrl($i['alias']) ?>" title="" class="btn grey"><?= $t->_("details") ?></a> |
37 | <a data-group_id="<?= $i['group_id'] ?>" href="javascript:;" title="" class="<?= $i['count_available'] != 0 ? 'btn green buy' : 'not_available grey'?>"><?= $t->_("buy") ?></a> | 54 | <a data-group_id="<?= $i['group_id'] ?>" href="javascript:;" title="" class="<?= $i['count_available'] != 0 ? 'btn green buy' : 'not_available grey'?>"><?= $t->_("buy") ?></a> |
src/config/global.php
@@ -32,6 +32,7 @@ return | @@ -32,6 +32,7 @@ return | ||
32 | 32 | ||
33 | 33 | ||
34 | 'phones' => '(044)-581-67-15, (044)-451-48-59 <br /> (050)-464-48-59, (067)-464-48-59', | 34 | 'phones' => '(044)-581-67-15, (044)-451-48-59 <br /> (050)-464-48-59, (067)-464-48-59', |
35 | + | ||
35 | 'email' => 'ludmila.v@hs.kiev.ua, alla@hs.kiev.ua, lesya@hs.kiev.ua, olga@hs.kiev.ua,kristina@hs.kiev.ua, test@hs.kiev.ua, olya.o.chyzh@gmail.com', | 36 | 'email' => 'ludmila.v@hs.kiev.ua, alla@hs.kiev.ua, lesya@hs.kiev.ua, olga@hs.kiev.ua,kristina@hs.kiev.ua, test@hs.kiev.ua, olya.o.chyzh@gmail.com', |
36 | 'name' => 'Semena', | 37 | 'name' => 'Semena', |
37 | 38 |
src/lib/common.php
@@ -1229,24 +1229,23 @@ namespace | @@ -1229,24 +1229,23 @@ namespace | ||
1229 | } | 1229 | } |
1230 | 1230 | ||
1231 | public function getCartItems($in_cart, $lang_id, $special_user = null) { | 1231 | public function getCartItems($in_cart, $lang_id, $special_user = null) { |
1232 | - $result = []; | ||
1233 | - $total_price = 0; | ||
1234 | - $item_ids = $this->array_column( $in_cart, 'item_id' ); | ||
1235 | - $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); | ||
1236 | - $groups_ids = $this->array_column( $items, 'group_id' ); | ||
1237 | - $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); | ||
1238 | - $colors = array_unique($this->array_column( $groups_data, 'color_id' )); | ||
1239 | - $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); | 1232 | + $result = []; |
1233 | + $total_price = 0; | ||
1234 | + $item_ids = $this->array_column( $in_cart, 'item_id' ); | ||
1235 | + $items = $this->getDi()->get('models')->getItems()->getItemsByIds( $lang_id, $item_ids ); | ||
1236 | + $groups_ids = $this->array_column( $items, 'group_id' ); | ||
1237 | + $groups_data = $this->getDi()->get('models')->getItems()->getItemsByColorAndGroupsId(join(',',$groups_ids)); | ||
1238 | + $colors = array_unique($this->array_column( $groups_data, 'color_id' )); | ||
1239 | + $color_info = $this->getDi()->get('models')->getItems()->getColorsInfoByColorsId( $lang_id, join(',',$colors) ); | ||
1240 | + | ||
1240 | foreach($color_info as $k =>$v){ | 1241 | foreach($color_info as $k =>$v){ |
1241 | $colors_info[$v['id']] = $v; | 1242 | $colors_info[$v['id']] = $v; |
1242 | } | 1243 | } |
1243 | 1244 | ||
1244 | - | ||
1245 | foreach($groups_data as $k =>$v){ | 1245 | foreach($groups_data as $k =>$v){ |
1246 | if($groups_data[$k]['color_id'] != 0){ | 1246 | if($groups_data[$k]['color_id'] != 0){ |
1247 | $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; | 1247 | $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; |
1248 | $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; | 1248 | $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; |
1249 | - | ||
1250 | } else { | 1249 | } else { |
1251 | $groups_data[$k]['color'] = 0; | 1250 | $groups_data[$k]['color'] = 0; |
1252 | $groups_data[$k]['absolute_color'] = 0; | 1251 | $groups_data[$k]['absolute_color'] = 0; |
@@ -1257,9 +1256,7 @@ namespace | @@ -1257,9 +1256,7 @@ namespace | ||
1257 | $groups_data[$v['id']] = $v; | 1256 | $groups_data[$v['id']] = $v; |
1258 | } | 1257 | } |
1259 | 1258 | ||
1260 | - foreach ( $in_cart as $c ) | ||
1261 | - { | ||
1262 | - | 1259 | + foreach ( $in_cart as $c ) { |
1263 | $count_item[$c['item_id']] = $c['count_items']; | 1260 | $count_item[$c['item_id']] = $c['count_items']; |
1264 | } | 1261 | } |
1265 | 1262 | ||
@@ -1269,14 +1266,9 @@ namespace | @@ -1269,14 +1266,9 @@ namespace | ||
1269 | } | 1266 | } |
1270 | } | 1267 | } |
1271 | 1268 | ||
1272 | - | ||
1273 | - | ||
1274 | - foreach ( $items as $k => $i ) | ||
1275 | - { | ||
1276 | - $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; | ||
1277 | - $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); | ||
1278 | - | ||
1279 | - | 1269 | + foreach ( $items as $k => $i ) { |
1270 | + $items[$k]['cover'] = !empty( $i['group_cover'] ) ? $this->getDi()->get('storage')->getPhotoUrl( $i['item_cover'], 'avatar', '128x' ) : '/images/packet.jpg'; | ||
1271 | + $items[$k]['alias'] = $this->getDi()->get('url')->get([ 'for' => 'item', 'subtype' => $i['catalog_alias'], 'group_alias' => $i['group_alias'], 'item_id' => $i['id'] ]); | ||
1280 | 1272 | ||
1281 | if(isset($i['prices'][0])) { | 1273 | if(isset($i['prices'][0])) { |
1282 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); | 1274 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); |
@@ -1285,24 +1277,25 @@ namespace | @@ -1285,24 +1277,25 @@ namespace | ||
1285 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['price2'], 2); | 1277 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['price2'], 2); |
1286 | } | 1278 | } |
1287 | 1279 | ||
1288 | - $items[$k]['count'] = $count_item[$i['id']]; | ||
1289 | - $total_price += $items[$k]['total_price']; | ||
1290 | - $items[$k]['color'] = $groups_data[$i['id']]['color']; | ||
1291 | - $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; | ||
1292 | - $items_[$i['id']] = $items[$k]; | 1280 | + $items[$k]['count'] = $count_item[$i['id']]; |
1281 | + $total_price += $items[$k]['total_price']; | ||
1282 | + $items[$k]['color'] = $groups_data[$i['id']]['color']; | ||
1283 | + $items[$k]['absolute_color'] = $groups_data[$i['id']]['absolute_color']; | ||
1284 | + $items_[$i['id']] = $items[$k]; | ||
1293 | } | 1285 | } |
1294 | 1286 | ||
1295 | - $total_price = round( $total_price, 2 ); | 1287 | + $total_price = round( $total_price, 2 ); |
1288 | + $result['total_price'] = $total_price; | ||
1289 | + $result['items'] = $items; | ||
1290 | + $result['items_'] = $items_; | ||
1296 | 1291 | ||
1297 | - $result['total_price'] = $total_price; | ||
1298 | - $result['items'] = $items; | ||
1299 | - $result['items_'] = $items_; | ||
1300 | return $result; | 1292 | return $result; |
1301 | } | 1293 | } |
1302 | 1294 | ||
1303 | - public function countOrderSum(&$order) { | 1295 | + public function countOrderSum(&$order) |
1296 | + { | ||
1304 | $sum = 0; | 1297 | $sum = 0; |
1305 | - foreach($order['items'] as $k => $item) { | 1298 | + foreach ($order['items'] as $k => $item) { |
1306 | $sum += $item['total_price']; | 1299 | $sum += $item['total_price']; |
1307 | } | 1300 | } |
1308 | $order['total_sum'] = $sum; | 1301 | $order['total_sum'] = $sum; |
src/lib/models.php
@@ -51,7 +51,8 @@ namespace | @@ -51,7 +51,8 @@ namespace | ||
51 | protected $_reviews = false; | 51 | protected $_reviews = false; |
52 | protected $_modal = false; | 52 | protected $_modal = false; |
53 | protected $_manager_mail = false; | 53 | protected $_manager_mail = false; |
54 | - protected $_promo_to_user = false; | 54 | + protected $_promo_to_user = false; |
55 | + protected $_discount = false; | ||
55 | 56 | ||
56 | 57 | ||
57 | 58 | ||
@@ -84,7 +85,7 @@ namespace | @@ -84,7 +85,7 @@ namespace | ||
84 | * @author Jane Bezmaternykh | 85 | * @author Jane Bezmaternykh |
85 | * @version 0.1.20140327 | 86 | * @version 0.1.20140327 |
86 | * | 87 | * |
87 | - * @return obj | 88 | + * @return \models\items |
88 | */ | 89 | */ |
89 | public function getItems() | 90 | public function getItems() |
90 | { | 91 | { |
@@ -553,6 +554,17 @@ namespace | @@ -553,6 +554,17 @@ namespace | ||
553 | return $this->_promo_codes; | 554 | return $this->_promo_codes; |
554 | } | 555 | } |
555 | 556 | ||
557 | + public function getDiscount() | ||
558 | + { | ||
559 | + if( empty($this->_discount) ) | ||
560 | + { | ||
561 | + $this->_discount = new \models\discount(); | ||
562 | + $this->_discount->setDi( $this->getDi() ); | ||
563 | + } | ||
564 | + | ||
565 | + return $this->_discount; | ||
566 | + } | ||
567 | + | ||
556 | public function getPayment() | 568 | public function getPayment() |
557 | { | 569 | { |
558 | if( empty($this->_payment) ) | 570 | if( empty($this->_payment) ) |
1 | +<?php | ||
2 | +/** | ||
3 | + * Created by PhpStorm. | ||
4 | + * User: Alex Savenko | ||
5 | + * Date: 20.12.2016 | ||
6 | + * Time: 13:39 | ||
7 | + */ | ||
8 | + | ||
9 | +namespace models; | ||
10 | + | ||
11 | + | ||
12 | +class discount extends \db | ||
13 | +{ | ||
14 | + | ||
15 | + /** | ||
16 | + * Get all discounts | ||
17 | + * @return array | ||
18 | + */ | ||
19 | + public function getAllData() | ||
20 | + { | ||
21 | + | ||
22 | + return $this->get( | ||
23 | + ' | ||
24 | + SELECT * FROM | ||
25 | + public.discount | ||
26 | + ' | ||
27 | + , | ||
28 | + [ | ||
29 | + ], | ||
30 | + -1 | ||
31 | + ); | ||
32 | + } | ||
33 | + | ||
34 | + | ||
35 | + /** | ||
36 | + * Get discount | ||
37 | + * @param $id | ||
38 | + * @return array | ||
39 | + */ | ||
40 | + public function getOneData($id) | ||
41 | + { | ||
42 | + return $this->get( | ||
43 | + ' | ||
44 | + SELECT * | ||
45 | + FROM public.discount | ||
46 | + WHERE | ||
47 | + id = :id | ||
48 | + ', | ||
49 | + [ | ||
50 | + 'id' => $id | ||
51 | + ], | ||
52 | + -1 | ||
53 | + ); | ||
54 | + } | ||
55 | + | ||
56 | + /** | ||
57 | + * Get discount indication status | ||
58 | + * @param $id | ||
59 | + * @return array | ||
60 | + */ | ||
61 | + public function getStatus($id) { | ||
62 | + | ||
63 | + $status = $this->get( | ||
64 | + ' | ||
65 | + SELECT status | ||
66 | + FROM public.discount | ||
67 | + WHERE | ||
68 | + id = :id | ||
69 | + ', | ||
70 | + [ | ||
71 | + 'id' => $id | ||
72 | + ], | ||
73 | + -1 | ||
74 | + ); | ||
75 | + | ||
76 | + return $status[0]['status']; | ||
77 | + | ||
78 | + } | ||
79 | + | ||
80 | + | ||
81 | + /** | ||
82 | + * Get actual discount | ||
83 | + * @return array | ||
84 | + */ | ||
85 | + public function getActiveData() | ||
86 | + { | ||
87 | + return $this->get( | ||
88 | + ' | ||
89 | + SELECT * | ||
90 | + FROM public.discount | ||
91 | + WHERE | ||
92 | + status = 1 | ||
93 | + AND | ||
94 | + current_timestamp > start_date | ||
95 | + AND | ||
96 | + current_timestamp < end_date | ||
97 | + LIMIT 1 | ||
98 | + | ||
99 | + ', | ||
100 | + [ | ||
101 | + ], | ||
102 | + -1 | ||
103 | + ); | ||
104 | + } | ||
105 | + | ||
106 | + | ||
107 | + /** | ||
108 | + * Delete discount | ||
109 | + * @param $id | ||
110 | + * @return bool | ||
111 | + */ | ||
112 | + public function deleteData($id) | ||
113 | + { | ||
114 | + return $this->exec( | ||
115 | + ' DELETE | ||
116 | + FROM | ||
117 | + public.discount | ||
118 | + WHERE | ||
119 | + id = :id | ||
120 | + ', | ||
121 | + [ | ||
122 | + 'id' => $id | ||
123 | + ] | ||
124 | + ); | ||
125 | + } | ||
126 | + | ||
127 | + /** | ||
128 | + * Add new discount | ||
129 | + * @param $data | ||
130 | + * @return array | ||
131 | + */ | ||
132 | + public function addData($data) | ||
133 | + { | ||
134 | + | ||
135 | + return $this->get( | ||
136 | + ' | ||
137 | + INSERT INTO | ||
138 | + public.discount | ||
139 | + ( | ||
140 | + name, | ||
141 | + discount, | ||
142 | + description, | ||
143 | + start_date, | ||
144 | + end_date, | ||
145 | + status, | ||
146 | + group_ids | ||
147 | + ) | ||
148 | + VALUES | ||
149 | + ( | ||
150 | + :name, | ||
151 | + :discount, | ||
152 | + :description, | ||
153 | + :start_date, | ||
154 | + :end_date, | ||
155 | + :status, | ||
156 | + :group_ids | ||
157 | + ) | ||
158 | + RETURNING id | ||
159 | + ', | ||
160 | + [ | ||
161 | + 'name' => $data['name'], | ||
162 | + 'discount' => $data['discount'], | ||
163 | + 'description' => $data['description'], | ||
164 | + 'start_date' => $data['start_date'], | ||
165 | + 'end_date' => $data['end_date'], | ||
166 | + 'group_ids' => !empty($data['group_ids']) ? '{'. implode(', ', $data['group_ids']) . '}' : null, | ||
167 | + 'status' => $data['status'] | ||
168 | + ], | ||
169 | + -1 | ||
170 | + ); | ||
171 | + | ||
172 | + | ||
173 | + } | ||
174 | + | ||
175 | + /** | ||
176 | + * Update discount | ||
177 | + * @param $data | ||
178 | + * @param $id | ||
179 | + * @return bool | ||
180 | + */ | ||
181 | + public function updateData($data, $id) | ||
182 | + { | ||
183 | + | ||
184 | + return $this->exec( | ||
185 | + ' | ||
186 | + UPDATE | ||
187 | + public.discount | ||
188 | + SET | ||
189 | + name = :name, | ||
190 | + discount = :discount, | ||
191 | + description = :description, | ||
192 | + start_date = :start_date, | ||
193 | + end_date = :end_date, | ||
194 | + status = :status, | ||
195 | + group_ids = :group_ids | ||
196 | + WHERE | ||
197 | + id = :id | ||
198 | + ', | ||
199 | + [ | ||
200 | + 'name' => $data['name'], | ||
201 | + 'discount' => $data['discount'], | ||
202 | + 'description' => $data['description'], | ||
203 | + 'start_date' => $data['start_date'], | ||
204 | + 'end_date' => $data['end_date'], | ||
205 | + 'status' => $data['status'], | ||
206 | + 'group_ids' => !empty($data['group_ids']) ? '{'. implode(', ', $data['group_ids']) . '}' : null, | ||
207 | + 'id' => $id | ||
208 | + ] | ||
209 | + ); | ||
210 | + | ||
211 | + } | ||
212 | + | ||
213 | + /** | ||
214 | + * Switch status indicator | ||
215 | + * @param bool $status | ||
216 | + * @param $id | ||
217 | + * @return bool | ||
218 | + */ | ||
219 | + public function updateStatus($status, $id) { | ||
220 | + | ||
221 | + return $this->exec( | ||
222 | + ' | ||
223 | + UPDATE | ||
224 | + public.discount | ||
225 | + SET | ||
226 | + status = :status | ||
227 | + WHERE | ||
228 | + id = :id | ||
229 | + ', | ||
230 | + [ | ||
231 | + 'status' => $status, | ||
232 | + 'id' => $id | ||
233 | + ] | ||
234 | + ); | ||
235 | + | ||
236 | + } | ||
237 | + | ||
238 | + /** | ||
239 | + * Count all discounts | ||
240 | + * @return array | ||
241 | + */ | ||
242 | + public function countData() | ||
243 | + { | ||
244 | + return $this->get( | ||
245 | + ' | ||
246 | + SELECT | ||
247 | + COUNT(id) AS total | ||
248 | + FROM | ||
249 | + public.discount | ||
250 | + ', | ||
251 | + [ | ||
252 | + | ||
253 | + ], | ||
254 | + -1 | ||
255 | + ); | ||
256 | + } | ||
257 | + | ||
258 | +} | ||
0 | \ No newline at end of file | 259 | \ No newline at end of file |
www-backend/css/main.css
@@ -917,6 +917,9 @@ label.error { | @@ -917,6 +917,9 @@ label.error { | ||
917 | .one_page_edit:hover .one_page_delete_ico a{background: url(../images/del_hover.png) 0% 0% no-repeat; width: 16px; height: 16px} | 917 | .one_page_edit:hover .one_page_delete_ico a{background: url(../images/del_hover.png) 0% 0% no-repeat; width: 16px; height: 16px} |
918 | .one_page_edit .one_page_edit_ico a{background: url(../images/pencil.png) 0% 0% no-repeat; width: 16px; height: 16px} | 918 | .one_page_edit .one_page_edit_ico a{background: url(../images/pencil.png) 0% 0% no-repeat; width: 16px; height: 16px} |
919 | .one_page_edit:hover .one_page_edit_ico a{background: url(../images/pencil_hover.png) 0% 0% no-repeat; width: 16px; height: 16px} | 919 | .one_page_edit:hover .one_page_edit_ico a{background: url(../images/pencil_hover.png) 0% 0% no-repeat; width: 16px; height: 16px} |
920 | +.one_page_edit .one_page_status_on_ico a{background: url(../images/green_16.jpg) 0% 0% no-repeat; width: 16px; height: 16px} | ||
921 | +.one_page_edit .one_page_status_off_ico a{background: url(../images/red_16.png) 0% 0% no-repeat; width: 16px; height: 16px} | ||
922 | + | ||
920 | 923 | ||
921 | 924 | ||
922 | 925 |
www-backend/index.php
@@ -1067,6 +1067,70 @@ try | @@ -1067,6 +1067,70 @@ try | ||
1067 | ) | 1067 | ) |
1068 | ->setName('get_items_by_filter'); | 1068 | ->setName('get_items_by_filter'); |
1069 | 1069 | ||
1070 | + /* *************** discounts ************** */ | ||
1071 | + | ||
1072 | + $router->add | ||
1073 | + ( | ||
1074 | + '/discount_index', | ||
1075 | + [ | ||
1076 | + 'controller' => 'discount', | ||
1077 | + 'action' => 'index' | ||
1078 | + ] | ||
1079 | + ) | ||
1080 | + ->setName('discount_index'); | ||
1081 | + | ||
1082 | + $router->add | ||
1083 | + ( | ||
1084 | + '/discount_index/page/{page:[0-9]+}', | ||
1085 | + [ | ||
1086 | + 'controller' => 'promo_codes', | ||
1087 | + 'action' => 'index' | ||
1088 | + ] | ||
1089 | + ) | ||
1090 | + ->setName('discount_index_paged'); | ||
1091 | + | ||
1092 | + $router->add | ||
1093 | + ( | ||
1094 | + '/discount_add', | ||
1095 | + [ | ||
1096 | + 'controller' => 'discount', | ||
1097 | + 'action' => 'add' | ||
1098 | + ] | ||
1099 | + ) | ||
1100 | + ->setName('discount_add'); | ||
1101 | + | ||
1102 | + $router->add | ||
1103 | + ( | ||
1104 | + '/discount_update/{id:[0-9]+}', | ||
1105 | + [ | ||
1106 | + 'controller' => 'discount', | ||
1107 | + 'action' => 'update' | ||
1108 | + ] | ||
1109 | + ) | ||
1110 | + ->setName('discount_update'); | ||
1111 | + | ||
1112 | + $router->add | ||
1113 | + ( | ||
1114 | + '/discount_delete/{id:[0-9]+}', | ||
1115 | + [ | ||
1116 | + 'controller' => 'discount', | ||
1117 | + 'action' => 'delete' | ||
1118 | + ] | ||
1119 | + ) | ||
1120 | + ->setName('discount_delete'); | ||
1121 | + | ||
1122 | + $router->add | ||
1123 | + ( | ||
1124 | + '/discount_switch/{id:[0-9]+}', | ||
1125 | + [ | ||
1126 | + 'controller' => 'discount', | ||
1127 | + 'action' => 'switch' | ||
1128 | + ] | ||
1129 | + ) | ||
1130 | + ->setName('discount_switch'); | ||
1131 | + | ||
1132 | + /* *************************************** */ | ||
1133 | + | ||
1070 | $router->add | 1134 | $router->add |
1071 | ( | 1135 | ( |
1072 | '/sales_index', | 1136 | '/sales_index', |
www/css/main.min.css
@@ -926,15 +926,36 @@ input[type=number]{-moz-appearance:textfield;} | @@ -926,15 +926,36 @@ input[type=number]{-moz-appearance:textfield;} | ||
926 | .catalog_description.logo320{background-color:#00a3de;} | 926 | .catalog_description.logo320{background-color:#00a3de;} |
927 | h2.types_logo_320{color:#00a3de;} | 927 | h2.types_logo_320{color:#00a3de;} |
928 | h2.types_logo_543{color:#5b4a42;} | 928 | h2.types_logo_543{color:#5b4a42;} |
929 | -.delivery-form-par{position:fixed;z-index:99991;top:0;background-color:rgba(255, 255, 255, 0.75);width:100%;height:100%;display:none;} | 929 | +.delivery-form-par{position:fixed;z-index:99991;top:0;background-color:rgba(255, 255, 255, 0.75);width:100%;height:100%;display:none;transition:0.3s;} |
930 | .delivery-form-par .close-white{content:'';position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;} | 930 | .delivery-form-par .close-white{content:'';position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer;} |
931 | -.delivery-form-par .popup-main-delivery{width:843px;height:400px;background-image:url("../images/right_deliver.png");background-position:right center;background-repeat:no-repeat;background-color:#fdfaf1;position:absolute;font-family:'Lato-Medium';left:calc(50% - 421.5px);top:15%;} | ||
932 | -.delivery-form-par .content-popup .text-up{width:320px;border-bottom:1px solid #6cb33f;color:#42210b;text-align:center;font-size:18px;padding-top:19px;line-height:22px;padding-bottom:4px;} | ||
933 | -.delivery-form-par .text-down .up-text{color:#42210b;font-size:13.5px;text-align:center;width:323px;padding-top:23px;padding-bottom:8px;} | ||
934 | -.delivery-form-par .text-down .footer-text{color:#333333;font-style:italic;text-align:center;font-family:'Lato-Italic';padding-top:8px;padding-top:24px;width:319px;font-size:10.8px;} | 931 | +.delivery-form-par .popup-main-delivery{width:843px;height:400px;background-image:url("../images/right_deliver.png");background-size: contain;background-position:right center;background-repeat:no-repeat;background-color:#fdfaf1;position:absolute;font-family:'Lato-Medium';left:calc(50% - 421.5px);top:15%;} |
932 | +.delivery-form-par .content-popup .text-up{width:100%;max-width:332px;border-bottom:1px solid #6cb33f;color:#42210b;text-align:center;font-size:18px;padding-top:19px;line-height:22px;padding-bottom:4px;} | ||
933 | +.delivery-form-par .content-popup .text-down{width:100%;max-width:332px;} | ||
934 | +.delivery-form-par .text-down .up-text{color:#42210b;font-size:13.5px;text-align:center;width:100%;padding-top:23px;padding-bottom:8px;} | ||
935 | +.delivery-form-par .text-down .footer-text{color:#333333;font-style:italic;text-align:center;font-family:'Lato-Italic';padding-top:8px;padding-top:24px;width:100%;font-size:10.8px;} | ||
935 | .delivery-form-par .submit-delivery-but{font-size:15px;color:#fff;border:none;background-color:#6cb33f;text-transform:lowercase;width:80px;height:25px;outline:none;cursor:pointer;} | 936 | .delivery-form-par .submit-delivery-but{font-size:15px;color:#fff;border:none;background-color:#6cb33f;text-transform:lowercase;width:80px;height:25px;outline:none;cursor:pointer;} |
936 | .delivery-form-par .text-up p span{color:#f15a24;font-size:28.58px;} | 937 | .delivery-form-par .text-up p span{color:#f15a24;font-size:28.58px;} |
937 | -.delivery-form-par .content-popup{padding:38px;width:40%;} | 938 | +.delivery-form-par .content-popup{transition:0.3s;padding:38px;width:100%;height:100%;min-height: 400px;max-width:480px;box-sizing:border-box;background-image:url('../images/grad_popup.png');background-position: left center;background-repeat-x: no-repeat;} |
938 | .delivery-form-par .text-down input{height:23px;width:104px;border:1px solid #6cb33f;font-size:9px;padding-left:12px;outline:none;} | 939 | .delivery-form-par .text-down input{height:23px;width:104px;border:1px solid #6cb33f;font-size:9px;padding-left:12px;outline:none;} |
939 | -.delivery-form-par .deliver-form{display:flex;justify-content:space-between;width:327px;} | ||
940 | -body{font-family:Calibri, Candara, Segoe, 'Segoe UI', Optima, Arial, sans-serif;} | ||
941 | \ No newline at end of file | 940 | \ No newline at end of file |
941 | +.delivery-form-par .deliver-form{display:flex;justify-content:space-between;width:100%px;} | ||
942 | +body{font-family:Calibri, Candara, Segoe, 'Segoe UI', Optima, Arial, sans-serif;} | ||
943 | +.open-delivery-modal{opacity: 1;cursor: pointer;position: fixed;top: calc(50% - 80px);left: 0%;font-size: 24px;z-index: 10000;} | ||
944 | +.open-delivery-modal div{width: 100%;max-width: 360px;text-align: center;margin: 0 auto;position:relative;} | ||
945 | +.open-delivery-modal div img{width:100%;max-width:360px;} | ||
946 | +.modal_close{position: absolute;top: 23px;right: 10px;width: 15px;height: 15px;background-image:url('../images/close_popup.png');background-position:center center; background-repeat:no-repeat;border-radius: 50%;box-shadow: 0px 1px 3px -1px rgba(0, 0, 0, 0.40);cursor: default;} | ||
947 | +.popup_full{display:block;} | ||
948 | +.popup_mobile{display:none;} | ||
949 | +@media( max-width: 880px ){ | ||
950 | + .delivery-form-par .popup-main-delivery{width:96%;left:2%;} | ||
951 | + .open-delivery-modal{top: initial;bottom:0;width:100%;box-shadow: inset 0px -250px 125px -250px black;} | ||
952 | + .popup_full{display:none;} | ||
953 | + .popup_mobile{display:block;} | ||
954 | +} | ||
955 | +@media ( max-width: 480px ){ | ||
956 | + .delivery-form-par .content-popup{padding:25px;} | ||
957 | + .delivery-form-par .popup-main-delivery{background-image:none;height:initial;top:10%;} | ||
958 | + .delivery-form-par .deliver-form{justify-content: center;align-items: center;flex-direction: column;} | ||
959 | + .delivery-form-par .text-down input {margin-bottom:5px;} | ||
960 | + .delivery-form-par .submit-delivery-but{margin-top:5px;} | ||
961 | + .delivery-form-par .content-popup .text-up, .delivery-form-par .content-popup .text-down{max-width:100%;} | ||
962 | +} | ||
942 | \ No newline at end of file | 963 | \ No newline at end of file |
15.2 KB
32.3 KB
103 KB
41.8 KB
www/images/right_deliver.png
www/php.php