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

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