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