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 / admin / views / config / tmpl / default_one.php

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

909 lines 45.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 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(document).ready(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="0" /></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(true); ?>" 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 <?php
442 $searchsugg = (int)VikBooking::showSearchSuggestions();
443 ?>
444 <div class="vbo-param-container">
445 <div class="vbo-param-label"><?php echo JText::translate('VBOCONFIGSHOWSEARCHSUGG'); ?></div>
446 <div class="vbo-param-setting">
447 <select name="searchsuggestions">
448 <option value="1"<?php echo $searchsugg == 1 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOYESWITHAVAILABILITY'); ?></option>
449 <option value="2"<?php echo $searchsugg == 2 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBOYESNOAVAILABILITY'); ?></option>
450 <option value="0"<?php echo $searchsugg == 0 ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBNO'); ?></option>
451 </select>
452 </div>
453 </div>
454 <div class="vbo-param-container">
455 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONETENFOUR'); ?></div>
456 <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>
457 </div>
458 <?php
459 $showchildren = VikBooking::showChildrenFront(true);
460 $guests_label = $config->getString('guests_label', 'adults');
461 ?>
462 <div class="vbo-param-container">
463 <div class="vbo-param-label">
464 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBCONFIGSHOWCHILDREN'), 'content' => JText::translate('VBO_CHOOSE_CHILDREN_HELP'))); ?>
465 <?php echo JText::translate('VBCONFIGSHOWCHILDREN'); ?>
466 </div>
467 <div class="vbo-param-setting">
468 <?php echo $vbo_app->printYesNoButtons('showchildren', JText::translate('VBYES'), JText::translate('VBNO'), ($showchildren ? 'yes' : 0), 'yes', 0, 'vboToggleShowChildren(this.checked);'); ?>
469 </div>
470 </div>
471 <div class="vbo-param-container vbo-param-nested" data-config-type="showchildren" style="<?php echo $showchildren ? 'display: none;' : ''; ?>">
472 <div class="vbo-param-label"><?php echo JText::translate('VBO_GUESTS_LABEL'); ?></div>
473 <div class="vbo-param-setting">
474 <select name="guests_label">
475 <option value="adults"<?php echo $guests_label == 'adults' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBEDITORDERADULTS'); ?></option>
476 <option value="guests"<?php echo $guests_label == 'guests' ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBPVIEWORDERSPEOPLE'); ?></option>
477 </select>
478 <span class="vbo-param-setting-comment"><?php echo JText::translate('VBO_GUESTS_LABEL_HELP'); ?></span>
479 </div>
480 </div>
481 <div class="vbo-param-container vbo-param-nested" data-config-type="showchildren" style="<?php echo $showchildren ? 'display: none;' : ''; ?>">
482 <div class="vbo-param-label"><?php echo JText::translate('VBO_GUESTS_POLICY'); ?></div>
483 <div class="vbo-param-setting">
484 <textarea name="guests_allowed_policy" rows="5" cols="50"><?php echo JHtml::fetch('esc_textarea', VikBooking::getGuestsAllowedPolicy()); ?></textarea>
485 <span class="vbo-param-setting-comment"><?php echo JText::translate('VBO_GUESTS_POLICY_HELP'); ?></span>
486 </div>
487 </div>
488 <div class="vbo-param-container">
489 <div class="vbo-param-label">
490 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBO_BOOK_SPLIT_STAYS'), 'content' => JText::translate('VBO_BOOK_SPLIT_STAYS_HELP'))); ?>
491 <?php echo JText::translate('VBO_BOOK_SPLIT_STAYS'); ?>
492 </div>
493 <div class="vbo-param-setting">
494 <?php
495 JText::script('VBO_SPLIT_STAY_RATIO_TEST');
496 $split_stay_ratio = $config->getFloat('split_stay_ratio', 50);
497 echo $vbo_app->printYesNoButtons('split_stay', JText::translate('VBYES'), JText::translate('VBNO'), (int)($split_stay_ratio > 0), 1, 0, 'vboToggleSplitStay(this.checked);');
498 ?>
499 </div>
500 </div>
501 <div class="vbo-param-container vbo-param-nested" data-config-type="split-stay" style="<?php echo $split_stay_ratio < 1 ? 'display: none;' : ''; ?>">
502 <div class="vbo-param-label">
503 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBO_SPLIT_STAYS_RATIO'), 'content' => JText::translate('VBO_SPLIT_STAYS_RATIO_HELP'))); ?>
504 <?php echo JText::translate('VBO_SPLIT_STAYS_RATIO'); ?>
505 </div>
506 <div class="vbo-param-setting">
507 <div class="input-append">
508 <input type="number" min="0" max="100" step="5" name="split_stay_ratio" value="<?php echo $split_stay_ratio > 0 ? $split_stay_ratio : '50';?>" />
509 <button type="button" class="btn">%</button>
510 </div>
511 </div>
512 </div>
513 <div class="vbo-param-container vbo-param-nested" data-config-type="split-stay" style="<?php echo $split_stay_ratio < 1 ? 'display: none;' : ''; ?>">
514 <div class="vbo-param-label"><?php echo JText::translate('VBOCRONSMSREMPARAMTEST'); ?></div>
515 <div class="vbo-param-setting">
516 <div class="input-append">
517 <input type="number" id="vbo-test-splitstay-nights" min="2" max="365" value="<?php echo rand(4, 10); ?>" />
518 <button type="button" class="btn"><?php echo JText::translate('VBDAYS'); ?></button>
519 <button type="button" class="btn vbo-config-btn vbo-btn-dont-append" onclick="vboTestSplitStay();"><?php echo JText::translate('VBRATESOVWRATESCALCULATORCALC'); ?></button>
520 </div>
521 <div class="vbo-param-setting-comment" data-config-type="split-stay"></div>
522 </div>
523 </div>
524
525 <script type="text/javascript">
526 function vboToggleShowChildren(enabled) {
527 if (enabled) {
528 jQuery('.vbo-param-container[data-config-type="showchildren"]').hide();
529 } else {
530 jQuery('.vbo-param-container[data-config-type="showchildren"]').show();
531 }
532 }
533
534 function vboToggleSplitStay(active) {
535 if (active) {
536 jQuery('.vbo-param-container[data-config-type="split-stay"]').show();
537 } else {
538 jQuery('.vbo-param-container[data-config-type="split-stay"]').hide();
539 jQuery('.vbo-param-setting-comment[data-config-type="split-stay"]').text('');
540 }
541 }
542
543 function vboTestSplitStay() {
544 var nights = jQuery('#vbo-test-splitstay-nights').val() * 1;
545 nights = nights < 2 ? 2 : nights;
546
547 var ratio = jQuery('input[name="split_stay_ratio"]').val() * 1;
548 ratio = ratio < 1 ? 1 : ratio;
549 ratio = ratio > 100 ? 100 : ratio;
550
551 var transfers = Math.round(nights * ratio / 100);
552
553 // According to the current ratio (%s), a stay for %d night(s) will allow up to %d room transfer(s).
554 var help_text = Joomla.JText._('VBO_SPLIT_STAY_RATIO_TEST');
555 help_text = help_text.replace('%s', ratio + '%');
556 help_text = help_text.replace('%d', nights);
557 help_text = help_text.replace('%d', transfers);
558
559 jQuery('.vbo-param-setting-comment[data-config-type="split-stay"]').text(help_text);
560 }
561 </script>
562
563 </div>
564 </div>
565 </fieldset>
566
567 <fieldset class="adminform">
568 <div class="vbo-params-wrap">
569 <legend class="adminlegend"><?php echo JText::translate('VBOCPARAMSYSTEM'); ?></legend>
570 <div class="vbo-params-container">
571
572 <div class="vbo-param-container">
573 <div class="vbo-param-label"><?php echo JText::translate('VBO_APPEARANCE_PREF'); ?></div>
574 <div class="vbo-param-setting">
575 <?php
576 // prepare args for the multi-state toggle switch
577 $appearance_vals = array(
578 'light',
579 'auto',
580 'dark',
581 );
582 $appearance_lbls = array(
583 array(
584 'value' => '<i class="' . VikBookingIcons::i('sun') . '"></i>',
585 'title' => JText::translate('VBO_APPEARANCE_PREF_LIGHT'),
586 ),
587 array(
588 'value' => '<i class="' . VikBookingIcons::i('magic') . '"></i>',
589 'title' => JText::translate('VBO_APPEARANCE_PREF_AUTO'),
590 ),
591 array(
592 'value' => '<i class="' . VikBookingIcons::i('moon') . '"></i>',
593 'title' => JText::translate('VBO_APPEARANCE_PREF_DARK'),
594 ),
595 );
596 $appearance_attrs = array(
597 array(
598 'label_class' => 'vik-multiswitch-radiobtn-light',
599 'input' => array(
600 'onchange' => 'vboPreviewAppeareance(this.value)',
601 ),
602 ),
603 array(
604 'label_class' => 'vik-multiswitch-radiobtn-auto',
605 'input' => array(
606 'onchange' => 'vboPreviewAppeareance(this.value)',
607 ),
608 ),
609 array(
610 'label_class' => 'vik-multiswitch-radiobtn-dark',
611 'input' => array(
612 'onchange' => 'vboPreviewAppeareance(this.value)',
613 ),
614 ),
615 );
616 echo $vbo_app->multiStateToggleSwitchField('appearance_pref', VikBooking::getAppearancePref(), $appearance_vals, $appearance_lbls, $appearance_attrs);
617 ?>
618 </div>
619 </div>
620
621 <div class="vbo-param-container vbo-param-nested">
622 <div class="vbo-param-label"><?php echo JText::translate('VBO_APPEARANCE_PREF') . ' (front-end)'; ?></div>
623 <div class="vbo-param-setting">
624 <?php
625 $front_appearance = $config->getInt('appearance_front', 0);
626 ?>
627 <select name="appearance_front">
628 <option value="0"<?php echo !$front_appearance ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBPARAMPRICECALENDARDISABLED'); ?></option>
629 <option value="1"<?php echo $front_appearance ? ' selected="selected"' : ''; ?>><?php echo JText::translate('VBPARAMPRICECALENDARENABLED'); ?></option>
630 </select>
631 </div>
632 </div>
633
634 <script type="text/javascript">
635 /**
636 * Apply on the fly the preview of the selected
637 * appearance mode: light, auto, dark.
638 */
639 function vboPreviewAppeareance(mode) {
640 var vbo_css_base_uri = '<?php echo VBO_ADMIN_URI . (VBOPlatformDetection::isWordPress() ? 'resources/' : '') . 'vbo-appearance-%s.css'; ?>';
641 var vbo_css_base_id = 'vbo-css-appearance-';
642 var vbo_css_modes = {
643 auto: vbo_css_base_uri.replace('%s', 'auto'),
644 dark: vbo_css_base_uri.replace('%s', 'dark'),
645 light: null
646 };
647 if (!vbo_css_modes.hasOwnProperty(mode)) {
648 return false;
649 }
650 // set/unset CSS files from DOM
651 for (var app_mode in vbo_css_modes) {
652 if (!vbo_css_modes.hasOwnProperty(app_mode) || !vbo_css_modes[app_mode]) {
653 continue;
654 }
655 if (app_mode == mode) {
656 // set this CSS file
657 jQuery('head').append('<link rel="stylesheet" id="' + vbo_css_base_id + app_mode + '" href="' + vbo_css_modes[app_mode] + '" media="all">');
658 } else {
659 // unset this CSS file
660 if (jQuery('link#' + vbo_css_base_id + app_mode).length) {
661 jQuery('link#' + vbo_css_base_id + app_mode).remove();
662 } else if (jQuery('link#' + vbo_css_base_id + app_mode + '-css').length) {
663 // WP framework may add "-css" as suffix to the given ID
664 jQuery('link#' + vbo_css_base_id + app_mode + '-css').remove();
665 }
666 }
667 }
668 }
669 </script>
670
671 <div class="vbo-param-container">
672 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGCRONKEY'); ?></div>
673 <div class="vbo-param-setting"><input type="text" name="cronkey" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getCronKey()); ?>" size="6" /></div>
674 </div>
675 <div class="vbo-param-container">
676 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGMULTILANG'); ?></div>
677 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('multilang', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::allowMultiLanguage(true), 1, 0); ?></div>
678 </div>
679 <?php
680 if (VBOPlatformDetection::isWordPress()) {
681 ?>
682 <!-- @wponly we cannot display the setting for the SEF Router -->
683 <?php
684 } else {
685 ?>
686 <div class="vbo-param-container">
687 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGROUTER'); ?></div>
688 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('vbosef', JText::translate('VBYES'), JText::translate('VBNO'), (int)$vbosef, 1, 0); ?></div>
689 </div>
690 <?php
691 }
692 ?>
693 <div class="vbo-param-container">
694 <div class="vbo-param-label"><?php echo JText::translate('VBLOADBOOTSTRAP'); ?></div>
695 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('loadbootstrap', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::loadBootstrap(), 1, 0); ?></div>
696 </div>
697 <div class="vbo-param-container">
698 <div class="vbo-param-label"><?php echo JText::translate('VBOLOADFA'); ?></div>
699 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('usefa', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::isFontAwesomeEnabled(), 1, 0); ?></div>
700 </div>
701 <?php
702 if (VBOPlatformDetection::isWordPress()) {
703 ?>
704 <!-- @wponly jQuery main library should not be loaded as it's already included by WP -->
705 <?php
706 } else {
707 ?>
708 <div class="vbo-param-container">
709 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONEJQUERY'); ?></div>
710 <div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('loadjquery', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::loadJquery() ? 'yes' : 0), 'yes', 0); ?></div>
711 </div>
712 <?php
713 }
714 ?>
715 <div class="vbo-param-container">
716 <div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONECALENDAR'); ?></div>
717 <div class="vbo-param-setting">
718 <select name="calendar">
719 <option value="jqueryui"<?php echo ($calendartype == "jqueryui" ? " selected=\"selected\"" : ""); ?>>jQuery UI</option>
720 </select>
721 </div>
722 </div>
723 <div class="vbo-param-container">
724 <div class="vbo-param-label"><?php echo JText::translate('VBO_GMAPS_APIKEY'); ?></div>
725 <div class="vbo-param-setting"><input type="text" name="gmapskey" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getGoogleMapsKey()); ?>" size="30" /></div>
726 </div>
727 <div class="vbo-param-container">
728 <div class="vbo-param-label">
729 <?php echo JText::translate('VBOPREFCOUNTRIESORD'); ?>
730 <?php echo $vbo_app->createPopover(array('title' => JText::translate('VBOPREFCOUNTRIESORD'), 'content' => JText::translate('VBOPREFCOUNTRIESORDHELP'))); ?>
731 <div class="vbo-preferred-countries-edit-wrap">
732 <span onclick="vboDisplayCustomPrefCountries();"><?php VikBookingIcons::e('edit'); ?></span>
733 </div>
734 </div>
735 <div class="vbo-param-setting">
736 <ul class="vbo-preferred-countries-sortlist">
737 <?php
738 $preferred_countries = VikBooking::preferredCountriesOrdering(true);
739 foreach ($preferred_countries as $ccode => $langname) {
740 ?>
741 <li class="vbo-preferred-countries-elem">
742 <span><?php VikBookingIcons::e('ellipsis-v'); ?> <?php echo $langname; ?></span>
743 <input type="hidden" name="pref_countries[]" value="<?php echo $ccode; ?>" />
744 </li>
745 <?php
746 }
747 ?>
748 </ul>
749 <script type="text/javascript">
750 function vboDisplayCustomPrefCountries() {
751 var all_countries = new Array;
752 jQuery('input[name="pref_countries[]"]').each(function() {
753 all_countries.push(jQuery(this).val());
754 });
755 var current_countries = all_countries.join(', ');
756 var custom_countries = prompt("<?php echo addslashes(JText::translate('VBOPREFCOUNTRIESORD')); ?>", current_countries);
757 if (custom_countries != null && custom_countries != current_countries) {
758 jQuery('.vbo-preferred-countries-edit-wrap').append('<input type="hidden" name="cust_pref_countries" value="' + custom_countries + '"/>');
759 jQuery('#adminForm').find('input[name="task"]').val('saveconfig');
760 jQuery('#adminForm').submit();
761 }
762 }
763 jQuery(document).ready(function() {
764 jQuery('.vbo-preferred-countries-sortlist').sortable();
765 jQuery('.vbo-preferred-countries-sortlist').disableSelection();
766 });
767 </script>
768 </div>
769 </div>
770 </div>
771 </div>
772 </fieldset>
773
774 <!-- BACKUP -->
775
776 <fieldset class="adminform">
777 <div class="vbo-params-wrap">
778 <legend class="adminlegend"><?php echo JText::translate('VBO_CONFIG_BACKUP'); ?></legend>
779
780 <div class="vbo-params-container">
781
782 <!-- TYPE -->
783
784 <div class="vbo-param-container">
785 <div class="vbo-param-label"><?php echo JText::translate('VBO_CONFIG_BACKUP_TYPE'); ?></div>
786 <div class="vbo-param-setting">
787 <?php
788 $options = [];
789
790 foreach ($this->backupExportTypes as $type => $handler)
791 {
792 $options[] = JHtml::fetch('select.option', $type, $handler->getName());
793 }
794
795 $backup_export_type = $config->get('backuptype', 'full');
796 ?>
797 <select name="backuptype">
798 <?php echo JHtml::fetch('select.options', $options, 'value', 'text', $backup_export_type); ?>
799 </select>
800 <?php
801 // display a description for the export types
802 foreach ($this->backupExportTypes as $type => $handler)
803 {
804 ?>
805 <div class="vbo-param-setting-comment" id="backup_export_type_<?php echo $type; ?>" style="<?php echo $type === $backup_export_type ? '' : 'display: none;'; ?>">
806 <?php echo $handler->getDescription(); ?>
807 </div>
808 <?php
809 }
810 ?>
811 </div>
812 </div>
813
814 <!-- FOLDER -->
815
816 <div class="vbo-param-container">
817 <div class="vbo-param-label"><?php echo JText::translate('VBO_CONFIG_BACKUP_FOLDER'); ?></div>
818 <div class="vbo-param-setting">
819 <?php
820 // get saved path
821 $path = rtrim($config->get('backupfolder', ''), DIRECTORY_SEPARATOR);
822
823 // get system temporary path
824 $tmp_path = rtrim(JFactory::getApplication()->get('tmp_path', ''), DIRECTORY_SEPARATOR);
825
826 if (!$path)
827 {
828 $path = $tmp_path;
829 }
830 ?>
831 <input type="text" name="backupfolder" value="<?php echo $this->escape($path); ?>" size="64" />
832 <div class="vbo-param-setting-comment">
833 <?php echo JText::sprintf('VBO_CONFIG_BACKUP_FOLDER_HELP', (VBOPlatformDetection::isWordPress() ? ABSPATH : JPATH_SITE)); ?>
834 </div>
835 </div>
836 </div>
837
838 </div>
839
840 <!-- BACK-UP MANAGEMENT - Button -->
841
842 <div class="vbo-param-container">
843 <div class="vbo-param-label">&nbsp;</div>
844 <div class="vbo-param-setting">
845 <a href="index.php?option=com_vikbooking&amp;view=backups" class="btn vbo-config-btn" id="backup-btn" target="_blank">
846 <?php echo JText::translate('VBO_CONFIG_BACKUP_MANAGE_BTN'); ?>
847 </a>
848 </div>
849 </div>
850
851 </div>
852
853 <script>
854 (function($) {
855 'use strict';
856
857 $(function() {
858 $('select[name="backuptype"]').on('change', function() {
859 const type = $(this).val();
860
861 $('#adminForm *[id^="backup_export_type_"]').hide();
862 $('#backup_export_type_' + type).show();
863 });
864
865 $('a#backup-btn').on('click', function() {
866 try {
867 // gather action details
868 let actionName = $(this).text();
869 let actionHref = $(this).attr('href');
870
871 // register clicked button on global scope
872 VBOCore.registerAdminMenuAction({
873 name: actionName,
874 href: actionHref,
875 }, 'global');
876
877 // register clicked button on VBO's default scope (for VCM)
878 VBOCore.registerAdminMenuAction({
879 name: actionName,
880 href: actionHref,
881 }, '');
882 } catch(e) {
883 console.error(e);
884 }
885 });
886 });
887 })(jQuery);
888 </script>
889
890 </fieldset>
891
892 <?php
893 $extra_forms = VBOFactory::getPlatform()->getDispatcher()->filter('onDisplayViewConfigGlobal', [$this]);
894 foreach ($extra_forms as $extra_form) {
895 foreach ($extra_form as $form_name => $form_html) {
896 ?>
897 <fieldset class="adminform">
898 <div class="vbo-params-wrap">
899 <legend class="adminlegend"><?php echo JText::translate($form_name); ?></legend>
900 <?php echo $form_html; ?>
901 </div>
902 </fieldset>
903 <?php
904 }
905 }
906 ?>
907
908 </div>
909