PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.6.6
VikBooking Hotel Booking Engine & PMS v1.6.6
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.6.6, at site/views/search/tmpl/default.php

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