PluginProbe
VikBooking Hotel Booking Engine & PMS / 1.7.2
VikBooking Hotel Booking Engine & PMS v1.7.2
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.7.2, at admin/views/config/tmpl/default_one.php

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