PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.8.8
VikBooking Hotel Booking Engine & PMS v1.8.8
1.8.16 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 All 37 releases
vikbooking / site / views / search / tmpl / default.php

default.php in VikBooking Hotel Booking Engine & PMS 1.8.8, at site/views/search/tmpl/default.php

432 lines 16.0 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 /**
14 * Include the VBOCore JS class.
15 */
16 VikBooking::getVboApplication()->loadCoreJS();
17
18 $vbdateformat = VikBooking::getDateFormat();
19 if ($vbdateformat == "%d/%m/%Y") {
20 $df = 'd/m/Y';
21 } elseif ($vbdateformat == "%m/%d/%Y") {
22 $df = 'm/d/Y';
23 } else {
24 $df = 'Y/m/d';
25 }
26 $datesep = VikBooking::getDateSeparator();
27
28 //load jQuery lib e jQuery UI
29 $document = JFactory::getDocument();
30 if (VikBooking::loadJquery()) {
31 //JHtml::fetch('jquery.framework', true, true);
32 JHtml::fetch('script', VBO_SITE_URI.'resources/jquery-1.12.4.min.js');
33 }
34 $document->addStyleSheet(VBO_SITE_URI.'resources/jquery-ui.min.css');
35 $document->addStyleSheet(VBO_SITE_URI.'resources/jquery.fancybox.css');
36 JHtml::fetch('script', VBO_SITE_URI.'resources/jquery-ui.min.js');
37 JHtml::fetch('script', VBO_SITE_URI.'resources/jquery.fancybox.js');
38 $document->addStyleSheet(VBO_SITE_URI . 'resources/vik-dots-slider.css');
39 JHtml::fetch('script', VBO_SITE_URI . 'resources/vik-dots-slider.js');
40 //
41
42 // category_id must be a STRING, not an INT, for Shortcode compatibility (forced category in View params)
43 $pcategory_id = VikRequest::getString('category_id', '', 'request');
44 // single category filter
45 $pcategories = VikRequest::getString('categories', '', 'request');
46 // multiple category filters
47 $pcategory_ids = VikRequest::getVar('category_ids', array());
48 // current menu item ID or page
49 $pitemid = VikRequest::getInt('Itemid', 0, 'request');
50
51 $totadults = 0;
52 $totchildren = 0;
53
54 foreach ($this->arrpeople as $aduchild) {
55 $totadults += $aduchild['adults'];
56 $totchildren += $aduchild['children'];
57 }
58
59 // change dates URI
60 $use_category_filter = !$pcategory_id && $pcategories ? $pcategories : $pcategory_id;
61 $change_dates_uri = JRoute::rewrite('index.php?option=com_vikbooking&view=vikbooking&checkin='.$this->checkin.'&checkout='.$this->checkout.'&category_id='.$use_category_filter.(!empty($pitemid) ? '&Itemid='.$pitemid : ''));
62
63 ?>
64 <script type="text/javascript">
65 var vbdialog_on = false;
66
67 /**
68 * Other template files can turn off the display of the modal/dialog for multiple rooms booking.
69 *
70 * @var bool
71 *
72 * @since 1.14 (J) - 1.4.0 (WP)
73 */
74 var vbo_multirooms_dialog = true;
75
76 jQuery(function() {
77 jQuery(".vbmodalframe").fancybox({
78 "helpers": {
79 "overlay": {
80 "locked": false
81 }
82 },
83 "width": "45%",
84 "height": "80%",
85 "autoScale": true,
86 "transitionIn": "none",
87 "transitionOut": "none",
88 "padding": 0,
89 "fitToView" : false,
90 "autoSize" : false,
91 "type": "iframe"
92 });
93 jQuery(document).mouseup(function(e) {
94 if (!vbdialog_on) {
95 return;
96 }
97 var vbdialog_cont = jQuery(".vbdialog-inner");
98 if (!vbdialog_cont.is(e.target) && vbdialog_cont.has(e.target).length === 0) {
99 vbDialogClose();
100 }
101 });
102 });
103 <?php
104 if (count($this->js_overcounter) > 0) {
105 echo 'var r_counter = '.json_encode($this->js_overcounter).";\n";
106 } else {
107 echo 'var r_counter = {};'."\n";
108 }
109 ?>
110 var vboRoomParty = {};
111 <?php
112 $arr_nr = [];
113 $disp_rooms = [];
114 for ($ir = 1; $ir <= $this->roomsnum; $ir++) {
115 $arr_nr[$ir] = '';
116 $nowrooms = [];
117 foreach ($this->res[$ir] as $room) {
118 $nowrooms[] = (string) $room[0]['idroom'];
119 $disp_rooms[$ir][] = (int)$room[0]['idroom'];
120 }
121 ?>
122 vboRoomParty[<?php echo $ir; ?>] = <?php echo json_encode($nowrooms); ?>;
123 <?php
124 }
125 echo 'var sel_rooms = '.json_encode($arr_nr).";\n";
126 echo 'var disp_rooms = '.json_encode($disp_rooms).";\n";
127 ?>
128 function vbDialogClose() {
129 jQuery("#vbdialog-overlay").fadeOut();
130 vbdialog_on = false;
131 }
132 function vbDialog(totr, selr, roomnum, idroom) {
133 var roomimg = jQuery("#vbroomimg"+roomnum+"_"+idroom).attr("src");
134 var roomname = jQuery("#vbroomname"+roomnum+"_"+idroom).text();
135 jQuery("#vbdialogrimage").attr("src", roomimg);
136 jQuery("#vbdialogrname").text(roomname);
137 if (totr == selr) {
138 jQuery("#vbdialog-confirm").attr("onclick", "Javasript: vbDialogClose();document.getElementById('vbselectroomform').submit();");
139 } else {
140 var nextr = selr + 1;
141 jQuery("#vbdialog-confirm").attr("onclick", "Javasript: vbDialogClose();jQuery('html,body').animate({ scrollTop: (jQuery('#vbpositionroom"+nextr+"').offset().top - 5) }, { duration: 'slow' });");
142 }
143 jQuery("#vbdialog-overlay").fadeIn();
144 vbdialog_on = true;
145 }
146 function vbhasClass(ele, cls) {
147 if (ele == null) {
148 return false;
149 } else {
150 return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
151 }
152 }
153 function vbaddClass(ele, cls) {
154 if (!this.vbhasClass(ele,cls)) ele.className += " "+cls;
155 }
156 function vbremoveClass(ele, cls) {
157 if (vbhasClass(ele,cls)) {
158 var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
159 ele.className=ele.className.replace(reg,' ').replace(/\s+/g,' ').replace(/^\s|\s$/,'');
160 }
161 }
162 function vbinArray(needle, haystack) {
163 var arrpos;
164 if (typeof jQuery != 'undefined') {
165 arrpos = jQuery.inArray(needle, haystack);
166 } else {
167 arrpos = haystack.indexOf(needle);
168 }
169 return arrpos >= 0 ? true : false;
170 }
171 function vbSelectRoom(roomnum, idroom) {
172 var totrooms = <?php echo $this->roomsnum; ?>;
173 if (r_counter.hasOwnProperty(idroom) && totrooms > 1) {
174 if (r_counter[idroom]['used'] >= r_counter[idroom]['unitsavail']) {
175 alert('<?php echo addslashes(JText::translate('VBERRJSNOUNITS')); ?>');
176 return false;
177 } else {
178 if ((r_counter[idroom]['used'] + 1) >= r_counter[idroom]['unitsavail']) {
179 var excess = r_counter[idroom]['count'] - r_counter[idroom]['unitsavail'];
180 var unselected = new Array();
181 for (var x = totrooms; x >= 1; x--) {
182 if (sel_rooms[x].length == 0) {
183 unselected.push(x);
184 }
185 }
186 for (var x = totrooms; x >= 1 && excess > 0; x--) {
187 if (unselected.length == 1 && vbinArray(parseInt(roomnum), unselected) && ((r_counter[idroom]['used'] + 1) == r_counter[idroom]['unitsavail'])) {
188 break;
189 }
190 if (x != roomnum && vbinArray(parseInt(idroom), disp_rooms[x]) && (vbhasClass(document.getElementById('vbcontainer'+x+'_'+idroom), 'room_selected') || document.getElementById('roomopt'+x).value.length == 0)) {
191 if (typeof jQuery != 'undefined') {
192 jQuery('#vbcontainer'+x+'_'+idroom).fadeOut();
193 } else {
194 document.getElementById('vbcontainer'+x+'_'+idroom).style.display = 'none';
195 }
196 document.getElementById('roomopt'+x).value = '';
197 vbremoveClass(document.getElementById('vbcontainer'+x+'_'+idroom), 'room_selected');
198 excess--;
199 }
200 }
201 }
202 if (sel_rooms[roomnum] != idroom && (sel_rooms[roomnum].length > 0 || sel_rooms[roomnum] > 0) && r_counter[sel_rooms[roomnum]]['used'] > 0) {
203 for (var x = 1; x <= totrooms; x++) {
204 if (x == roomnum || r_counter[sel_rooms[roomnum]]['used'] < r_counter[sel_rooms[roomnum]]['unitsavail']) {
205 continue;
206 }
207 if (typeof jQuery != 'undefined') {
208 jQuery('#vbcontainer'+x+'_'+sel_rooms[roomnum]).fadeIn();
209 } else {
210 document.getElementById('vbcontainer'+x+'_'+sel_rooms[roomnum]).style.display = 'block';
211 }
212 }
213 r_counter[sel_rooms[roomnum]]['used']--;
214 }
215 if (sel_rooms[roomnum] != idroom) {
216 r_counter[idroom]['used']++;
217 }
218 sel_rooms[roomnum] = idroom;
219 }
220 }
221 vbaddClass(document.getElementById('vbcontainer'+roomnum+'_'+idroom), 'room_selected');
222 document.getElementById('vbselector'+roomnum+'_'+idroom).innerHTML = '<?php echo addslashes(JText::translate('VBSELECTEDR')); ?>';
223 for (val in vboRoomParty[roomnum]) {
224 if (vboRoomParty[roomnum][val] != idroom) {
225 if (vbhasClass(document.getElementById('vbcontainer'+roomnum+'_'+vboRoomParty[roomnum][val]), 'room_selected')) {
226 vbremoveClass(document.getElementById('vbcontainer'+roomnum+'_'+vboRoomParty[roomnum][val]), 'room_selected');
227 document.getElementById('vbselector'+roomnum+'_'+vboRoomParty[roomnum][val]).innerHTML = '<?php echo addslashes(JText::translate('VBSELECTR')); ?>';
228 }
229 }
230 }
231 document.getElementById('roomopt'+roomnum).value = idroom;
232 var selectedrooms = 0;
233 for (var x = 1; x <= totrooms; x++) {
234 var roomsel = document.getElementById('roomopt'+x).value;
235 if (roomsel.length > 0) {
236 selectedrooms++;
237 }
238 }
239 if (totrooms == selectedrooms) {
240 document.getElementById('vbsearchmainsbmt').style.display = 'block';
241 }
242 if (!(totrooms >= 2)) {
243 //print the dialog message for at least two rooms booked
244 document.getElementById('vbselectroomform').submit();
245 return true;
246 }
247 if (vbo_multirooms_dialog && typeof jQuery != 'undefined') {
248 vbDialog(totrooms, selectedrooms, roomnum, idroom);
249 }
250 }
251 </script>
252
253 <div id="vbdialog-overlay" style="display: none;">
254 <a class="vbdialog-overlay-close" href="javascript: void(0);"></a>
255 <div class="vbdialog-inner">
256 <div class="vbdialog-left">
257 <div class="vbdialogrimage"><img id="vbdialogrimage" src=""/></div>
258 </div>
259 <div class="vbdialog-right">
260 <div class="vbdialog-right-top">
261 <span class="vbdialog-intro"><?php echo JText::translate('VBDIALOGMESSONE'); ?></span>
262 <h3 id="vbdialogrname" class="vbdialogrname"></h3>
263 </div>
264 <div class="vbdialog-right-bottom">
265 <button type="button" class="btn vbo-pref-color-btn-secondary" id="vbdialog-cancel" onclick="Javascript: vbDialogClose();"><?php echo JText::translate('VBDIALOGBTNCANCEL'); ?></button>
266 <button type="button" class="btn vbo-pref-color-btn" id="vbdialog-confirm" onclick="Javascript: void(0);"><?php echo JText::translate('VBDIALOGBTNCONTINUE'); ?></button>
267 </div>
268 </div>
269 </div>
270 </div>
271
272 <?php
273 if (count($this->mod_booking)) {
274 //booking modification
275 ?>
276 <div class="vbo-booking-modification-helper">
277 <div class="vbo-booking-modification-helper-inner">
278 <div class="vbo-booking-modification-msg">
279 <span><?php echo JText::translate('VBOMODBOOKHELPROOMS'); ?></span>
280 </div>
281 <div class="vbo-booking-modification-canc">
282 <a href="<?php echo JRoute::rewrite('index.php?option=com_vikbooking&task=cancelmodification&sid='.$this->mod_booking['sid'].'&id='.$this->mod_booking['id'].(!empty($pitemid) ? '&Itemid='.$pitemid : '')); ?>">
283 <?php VikBookingIcons::e('times-circle'); ?>
284 <?php echo JText::translate('VBOMODBOOKCANCMOD'); ?>
285 </a>
286 </div>
287 </div>
288 </div>
289 <?php
290 }
291 ?>
292
293 <div class="vbstepsbarcont">
294 <ol class="vbo-stepbar" data-vbosteps="4">
295 <li class="vbo-step vbo-step-complete"><a href="<?php echo $change_dates_uri; ?>"><?php echo JText::translate('VBSTEPDATES'); ?></a></li>
296 <li class="vbo-step vbo-step-current"><span><?php echo JText::translate('VBSTEPROOMSELECTION'); ?></span></li>
297 <li class="vbo-step vbo-step-next"><span><?php echo JText::translate('VBSTEPOPTIONS'); ?></span></li>
298 <li class="vbo-step vbo-step-next"><span><?php echo JText::translate('VBSTEPCONFIRM'); ?></span></li>
299 </ol>
300 </div>
301
302 <div class="vbo-results-wrapper">
303 <div class="vbo-results-head">
304 <div class="vbo-results-checkin">
305 <?php VikBookingIcons::e('sign-in', 'vbo-pref-color-text'); ?>
306 <div class="vbo-results-head-det">
307 <span class="vbo-results-head-det-lbl"><?php echo JText::translate('VBPICKUP'); ?></span>
308 <span class="vbo-results-head-det-val"><?php echo date(str_replace("/", $datesep, $df), $this->checkin); ?></span>
309 </div>
310 </div>
311 <div class="vbo-results-nights">
312 <?php VikBookingIcons::e('calendar', 'vbo-pref-color-text'); ?>
313 <div class="vbo-results-head-det">
314 <span class="vbo-results-head-det-lbl"><?php echo ($this->days == 1 ? JText::translate('VBSEARCHRESNIGHT') : JText::translate('VBSEARCHRESNIGHTS')); ?></span>
315 <span class="vbo-results-head-det-val"><?php echo $this->days; ?></span>
316 </div>
317 </div>
318 <?php
319 if ($this->roomsnum > 1) {
320 ?>
321 <div class="vbo-results-numrooms">
322 <?php VikBookingIcons::e('bed', 'vbo-pref-color-text'); ?>
323 <div class="vbo-results-head-det">
324 <span class="vbo-results-head-det-lbl"><?php echo $this->roomsnum == 1 ? JText::translate('VBSEARCHRESROOM') : JText::translate('VBSEARCHRESROOMS'); ?></span>
325 <span class="vbo-results-head-det-val"><?php echo $this->roomsnum; ?></span>
326 </div>
327 </div>
328 <?php
329 }
330 ?>
331 <div class="vbo-results-numadults">
332 <?php VikBookingIcons::e('male', 'vbo-pref-color-text'); ?>
333 <div class="vbo-results-head-det">
334 <span class="vbo-results-head-det-lbl"><?php echo ($totadults == 1 ? JText::translate('VBSEARCHRESADULT') : JText::translate('VBSEARCHRESADULTS')); ?></span>
335 <span class="vbo-results-head-det-val"><?php echo $totadults; ?></span>
336 </div>
337 </div>
338 <?php
339 if ($this->showchildren && $totchildren > 0) {
340 ?>
341 <div class="vbo-results-numchildren">
342 <?php VikBookingIcons::e('child', 'vbo-pref-color-text'); ?>
343 <div class="vbo-results-head-det">
344 <span class="vbo-results-head-det-lbl"><?php echo $totchildren == 1 ? JText::translate('VBSEARCHRESCHILD') : JText::translate('VBSEARCHRESCHILDREN'); ?></span>
345 <span class="vbo-results-head-det-val"><?php echo $totchildren; ?></span>
346 </div>
347 </div>
348 <?php
349 }
350 ?>
351 <div class="vbo-results-chdates">
352 <div class="vbo-results-head-det">
353 <span class="vbo-results-head-det-val">
354 <a href="<?php echo $change_dates_uri; ?>" class="vbo-pref-color-btn-secondary"><?php echo JText::translate('VBCHANGEDATES'); ?></a>
355 </span>
356 </div>
357 </div>
358 </div>
359 <div class="vbo-results-body">
360 <?php
361 $search_tpl = VikBooking::searchResultsTmpl();
362 if ($this->roomsnum < 2) {
363 /**
364 * By default, we load the classic template file when just one room-party was requested,
365 * or when the classic template file was chosen from the configuration settings.
366 * To always load the compact template file, just override this file default.php to call
367 * echo $this->loadTemplate($search_tpl);
368 * all the times, no matter of how many rooms were requested.
369 */
370 echo $this->loadTemplate('classic');
371 } else {
372 echo $this->loadTemplate($search_tpl);
373 }
374 ?>
375 </div>
376 </div>
377
378 <?php
379 /**
380 * @wponly if the Itemid is missing, maybe because of a redirect, then using JRoute::rewrite('index.php?option=com_vikbooking')
381 * generated an empty URL (the home page), by losing the navigation and by rendering an invalid page.
382 * So we need to use JRoute::rewrite('index.php?option=com_vikbooking&view=vikbooking') like the link above.
383 */
384 ?>
385 <form action="<?php echo JRoute::rewrite('index.php?option=com_vikbooking&view=vikbooking'.(!empty($pcategory_id) ? '&category_id=' . $pcategory_id : '').(!empty($pitemid) ? '&Itemid='.$pitemid : '')); ?>" method="post" id="vbselectroomform">
386 <input type="hidden" name="option" value="com_vikbooking"/>
387 <input type="hidden" name="task" value="showprc"/>
388 <input type="hidden" id="roomsnum" name="roomsnum" value="<?php echo $this->roomsnum; ?>"/>
389 <?php
390 for ($ir = 1; $ir <= $this->roomsnum; $ir++) {
391 ?>
392 <input type="hidden" id="roomopt<?php echo $ir; ?>" name="roomopt[]" value=""/>
393 <?php
394 }
395 foreach ($this->arrpeople as $indroom => $aduch) {
396 ?>
397 <input type="hidden" name="adults[]" value="<?php echo $aduch['adults']; ?>"/>
398 <?php
399 if ($this->showchildren) {
400 ?>
401 <input type="hidden" name="children[]" value="<?php echo $aduch['children']; ?>"/>
402 <?php
403 }
404 }
405 ?>
406 <input type="hidden" name="days" value="<?php echo $this->days; ?>"/>
407 <input type="hidden" name="checkin" value="<?php echo $this->checkin; ?>"/>
408 <input type="hidden" name="checkout" value="<?php echo $this->checkout; ?>"/>
409 <input type="hidden" name="category_id" value="<?php echo $pcategory_id; ?>"/>
410 <input type="hidden" name="categories" value="<?php echo $pcategories; ?>"/>
411 <?php
412 if (is_array($pcategory_ids) && count($pcategory_ids)) {
413 foreach ($pcategory_ids as $pcid) {
414 ?>
415 <input type="hidden" name="category_ids[]" value="<?php echo $pcid; ?>"/>
416 <?php
417 }
418 }
419 if (!empty ($pitemid)) {
420 ?>
421 <input type="hidden" name="Itemid" value="<?php echo $pitemid; ?>"/>
422 <?php
423 }
424 ?>
425 <div class="goback">
426 <a class="vbo-goback-link vbo-pref-color-btn-secondary" href="<?php echo $change_dates_uri; ?>"><?php echo JText::translate('VBCHANGEDATES'); ?></a>
427 </div>
428 <div id="vbsearchmainsbmt" class="vbsearchmainsbmt" style="display: none;">
429 <input type="submit" name="continue" value="<?php echo JText::translate('VBSEARCHCONTINUESUBM'); ?>" class="btn vbsubmit vbo-pref-color-btn"/>
430 </div>
431 </form>
432