| 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 |
$vbo_app = VikBooking::getVboApplication(); |
| 14 |
$formatvals = VikBooking::getNumberFormatData(true); |
| 15 |
$formatparts = explode(':', $formatvals); |
| 16 |
?> |
| 17 |
<div class="vbo-config-maintab-left"> |
| 18 |
<fieldset class="adminform"> |
| 19 |
<div class="vbo-params-wrap"> |
| 20 |
<legend class="adminlegend"><?php echo JText::translate('VBOCPARAMCURRENCY'); ?></legend> |
| 21 |
<div class="vbo-params-container"> |
| 22 |
<div class="vbo-param-container"> |
| 23 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTHREECURNAME'); ?></div> |
| 24 |
<div class="vbo-param-setting"><input type="text" name="currencyname" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getCurrencyName()); ?>" size="10"/></div> |
| 25 |
</div> |
| 26 |
<div class="vbo-param-container"> |
| 27 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTHREECURSYMB'); ?></div> |
| 28 |
<div class="vbo-param-setting"><input type="text" name="currencysymb" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getCurrencySymb(true)); ?>" size="10"/></div> |
| 29 |
</div> |
| 30 |
<div class="vbo-param-container"> |
| 31 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTHREECURCODEPP'); ?></div> |
| 32 |
<div class="vbo-param-setting"><input type="text" name="currencycodepp" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getCurrencyCodePp()); ?>" size="10"/></div> |
| 33 |
</div> |
| 34 |
<div class="vbo-param-container"> |
| 35 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGNUMDECIMALS'); ?></div> |
| 36 |
<div class="vbo-param-setting"><input type="number" name="numdecimals" value="<?php echo $formatparts[0]; ?>" min="0" max="9"/></div> |
| 37 |
</div> |
| 38 |
<div class="vbo-param-container vbo-param-nested"> |
| 39 |
<div class="vbo-param-label"><?php echo JText::translate('VBO_NO_EMPTY_DECIMALS'); ?></div> |
| 40 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('noemptydecimals', JText::translate('VBYES'), JText::translate('VBNO'), VikBooking::hideEmptyDecimals(), 1, 0); ?></div> |
| 41 |
</div> |
| 42 |
<div class="vbo-param-container"> |
| 43 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGNUMDECSEPARATOR'); ?></div> |
| 44 |
<div class="vbo-param-setting"><input type="text" name="decseparator" value="<?php echo JHtml::fetch('esc_attr', $formatparts[1]); ?>" size="2"/></div> |
| 45 |
</div> |
| 46 |
<div class="vbo-param-container"> |
| 47 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGNUMTHOSEPARATOR'); ?></div> |
| 48 |
<div class="vbo-param-setting"><input type="text" name="thoseparator" value="<?php echo JHtml::fetch('esc_attr', $formatparts[2]); ?>" size="2"/></div> |
| 49 |
</div> |
| 50 |
</div> |
| 51 |
</div> |
| 52 |
</fieldset> |
| 53 |
|
| 54 |
<fieldset class="adminform"> |
| 55 |
<div class="vbo-params-wrap"> |
| 56 |
<legend class="adminlegend"><?php echo JText::translate('VBOCPARAMTAXPAY'); ?></legend> |
| 57 |
<div class="vbo-params-container"> |
| 58 |
<div class="vbo-param-container"> |
| 59 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTWOFIVE'); ?></div> |
| 60 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('ivainclusa', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::ivaInclusa(true) ? 'yes' : 0), 'yes', 0); ?></div> |
| 61 |
</div> |
| 62 |
<div class="vbo-param-container"> |
| 63 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTAXSUMMARY'); ?></div> |
| 64 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('taxsummary', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::showTaxOnSummaryOnly(true) ? 'yes' : 0), 'yes', 0); ?></div> |
| 65 |
</div> |
| 66 |
<div class="vbo-param-container"> |
| 67 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGMULTIPAY'); ?></div> |
| 68 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('multipay', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::multiplePayments() ? 'yes' : 0), 'yes', 0); ?></div> |
| 69 |
</div> |
| 70 |
<div class="vbo-param-container"> |
| 71 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTWOSIX'); ?></div> |
| 72 |
<div class="vbo-param-setting"><input type="text" name="paymentname" value="<?php echo JHtml::fetch('esc_attr', VikBooking::getPaymentName()); ?>" size="25"/></div> |
| 73 |
</div> |
| 74 |
<div class="vbo-param-container"> |
| 75 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGONETENSEVEN'); ?></div> |
| 76 |
<div class="vbo-param-setting"><input type="number" name="minuteslock" value="<?php echo VikBooking::getMinutesLock(); ?>" min="0"/></div> |
| 77 |
</div> |
| 78 |
<div class="vbo-param-container"> |
| 79 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGMINAUTOREMOVE'); ?></div> |
| 80 |
<div class="vbo-param-setting"><input type="number" name="minautoremove" value="<?php echo VikBooking::getMinutesAutoRemove(); ?>" min="0"/></div> |
| 81 |
</div> |
| 82 |
</div> |
| 83 |
</div> |
| 84 |
</fieldset> |
| 85 |
</div> |
| 86 |
|
| 87 |
<?php |
| 88 |
$dep_overrides = VikBooking::getDepositOverrides(true); |
| 89 |
?> |
| 90 |
<div class="vbo-info-overlay-block"> |
| 91 |
<a class="vbo-info-overlay-close" href="javascript: void(0);"></a> |
| 92 |
<div class="vbo-info-overlay-content vbo-info-overlay-content-depovr"></div> |
| 93 |
</div> |
| 94 |
|
| 95 |
<div class="vbo-config-maintab-right"> |
| 96 |
<fieldset class="adminform"> |
| 97 |
<div class="vbo-params-wrap"> |
| 98 |
<legend class="adminlegend"><?php echo JText::translate('VBOCPARAMDEPOSITPAY'); ?></legend> |
| 99 |
<div class="vbo-params-container"> |
| 100 |
<div class="vbo-param-container"> |
| 101 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTWOTHREE'); ?></div> |
| 102 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('paytotal', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::payTotal() ? 'yes' : 0), 'yes', 0); ?></div> |
| 103 |
</div> |
| 104 |
<div class="vbo-param-container"> |
| 105 |
<div class="vbo-param-label"><?php echo JText::translate('VBCONFIGTWOFOUR'); ?></div> |
| 106 |
<div class="vbo-param-setting"><input type="number" name="payaccpercent" value="<?php echo VikBooking::getAccPerCent(); ?>" min="0"/> <select id="typedeposit" name="typedeposit"><option value="pcent">%</option><option value="fixed"<?php echo (VikBooking::getTypeDeposit(true) == "fixed" ? ' selected="selected"' : ''); ?>><?php echo VikBooking::getCurrencySymb(); ?></option></select></div> |
| 107 |
</div> |
| 108 |
<div class="vbo-param-container"> |
| 109 |
<div class="vbo-param-label"><?php echo JText::translate('VBOCONFDEPOSITOVRDS'); ?></div> |
| 110 |
<div class="vbo-param-setting"> |
| 111 |
<input type="hidden" id="depoverrides" name="depoverrides" value="<?php echo htmlspecialchars($dep_overrides); ?>"/> |
| 112 |
<div id="cur_depoverrides" class="cur_depoverrides"></div> |
| 113 |
<button type="button" class="btn" onclick="vboDisplayDepositOverrides();"><i class="vboicn-pencil2 icn-nomargin"></i></button> |
| 114 |
</div> |
| 115 |
</div> |
| 116 |
<div class="vbo-param-container"> |
| 117 |
<div class="vbo-param-label"><?php echo JText::translate('VBOCONFDEPONLYIFDADV'); ?></div> |
| 118 |
<div class="vbo-param-setting"><input type="number" style="max-width: 60px;" name="depifdaysadv" min="0" value="<?php echo VikBooking::getDepositIfDays(); ?>"/></div> |
| 119 |
</div> |
| 120 |
<div class="vbo-param-container"> |
| 121 |
<div class="vbo-param-label"><?php echo JText::translate('VBOCONFDEPCUSTCHOICE'); ?></div> |
| 122 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('depcustchoice', JText::translate('VBYES'), JText::translate('VBNO'), (VikBooking::depositCustomerChoice() ? 'yes' : 0), 'yes', 0); ?></div> |
| 123 |
</div> |
| 124 |
<div class="vbo-param-container"> |
| 125 |
<div class="vbo-param-label"><?php echo $vbo_app->createPopover(array('title' => JText::translate('VBOCONFNODEPNONREFUND'), 'content' => JText::translate('VBOCONFNODEPNONREFUNDHELP'))); ?> <?php echo JText::translate('VBOCONFNODEPNONREFUND'); ?></div> |
| 126 |
<div class="vbo-param-setting"><?php echo $vbo_app->printYesNoButtons('nodepnonrefund', JText::translate('VBYES'), JText::translate('VBNO'), (int)VikBooking::noDepositForNonRefund(), 1, 0); ?></div> |
| 127 |
</div> |
| 128 |
</div> |
| 129 |
</div> |
| 130 |
</fieldset> |
| 131 |
</div> |
| 132 |
|
| 133 |
<script type="text/javascript"> |
| 134 |
var vbo_overlay_on = false; |
| 135 |
var vbo_depovr_defs = { |
| 136 |
"nights": "<?php echo addslashes(JText::translate('VBDAYS')); ?>", |
| 137 |
"more": "<?php echo addslashes(JText::translate('VBOCONFDEPOSITOVRDSMORE')); ?>", |
| 138 |
"add": "<?php echo addslashes(JText::translate('VBCONFIGCLOSINGDATEADD')); ?>", |
| 139 |
"apply": "<?php echo addslashes(JText::translate('VBAPPLY')); ?>" |
| 140 |
} |
| 141 |
jQuery(document).ready(function() { |
| 142 |
vboPopulateDepositOverrides(); |
| 143 |
jQuery(document).mouseup(function(e) { |
| 144 |
if (!vbo_overlay_on) { |
| 145 |
return false; |
| 146 |
} |
| 147 |
var vbo_overlay_cont = jQuery(".vbo-info-overlay-content"); |
| 148 |
if (!vbo_overlay_cont.is(e.target) && vbo_overlay_cont.has(e.target).length === 0) { |
| 149 |
vboHideDepositOverrides(); |
| 150 |
} |
| 151 |
}); |
| 152 |
jQuery(document).keyup(function(e) { |
| 153 |
if (e.keyCode == 27 && vbo_overlay_on) { |
| 154 |
vboHideDepositOverrides(); |
| 155 |
} |
| 156 |
}); |
| 157 |
}); |
| 158 |
function vboDisplayDepositOverrides() { |
| 159 |
jQuery(".vbo-info-overlay-block").fadeIn(400, function() { |
| 160 |
if (jQuery(".vbo-info-overlay-block").is(":visible")) { |
| 161 |
vbo_overlay_on = true; |
| 162 |
} else { |
| 163 |
vbo_overlay_on = false; |
| 164 |
} |
| 165 |
}); |
| 166 |
} |
| 167 |
function vboHideDepositOverrides() { |
| 168 |
jQuery(".vbo-info-overlay-block").fadeOut(); |
| 169 |
vbo_overlay_on = false; |
| 170 |
} |
| 171 |
function vboPopulateDepositOverrides() { |
| 172 |
var vbo_dep_overrides = jQuery('#depoverrides').val(); |
| 173 |
var vbo_dep_type = document.getElementById('typedeposit'); |
| 174 |
var vbo_dep_oper = vbo_dep_type.options[vbo_dep_type.selectedIndex].text; |
| 175 |
try { |
| 176 |
var dep_ovr_obj = JSON.parse(vbo_dep_overrides); |
| 177 |
var tot_ovr = Object.keys(dep_ovr_obj).length; |
| 178 |
var cur_ovr_str = '', |
| 179 |
cur_ovr_cont = '<div class="vbo-info-overlay-header">'; |
| 180 |
cur_ovr_cont += '<h3><?php echo addslashes(JText::translate('VBOCONFDEPOSITOVRDS')); ?></h3>'; |
| 181 |
cur_ovr_cont += '<div class="vbo-info-overlay-buttons-wrap">'; |
| 182 |
// always include the add and apply buttons |
| 183 |
cur_ovr_cont += '<button type="button" class="btn vbo-config-btn" onclick="vboAddDepositeOverride();"><?php VikBookingIcons::e('plus-circle'); ?> '+vbo_depovr_defs.add+'</button>'; |
| 184 |
cur_ovr_cont += '<button type="button" class="btn btn-success" onclick="vboApplyDepositeOverrides();"><i class="vboicn-checkmark"></i> '+vbo_depovr_defs.apply+'</button>'; |
| 185 |
// |
| 186 |
cur_ovr_cont += '</div>'; |
| 187 |
cur_ovr_cont += '</div>'; |
| 188 |
if (tot_ovr > 1) { |
| 189 |
for (var prop in dep_ovr_obj) { |
| 190 |
if (!dep_ovr_obj.hasOwnProperty(prop) || prop == 'more') { |
| 191 |
continue; |
| 192 |
} |
| 193 |
cur_ovr_str += '<span>'+vbo_depovr_defs.nights+': '+prop+(dep_ovr_obj['more'] == prop ? ' '+vbo_depovr_defs.more : '')+', '+(vbo_dep_oper != '%' ? vbo_dep_oper+' ' : '')+dep_ovr_obj[prop]+(vbo_dep_oper == '%' ? vbo_dep_oper : '')+'</span>'; |
| 194 |
cur_ovr_cont += '<div class="new_depovr_container">'+ |
| 195 |
'<span><span>'+vbo_depovr_defs.nights+'</span><input type="number" min="0" class="new_depovr_nights" value="'+prop+'"/></span>'+ |
| 196 |
'<span>' + (vbo_dep_oper != '%' ? '<span>'+vbo_dep_oper+'</span>' : '') + '<input type="number" min="0" step="any" class="new_depovr_amounts" value="'+dep_ovr_obj[prop]+'"/>' + (vbo_dep_oper == '%' ? '<span>'+vbo_dep_oper+'</span>' : '') + '</span>'+ |
| 197 |
'<span><select class="new_depovr_more"><option value="">---</option><option value="more">'+vbo_depovr_defs.more+'</option></select></span>'+ |
| 198 |
'<span><button type="button" class="btn btn-danger" onclick="jQuery(this).closest(\'.new_depovr_container\').remove();">×</button></span>'+ |
| 199 |
'</div>'; |
| 200 |
} |
| 201 |
jQuery('#cur_depoverrides').html(cur_ovr_str); |
| 202 |
} else { |
| 203 |
//no overrides defined: make the boxes empty |
| 204 |
jQuery('#cur_depoverrides').html(''); |
| 205 |
} |
| 206 |
jQuery('.vbo-info-overlay-content-depovr').html(cur_ovr_cont); |
| 207 |
} catch(e) { |
| 208 |
console.log('cannot parse JSON'); |
| 209 |
console.log(e); |
| 210 |
} |
| 211 |
} |
| 212 |
function vboAddDepositeOverride() { |
| 213 |
var vbo_dep_type = document.getElementById('typedeposit'); |
| 214 |
var vbo_dep_oper = vbo_dep_type.options[vbo_dep_type.selectedIndex].text; |
| 215 |
var add_ovr_cont = '<div class="new_depovr_container">'+ |
| 216 |
'<span><span>'+vbo_depovr_defs.nights+'</span><input type="number" min="0" class="new_depovr_nights" value=""/></span>'+ |
| 217 |
'<span>' + (vbo_dep_oper != '%' ? '<span>'+vbo_dep_oper+'</span>' : '') + '<input type="number" min="0" step="any" class="new_depovr_amounts" value=""/>' + (vbo_dep_oper == '%' ? '<span>'+vbo_dep_oper+'</span>' : '') + '</span>'+ |
| 218 |
'<span><select class="new_depovr_more"><option value="">---</option><option value="more">'+vbo_depovr_defs.more+'</option></select></span>'+ |
| 219 |
'<span><button type="button" class="btn btn-danger" onclick="jQuery(this).closest(\'.new_depovr_container\').remove();">×</button></span>'+ |
| 220 |
'</div>'; |
| 221 |
var cur_ovrs = jQuery('.new_depovr_container'); |
| 222 |
if (cur_ovrs.length > 0) { |
| 223 |
cur_ovrs.last().after(add_ovr_cont); |
| 224 |
} else { |
| 225 |
jQuery('.vbo-info-overlay-content-depovr').append(add_ovr_cont); |
| 226 |
} |
| 227 |
} |
| 228 |
function vboApplyDepositeOverrides() { |
| 229 |
var respval = {"more": ""}; |
| 230 |
var nights_arr = jQuery('.new_depovr_nights'); |
| 231 |
var amounts_arr = jQuery('.new_depovr_amounts'); |
| 232 |
var more_arr = jQuery('.new_depovr_more'); |
| 233 |
nights_arr.each(function(k, v) { |
| 234 |
var use_nights = jQuery(this).val(); |
| 235 |
var use_amounts = jQuery(amounts_arr[k]).val(); |
| 236 |
if (isNaN(use_nights) || isNaN(use_amounts)) { |
| 237 |
console.log('skipping loop #'+k); |
| 238 |
return true; |
| 239 |
} |
| 240 |
respval[parseInt(use_nights)] = parseFloat(use_amounts); |
| 241 |
if (jQuery(more_arr[k]).val() == 'more') { |
| 242 |
respval['more'] = parseInt(use_nights); |
| 243 |
} |
| 244 |
}); |
| 245 |
jQuery('#depoverrides').val(JSON.stringify(respval)); |
| 246 |
vboHideDepositOverrides(); |
| 247 |
vboPopulateDepositOverrides(); |
| 248 |
} |
| 249 |
</script> |
| 250 |
|