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 | 262 | \ No newline at end of file | ... | ... |
src/app/backend/controllers/PromoCodesController.php
... | ... | @@ -26,8 +26,8 @@ class PromoCodesController extends Controller |
26 | 26 | 'page' => $page, |
27 | 27 | 'items_per_page' => \config::get( 'limits/admin_orders', 5), |
28 | 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 | 31 | ], true |
32 | 32 | ); |
33 | 33 | } |
... | ... | @@ -38,54 +38,54 @@ class PromoCodesController extends Controller |
38 | 38 | } |
39 | 39 | |
40 | 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 | 90 | public function deleteAction($id) { |
91 | 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 | 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 | 57 | <ul class="body"> |
58 | 58 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'reviews_index' ]) ?>" title="Акции">Отзывы</a></li> |
59 | 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 | 61 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'promo_codes_index' ]) ?>" title="Промокоды">Промокоды</a></li> |
61 | 62 | <li class="point4"><a href="<?= $this->url->get([ 'for' => 'action_discount_index' ]) ?>" title="Акции">Акции для магазина</a></li> |
62 | 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 | 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 | 278 | /*$('#name').autocomplete({ |
279 | 279 | minLength: 2, | ... | ... |
src/app/frontend/controllers/MenuController.php
... | ... | @@ -17,25 +17,22 @@ class MenuController extends \controllers\ControllerBase |
17 | 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 | 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 | 34 | foreach( $cities_->item as $c ) |
37 | 35 | { |
38 | - | |
39 | 36 | $cities[strval($c->CityID)] = strval($c->Description); |
40 | 37 | } |
41 | 38 | |
... | ... | @@ -43,24 +40,33 @@ class MenuController extends \controllers\ControllerBase |
43 | 40 | { |
44 | 41 | $cart = $this->common->getCartItems($in_cart, $this->lang_id); |
45 | 42 | |
43 | + //promocode | |
46 | 44 | if(!empty($session_promo_code)) { |
47 | 45 | if($this->common->applyPromoCode($session_promo_code, $cart['items'])) { |
48 | 46 | $this->common->countOrderSum($cart); |
49 | 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 | 66 | if ( $this->request->isPost() ) |
60 | 67 | { |
61 | 68 | $order['email'] = $this->request->getPost('login_email', 'string', NULL ); |
62 | 69 | $order['passwd'] = $this->request->getPost('login_passwd', 'string', NULL ); |
63 | - | |
64 | 70 | $promo_code = $this->request->getPost('promo_code', 'string', NULL ); |
65 | 71 | |
66 | 72 | if(empty($session_promo_code)) { |
... | ... | @@ -73,8 +79,8 @@ class MenuController extends \controllers\ControllerBase |
73 | 79 | |
74 | 80 | $order_items = $this->request->getPost('count_items', NULL, [] ); |
75 | 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 | 84 | $order['total_sum'] = 0; |
79 | 85 | |
80 | 86 | foreach( $order_items as $key => $val ) |
... | ... | @@ -83,15 +89,12 @@ class MenuController extends \controllers\ControllerBase |
83 | 89 | $items_[$key]['total_price'] = round($val*$items_[$key]['price2'], 1); |
84 | 90 | |
85 | 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 | 96 | $order['items'][] = $items_[$key]; |
92 | 97 | $order['total_sum'] += $items_[$key]['total_price']; |
93 | - | |
94 | - | |
95 | 98 | $item_id_in_cart = $this->common->array_column( $in_cart, 'item_id' ); |
96 | 99 | |
97 | 100 | if( in_array( $key, $item_id_in_cart ) ) |
... | ... | @@ -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 | 114 | $this->session->set( 'in_cart', $in_cart ); |
115 | + | |
112 | 116 | if ( !empty( $order['email'] ) && !empty( $order['passwd'] ) ) |
113 | 117 | { |
114 | 118 | |
... | ... | @@ -130,8 +134,6 @@ class MenuController extends \controllers\ControllerBase |
130 | 134 | $this->flash->success($this->languages->getTranslation()->_("please_change_the_password")); |
131 | 135 | $this->session->set( 'customer_email', $order['email'] ); |
132 | 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 | 180 | $order['passwd_'] = $passwd_; |
179 | 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 | 199 | $proposal_number = $this->models->getOrders()->addOrder($order); |
183 | 200 | $order['proposal_number'] = $proposal_number['proposal_number']; |
184 | 201 | $order['confirmed'] = $proposal_number['confirmed']; |
... | ... | @@ -187,11 +204,6 @@ class MenuController extends \controllers\ControllerBase |
187 | 204 | $sms_text = "Vash zakaz prinyat. #:".$proposal_number['proposal_number']." V blijayshee vremya menedjer svyajetsya s Vami (044) 581-67-15"; |
188 | 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 | 207 | // novaposhta |
196 | 208 | if (!empty($proposal_number['novaposhta_tnn'])) |
197 | 209 | { |
... | ... | @@ -251,7 +263,6 @@ class MenuController extends \controllers\ControllerBase |
251 | 263 | return $this->response->redirect([ 'for' => 'basket', 'language' => $this->lang_name ]); |
252 | 264 | } |
253 | 265 | } |
254 | - | |
255 | 266 | } |
256 | 267 | |
257 | 268 | $static_page_alias = '/basket'. $this->lang_name; |
... | ... | @@ -271,7 +282,6 @@ class MenuController extends \controllers\ControllerBase |
271 | 282 | ]); |
272 | 283 | } |
273 | 284 | |
274 | - | |
275 | 285 | public function orderCompletedAction() { |
276 | 286 | $completed = $this->languages->getTranslation()->_("successfully_realized_order"); |
277 | 287 | |
... | ... | @@ -329,7 +339,6 @@ class MenuController extends \controllers\ControllerBase |
329 | 339 | ]); |
330 | 340 | } |
331 | 341 | |
332 | - | |
333 | 342 | public function getCitiesAction( ) |
334 | 343 | { |
335 | 344 | header('Content-Type: application/json; charset=utf8'); |
... | ... | @@ -357,7 +366,6 @@ class MenuController extends \controllers\ControllerBase |
357 | 366 | die( json_encode( $selected_cities ) ); |
358 | 367 | } |
359 | 368 | |
360 | - | |
361 | 369 | public function getOfficesAction( ) |
362 | 370 | { |
363 | 371 | header('Content-Type: application/json; charset=utf8'); |
... | ... | @@ -378,7 +386,6 @@ class MenuController extends \controllers\ControllerBase |
378 | 386 | die( json_encode( $offices ) ); |
379 | 387 | } |
380 | 388 | |
381 | - | |
382 | 389 | public function addProductBasketAction(){ |
383 | 390 | $item_id = $_GET['productID']; |
384 | 391 | $count_items = $_GET['productCount']; |
... | ... | @@ -392,21 +399,31 @@ class MenuController extends \controllers\ControllerBase |
392 | 399 | } |
393 | 400 | |
394 | 401 | public function getCartItemsAction() { |
402 | + | |
395 | 403 | $this->view->disable(); |
396 | 404 | |
397 | 405 | $in_cart = $this->session->get('in_cart', []); |
398 | 406 | |
399 | - | |
400 | - | |
401 | 407 | $cart_items = $this->common->getCartItems($in_cart, $this->lang_id); |
402 | 408 | |
403 | - | |
404 | - | |
405 | 409 | if($this->session->get('special_users_id') != null) { |
406 | 410 | $special_users_id = $this->session->get('special_users_id'); |
407 | 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 | 427 | foreach($cart_items['items'] as $k => $item) { |
411 | 428 | |
412 | 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 | 437 | ? $cart_items['items'][$k]['prices'][$special_user['status']] |
421 | 438 | : $item['price2'], 2, '.', '' |
422 | 439 | ); |
423 | - | |
424 | 440 | $cart_items['items'][$k]['total_price'] = $cart_items['items'][$k]['price'] * $item['count']; |
425 | 441 | |
426 | 442 | $cart_items['new_total_price'] += $cart_items['items'][$k]['total_price']; |
... | ... | @@ -429,13 +445,13 @@ class MenuController extends \controllers\ControllerBase |
429 | 445 | |
430 | 446 | } else { |
431 | 447 | $cart_items['items'][$k]['price'] = $item['price2']; |
432 | - } | |
448 | + } | |
449 | + | |
433 | 450 | } |
434 | 451 | |
435 | 452 | echo json_encode($cart_items); |
436 | 453 | } |
437 | 454 | |
438 | - | |
439 | 455 | public function addToBasketAction() |
440 | 456 | { |
441 | 457 | $count = 0; | ... | ... |
src/app/frontend/controllers/PageController.php
... | ... | @@ -135,7 +135,16 @@ |
135 | 135 | $timestamp_left = $left_date->getTimestamp(); |
136 | 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 | 148 | $css = [ |
140 | 149 | '/landing_sales/style.css', |
141 | 150 | |
... | ... | @@ -146,7 +155,7 @@ |
146 | 155 | $js = [ |
147 | 156 | '/landing_sales/flipclock.min.js' |
148 | 157 | ]; |
149 | - */ | |
158 | + | |
150 | 159 | $css = null; |
151 | 160 | $js = null; |
152 | 161 | |
... | ... | @@ -171,7 +180,8 @@ |
171 | 180 | 'meta_title' => $meta_title[$this->lang_id], |
172 | 181 | 'meta_description' => $meta_description[$this->lang_id], |
173 | 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 | 434 | '1' => (isset( $seo['description'] ) && !empty( $seo['description'] ) ? $seo['description'] : 'Замовити '.$catalog['catalog']['title'].' у Києві за найкращою ціною. Якість товара підтверджена професіоналами.').(isset( $page ) && !empty( $page ) && $page != '1' ? ' страница '.$page : ''), |
425 | 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 | 446 | if($subtype==='semena_gazonnykh_trav_1c_21') |
429 | 447 | $this->view->setMainView('landing'); |
430 | 448 | elseif($subtype==='nasinnja_gazonnikh_trav_1c1') |
... | ... | @@ -457,7 +475,8 @@ |
457 | 475 | 'subtype_alias' => $subtype_alias, |
458 | 476 | 'catalog_sales' => $catalog_sales, |
459 | 477 | 'css' => $cssSale, |
460 | - 'js' => $jsSale | |
478 | + 'js' => $jsSale, | |
479 | + 'discount' => $discount | |
461 | 480 | ]); |
462 | 481 | } |
463 | 482 | else |
... | ... | @@ -685,6 +704,14 @@ |
685 | 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 | 716 | $cssSale = [ |
690 | 717 | 'https://fonts.googleapis.com/css?family=Ubuntu:400,700,400italic', |
... | ... | @@ -726,8 +753,9 @@ |
726 | 753 | 'meta_link_next' => $meta_link_next[1], |
727 | 754 | 'meta_link_prev' => $meta_link_prev[1], |
728 | 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 | 799 | if( !empty( $type_child ) ) |
772 | 800 | { |
773 | 801 | $type_alias = $type.'--'.$type_child; |
774 | - | |
775 | 802 | } |
776 | 803 | else |
777 | 804 | { |
... | ... | @@ -855,7 +882,7 @@ |
855 | 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 | 887 | // $popular_groups = $this->models->getItems()->getPopularItems($this->lang_id); |
861 | 888 | // $popular_groups = $this->common->explodeAlias($popular_groups); |
... | ... | @@ -893,7 +920,14 @@ |
893 | 920 | '1' => isset($seo['description']) && !empty($seo['description']) ? $seo['description'] : 'Професіонали рекомендують ' . $catalog_name . ' ' . $item['0']['title'] . ' в інтернет магазині насіння Semena.in.ua.', |
894 | 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 | 932 | $this->view->setVars([ |
899 | 933 | 'change_lang_url' => $lang_url, |
... | ... | @@ -914,8 +948,9 @@ |
914 | 948 | 'meta_description' => $meta_description[$this->lang_id], |
915 | 949 | 'breadcrumbs' => $breadcrumbs, |
916 | 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 | 956 | else |
... | ... | @@ -996,10 +1031,8 @@ |
996 | 1031 | { |
997 | 1032 | $item_id = $this->request->getPost( 'item_id', 'int', '' ); |
998 | 1033 | $group_alias = $this->request->getPost( 'group_alias', 'string', '' ); |
999 | - | |
1000 | 1034 | $item = $this->models->getItems()->getOneItem( $this->lang_id, $item_id ); |
1001 | 1035 | $filters = $this->models->getFilters()->getFiltersByItemId( $this->lang_id, $item_id ); |
1002 | - | |
1003 | 1036 | $colors_info = $this->models->getItems()->getColorsInfoByColorId( $this->lang_id, $item['0']['color_id'] ); |
1004 | 1037 | |
1005 | 1038 | $item['0']['color_title'] = NULL; |
... | ... | @@ -1017,11 +1050,10 @@ |
1017 | 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 | 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 | 1058 | $item['0']['filters'] = $filters; |
1027 | 1059 | $item['0']['images'] = $this->etc->int2arr( $item['0']['photogallery'] ); |
... | ... | @@ -1074,10 +1106,25 @@ |
1074 | 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 | 1124 | $this->view->pick('page/changeWithSize'); |
1079 | 1125 | $this->view->setVars([ |
1080 | - 'item' => $item['0'] | |
1126 | + 'item' => $item['0'], | |
1127 | + 'discount' => $discount | |
1081 | 1128 | ]); |
1082 | 1129 | $this->view->setRenderLevel(View::LEVEL_ACTION_VIEW); |
1083 | 1130 | } |
... | ... | @@ -1419,15 +1466,19 @@ |
1419 | 1466 | public function aboutuaAction(){ |
1420 | 1467 | $this->view->setMainView('about_ukr'); |
1421 | 1468 | } |
1469 | + | |
1422 | 1470 | public function aboutengAction(){ |
1423 | 1471 | $this->view->setMainView('about_eng'); |
1424 | 1472 | } |
1473 | + | |
1425 | 1474 | public function please_returnAction(){ |
1426 | 1475 | $this->view->setMainView('please_return'); |
1427 | 1476 | } |
1428 | - public function basket_uaAction(){ | |
1477 | + | |
1478 | + public function basket_uaAction(){ | |
1429 | 1479 | $this->view->setMainView('basket_ua'); |
1430 | 1480 | } |
1481 | + | |
1431 | 1482 | public function basket_ruAction(){ |
1432 | 1483 | $this->view->setMainView('basket_ru'); |
1433 | 1484 | } |
... | ... | @@ -1544,4 +1595,4 @@ |
1544 | 1595 | header(!empty($language) ? "Location:".$language : 'Location:/'); |
1545 | 1596 | } |
1546 | 1597 | |
1547 | - } | |
1548 | 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 | 93 | </div> |
94 | 94 | <div class="contact_mob_phones"> |
95 | 95 | <span class="small_digits">(093)</span><span> 026-86-64</span> |
96 | - | |
97 | 96 | <div style="float:right;font-size:12px;margin-right:65px;" class="contact_callback_phones"> |
98 | 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 | 98 | </div> |
... | ... | @@ -245,8 +244,8 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; |
245 | 244 | </div> |
246 | 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 | 249 | </div> |
251 | 250 | <link rel="stylesheet" type="text/css" href="css/fontlato.css"> |
252 | 251 | <div class="delivery-form-par"> |
... | ... | @@ -268,7 +267,10 @@ $page_title = isset( $page_title ) && !empty( $page_title ) ? $page_title : ''; |
268 | 267 | </div> |
269 | 268 | |
270 | 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 | 274 | $(".delivery-form-par").show(); |
273 | 275 | $(".delivery-form-par").animate({opacity: "1"}, 500, function() {}); |
274 | 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 | 280 | $(".delivery-form-par").animate({opacity: "0"}, 500, function() {}); |
279 | 281 | setTimeout(function(){$(".delivery-form-par").hide();}, 600); |
280 | 282 | }); |
283 | + $(".modal_close").click(function(){ | |
284 | + $(".open-delivery-modal").hide(); | |
285 | + }); | |
281 | 286 | </script> |
282 | 287 | <?php |
283 | 288 | if( !IS_PRODUCTION ) | ... | ... |
src/app/frontend/views/page/changeWithSize.php
... | ... | @@ -6,9 +6,25 @@ if(isset($special_user)) { |
6 | 6 | } else { |
7 | 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 | 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 | 68 | } |
53 | 69 | } |
54 | 70 | |
55 | - | |
56 | 71 | echo json_encode($data); |
57 | 72 | \ No newline at end of file | ... | ... |
src/app/frontend/views/page/item.php
1 | 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 | 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 | 25 | '</a>'. |
35 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 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 | 250 | </div> |
248 | 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 | 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 | 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 | 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 | 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 | 347 | </div> |
309 | 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 | 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 | 408 | <div class="shadow_to_down"></div> |
386 | 409 | <div class="inner"> |
387 | 410 | <div class="content_accost_title"></div> |
388 | 411 | <div class="content_accost_content"> |
389 | 412 | <p> |
390 | - Інтернет - магазин ТМ "Професійне насіння" | |
413 | + <?= isset( $seo['seo_text'] ) && !empty( $seo['seo_text'] ) ? $seo['seo_text'] : ''?> | |
391 | 414 | </p> |
392 | 415 | </div> |
393 | 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 | 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 | 444 | </div> |
431 | 445 | </div> |
432 | - </div> | |
433 | 446 | |
434 | -</div><!-- content_blog --> | |
435 | -</div><!-- catalog --> | |
447 | + </div><!-- content_blog --> | |
448 | + | |
449 | + </div><!-- catalog --> | |
436 | 450 | </div> |
451 | + | |
437 | 452 | </div> |
453 | + | |
438 | 454 | <script> |
439 | 455 | |
440 | 456 | <?php |
441 | - | |
442 | 457 | $customer_id = $this->session->get('id'); |
443 | - | |
444 | - | |
445 | 458 | ?> |
446 | 459 | $( document ).ready(function() { |
460 | + | |
447 | 461 | $('body').on('click','.one_item_buttons a', function(){ |
448 | 462 | |
449 | 463 | <?php if( !empty( $customer_id ) ) : ?> |
... | ... | @@ -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 | 197 | $minPrice = 0; |
198 | 198 | ?> |
199 | 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 | 204 | <?php |
202 | 205 | if ($i['price'] > $maxPrice) { |
203 | 206 | $maxPrice = $i['price']; | ... | ... |
src/app/frontend/views/partial/item_group.php
... | ... | @@ -31,7 +31,24 @@ |
31 | 31 | </a> |
32 | 32 | </div> |
33 | 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 | 52 | <div class="one_item_buttons"> |
36 | 53 | <a href="<?= $this->seoUrl->setUrl($i['alias']) ?>" title="" class="btn grey"><?= $t->_("details") ?></a> |
37 | 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 | 32 | |
33 | 33 | |
34 | 34 | 'phones' => '(044)-581-67-15, (044)-451-48-59 <br /> (050)-464-48-59, (067)-464-48-59', |
35 | + | |
35 | 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 | 37 | 'name' => 'Semena', |
37 | 38 | ... | ... |
src/lib/common.php
... | ... | @@ -1229,24 +1229,23 @@ namespace |
1229 | 1229 | } |
1230 | 1230 | |
1231 | 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 | 1241 | foreach($color_info as $k =>$v){ |
1241 | 1242 | $colors_info[$v['id']] = $v; |
1242 | 1243 | } |
1243 | 1244 | |
1244 | - | |
1245 | 1245 | foreach($groups_data as $k =>$v){ |
1246 | 1246 | if($groups_data[$k]['color_id'] != 0){ |
1247 | 1247 | $groups_data[$k]['color'] = $colors_info[$groups_data[$k]['color_id']]['color_title']; |
1248 | 1248 | $groups_data[$k]['absolute_color'] = $colors_info[$groups_data[$k]['color_id']]['absolute_color']; |
1249 | - | |
1250 | 1249 | } else { |
1251 | 1250 | $groups_data[$k]['color'] = 0; |
1252 | 1251 | $groups_data[$k]['absolute_color'] = 0; |
... | ... | @@ -1257,9 +1256,7 @@ namespace |
1257 | 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 | 1260 | $count_item[$c['item_id']] = $c['count_items']; |
1264 | 1261 | } |
1265 | 1262 | |
... | ... | @@ -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 | 1273 | if(isset($i['prices'][0])) { |
1282 | 1274 | $items[$k]['total_price'] = round($count_item[$i['id']] * $i['prices'][$special_user['status']], 2); |
... | ... | @@ -1285,24 +1277,25 @@ namespace |
1285 | 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 | 1292 | return $result; |
1301 | 1293 | } |
1302 | 1294 | |
1303 | - public function countOrderSum(&$order) { | |
1295 | + public function countOrderSum(&$order) | |
1296 | + { | |
1304 | 1297 | $sum = 0; |
1305 | - foreach($order['items'] as $k => $item) { | |
1298 | + foreach ($order['items'] as $k => $item) { | |
1306 | 1299 | $sum += $item['total_price']; |
1307 | 1300 | } |
1308 | 1301 | $order['total_sum'] = $sum; | ... | ... |
src/lib/models.php
... | ... | @@ -51,7 +51,8 @@ namespace |
51 | 51 | protected $_reviews = false; |
52 | 52 | protected $_modal = false; |
53 | 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 | 85 | * @author Jane Bezmaternykh |
85 | 86 | * @version 0.1.20140327 |
86 | 87 | * |
87 | - * @return obj | |
88 | + * @return \models\items | |
88 | 89 | */ |
89 | 90 | public function getItems() |
90 | 91 | { |
... | ... | @@ -553,6 +554,17 @@ namespace |
553 | 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 | 568 | public function getPayment() |
557 | 569 | { |
558 | 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 | 259 | \ No newline at end of file | ... | ... |
www-backend/css/main.css
... | ... | @@ -917,6 +917,9 @@ label.error { |
917 | 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 | 918 | .one_page_edit .one_page_edit_ico a{background: url(../images/pencil.png) 0% 0% no-repeat; width: 16px; height: 16px} |
919 | 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 | 1067 | ) |
1068 | 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 | 1134 | $router->add |
1071 | 1135 | ( |
1072 | 1136 | '/sales_index', | ... | ... |
www/css/main.min.css
... | ... | @@ -926,15 +926,36 @@ input[type=number]{-moz-appearance:textfield;} |
926 | 926 | .catalog_description.logo320{background-color:#00a3de;} |
927 | 927 | h2.types_logo_320{color:#00a3de;} |
928 | 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 | 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 | 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 | 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 | 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 | 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 | 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