PluginProbe
VikBooking Hotel Booking Engine & PMS / trunk
VikBooking Hotel Booking Engine & PMS vtrunk
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 / admin / views / config / tmpl / default_one.php

default_one.php in VikBooking Hotel Booking Engine & PMS trunk, at admin/views/config/tmpl/default_one.php

924 lines 46.3 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 JHtml::fetch('jquery.framework', true, true);
14 JHtml::fetch('script', VBO_SITE_URI.'resources/jquery-ui.sortable.min.js');
15
16 $config = VBOFactory::getConfig();
17
18 $vbo_app = VikBooking::getVboApplication();
19 $timeopst = VikBooking::getTimeOpenStore(true);
20 if (is_array($timeopst)) {
21 $openat = VikBooking::getHoursMinutes($timeopst[0]);
22 $closeat = VikBooking::getHoursMinutes($timeopst[1]);
23 } else {
24 $openat = array(0, 0);
25 $closeat = array(0, 0);
26 }
27 $wcheckintime = "<select name=\"timeopenstorefh\">\n";
28 for ($i = 0; $i <= 23; $i++) {
29 if ($i < 10) {
30 $in = "0".$i;
31 } else {
32 $in = $i;
33 }
34 $stat = $openat[0] == $i ? " selected=\"selected\"" : "";
35 $wcheckintime .= "<option value=\"".$i."\"".$stat.">".$in."</option>\n";
36 }
37 $wcheckintime .= "</select> <select name=\"timeopenstorefm\">\n";
38 for ($i = 0; $i <= 59; $i++) {
39 if ($i < 10) {
40 $in = "0".$i;
41 } else {
42 $in = $i;
43 }
44 $stat = $openat[1] == $i ? " selected=\"selected\"" : "";
45 $wcheckintime .= "<option value=\"".$i."\"".$stat.">".$in."</option>\n";
46 }
47 $wcheckintime .= "</select>\n";
48 $wcheckouttime = "<select name=\"timeopenstoreth\">\n";
49 for ($i = 0; $i <= 23; $i++) {
50 if ($i < 10) {
51 $in = "0".$i;
52 } else {
53 $in = $i;
54 }
55 $stat = $closeat[0]==$i ? " selected=\"selected\"" : "";
56 $wcheckouttime .= "<option value=\"".$i."\"".$stat.">".$in."</option>\n";
57 }
58 $wcheckouttime .= "</select> <select name=\"timeopenstoretm\">\n";
59 for ($i = 0; $i <= 59; $i++) {
60 if ($i < 10) {
61 $in = "0".$i;
62 } else {
63 $in = $i;
64 }
65 $stat = $closeat[1] == $i ? " selected=\"selected\"" : "";
66 $wcheckouttime .= "<option value=\"".$i."\"".$stat.">".$in."</option>\n";
67 }
68 $wcheckouttime .= "</select>\n";
69
70 $calendartype = VikBooking::calendarType(true);
71
72 $globnumadults = VikBooking::getSearchNumAdults(true);
73 $adultsparts = explode('-', $globnumadults);
74 $globnumchildren = VikBooking::getSearchNumChildren(true);
75 $childrenparts = explode('-', $globnumchildren);
76
77 $maxdatefuture = VikBooking::getMaxDateFuture();
78 $maxdate_val = intval(substr($maxdatefuture, 1, (strlen($maxdatefuture) - 1)));
79 $maxdate_interval = substr($maxdatefuture, -1, 1);
80
81 $smartseach_type = VikBooking::getSmartSearchType(true);
82
83 $vbosef = is_file(VBO_SITE_PATH . DIRECTORY_SEPARATOR . 'router.php');
84
85 $vcm_autoupd = (int)VikBooking::vcmAutoUpdate();
86 $chat_enabled = (int)VikBooking::chatEnabled();
87 $precheckin_enabled = (int)VikBooking::precheckinEnabled();
88 $upselling_enabled = (int)VikBooking::upsellingEnabled();
89
90 $nowdf = VikBooking::getDateFormat(true);
91 if ($nowdf == "%d/%m/%Y") {
92 $usedf = 'd/m/Y';
93 } elseif ($nowdf == "%m/%d/%Y") {
94 $usedf = 'm/d/Y';
95 } else {
96 $usedf = 'Y/m/d';
97 }
98 $datesep = VikBooking::getDateSeparator(true);
99 ?>
100 <script type="text/javascript">
101
102 function vboRemoveElement(el) {
103 return (elem=document.getElementById(el)).parentNode.removeChild(elem);
104 }
105
106 function vboAddClosingDate() {
107 var cdfrom = document.getElementById('cdfrom').value;
108 var cdto = document.getElementById('cdto').value;
109 if (cdfrom.length && cdto.length) {
110 var cdcounter = document.getElementsByClassName('vbo-closed-date-entry').length + 1;
111 var cdstring = "<div class=\"vbo-closed-date-entry\" id=\"vbo-closed-date-entry"+cdcounter+"\"><span>"+cdfrom+"</span> - <span>"+cdto+"</span> <span class=\"vbo-closed-date-rm\" onclick=\"vboRemoveElement('vbo-closed-date-entry"+cdcounter+"');\"><i class=\"vboicn-cross\"></i> </span><input type=\"hidden\" name=\"cdsfrom[]\" value=\""+cdfrom+"\" /><input type=\"hidden\" name=\"cdsto[]\" value=\""+cdto+"\" /></div>";
112 document.getElementById('vbo-config-closed-dates').innerHTML += cdstring;
113 document.getElementById('cdfrom').value = '';
114 document.getElementById('cdto').value = '';
115 }
116 }
117
118 function vboChangeMultiRoomSearch(type) {
119 if (type == 'classic') {
120 jQuery('.vbo-param-container[data-vbosearchtpl="classic"]').show();
121 } else {
122 jQuery('.vbo-param-container[data-vbosearchtpl="classic"]').hide();
123 }
124 }
125
126 var chatenabled = <?php echo $chat_enabled; ?>;
127 var precheckinenabled = <?php echo $precheckin_enabled; ?>;
128
129 jQuery(function() {
130
131 jQuery('input[name="chatenabled"]').change(function() {
132 if (chatenabled < 0) {
133 jQuery('#chat-params-tr').hide();
134 return;
135 }
136 if (jQuery(this).is(':checked') && parseInt(jQuery(this).val()) > 0) {
137 jQuery('#chat-params-tr').fadeIn();
138 } else {
139 jQuery('#chat-params-tr').fadeOut();
140 }
141 });
142
143 jQuery('input[name="precheckinenabled"]').change(function() {
144 if (precheckinenabled < 0) {
145 jQuery('.precheckin-params-tr').hide();
146 return;
147 }
148 if (jQuery(this).is(':checked') && parseInt(jQuery(this).val()) > 0) {
149 jQuery('.precheckin-params-tr').fadeIn();
150 } else {
151 jQuery('.precheckin-params-tr').fadeOut();
152 }
153 });
154
155 });
156
157 </script>
158
159 <div class="vbo-config-maintab-left">
160 <fieldset class="adminform">
161 <div class="vbo-params-wrap">
162 <legend class="adminlegend"><?php echo JText::translate('VBOCPARAMBOOKING'); ?></legend>
163 <div class="vbo-params-container">
164 <div class="vbo-param-container">
165 <div class="vbo-param-label">
166 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGVCMAUTOUPD'), 'content' => JText::translate('VBCONFIGVCMAUTOUPDHELP'), 'icon_class' => 'vboicn-lifebuoy')); ?>
167 <?php echo JText::translate('VBCONFIGVCMAUTOUPD'); ?>
168 </div>
169 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('vcmautoupd', JText::translate('VBYES'), JText::translate('VBNO'), ($vcm_autoupd < 0 ? 0 : $vcm_autoupd), 1, 0).($vcm_autoupd < 0 ? '<span class="vbo-config-warn">'.JText::translate('VBCONFIGVCMAUTOUPDMISS').'</span>' : ''); ?></div>
170 </div>
171 <div class="vbo-param-container">
172 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONEFIVE'); ?></div>
173 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('allowbooking', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::allowBooking(), 1, 0); ?></div>
174 </div>
175 <div class="vbo-param-container">
176 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONESIX'); ?></div>
177 <div class="vbo-param-setting"><textarea name="disabledbookingmsg" rows="5" cols="50"><?php echo JHtml::fetch('esc_textarea', VikBooking::getDisabledBookingMsg()); ?></textarea></div>
178 </div>
179 <div class="vbo-param-container">
180 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONETENSIX'); ?></div>
181 <div class="vbo-param-setting"><input type="text" name="adminemail" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getAdminMail()); ?>" size="35"/></div>
182 </div>
183 <div class="vbo-param-container">
184 <div class="vbo-param-label"><?php echo JText::translate('VBSENDEREMAIL'); ?></div>
185 <div class="vbo-param-setting"><input type="text" name="senderemail" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getSenderMail()); ?>" size="35"/></div>
186 </div>
187 <div class="vbo-param-container">
188 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONESEVEN'); ?></div>
189 <div class="vbo-param-setting"><?php echo $wcheckintime; ?></div>
190 </div>
191 <div class="vbo-param-container">
192 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONETHREE'); ?></div>
193 <div class="vbo-param-setting"><?php echo $wcheckouttime; ?></div>
194 </div>
195 <div class="vbo-param-container">
196 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONEELEVEN'); ?></div>
197 <div class="vbo-param-setting">
198 <select name="dateformat">
199 <option value="%d/%m/%Y"<?php echo ($nowdf=="%d/%m/%Y" ? " selected=\"selected\"" : ""); ?>><?php echo JText::translate('VBCONFIGONETWELVE'); ?></option>
200 <option value="%m/%d/%Y"<?php echo ($nowdf=="%m/%d/%Y" ? " selected=\"selected\"" : ""); ?>><?php echo JText::translate('VBCONFIGONEMDY'); ?></option>
201 <option value="%Y/%m/%d"<?php echo ($nowdf=="%Y/%m/%d" ? " selected=\"selected\"" : ""); ?>><?php echo JText::translate('VBCONFIGONETENTHREE'); ?></option>
202 </select>
203 </div>
204 </div>
205 <div class="vbo-param-container">
206 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGDATESEP'); ?></div>
207 <div class="vbo-param-setting"><input type="text" name="datesep" value="<?php echo JHtml::fetch('esc_attr', $datesep); ?>" size="3"/></div>
208 </div>
209 <?php
210 $resmodcanc = VikBooking::getReservationModCanc();
211 $resmodcancmin = VikBooking::getReservationModCancMin();
212 ?>
213 <div class="vbo-param-container">
214 <div class="vbo-param-label">
215 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBOCONFIGALLOWMODCANC'), 'content' => JText::translate('VBOCONFIGALLOWMODCANCHELP'))); ?>
216 <?php echo JText::translate('VBOCONFIGALLOWMODCANC'); ?>
217 </div>
218 <div class="vbo-param-setting">
219 <script type="text/javascript">
220 function vboChangeResModCanc(mode) {
221 mode = parseInt(mode);
222 document.getElementById('vbo-resmodcanc-lim').style.display = (mode > 0 ? 'flex' : 'none');
223 }
224 </script>
225 <div class="vbo-resmodcanc-block">
226 <select name="resmodcanc" onchange="vboChangeResModCanc(this.value);">
227 <option value="0"<?php echo $resmodcanc == 0 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGMODCANC0'); ?></option>
228 <option value="1"<?php echo $resmodcanc == 1 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGMODCANC1'); ?></option>
229 <option value="2"<?php echo $resmodcanc == 2 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGMODCANC2'); ?></option>
230 <option value="3"<?php echo $resmodcanc == 3 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGMODCANC3'); ?></option>
231 <option value="4"<?php echo $resmodcanc == 4 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGMODCANC4'); ?></option>
232 </select>
233 </div>
234 </div>
235 </div>
236 <div class="vbo-param-container vbo-resmodcanc-lim vbo-param-nested" id="vbo-resmodcanc-lim" style="display: <?php echo $resmodcanc > 0 ? 'flex' : 'none'; ?>;">
237 <div class="vbo-param-label"><label for="resmodcancmin"><?php echo JText::translate('VBOCONFIGMODCANCMINDAYS'); ?></label></div>
238 <div class="vbo-param-setting"><input type="number" min="0" name="resmodcancmin" id="resmodcancmin" style="margin: 0;" value="<?php echo $resmodcancmin; ?>" /></div>
239 </div>
240 <div class="vbo-param-container">
241 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTODAYBOOKINGS'); ?></div>
242 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('todaybookings', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::todayBookings(), 1, 0); ?></div>
243 </div>
244 <div class="vbo-param-container">
245 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONECOUPONS'); ?></div>
246 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('enablecoupons', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::couponsEnabled(), 1, 0); ?></div>
247 </div>
248 <div class="vbo-param-container">
249 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGENABLECUSTOMERPIN'); ?></div>
250 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('enablepin', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::customersPinEnabled(), 1, 0); ?></div>
251 </div>
252 <div class="vbo-param-container">
253 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONETENFIVE'); ?></div>
254 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('tokenform', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::tokenForm() ? 'yes' : 0), 'yes', 0); ?></div>
255 </div>
256 <div class="vbo-param-container">
257 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGREQUIRELOGIN'); ?></div>
258 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('requirelogin', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::requireLogin(), 1, 0); ?></div>
259 </div>
260 <div class="vbo-param-container">
261 <div class="vbo-param-label"><?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGAUTODISTFEATURE'), 'content' => JText::translate('VBCONFIGAUTODISTFEATUREHELP'))); ?> <?php echo JText::translate('VBCONFIGAUTODISTFEATURE'); ?></div>
262 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('autoroomunit', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::autoRoomUnit() ? 1 : 0), 1, 0); ?></div>
263 </div>
264 <div class="vbo-param-container">
265 <div class="vbo-param-label"><?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGCHATENABLED'), 'content' => JText::translate('VBCONFIGCHATENABLEDHELP'))); ?> <?php echo JText::translate('VBCONFIGCHATENABLED'); ?></div>
266 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('chatenabled', JText::translate('VBYES'), JText::translate('VBNO'), ($chat_enabled < 0 ? 0 : $chat_enabled), 1, 0).($chat_enabled < 0 ? '<span class="vbo-config-warn">'.JText::translate('VBCONFIGVCMAUTOUPDMISS').'</span>' : ''); ?></div>
267 </div>
268 <?php
269 $chat_params = VikBooking::getChatParams();
270 ?>
271 <div class="vbo-param-container vbo-param-nested" id="chat-params-tr" style="display: <?php echo $chat_enabled > 0 ? 'flex' : 'none'; ?>;">
272 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGCHATPARAMS'); ?></div>
273 <div class="vbo-param-setting">
274 <select name="chat_res_status" style="max-width: 345px; margin: 0;">
275 <option value="confirmed;standby;cancelled"<?php echo isset($chat_params->res_status) && count($chat_params->res_status) >= 3 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGCHATRESSTATALL'); ?></option>
276 <option value="confirmed"<?php echo isset($chat_params->res_status) && count($chat_params->res_status) === 1 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGCHATRESSTATCONF'); ?></option>
277 </select>
278 <div style="margin-top: 5px;">
279 <select name="chat_av_type" style="max-width: 345px; margin: 0;">
280 <option value="checkin"<?php echo isset($chat_params->av_type) && $chat_params->av_type == 'checkin' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGCHATAVCHECKIN'); ?></option>
281 <option value="checkout"<?php echo isset($chat_params->av_type) && $chat_params->av_type == 'checkout' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGCHATAVCHECKOUT'); ?></option>
282 </select>
283 <input type="number" name="chat_av_days" value="<?php echo isset($chat_params->av_days) ? (int)$chat_params->av_days : '0'; ?>" style="margin: 0;"/>
284 </div>
285 </div>
286 </div>
287 <div class="vbo-param-container">
288 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGPRECHECKINENABLED'); ?></div>
289 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('precheckinenabled', JText::translate('VBYES'), JText::translate('VBNO'), $precheckin_enabled, 1, 0); ?></div>
290 </div>
291 <div class="vbo-param-container vbo-param-nested precheckin-params-tr" style="display: <?php echo $precheckin_enabled > 0 ? 'flex' : 'none'; ?>;">
292 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGPRECHECKINMIND'); ?></div>
293 <div class="vbo-param-setting"><input type="number" name="precheckinminoffset" value="<?php echo VikBooking::precheckinMinOffset(); ?>" min="-7" max="365" /></div>
294 </div>
295 <div class="vbo-param-container vbo-param-nested precheckin-params-tr" style="display: <?php echo $precheckin_enabled > 0 ? 'flex' : 'none'; ?>;">
296 <div class="vbo-param-label"><?php echo JText::translate('VBO_CONF_CHECKIN_DATA'); ?></div>
297 <div class="vbo-param-setting">
298 <?php
299 $checkin_data = $config->getString('checkindata', 'basic');
300 ?>
301 <select name="checkindata">
302 <option value="basic"<?php echo $checkin_data == 'basic' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBO_CONF_CHECKIN_DATA_BASIC'); ?></option>
303 <?php
304 foreach (VBOCheckinPax::getDrivers() as $checkin_driver) {
305 $cust_driver_obj = VBOCheckinPax::getInstance($checkin_driver);
306 $cust_driver_name = $cust_driver_obj !== null ? $cust_driver_obj->getName() : '???';
307 ?>
308 <option value="<?php echo $checkin_driver; ?>" <?php echo $checkin_data == $checkin_driver ? ' selected="selected"' : ''; ?>><?php echo JText::sprintf('VBO_CONF_CHECKIN_DATA_CUSTOM', $cust_driver_name); ?></option>
309 <?php
310 }
311 ?>
312 </select>
313 </div>
314 </div>
315 <div class="vbo-param-container">
316 <div class="vbo-param-label"><?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGUPSELLINGENABLED'), 'content' => JText::translate('VBCONFIGUPSELLINGENABLEDHELP'))); ?> <?php echo JText::translate('VBCONFIGUPSELLINGENABLED'); ?></div>
317 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('upsellingenabled', JText::translate('VBYES'), JText::translate('VBNO'), $upselling_enabled, 1, 0); ?></div>
318 </div>
319 <?php
320 $orphans_calcm = VikBooking::orphansCalculation();
321 ?>
322 <div class="vbo-param-container">
323 <div class="vbo-param-label"><?php echo $vbo_app->createPopover(array('title' => JText::translate('VBOCONFIGORPHANSCALCM'), 'content' => JText::translate('VBOCONFIGORPHANSCALCMHELP'))); ?> <?php echo JText::translate('VBOCONFIGORPHANSCALCM'); ?></div>
324 <div class="vbo-param-setting">
325 <select name="orphanscal">
326 <option value="next"<?php echo $orphans_calcm == 'next' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGORPHANSCALCMN'); ?></option>
327 <option value="prevnext"<?php echo $orphans_calcm == 'prevnext' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGORPHANSCALCMPN'); ?></option>
328 </select>
329 </div>
330 </div>
331 </div>
332 </div>
333 </fieldset>
334 </div>
335
336 <div class="vbo-config-maintab-right">
337
338 <fieldset class="adminform">
339 <div class="vbo-params-wrap">
340 <legend class="adminlegend"><?php echo JText::translate('VBCONFIGSEARCHPARAMS'); ?></legend>
341 <div class="vbo-params-container">
342 <div class="vbo-param-container">
343 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGMINDAYSADVANCE'); ?></div>
344 <?php
345 /**
346 * Do not ever change the argument "true" from VikBooking::getMinDaysAdvance(true); as it is
347 * now used to detect that the back-end is calling it, and no closing dates should be applied.
348 *
349 * @since 1.14 (J) - 1.4.0 (WP)
350 */
351 ?>
352 <div class="vbo-param-setting"><input type="number" name="mindaysadvance" value="<?php echo VikBooking::getMinDaysAdvance(true); ?>" min="0"/></div>
353 </div>
354 <div class="vbo-param-container">
355 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGSEARCHDEFNIGHTS'); ?></div>
356 <div class="vbo-param-setting"><input type="number" name="autodefcalnights" value="<?php echo VikBooking::getDefaultNightsCalendar(); ?>" min="0"/></div>
357 </div>
358 <div class="vbo-param-container">
359 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGSEARCHPNUMROOM'); ?></div>
360 <div class="vbo-param-setting"><input type="number" name="numrooms" value="<?php echo VikBooking::getSearchNumRooms(true); ?>" min="0"/></div>
361 </div>
362 <div class="vbo-param-container">
363 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGSEARCHPNUMADULTS'); ?></div>
364 <div class="vbo-param-setting"><?php echo JText::translate('VBCONFIGSEARCHPFROM'); ?> <input type="number" name="numadultsfrom" value="<?php echo $adultsparts[0]; ?>" min="0"/> &nbsp;&nbsp; <?php echo JText::translate('VBCONFIGSEARCHPTO'); ?> <input type="number" name="numadultsto" value="<?php echo $adultsparts[1]; ?>" min="0"/></div>
365 </div>
366 <div class="vbo-param-container">
367 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGSEARCHPNUMCHILDREN'); ?></div>
368 <div class="vbo-param-setting"><?php echo JText::translate('VBCONFIGSEARCHPFROM'); ?> <input type="number" name="numchildrenfrom" value="<?php echo $childrenparts[0]; ?>" min="0"/> &nbsp;&nbsp; <?php echo JText::translate('VBCONFIGSEARCHPTO'); ?> <input type="number" name="numchildrento" value="<?php echo $childrenparts[1]; ?>" min="0"/></div>
369 </div>
370 <div class="vbo-param-container">
371 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGSEARCHPMAXDATEFUT'); ?></div>
372 <div class="vbo-param-setting"><input type="number" name="maxdate" value="<?php echo $maxdate_val; ?>" min="0"/> <select name="maxdateinterval"><option value="d"<?php echo $maxdate_interval == 'd' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGSEARCHPMAXDATEDAYS'); ?></option><option value="w"<?php echo $maxdate_interval == 'w' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGSEARCHPMAXDATEWEEKS'); ?></option><option value="m"<?php echo $maxdate_interval == 'm' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGSEARCHPMAXDATEMONTHS'); ?></option><option value="y"<?php echo $maxdate_interval == 'y' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGSEARCHPMAXDATEYEARS'); ?></option></select></div>
373 </div>
374
375 <div class="vbo-param-container">
376 <div class="vbo-param-label">
377 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGCLOSINGDATES'), 'content' => JText::translate('VBCONFIGCLOSINGDATESHELP'))); ?>
378 <?php echo JText::translate('VBCONFIGCLOSINGDATES'); ?>
379 </div>
380 <div class="vbo-param-setting">
381 <div style="width: 100%; display: inline-block;" class="btn-toolbar" id="filter-bar">
382 <div class="btn-group pull-left">
383 <?php echo $vbo_app->getCalendar('', 'cdfrom', 'cdfrom', $nowdf, array('class'=>'', 'size'=>'10', 'maxlength'=>'19', 'todayBtn' => 'true', 'placeholder' => JText::translate('VBCONFIGCLOSINGDATEFROM'))); ?>
384 </div>
385 <div class="btn-group pull-left">
386 <?php echo $vbo_app->getCalendar('', 'cdto', 'cdto', $nowdf, array('class'=>'', 'size'=>'10', 'maxlength'=>'19', 'todayBtn' => 'true', 'placeholder' => JText::translate('VBCONFIGCLOSINGDATETO'))); ?>
387 </div>
388 <div class="btn-group pull-left">
389 <button type="button" class="btn vbo-config-btn" onclick="vboAddClosingDate();"><?php VikBookingIcons::e('plus-circle'); ?> <?php echo JText::translate('VBCONFIGCLOSINGDATEADD'); ?></button>
390 </div>
391 </div>
392 <div id="vbo-config-closed-dates" style="display: block;">
393 <?php
394 $cur_closed_dates = VikBooking::getClosingDates();
395 if (is_array($cur_closed_dates) && count($cur_closed_dates)) {
396 foreach ($cur_closed_dates as $kcd => $vcd) {
397 echo "<div class=\"vbo-closed-date-entry\" id=\"vbo-closed-date-entry".$kcd."\"><span>".date(str_replace("/", $datesep, $usedf), $vcd['from'])."</span> - <span>".date(str_replace("/", $datesep, $usedf), $vcd['to'])."</span> <span class=\"vbo-closed-date-rm\" onclick=\"vboRemoveElement('vbo-closed-date-entry".$kcd."');\"><i class=\"vboicn-cross\"></i> </span><input type=\"hidden\" name=\"cdsfrom[]\" value=\"".date($usedf, $vcd['from'])."\" /><input type=\"hidden\" name=\"cdsto[]\" value=\"".date($usedf, $vcd['to'])."\" /></div>"."\n";
398 }
399 }
400 ?>
401 </div>
402 </div>
403 </div>
404
405 <?php
406 /**
407 * Choose the template file for the View "search". If compact, the "smartsearch" parameter
408 * will be ignored and set to hidden, because this new template does not use it.
409 *
410 * @since 1.13
411 */
412 $search_tpl = VikBooking::searchResultsTmpl();
413 ?>
414 <div class="vbo-param-container">
415 <div class="vbo-param-label"><?php echo JText::translate('VBOCONFIGSEARCHRESTPL'); ?></div>
416 <div class="vbo-param-setting">
417 <select name="srcrtpl" onchange="vboChangeMultiRoomSearch(this.value);">
418 <option value="compact"<?php echo $search_tpl == 'compact' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGSEARCHRESTPLCM'); ?></option>
419 <option value="classic"<?php echo $search_tpl == 'classic' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOCONFIGSEARCHRESTPLCL'); ?></option>
420 </select>
421 </div>
422 </div>
423 <div class="vbo-param-container vbo-param-nested" data-vbosearchtpl="classic" style="<?php echo $search_tpl != 'classic' ? 'display: none;' : ''; ?>">
424 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGSEARCHPSMARTSEARCH'); ?></div>
425 <div class="vbo-param-setting">
426 <select name="smartsearch">
427 <option value="dynamic"<?php echo $smartseach_type == 'dynamic' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGSEARCHPSMARTSEARCHDYN'); ?></option>
428 <option value="automatic"<?php echo $smartseach_type == 'automatic' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBCONFIGSEARCHPSMARTSEARCHAUTO'); ?></option>
429 </select>
430 </div>
431 </div>
432 <div class="vbo-param-container vbo-param-nested" data-vbosearchtpl="classic" style="<?php echo $search_tpl != 'classic' ? 'display: none;' : ''; ?>">
433 <div class="vbo-param-label">
434 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBO_INTERACTIVE_MAP_BOOK'), 'content' => JText::translate('VBO_INTERACTIVE_MAP_BOOK_HELP'))); ?>
435 <?php echo JText::translate('VBO_INTERACTIVE_MAP_BOOK'); ?>
436 </div>
437 <div class="vbo-param-setting">
438 <?php echo $vbo_app->printYesNoButtons('interactive_map', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::interactiveMapEnabled(), 1, 0); ?>
439 </div>
440 </div>
441 <div class="vbo-param-container vbo-param-nested" data-vbosearchtpl="classic" style="<?php echo $search_tpl != 'classic' ? 'display: none;' : ''; ?>">
442 <div class="vbo-param-label">
443 <?php echo JText::translate('VBO_SEARCH_FILTERS'); ?>
444 </div>
445 <div class="vbo-param-setting">
446 <?php echo $vbo_app->printYesNoButtons('search_filters', JText::translate('VBYES'), JText::translate('VBNO'), (int) $config->getBool('search_filters', false), 1, 0); ?>
447 </div>
448 </div>
449 <?php
450 $searchsugg = (int)VikBooking::showSearchSuggestions();
451 ?>
452 <div class="vbo-param-container">
453 <div class="vbo-param-label"><?php echo JText::translate('VBOCONFIGSHOWSEARCHSUGG'); ?></div>
454 <div class="vbo-param-setting">
455 <select name="searchsuggestions">
456 <option value="1"<?php echo $searchsugg == 1 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOYESWITHAVAILABILITY'); ?></option>
457 <option value="2"<?php echo $searchsugg == 2 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOYESNOAVAILABILITY'); ?></option>
458 <option value="0"<?php echo $searchsugg == 0 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBNO'); ?></option>
459 </select>
460 </div>
461 </div>
462 <div class="vbo-param-container">
463 <div class="vbo-param-label"><?php echo JText::translate('VBO_SEARCH_SHOW_BUSY_LISTINGS'); ?></div>
464 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('search_show_busy_listings', JText::translate('VBYES'), JText::translate('VBNO'), ($config->getBool('search_show_busy_listings', false) ? 1 : 0), 1, 0); ?></div>
465 </div>
466 <div class="vbo-param-container">
467 <div class="vbo-param-label"><?php echo JText::translate('VBO_SEARCH_LINK_ROOMDETAILS'); ?></div>
468 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('search_link_roomdetails', JText::translate('VBYES'), JText::translate('VBNO'), ($config->getBool('search_link_roomdetails', false) ? 1 : 0), 1, 0); ?></div>
469 </div>
470 <div class="vbo-param-container">
471 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONETENFOUR'); ?></div>
472 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('showcategories', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::showCategoriesFront(true) ? 'yes' : 0), 'yes', 0); ?></div>
473 </div>
474 <?php
475 $showchildren = VikBooking::showChildrenFront(true);
476 $guests_label = $config->getString('guests_label', 'adults');
477 ?>
478 <div class="vbo-param-container">
479 <div class="vbo-param-label">
480 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGSHOWCHILDREN'), 'content' => JText::translate('VBO_CHOOSE_CHILDREN_HELP'))); ?>
481 <?php echo JText::translate('VBCONFIGSHOWCHILDREN'); ?>
482 </div>
483 <div class="vbo-param-setting">
484 <?php echo $vbo_app->printYesNoButtons('showchildren', JText::translate('VBYES'), JText::translate('VBNO'), ($showchildren ? 'yes' : 0), 'yes', 0, 'vboToggleShowChildren(this.checked);'); ?>
485 </div>
486 </div>
487 <div class="vbo-param-container vbo-param-nested" data-config-type="showchildren" style="<?php echo $showchildren ? 'display: none;' : ''; ?>">
488 <div class="vbo-param-label"><?php echo JText::translate('VBO_GUESTS_LABEL'); ?></div>
489 <div class="vbo-param-setting">
490 <select name="guests_label">
491 <option value="adults"<?php echo $guests_label == 'adults' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBEDITORDERADULTS'); ?></option>
492 <option value="guests"<?php echo $guests_label == 'guests' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBPVIEWORDERSPEOPLE'); ?></option>
493 </select>
494 <span class="vbo-param-setting-comment"><?php echo JText::translate('VBO_GUESTS_LABEL_HELP'); ?></span>
495 </div>
496 </div>
497 <div class="vbo-param-container vbo-param-nested" data-config-type="showchildren" style="<?php echo $showchildren ? 'display: none;' : ''; ?>">
498 <div class="vbo-param-label"><?php echo JText::translate('VBO_GUESTS_POLICY'); ?></div>
499 <div class="vbo-param-setting">
500 <textarea name="guests_allowed_policy" rows="5" cols="50"><?php echo JHtml::fetch('esc_textarea', VikBooking::getGuestsAllowedPolicy()); ?></textarea>
501 <span class="vbo-param-setting-comment"><?php echo JText::translate('VBO_GUESTS_POLICY_HELP'); ?></span>
502 </div>
503 </div>
504 <div class="vbo-param-container">
505 <div class="vbo-param-label">
506 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBO_BOOK_SPLIT_STAYS'), 'content' => JText::translate('VBO_BOOK_SPLIT_STAYS_HELP'))); ?>
507 <?php echo JText::translate('VBO_BOOK_SPLIT_STAYS'); ?>
508 </div>
509 <div class="vbo-param-setting">
510 <?php
511 JText::script('VBO_SPLIT_STAY_RATIO_TEST');
512 $split_stay_ratio = $config->getFloat('split_stay_ratio', 50);
513 echo $vbo_app->printYesNoButtons('split_stay', JText::translate('VBYES'), JText::translate('VBNO'), (int)($split_stay_ratio > 0), 1, 0, 'vboToggleSplitStay(this.checked);');
514 ?>
515 </div>
516 </div>
517 <div class="vbo-param-container vbo-param-nested" data-config-type="split-stay" style="<?php echo $split_stay_ratio < 1 ? 'display: none;' : ''; ?>">
518 <div class="vbo-param-label">
519 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBO_SPLIT_STAYS_RATIO'), 'content' => JText::translate('VBO_SPLIT_STAYS_RATIO_HELP'))); ?>
520 <?php echo JText::translate('VBO_SPLIT_STAYS_RATIO'); ?>
521 </div>
522 <div class="vbo-param-setting">
523 <div class="input-append">
524 <input type="number" min="0" max="100" step="5" name="split_stay_ratio" value="<?php echo $split_stay_ratio > 0 ? $split_stay_ratio : '50';?>" />
525 <button type="button" class="btn">%</button>
526 </div>
527 </div>
528 </div>
529 <div class="vbo-param-container vbo-param-nested" data-config-type="split-stay" style="<?php echo $split_stay_ratio < 1 ? 'display: none;' : ''; ?>">
530 <div class="vbo-param-label"><?php echo JText::translate('VBOCRONSMSREMPARAMTEST'); ?></div>
531 <div class="vbo-param-setting">
532 <div class="input-append">
533 <input type="number" id="vbo-test-splitstay-nights" min="2" max="365" value="<?php echo rand(4, 10); ?>" />
534 <button type="button" class="btn"><?php echo JText::translate('VBDAYS'); ?></button>
535 <button type="button" class="btn vbo-config-btn vbo-btn-dont-append" onclick="vboTestSplitStay();"><?php echo JText::translate('VBRATESOVWRATESCALCULATORCALC'); ?></button>
536 </div>
537 <div class="vbo-param-setting-comment" data-config-type="split-stay"></div>
538 </div>
539 </div>
540
541 <script type="text/javascript">
542 function vboToggleShowChildren(enabled) {
543 if (enabled) {
544 jQuery('.vbo-param-container[data-config-type="showchildren"]').hide();
545 } else {
546 jQuery('.vbo-param-container[data-config-type="showchildren"]').show();
547 }
548 }
549
550 function vboToggleSplitStay(active) {
551 if (active) {
552 jQuery('.vbo-param-container[data-config-type="split-stay"]').show();
553 } else {
554 jQuery('.vbo-param-container[data-config-type="split-stay"]').hide();
555 jQuery('.vbo-param-setting-comment[data-config-type="split-stay"]').text('');
556 }
557 }
558
559 function vboTestSplitStay() {
560 var nights = jQuery('#vbo-test-splitstay-nights').val() * 1;
561 nights = nights < 2 ? 2 : nights;
562
563 var ratio = jQuery('input[name="split_stay_ratio"]').val() * 1;
564 ratio = ratio < 1 ? 1 : ratio;
565 ratio = ratio > 100 ? 100 : ratio;
566
567 var transfers = Math.round(nights * ratio / 100);
568
569 // According to the current ratio (%s), a stay for %d night(s) will allow up to %d room transfer(s).
570 var help_text = Joomla.JText._('VBO_SPLIT_STAY_RATIO_TEST');
571 help_text = help_text.replace('%s', ratio + '%');
572 help_text = help_text.replace('%d', nights);
573 help_text = help_text.replace('%d', transfers);
574
575 jQuery('.vbo-param-setting-comment[data-config-type="split-stay"]').text(help_text);
576 }
577 </script>
578
579 </div>
580 </div>
581 </fieldset>
582
583 <fieldset class="adminform">
584 <div class="vbo-params-wrap">
585 <legend class="adminlegend"><?php echo JText::translate('VBOCPARAMSYSTEM'); ?></legend>
586 <div class="vbo-params-container">
587
588 <div class="vbo-param-container">
589 <div class="vbo-param-label"><?php echo JText::translate('VBO_APPEARANCE_PREF'); ?></div>
590 <div class="vbo-param-setting">
591 <?php
592 // prepare args for the multi-state toggle switch
593 $appearance_vals = array(
594 'light',
595 'auto',
596 'dark',
597 );
598 $appearance_lbls = array(
599 array(
600 'value' => '<i class="' . VikBookingIcons::i('sun') . '"></i>',
601 'title' => JText::translate('VBO_APPEARANCE_PREF_LIGHT'),
602 ),
603 array(
604 'value' => '<i class="' . VikBookingIcons::i('magic') . '"></i>',
605 'title' => JText::translate('VBO_APPEARANCE_PREF_AUTO'),
606 ),
607 array(
608 'value' => '<i class="' . VikBookingIcons::i('moon') . '"></i>',
609 'title' => JText::translate('VBO_APPEARANCE_PREF_DARK'),
610 ),
611 );
612 $appearance_attrs = array(
613 array(
614 'label_class' => 'vik-multiswitch-radiobtn-light',
615 'input' => array(
616 'onchange' => 'vboPreviewAppeareance(this.value)',
617 ),
618 ),
619 array(
620 'label_class' => 'vik-multiswitch-radiobtn-auto',
621 'input' => array(
622 'onchange' => 'vboPreviewAppeareance(this.value)',
623 ),
624 ),
625 array(
626 'label_class' => 'vik-multiswitch-radiobtn-dark',
627 'input' => array(
628 'onchange' => 'vboPreviewAppeareance(this.value)',
629 ),
630 ),
631 );
632 echo $vbo_app->multiStateToggleSwitchField('appearance_pref', VikBooking::getAppearancePref(), $appearance_vals, $appearance_lbls, $appearance_attrs);
633 ?>
634 </div>
635 </div>
636
637 <div class="vbo-param-container vbo-param-nested">
638 <div class="vbo-param-label"><?php echo JText::translate('VBO_APPEARANCE_PREF') . ' (front-end)'; ?></div>
639 <div class="vbo-param-setting">
640 <?php
641 $front_appearance = $config->getInt('appearance_front', 0);
642 ?>
643 <select name="appearance_front">
644 <option value="0"<?php echo !$front_appearance ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBPARAMPRICECALENDARDISABLED'); ?></option>
645 <option value="1"<?php echo $front_appearance ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBPARAMPRICECALENDARENABLED'); ?></option>
646 </select>
647 </div>
648 </div>
649
650 <script type="text/javascript">
651 /**
652 * Apply on the fly the preview of the selected
653 * appearance mode: light, auto, dark.
654 */
655 function vboPreviewAppeareance(mode) {
656 var vbo_css_base_uri = '<?php echo VBO_ADMIN_URI . (VBOPlatformDetection::isWordPress() ? 'resources/' : '') . 'vbo-appearance-%s.css'; ?>';
657 var vbo_css_base_id = 'vbo-css-appearance-';
658 var vbo_css_modes = {
659 auto: vbo_css_base_uri.replace('%s', 'auto'),
660 dark: vbo_css_base_uri.replace('%s', 'dark'),
661 light: null
662 };
663 if (!vbo_css_modes.hasOwnProperty(mode)) {
664 return false;
665 }
666 // set/unset CSS files from DOM
667 for (var app_mode in vbo_css_modes) {
668 if (!vbo_css_modes.hasOwnProperty(app_mode) || !vbo_css_modes[app_mode]) {
669 continue;
670 }
671 if (app_mode == mode) {
672 // set this CSS file
673 jQuery('head').append('<link rel="stylesheet" id="' + vbo_css_base_id + app_mode + '" href="' + vbo_css_modes[app_mode] + '" media="all">');
674 } else {
675 // unset this CSS file
676 if (jQuery('link#' + vbo_css_base_id + app_mode).length) {
677 jQuery('link#' + vbo_css_base_id + app_mode).remove();
678 } else if (jQuery('link#' + vbo_css_base_id + app_mode + '-css').length) {
679 // WP framework may add "-css" as suffix to the given ID
680 jQuery('link#' + vbo_css_base_id + app_mode + '-css').remove();
681 }
682 }
683 }
684 }
685 </script>
686
687 <div class="vbo-param-container">
688 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGCRONKEY'); ?></div>
689 <div class="vbo-param-setting"><input type="text" name="cronkey" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getCronKey()); ?>" size="6" /></div>
690 </div>
691 <div class="vbo-param-container">
692 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGMULTILANG'); ?></div>
693 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('multilang', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::allowMultiLanguage(true), 1, 0); ?></div>
694 </div>
695 <?php
696 if (VBOPlatformDetection::isWordPress()) {
697 ?>
698 <!-- @wponly we cannot display the setting for the SEF Router -->
699 <?php
700 } else {
701 ?>
702 <div class="vbo-param-container">
703 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGROUTER'); ?></div>
704 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('vbosef', JText::translate('VBYES'), JText::translate('VBNO'), (int)$vbosef, 1, 0); ?></div>
705 </div>
706 <?php
707 }
708 ?>
709 <div class="vbo-param-container">
710 <div class="vbo-param-label"><?php echo JText::translate('VBLOADBOOTSTRAP'); ?></div>
711 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('loadbootstrap', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::loadBootstrap(), 1, 0); ?></div>
712 </div>
713 <div class="vbo-param-container">
714 <div class="vbo-param-label"><?php echo JText::translate('VBOLOADFA'); ?></div>
715 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('usefa', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::isFontAwesomeEnabled(), 1, 0); ?></div>
716 </div>
717 <?php
718 if (VBOPlatformDetection::isWordPress()) {
719 ?>
720 <!-- @wponly jQuery main library should not be loaded as it's already included by WP -->
721 <?php
722 } else {
723 ?>
724 <div class="vbo-param-container">
725 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONEJQUERY'); ?></div>
726 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('loadjquery', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::loadJquery() ? 'yes' : 0), 'yes', 0); ?></div>
727 </div>
728 <?php
729 }
730 ?>
731 <div class="vbo-param-container">
732 <div class="vbo-param-label"><?php echo JText::translate('VBO_OPTIMIZE_DB_RECORDS'); ?></div>
733 <div class="vbo-param-setting">
734 <input type="time" name="dboptimizetime" value="<?php echo $config->get('dboptimizetime', ''); ?>" min="00:00" max="23:30" step="1800" />
735 <span class="vbo-param-setting-comment"><?php echo JText::translate('VBO_SEL_TIME_OP_RUN'); ?></span>
736 </div>
737 </div>
738 <div class="vbo-param-container">
739 <div class="vbo-param-label"><?php echo JText::translate('VBO_GMAPS_APIKEY'); ?></div>
740 <div class="vbo-param-setting"><input type="text" name="gmapskey" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getGoogleMapsKey()); ?>" size="30" /></div>
741 </div>
742 <div class="vbo-param-container">
743 <div class="vbo-param-label">
744 <?php echo JText::translate('VBOPREFCOUNTRIESORD'); ?>
745 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBOPREFCOUNTRIESORD'), 'content' => JText::translate('VBOPREFCOUNTRIESORDHELP'))); ?>
746 <div class="vbo-preferred-countries-edit-wrap">
747 <span onclick="vboDisplayCustomPrefCountries();"><?php VikBookingIcons::e('edit'); ?></span>
748 </div>
749 </div>
750 <div class="vbo-param-setting">
751 <ul class="vbo-preferred-countries-sortlist">
752 <?php
753 $preferred_countries = VikBooking::preferredCountriesOrdering(true);
754 foreach ($preferred_countries as $ccode => $langname) {
755 ?>
756 <li class="vbo-preferred-countries-elem">
757 <span><?php VikBookingIcons::e('ellipsis-v'); ?> <?php echo $langname; ?></span>
758 <input type="hidden" name="pref_countries[]" value="<?php echo $ccode; ?>" />
759 </li>
760 <?php
761 }
762 ?>
763 </ul>
764 <script type="text/javascript">
765 function vboDisplayCustomPrefCountries() {
766 var all_countries = new Array;
767 jQuery('input[name="pref_countries[]"]').each(function() {
768 all_countries.push(jQuery(this).val());
769 });
770 var current_countries = all_countries.join(', ');
771 var custom_countries = prompt("<?php echo addslashes(JText::translate('VBOPREFCOUNTRIESORD')); ?>", current_countries);
772 if (custom_countries != null && custom_countries != current_countries) {
773 jQuery('.vbo-preferred-countries-edit-wrap').append('<input type="hidden" name="cust_pref_countries" value="' + custom_countries + '"/>');
774 jQuery('#adminForm').find('input[name="task"]').val('saveconfig');
775 jQuery('#adminForm').submit();
776 }
777 }
778 jQuery(function() {
779 jQuery('.vbo-preferred-countries-sortlist').sortable();
780 jQuery('.vbo-preferred-countries-sortlist').disableSelection();
781 });
782 </script>
783 </div>
784 </div>
785 </div>
786 </div>
787 </fieldset>
788
789 <!-- BACKUP -->
790
791 <fieldset class="adminform">
792 <div class="vbo-params-wrap">
793 <legend class="adminlegend"><?php echo JText::translate('VBO_CONFIG_BACKUP'); ?></legend>
794
795 <div class="vbo-params-container">
796
797 <!-- TYPE -->
798
799 <div class="vbo-param-container">
800 <div class="vbo-param-label"><?php echo JText::translate('VBO_CONFIG_BACKUP_TYPE'); ?></div>
801 <div class="vbo-param-setting">
802 <?php
803 $options = [];
804
805 foreach ($this->backupExportTypes as $type => $handler)
806 {
807 $options[] = JHtml::fetch('select.option', $type, $handler->getName());
808 }
809
810 $backup_export_type = $config->get('backuptype', 'full');
811 ?>
812 <select name="backuptype">
813 <?php echo JHtml::fetch('select.options', $options, 'value', 'text', $backup_export_type); ?>
814 </select>
815 <?php
816 // display a description for the export types
817 foreach ($this->backupExportTypes as $type => $handler)
818 {
819 ?>
820 <div class="vbo-param-setting-comment" id="backup_export_type_<?php echo $type; ?>" style="<?php echo $type === $backup_export_type ? '' : 'display: none;'; ?>">
821 <?php echo $handler->getDescription(); ?>
822 </div>
823 <?php
824 }
825 ?>
826 </div>
827 </div>
828
829 <!-- FOLDER -->
830
831 <div class="vbo-param-container">
832 <div class="vbo-param-label"><?php echo JText::translate('VBO_CONFIG_BACKUP_FOLDER'); ?></div>
833 <div class="vbo-param-setting">
834 <?php
835 // get saved path
836 $path = rtrim($config->get('backupfolder', ''), DIRECTORY_SEPARATOR);
837
838 // get system temporary path
839 $tmp_path = rtrim(JFactory::getApplication()->get('tmp_path', ''), DIRECTORY_SEPARATOR);
840
841 if (!$path)
842 {
843 $path = $tmp_path;
844 }
845 ?>
846 <input type="text" name="backupfolder" value="<?php echo $this->escape($path); ?>" size="64" />
847 <div class="vbo-param-setting-comment">
848 <?php echo JText::sprintf('VBO_CONFIG_BACKUP_FOLDER_HELP', (VBOPlatformDetection::isWordPress() ? ABSPATH : JPATH_SITE)); ?>
849 </div>
850 </div>
851 </div>
852
853 </div>
854
855 <!-- BACK-UP MANAGEMENT - Button -->
856
857 <div class="vbo-param-container">
858 <div class="vbo-param-label">&nbsp;</div>
859 <div class="vbo-param-setting">
860 <a href="index.php?option=com_vikbooking&amp;view=backups" class="btn vbo-config-btn" id="backup-btn" target="_blank">
861 <?php echo JText::translate('VBO_CONFIG_BACKUP_MANAGE_BTN'); ?>
862 </a>
863 </div>
864 </div>
865
866 </div>
867
868 <script>
869 (function($) {
870 'use strict';
871
872 $(function() {
873 $('select[name="backuptype"]').on('change', function() {
874 const type = $(this).val();
875
876 $('#adminForm *[id^="backup_export_type_"]').hide();
877 $('#backup_export_type_' + type).show();
878 });
879
880 $('a#backup-btn').on('click', function() {
881 try {
882 // gather action details
883 let actionName = $(this).text();
884 let actionHref = $(this).attr('href');
885
886 // register clicked button on global scope
887 VBOCore.registerAdminMenuAction({
888 name: actionName,
889 href: actionHref,
890 }, 'global');
891
892 // register clicked button on VBO's default scope (for VCM)
893 VBOCore.registerAdminMenuAction({
894 name: actionName,
895 href: actionHref,
896 }, '');
897 } catch(e) {
898 console.error(e);
899 }
900 });
901 });
902 })(jQuery);
903 </script>
904
905 </fieldset>
906
907 <?php
908 $extra_forms = VBOFactory::getPlatform()->getDispatcher()->filter('onDisplayViewConfigGlobal', [$this]);
909 foreach ($extra_forms as $extra_form) {
910 foreach ($extra_form as $form_name => $form_html) {
911 ?>
912 <fieldset class="adminform">
913 <div class="vbo-params-wrap">
914 <legend class="adminlegend"><?php echo JText::translate($form_name); ?></legend>
915 <?php echo $form_html; ?>
916 </div>
917 </fieldset>
918 <?php
919 }
920 }
921 ?>
922
923 </div>
924