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 / search / tmpl / default.php

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

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