SHOW:
|
|
- or go back to the newest paste.
1 | <?php | |
2 | /* | |
3 | $Id$ | |
4 | ||
5 | osCommerce, Open Source E-Commerce Solutions | |
6 | http://www.oscommerce.com | |
7 | ||
8 | Copyright (c) 2014 osCommerce | |
9 | ||
10 | Released under the GNU General Public License | |
11 | */ | |
12 | ||
13 | require('includes/application_top.php'); | |
14 | require('includes/classes/http_client.php'); | |
15 | ||
16 | // if the customer is not logged on, redirect them to the login page | |
17 | if (!tep_session_is_registered('customer_id')) { | |
18 | $navigation->set_snapshot(); | |
19 | tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); | |
20 | } | |
21 | ||
22 | // if there is nothing in the customers cart, redirect them to the shopping cart page | |
23 | if ($cart->count_contents() < 1) { | |
24 | tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); | |
25 | } | |
26 | ||
27 | // if no shipping destination address was selected, use the customers own address as default | |
28 | if (!tep_session_is_registered('sendto')) { | |
29 | tep_session_register('sendto'); | |
30 | $sendto = $customer_default_address_id; | |
31 | } else { | |
32 | // verify the selected shipping address | |
33 | if ( (is_array($sendto) && empty($sendto)) || is_numeric($sendto) ) { | |
34 | $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$sendto . "'"); | |
35 | $check_address = tep_db_fetch_array($check_address_query); | |
36 | ||
37 | if ($check_address['total'] != '1') { | |
38 | $sendto = $customer_default_address_id; | |
39 | if (tep_session_is_registered('shipping')) tep_session_unregister('shipping'); | |
40 | } | |
41 | } | |
42 | } | |
43 | ||
44 | require(DIR_WS_CLASSES . 'order.php'); | |
45 | $order = new order; | |
46 | ||
47 | // register a random ID in the session to check throughout the checkout procedure | |
48 | // against alterations in the shopping cart contents | |
49 | if (!tep_session_is_registered('cartID')) { | |
50 | tep_session_register('cartID'); | |
51 | } elseif (($cartID != $cart->cartID) && tep_session_is_registered('shipping')) { | |
52 | tep_session_unregister('shipping'); | |
53 | } | |
54 | ||
55 | $cartID = $cart->cartID = $cart->generate_cart_id(); | |
56 | ||
57 | // if the order contains only virtual products, forward the customer to the billing page as | |
58 | // a shipping address is not needed | |
59 | if ($order->content_type == 'virtual') { | |
60 | if (!tep_session_is_registered('shipping')) tep_session_register('shipping'); | |
61 | $shipping = false; | |
62 | $sendto = false; | |
63 | tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); | |
64 | } | |
65 | ||
66 | $total_weight = $cart->show_weight(); | |
67 | $total_count = $cart->count_contents(); | |
68 | ||
69 | // load all enabled shipping modules | |
70 | require(DIR_WS_CLASSES . 'shipping.php'); | |
71 | $shipping_modules = new shipping; | |
72 | ||
73 | if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) { | |
74 | $pass = false; | |
75 | ||
76 | switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) { | |
77 | case 'national': | |
78 | if ($order->delivery['country_id'] == STORE_COUNTRY) { | |
79 | $pass = true; | |
80 | } | |
81 | break; | |
82 | case 'international': | |
83 | if ($order->delivery['country_id'] != STORE_COUNTRY) { | |
84 | $pass = true; | |
85 | } | |
86 | break; | |
87 | case 'both': | |
88 | $pass = true; | |
89 | break; | |
90 | } | |
91 | ||
92 | $free_shipping = false; | |
93 | ||
94 | if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) { | |
95 | $free_shipping = true; | |
96 | ||
97 | include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php'); | |
98 | } | |
99 | } else { | |
100 | $free_shipping = false; | |
101 | } | |
102 | ||
103 | // process the selected shipping method | |
104 | if ( isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') && isset($HTTP_POST_VARS['formid']) && ($HTTP_POST_VARS['formid'] == $sessiontoken) ) { | |
105 | if (!tep_session_is_registered('comments')) tep_session_register('comments'); | |
106 | if (tep_not_null($HTTP_POST_VARS['comments'])) { | |
107 | $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']); | |
108 | } | |
109 | ||
110 | if (!tep_session_is_registered('shipping')) tep_session_register('shipping'); | |
111 | ||
112 | if ( (tep_count_shipping_modules() > 0) || ($free_shipping == true) ) { | |
113 | if ( (isset($HTTP_POST_VARS['shipping'])) && (strpos($HTTP_POST_VARS['shipping'], '_')) ) { | |
114 | $shipping = $HTTP_POST_VARS['shipping']; | |
115 | ||
116 | list($module, $method) = explode('_', $shipping); | |
117 | if ( is_object($$module) || ($shipping == 'free_free') ) { | |
118 | if ($shipping == 'free_free') { | |
119 | $quote[0]['methods'][0]['title'] = FREE_SHIPPING_TITLE; | |
120 | $quote[0]['methods'][0]['cost'] = '0'; | |
121 | } else { | |
122 | $quote = $shipping_modules->quote($method, $module); | |
123 | } | |
124 | if (isset($quote['error'])) { | |
125 | tep_session_unregister('shipping'); | |
126 | } else { | |
127 | if ( (isset($quote[0]['methods'][0]['title'])) && (isset($quote[0]['methods'][0]['cost'])) ) { | |
128 | $shipping = array('id' => $shipping, | |
129 | 'title' => (($free_shipping == true) ? $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'), | |
130 | 'cost' => $quote[0]['methods'][0]['cost']); | |
131 | ||
132 | tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); | |
133 | } | |
134 | } | |
135 | } else { | |
136 | tep_session_unregister('shipping'); | |
137 | } | |
138 | } | |
139 | } else { | |
140 | $shipping = false; | |
141 | ||
142 | tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); | |
143 | } | |
144 | } | |
145 | ||
146 | // get all available shipping quotes | |
147 | $quotes = $shipping_modules->quote(); | |
148 | ||
149 | // if no shipping method has been selected, automatically select the cheapest method. | |
150 | // if the modules status was changed when none were available, to save on implementing | |
151 | // a javascript force-selection method, also automatically select the cheapest shipping | |
152 | // method if more than one module is now enabled | |
153 | if ( !tep_session_is_registered('shipping') || ( tep_session_is_registered('shipping') && ($shipping == false) && (tep_count_shipping_modules() > 1) ) ) $shipping = $shipping_modules->cheapest(); | |
154 | ||
155 | require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SHIPPING); | |
156 | ||
157 | $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); | |
158 | $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); | |
159 | ||
160 | require(DIR_WS_INCLUDES . 'template_top.php'); | |
161 | ?> | |
162 | ||
163 | <div class="page-header"> | |
164 | <h1><?php echo HEADING_TITLE; ?></h1> | |
165 | </div> | |
166 | ||
167 | <?php echo tep_draw_form('checkout_address', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'), 'post', 'class="form-horizontal"', true) . tep_draw_hidden_field('action', 'process'); ?> | |
168 | ||
169 | <div class="contentContainer"> | |
170 | <h2><?php echo TABLE_HEADING_SHIPPING_ADDRESS; ?></h2> | |
171 | ||
172 | <div class="contentText row"> | |
173 | <div class="col-sm-8"> | |
174 | <div class="alert alert-warning"> | |
175 | <?php echo TEXT_CHOOSE_SHIPPING_DESTINATION; ?> | |
176 | <div class="clearfix"></div> | |
177 | <div class="pull-right"> | |
178 | <?php echo tep_draw_button(IMAGE_BUTTON_CHANGE_ADDRESS, 'glyphicon-home', tep_href_link(FILENAME_CHECKOUT_SHIPPING_ADDRESS, '', 'SSL')); ?> | |
179 | </div> | |
180 | <div class="clearfix"></div> | |
181 | </div> | |
182 | </div> | |
183 | <div class="col-sm-4"> | |
184 | <div class="panel panel-primary"> | |
185 | <div class="panel-heading"><?php echo TITLE_SHIPPING_ADDRESS; ?></div> | |
186 | <div class="panel-body"> | |
187 | <?php echo tep_address_label($customer_id, $sendto, true, ' ', '<br />'); ?> | |
188 | </div> | |
189 | </div> | |
190 | </div> | |
191 | ||
192 | ||
193 | </div> | |
194 | ||
195 | <div class="clearfix"></div> | |
196 | ||
197 | <?php | |
198 | if (tep_count_shipping_modules() > 0) { | |
199 | ?> | |
200 | ||
201 | <h2><?php echo TABLE_HEADING_SHIPPING_METHOD; ?></h2> | |
202 | ||
203 | <?php | |
204 | if (sizeof($quotes) > 1 && sizeof($quotes[0]) > 1) { | |
205 | ?> | |
206 | ||
207 | <div class="contentText"> | |
208 | <div class="alert alert-warning"> | |
209 | <div class="row"> | |
210 | <div class="col-xs-8"> | |
211 | <?php echo TEXT_CHOOSE_SHIPPING_METHOD; ?> | |
212 | </div> | |
213 | <div class="col-xs-4 text-right"> | |
214 | <?php echo '<strong>' . TITLE_PLEASE_SELECT . '</strong>'; ?> | |
215 | </div> | |
216 | </div> | |
217 | </div> | |
218 | </div> | |
219 | ||
220 | <?php | |
221 | } elseif ($free_shipping == false) { | |
222 | ?> | |
223 | ||
224 | <div class="contentText"> | |
225 | <div class="alert alert-info"><?php echo TEXT_ENTER_SHIPPING_INFORMATION; ?></div> | |
226 | </div> | |
227 | ||
228 | <?php | |
229 | } | |
230 | ?> | |
231 | ||
232 | <div class="contentText"> | |
233 | - | <table border="0" class="table table-striped table-condensed table-hover"> |
233 | + | <table class="table table-striped table-condensed table-hover table-options"> |
234 | <tbody> | |
235 | ||
236 | <?php | |
237 | if ($free_shipping == true) { | |
238 | ?> | |
239 | ||
240 | <div class="contentText"> | |
241 | <div class="panel panel-success"> | |
242 | <div class="panel-heading"><strong><?php echo FREE_SHIPPING_TITLE; ?></strong> <?php echo $quotes[$i]['icon']; ?></div> | |
243 | <div class="panel-body"> | |
244 | <?php echo sprintf(FREE_SHIPPING_DESCRIPTION, $currencies->format(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER)) . tep_draw_hidden_field('shipping', 'free_free'); ?> | |
245 | </div> | |
246 | </div> | |
247 | </div> | |
248 | ||
249 | <?php | |
250 | } else { | |
251 | for ($i=0, $n=sizeof($quotes); $i<$n; $i++) { | |
252 | for ($j=0, $n2=sizeof($quotes[$i]['methods']); $j<$n2; $j++) { | |
253 | // set the radio button to be checked if it is the method chosen | |
254 | $checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == $shipping['id']) ? true : false); | |
255 | ||
256 | echo ' <tr>' . "\n"; | |
257 | ||
258 | ?> | |
259 | ||
260 | <td> | |
261 | <strong><?php echo $quotes[$i]['module']; ?></strong> | |
262 | <?php | |
263 | if (isset($quotes[$i]['icon']) && tep_not_null($quotes[$i]['icon'])) echo ' ' . $quotes[$i]['icon']; | |
264 | ?> | |
265 | ||
266 | <?php | |
267 | if (isset($quotes[$i]['error'])) { | |
268 | echo '<div class="help-block">' . $quotes[$i]['error'] . '</div>'; | |
269 | } | |
270 | ?> | |
271 | ||
272 | <?php | |
273 | if (tep_not_null($quotes[$i]['methods'][$j]['title'])) echo '<div class="help-block">' . $quotes[$i]['methods'][$j]['title'] . '</div>'; | |
274 | ?> | |
275 | </td> | |
276 | ||
277 | <?php | |
278 | if ( ($n > 1) || ($n2 > 1) ) { | |
279 | ?> | |
280 | ||
281 | <td align="right"> | |
282 | <?php | |
283 | if (isset($quotes[$i]['error'])) { | |
284 | // nothing | |
285 | echo ' '; | |
286 | } | |
287 | else { | |
288 | echo $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], (isset($quotes[$i]['tax']) ? $quotes[$i]['tax'] : 0))); ?> <?php echo tep_draw_radio_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'], $checked, 'required aria-required="true"'); | |
289 | } | |
290 | ?> | |
291 | </td> | |
292 | ||
293 | <?php | |
294 | } else { | |
295 | ?> | |
296 | ||
297 | <td align="right"><?php echo $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], (isset($quotes[$i]['tax']) ? $quotes[$i]['tax'] : 0))) . tep_draw_hidden_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id']); ?></td> | |
298 | ||
299 | <?php | |
300 | } | |
301 | ?> | |
302 | ||
303 | </tr> | |
304 | ||
305 | <?php | |
306 | } | |
307 | } | |
308 | } | |
309 | ?> | |
310 | ||
311 | </tbody> | |
312 | </table> | |
313 | </div> | |
314 | ||
315 | <?php | |
316 | } | |
317 | ?> | |
318 | ||
319 | <hr> | |
320 | ||
321 | <div class="contentText"> | |
322 | <div class="form-group"> | |
323 | <label for="inputComments" class="control-label col-xs-4"><?php echo TABLE_HEADING_COMMENTS; ?></label> | |
324 | <div class="col-xs-8"> | |
325 | <?php | |
326 | echo tep_draw_textarea_field('comments', 'soft', 60, 5, $comments, 'id="inputComments" placeholder="' . TABLE_HEADING_COMMENTS . '"'); | |
327 | ?> | |
328 | </div> | |
329 | </div> | |
330 | </div> | |
331 | ||
332 | <div class="buttonSet"> | |
333 | <span class="buttonAction"><?php echo tep_draw_button(IMAGE_BUTTON_CONTINUE, 'glyphicon-chevron-right', null, 'primary'); ?></span> | |
334 | </div> | |
335 | ||
336 | <div class="clearfix"></div> | |
337 | ||
338 | <div class="contentText"> | |
339 | <div class="stepwizard"> | |
340 | <div class="stepwizard-row"> | |
341 | <div class="stepwizard-step"> | |
342 | <button type="button" class="btn btn-primary btn-circle">1</button> | |
343 | <p><?php echo CHECKOUT_BAR_DELIVERY; ?></p> | |
344 | </div> | |
345 | <div class="stepwizard-step"> | |
346 | <button type="button" class="btn btn-default btn-circle" disabled="disabled">2</button> | |
347 | <p><?php echo CHECKOUT_BAR_PAYMENT; ?></p> | |
348 | </div> | |
349 | <div class="stepwizard-step"> | |
350 | <button type="button" class="btn btn-default btn-circle" disabled="disabled">3</button> | |
351 | <p><?php echo CHECKOUT_BAR_CONFIRMATION; ?></p> | |
352 | </div> | |
353 | </div> | |
354 | </div> | |
355 | </div> | |
356 | ||
357 | </div> | |
358 | ||
359 | </form> | |
360 | ||
361 | <?php | |
362 | require(DIR_WS_INCLUDES . 'template_bottom.php'); | |
363 | require(DIR_WS_INCLUDES . 'application_bottom.php'); | |
364 | - | ?> |
364 | + | |
365 | ||
366 | <script> | |
367 | $('.table-options tr').click(function() { | |
368 | $('.table-options tr').removeClass('success').find('input').prop('checked', false); | |
369 | $(this).addClass('success').find('input').prop('checked', true); | |
370 | }); | |
371 | </script> |