PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.15
VikBooking Hotel Booking Engine & PMS v1.8.15
1.8.15 1.8.14 1.8.13 1.8.12 1.8.11 1.8.10 1.8.9 1.8.6 1.8.7 1.8.8 trunk 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.6.9 1.7.0 1.7.1 1.7.2 1.7.3 All 36 releases
vikbooking / site / views / booking / tmpl / default_upgrade.php

default_upgrade.php in VikBooking Hotel Booking Engine & PMS 1.8.15, at site/views/booking/tmpl/default_upgrade.php

316 lines 11.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * @package VikBooking
4 * @subpackage com_vikbooking
5 * @author Alessio Gaggii - e4j - Extensionsforjoomla.com
6 * @copyright Copyright (C) 2018 e4j - Extensionsforjoomla.com. All rights reserved.
7 * @license GNU General Public License version 2 or later; see LICENSE
8 * @link https://vikwp.com
9 */
10
11 defined('ABSPATH') or die('No script kiddies please!');
12
13 $document = JFactory::getDocument();
14
15 $currencysymb = VikBooking::getCurrencySymb();
16 $pitemid = VikRequest::getInt('Itemid', 0, 'request');
17 $room_upgrade_trigger = VikRequest::getInt('room_upgrade', 0, 'request');
18
19 $upgrade_options = VBORoomHelper::getInstance([
20 'booking' => $this->ord,
21 'rooms' => $this->orderrooms,
22 ], true)->getUpgradeOptions($this->vbo_tn);
23
24 if ($upgrade_options) {
25 // load JS lang strings
26 JText::script('VBO_UPGRADE_ROOMS');
27 JText::script('VBO_DOUPGRADE_CONFIRM');
28 JText::script('VBOREVIEWGENERROR');
29
30 // find the first and last booking-room index suited for upgrade
31 $first_oroom_index = 0;
32 foreach ($upgrade_options['upgrade'] as $upgk => $upgv) {
33 $first_oroom_index = $upgk;
34 break;
35 }
36 $last_oroom_index = max(array_keys($upgrade_options['upgrade']));
37
38 ?>
39 <div class="vbo-booking-mod-container">
40 <div class="vbo-booking-mod-inner">
41 <div class="vbo-booking-mod-cmd vbo-booking-roomupgrade-cmd">
42 <a href="JavaScript: void(0);" onclick="vboDisplayUpgradeOptions();"><?php VikBookingIcons::e('gem'); ?> <?php echo JText::translate('VBO_UPGRADE_ROOMS'); ?></a>
43 </div>
44 </div>
45 </div>
46
47 <div id="vbo-hidden-roomupgrade-target" style="display: none;">
48 <div class="vbo-roomupgrade-wrapper">
49 <?php
50 foreach ($upgrade_options['upgrade'] as $upgk => $upg_data) {
51 ?>
52 <div class="vbo-roomupgrade-booked-room" data-upgindex="<?php echo $upgk; ?>" style="<?php echo $upgk != $first_oroom_index ? 'display: none;' : ''; ?>">
53 <div class="vbo-roomupgrade-booked-room-inner">
54 <div class="vbo-roomupgrade-current-wrap">
55 <div class="vbo-roomupgrade-current-cont">
56 <div class="vbo-roomupgrade-current-info">
57 <?php
58 if (!empty($this->orderrooms[$upgk]['img'])) {
59 ?>
60 <img src="<?php echo VBO_SITE_URI; ?>resources/uploads/<?php echo $this->orderrooms[$upgk]['img']; ?>"/>
61 <?php
62 }
63 ?>
64 <div class="vbo-roomupgrade-current-name"><?php echo $this->orderrooms[$upgk]['name']; ?></div>
65 </div>
66 <div class="vbo-roomupgrade-current-pricing">
67 <div class="vbo-roomupgrade-current-pricing-stay">
68 <div class="vbo-roomupgrade-current-pricing-det vbo-roomupgrade-current-pricing-nights"><?php VikBookingIcons::e('moon', 'vbo-pref-color-text'); ?> <?php echo $this->ord['days']; ?></div>
69 <div class="vbo-roomupgrade-current-pricing-det vbo-roomupgrade-current-pricing-adults"><?php VikBookingIcons::e('male', 'vbo-pref-color-text'); ?> <?php echo $this->orderrooms[$upgk]['adults']; ?></div>
70 <?php
71 if ($this->orderrooms[$upgk]['children'] > 0) {
72 ?>
73 <div class="vbo-roomupgrade-current-pricing-det vbo-roomupgrade-current-pricing-children"><?php VikBookingIcons::e('child', 'vbo-pref-color-text'); ?> <?php echo $this->orderrooms[$upgk]['children']; ?></div>
74 <?php
75 }
76 ?>
77 </div>
78 <?php
79 // current room cost
80 $room_cost = $this->orderrooms[$upgk]['cust_cost'] > 0 ? (float)$this->orderrooms[$upgk]['cust_cost'] : (float)$this->orderrooms[$upgk]['room_cost'];
81 ?>
82 <div class="vbo-roomupgrade-current-pricing-det vbo-roomupgrade-current-pricing-cost">
83 <?php echo VikBooking::formatCurrencyNumber(VikBooking::numberFormat($room_cost), $currencysymb, ['<span class="vbo_currency vbo_keepcost">%s</span>', '<span class="vbo_price vbo_keepcost">%s</span>']); ?>
84 </div>
85 </div>
86 </div>
87 <div class="vbo-roomupgrade-current-keep">
88 <button type="button" class="btn vbo-pref-color-btn-secondary" onclick="vboUpgradeNavigate();"><?php echo JText::translate('VBO_KEEP_ROOM'); ?></button>
89 </div>
90 </div>
91 <div class="vbo-roomupgrade-solutions-wrap">
92 <?php
93 foreach ($upg_data['r_costs'] as $rid => $upgrade_sol) {
94 ?>
95 <div class="vbo-roomupgrade-solution-cont">
96 <div class="vbo-roomupgrade-solution-data">
97 <div class="vbo-roomupgrade-solution-info">
98 <div class="vbo-roomupgrade-solution-info-main">
99 <?php
100 if (!empty($upgrade_options['rooms'][$rid]['img'])) {
101 ?>
102 <img src="<?php echo VBO_SITE_URI; ?>resources/uploads/<?php echo $upgrade_options['rooms'][$rid]['img']; ?>"/>
103 <?php
104 }
105 ?>
106 <div class="vbo-roomupgrade-solution-name">
107 <a href="<?php echo JRoute::rewrite('index.php?option=com_vikbooking&view=roomdetails&roomid=' . $rid . (!empty($pitemid) ? '&Itemid='.$pitemid : '')); ?>" target="_blank"><?php echo $upgrade_options['rooms'][$rid]['name']; ?></a>
108 </div>
109 </div>
110 <?php
111 if (!empty($upgrade_options['rooms'][$rid]['smalldesc'])) {
112 ?>
113 <div class="vbo-roomupgrade-solution-descr"><?php echo $upgrade_options['rooms'][$rid]['smalldesc']; ?></div>
114 <?php
115 }
116 ?>
117 </div>
118 <?php
119 if ($room_cost < $upgrade_sol['upgrade_cost']) {
120 ?>
121 <div class="vbo-roomupgrade-solution-pricing">
122 <div class="vbo-roomupgrade-solution-upgrade-cost">
123 <?php echo VikBooking::formatCurrencyNumber(VikBooking::numberFormat($upgrade_sol['upgrade_cost']), $currencysymb, ['<span class="vbo_currency vbo_keepcost">%s</span>', '<span class="vbo_price vbo_keepcost">%s</span>']); ?>
124 </div>
125 <?php
126 if (isset($upg_data['discount']) && $upg_data['discount'] > 0) {
127 ?>
128 <div class="vbo-roomupgrade-solution-upgrade-saveamount">
129 <?php echo VikBooking::formatCurrencyNumber(VikBooking::numberFormat($upgrade_sol['cost']), $currencysymb, ['<span class="vbo_currency vbo_keepcost">%s</span>', '<del class="vbo_price vbo_keepcost">%s</del>']); ?>
130 </div>
131 <div class="vbo-roomupgrade-solution-upgrade-savepcent">
132 <span><?php echo JText::sprintf('VBO_YOU_SAVE_PCENT', $upg_data['discount'] . '%'); ?></span>
133 </div>
134 <?php
135 }
136 ?>
137 </div>
138 <?php
139 }
140 ?>
141 </div>
142 <div class="vbo-roomupgrade-solution-confirm">
143 <button type="button" class="btn vbo-pref-color-btn" onclick="vboDoUpgrade('<?php echo $rid; ?>');"><?php echo JText::translate('VBO_UPGRADE_CONFIRM'); ?></button>
144 </div>
145 </div>
146 <?php
147 }
148 ?>
149 </div>
150 </div>
151 </div>
152 <?php
153 }
154 ?>
155 <?php
156 // echo 'Debug<pre>' . print_r($upgrade_options, true) . '</pre>';
157 ?>
158 </div>
159 </div>
160
161 <?php
162 // modal loading body
163 $loading_body = '<i class="' . VikBookingIcons::i('circle-notch', 'fa-spin fa-fw') . '"></i>';
164
165 // total rooms supporting an upgrade
166 $tot_upgrades = count($upgrade_options['upgrade']);
167
168 // AJAX upgrade URL
169 $ajax_upgrade_url = VikBooking::ajaxUrl(JRoute::rewrite('index.php?option=com_vikbooking&task=upgrade_room' . (!empty($pitemid) ? '&Itemid='.$pitemid : ''), false));
170
171 $document->addScriptDeclaration(
172 <<<JS
173 var vbo_oroom_index = $first_oroom_index;
174 var vbo_upgrade_reload = false;
175
176 function vboDisplayUpgradeOptions() {
177 // number of upgrade steps
178 var vbo_tot_upgrade_steps = $tot_upgrades;
179 var vbo_upgrade_steps_count = '';
180 if (vbo_tot_upgrade_steps > 1) {
181 vbo_upgrade_steps_count = jQuery('<span></span>').addClass('vbo-modal-upgrade-step-counter').html(' (<span class="vbo-modal-upgrade-step-current">1</span>/$tot_upgrades)');
182 }
183
184 // display modal
185 var upgrade_modal_body = VBOCore.displayModal({
186 suffix: 'roomupgrade',
187 title: jQuery('<span></span>').text(Joomla.JText._('VBO_UPGRADE_ROOMS')).append(vbo_upgrade_steps_count),
188 body: '',
189 dismiss_event: 'vbo-dismiss-modal-roomupgrade',
190 onDismiss: () => {
191 vboDismissUpgradeOptions();
192 },
193 loading_event: 'vbo-loading-modal-roomupgrade',
194 loading_body: '$loading_body',
195 });
196
197 // move content to modal body
198 jQuery('.vbo-roomupgrade-wrapper').appendTo(upgrade_modal_body);
199 }
200
201 function vboHideUpgradeOptions() {
202 // hide and dismiss modal
203 VBOCore.emitEvent('vbo-dismiss-modal-roomupgrade');
204 }
205
206 function vboDismissUpgradeOptions() {
207 // move modal content (modal wrapper already dismissed)
208 jQuery('.vbo-roomupgrade-wrapper').appendTo(jQuery('#vbo-hidden-roomupgrade-target'));
209
210 // reset index and display status
211 vbo_oroom_index = $first_oroom_index;
212 jQuery('.vbo-roomupgrade-booked-room').hide();
213 jQuery('.vbo-roomupgrade-booked-room[data-upgindex="' + vbo_oroom_index + '"]').show();
214
215 // check for page refresh flag
216 if (vbo_upgrade_reload) {
217 document.location.href = jQuery('.vbo-current-booking-uri').first().attr('href');
218 }
219
220 return;
221 }
222
223 function vboUpgradeNavigate() {
224 if ($tot_upgrades < 2) {
225 // just one room supporting the upgrade
226 return vboHideUpgradeOptions();
227 }
228
229 // find the next upgrade index, if any
230 for (let find_index = ++vbo_oroom_index; find_index <= $last_oroom_index; find_index++) {
231 if (jQuery('.vbo-roomupgrade-booked-room[data-upgindex="' + find_index + '"]').length) {
232 vbo_oroom_index = find_index;
233 break;
234 }
235 }
236 if (!jQuery('.vbo-roomupgrade-booked-room[data-upgindex="' + vbo_oroom_index + '"]').length) {
237 // next upgrade not found
238 return vboHideUpgradeOptions();
239 }
240
241 // display next slide
242 jQuery('.vbo-roomupgrade-booked-room').hide();
243 jQuery('.vbo-roomupgrade-booked-room[data-upgindex="' + vbo_oroom_index + '"]').fadeIn();
244
245 // increase slide counter
246 var current_step_index = jQuery('.vbo-roomupgrade-booked-room').index(jQuery('.vbo-roomupgrade-booked-room[data-upgindex="' + vbo_oroom_index + '"]'));
247 jQuery('.vbo-modal-upgrade-step-current').text(++current_step_index);
248 }
249
250 function vboDoUpgrade(rid) {
251 if (!confirm(Joomla.JText._('VBO_DOUPGRADE_CONFIRM')) || !rid) {
252 return false;
253 }
254
255 // show loading
256 VBOCore.emitEvent('vbo-loading-modal-roomupgrade');
257
258 // perform the request
259 VBOCore.doAjax(
260 "$ajax_upgrade_url",
261 {
262 bid: '{$this->ord['id']}',
263 sid: '{$this->ord['sid']}',
264 ts: '{$this->ord['ts']}',
265 room_index: vbo_oroom_index,
266 room_id: rid,
267 tmpl: "component"
268 },
269 (response) => {
270 // hide loading
271 VBOCore.emitEvent('vbo-loading-modal-roomupgrade');
272 try {
273 // make sure the response was successful
274 var obj_res = typeof response === 'string' ? JSON.parse(response) : response;
275 if (!obj_res || !obj_res.hasOwnProperty('success') || !obj_res['success']) {
276 alert(obj_res.hasOwnProperty('error') ? obj_res['error'] : Joomla.JText._('VBOREVIEWGENERROR'));
277 return false;
278 }
279
280 // turn flag on for reloading the booking when the modal gets dismissed
281 vbo_upgrade_reload = true;
282
283 // navigate to next room, or close the modal if none
284 return vboUpgradeNavigate();
285 } catch(err) {
286 // display an error
287 alert(Joomla.JText._('VBOREVIEWGENERROR'));
288 // log the error
289 console.error('could not parse JSON response', err, response);
290 }
291 },
292 (error) => {
293 // hide loading
294 VBOCore.emitEvent('vbo-loading-modal-roomupgrade');
295 // display the error
296 alert(error.responseText || Joomla.JText._('VBOREVIEWGENERROR'));
297 }
298 );
299 }
300 JS
301 );
302
303 if ($room_upgrade_trigger) {
304 // trigger the opening of the room upgrade modal when page loads
305 ?>
306 <script type="text/javascript">
307 jQuery(function() {
308 setTimeout(() => {
309 vboDisplayUpgradeOptions();
310 }, 500);
311 });
312 </script>
313 <?php
314 }
315 }
316