event-tickets-with-ticket-scanner
Last commit date
2.7.0
1 year ago
3rd
1 year ago
css
1 year ago
img
1 year ago
languages
1 year ago
ticket
1 year ago
vendors
1 year ago
SASO_EVENTTICKETS.php
1 year ago
backend.js
1 year ago
changelog.txt
1 year ago
db.php
1 year ago
index.php
1 year ago
init_file.php
1 year ago
js_seatingplan.js
1 year ago
order_details.js
1 year ago
readme.txt
1 year ago
saso-eventtickets-validator.js
1 year ago
sasoEventtickets_AdminSettings.php
1 year ago
sasoEventtickets_Authtoken.php
1 year ago
sasoEventtickets_Base.php
1 year ago
sasoEventtickets_Core.php
1 year ago
sasoEventtickets_Frontend.php
1 year ago
sasoEventtickets_Messenger.php
1 year ago
sasoEventtickets_Options.php
1 year ago
sasoEventtickets_PDF.php
1 year ago
sasoEventtickets_Ticket.php
1 year ago
sasoEventtickets_TicketBadge.php
1 year ago
sasoEventtickets_TicketDesigner.php
1 year ago
sasoEventtickets_TicketQR.php
1 year ago
ticket_events.js
1 year ago
ticket_scanner.js
1 year ago
validator.js
1 year ago
wc_backend.js
1 year ago
wc_frontend.js
1 year ago
woocommerce-hooks.php
1 year ago
validator.js
556 lines
| 1 | function SasoEventticketsValidator(_myAjaxVar) { |
| 2 | const { __, _x, _n, sprintf } = wp.i18n; |
| 3 | let _self = this; |
| 4 | let PREMIUM = null; |
| 5 | var $ = jQuery; |
| 6 | let myAjax = typeof _myAjaxVar === "undefined" ? null : _myAjaxVar; |
| 7 | if (myAjax === null) return; |
| 8 | var _prefix = myAjax.divPrefix; |
| 9 | var _spinnerElemId = _prefix + 'spinner'; |
| 10 | var DATA = { |
| 11 | /*action: '',*/ |
| 12 | nonce: myAjax.nonce |
| 13 | }; |
| 14 | var SHORTCODES = {}; |
| 15 | if (myAjax.shortcode_attr && myAjax.shortcode_attr !== "") SHORTCODES = JSON.parse(myAjax.shortcode_attr); |
| 16 | var FATAL_ERROR = false; |
| 17 | var LAYOUT = null; |
| 18 | |
| 19 | var DIV_ID = myAjax.divId; |
| 20 | var DIV_MAIN = null; |
| 21 | var DATEN_URL = myAjax.url; |
| 22 | var PARAS = {}; |
| 23 | var CODE_ELEMENT; |
| 24 | var BUTTON_ELEMENT; |
| 25 | var ELEM_OUTPUT; |
| 26 | var OPTIONS = {list:[], mapKeys:{}}; |
| 27 | |
| 28 | function macheAjax(url, funcSuccess, funcError, doNotShowSpinner){ |
| 29 | let _spinnerElem; |
| 30 | if (!doNotShowSpinner) { |
| 31 | _spinnerElem = document.getElementById(_spinnerElemId); |
| 32 | if (!_spinnerElem) { |
| 33 | _spinnerElem = document.createElement('div'); |
| 34 | _spinnerElem.id = _spinnerElemId; |
| 35 | _spinnerElem.innerHTML = _getSpinnerHTML(); |
| 36 | _spinnerElem.style.zIndex = "1000"; |
| 37 | _spinnerElem.style.verticalAlign = "center"; |
| 38 | _spinnerElem.style.height = "30px"; |
| 39 | _spinnerElem.style.width = "100px"; |
| 40 | _spinnerElem.style.display = "none"; |
| 41 | _spinnerElem.style.position = "absolute"; |
| 42 | _spinnerElem.style.top = "0"; |
| 43 | _spinnerElem.style.left = "0"; |
| 44 | _spinnerElem.style.marginTop = "30%"; |
| 45 | _spinnerElem.style.marginLeft = "50%"; |
| 46 | document.body.appendChild(_spinnerElem); |
| 47 | } |
| 48 | _spinnerElem.style.display = "block"; |
| 49 | } |
| 50 | var xhttp = new XMLHttpRequest(); |
| 51 | xhttp.onreadystatechange = function() { |
| 52 | if (this.readyState === 4) { |
| 53 | if (this.status === 200) { |
| 54 | if (this.responseText === '505') { |
| 55 | if (funcError) funcError(this.responseText); |
| 56 | else alert("fehler 505"); |
| 57 | } else { |
| 58 | if (funcSuccess) funcSuccess(this.responseText); |
| 59 | } |
| 60 | } else if (this.status === 404) { |
| 61 | if (funcError) funcError(this.responseText, this.status); |
| 62 | } |
| 63 | if (_spinnerElem) _spinnerElem.style.display = "none"; |
| 64 | } |
| 65 | }; |
| 66 | xhttp.open("GET", url, true); |
| 67 | xhttp.send(url); |
| 68 | return xhttp; |
| 69 | }; |
| 70 | |
| 71 | function basics_ermittelJSPath(filename) { |
| 72 | let basePath = null; |
| 73 | var scripts = document.getElementsByTagName('script'); |
| 74 | for (var i = scripts.length - 1; i >= 0; --i) { |
| 75 | var src = scripts[i].src.split('?')[0]; |
| 76 | var l = src.length; |
| 77 | var length = filename.length; |
| 78 | if (src.substring(l - length) === filename) { |
| 79 | basePath = src.substring(0, l - length); |
| 80 | } |
| 81 | } |
| 82 | return basePath; |
| 83 | } |
| 84 | function _server_result_getError(error) { |
| 85 | var erg = error.trim().match(/#([0-9|a-z|A-Z]+)/); |
| 86 | let errorCode = 0; |
| 87 | if (erg) errorCode = trim(erg[1]); |
| 88 | return parseInt(errorCode, 10); |
| 89 | } |
| 90 | function basics_ermittelURLParameter() { |
| 91 | var parawerte = {}; |
| 92 | var teile; |
| 93 | if (window.location.search !== "") { |
| 94 | teile = window.location.search.substring(1).split("&"); |
| 95 | for (var a=0;a<teile.length;a++) |
| 96 | { |
| 97 | var pos = teile[a].indexOf("="); |
| 98 | if (pos < 0) { |
| 99 | parawerte[teile[a]] = true; |
| 100 | } else { |
| 101 | var key = teile[a].substring(0,pos); |
| 102 | parawerte[key] = decodeURIComponent(teile[a].substring(pos+1)); |
| 103 | } |
| 104 | } |
| 105 | } |
| 106 | return parawerte; |
| 107 | } |
| 108 | |
| 109 | function _getOptions_getByKey(key) { |
| 110 | if (OPTIONS.mapKeys[key]) return OPTIONS.mapKeys[key]; |
| 111 | return null; |
| 112 | } |
| 113 | function _getOptions_isActivatedByKey(key) { |
| 114 | let po = _getOptions_getByKey(key); |
| 115 | if (po == null || typeof po.value == "undefined") return false; |
| 116 | return po.value == 1; |
| 117 | } |
| 118 | function _getOptions_getLabelByKey(key) { |
| 119 | let po = _getOptions_getByKey(key); |
| 120 | if (po == null || typeof po.label == "undefined") return ""; |
| 121 | return po.label; |
| 122 | } |
| 123 | function _getOptions_getValByKey(key) { |
| 124 | let po = _getOptions_getByKey(key); |
| 125 | if (po == null || typeof po.value == "undefined") return ""; |
| 126 | return po.value == "" ? po['default'] : po.value; |
| 127 | } |
| 128 | |
| 129 | function _registerToCode(code, value) { |
| 130 | let url = DATEN_URL+'?action='+myAjax._action+'&a_sngmbh=registerToCode&data[code]='+encodeURIComponent(code)+'&data[value]='+encodeURIComponent(value)+'&t='+new Date().getTime(); |
| 131 | macheAjax(url, responseText=>{ |
| 132 | //let obj = JSON.parse(responseText); |
| 133 | $(ELEM_OUTPUT).html($('<center/>').text(_getOptions_getValByKey('textRegisterSaved'))); |
| 134 | }); |
| 135 | } |
| 136 | |
| 137 | function _renderJSRedirectBtn(label, url) { |
| 138 | let elem = $('<center style="margin-top:10px;">'); |
| 139 | $('<button/>') |
| 140 | .addClass('sngmbh_btn sngmbh_btn-primary sngmbh_mb-2') |
| 141 | .text(label) |
| 142 | .appendTo(elem) |
| 143 | .on('click', function() { |
| 144 | window.location.href = url; |
| 145 | }); |
| 146 | return elem; |
| 147 | } |
| 148 | function _renderRegisterBtn(cbf) { |
| 149 | let elem = $('<center style="margin-top:10px;">'); |
| 150 | $('<button/>') |
| 151 | .addClass('sngmbh_btn sngmbh_btn-primary sngmbh_mb-2') |
| 152 | .text(_getOptions_getValByKey('textRegisterButton')) |
| 153 | .appendTo(elem) |
| 154 | .on('click', function() { |
| 155 | if (_getOptions_isActivatedByKey('allowUserRegisterSkipValueQuestion')) { |
| 156 | _registerToCode($(CODE_ELEMENT).val().trim(), ''); |
| 157 | cbf && cbf(); |
| 158 | } else { |
| 159 | // zeige eingabemaske für email addresse |
| 160 | let wert = prompt(_getOptions_getValByKey('textRegisterValue')); |
| 161 | if (wert && wert.trim() !== "") { |
| 162 | _registerToCode($(CODE_ELEMENT).val().trim(), wert.trim()); |
| 163 | cbf && cbf(); |
| 164 | } |
| 165 | } |
| 166 | }); |
| 167 | return elem; |
| 168 | } |
| 169 | function __displayMessage(text) { |
| 170 | ELEM_OUTPUT.innerHTML = text; |
| 171 | BUTTON_ELEMENT.disabled = false; |
| 172 | CODE_ELEMENT.disabled = false; |
| 173 | } |
| 174 | |
| 175 | class Layout { |
| 176 | renderEingabeMaske() { |
| 177 | _renderEingabeMaske(); |
| 178 | if (_getOptions_isActivatedByKey('onlyForLoggedInWPuser') && !isUserLoggedIn()) { |
| 179 | |
| 180 | ELEM_OUTPUT.innerHTML = '<center><span style="color:red;">'+_getOptions_getValByKey('onlyForLoggedInWPuserMessage')+'</span></center>'; |
| 181 | |
| 182 | $(BUTTON_ELEMENT).prop("disabled", true); |
| 183 | $(CODE_ELEMENT).prop("disabled", true); |
| 184 | $(CODE_ELEMENT).attr("placeholder", _getOptions_getValByKey('onlyForLoggedInWPuserMessage')); |
| 185 | } else { |
| 186 | $(BUTTON_ELEMENT).prop("disabled", false); |
| 187 | $(CODE_ELEMENT).prop("disabled", false); |
| 188 | } |
| 189 | } |
| 190 | renderInputMaske(input_id,btn_id) { |
| 191 | let btnLabel = _getOptions_getValByKey('textValidationButtonLabel').replace(/</g,''); |
| 192 | let inputFieldPlaceholder = _getOptions_getValByKey('textValidationInputPlaceholder').replace(/"/g,''); |
| 193 | let textValidationBtnBgColor = _getOptions_getValByKey('textValidationBtnBgColor').replace(/"/g,'').replace(/;/g,''); |
| 194 | let textValidationBtnBrdColor = _getOptions_getValByKey('textValidationBtnBrdColor').replace(/"/g,'').replace(/;/g,''); |
| 195 | let textValidationBtnTextColor = _getOptions_getValByKey('textValidationBtnTextColor').replace(/"/g,'').replace(/;/g,''); |
| 196 | let t = '<div class="sngmbh_container">' |
| 197 | + '<div class="sngmbh_input-group sngmbh_mb-3">' |
| 198 | + '<input required type="text" class="sngmbh_form-control sngmbh_mb-2" data-input="'+input_id+'" placeholder="'+inputFieldPlaceholder+'">' |
| 199 | + '<div class="sngmbh_input-group-append">' |
| 200 | + '<button type="submit" data-btn="'+btn_id+'" class="sngmbh_btn sngmbh_btn-primary sngmbh_mb-2" style="' |
| 201 | + (textValidationBtnBgColor ? 'background-color:'+textValidationBtnBgColor+';' : '') |
| 202 | + (textValidationBtnBrdColor ? 'border-color:'+textValidationBtnBrdColor+';' : '') |
| 203 | + (textValidationBtnTextColor ? 'color:'+textValidationBtnTextColor+';' : '') |
| 204 | + '">'+btnLabel+'</button>' |
| 205 | + '</div>' |
| 206 | + '</div>' |
| 207 | + '</div>'; |
| 208 | return t; |
| 209 | } |
| 210 | getDefaultMessages() { |
| 211 | return { |
| 212 | 'msgCheck0':'Code not found', |
| 213 | 'msgCheck1':'Code confirmed', |
| 214 | 'msgCheck2':'Please contact support for further investigation', |
| 215 | 'msgCheck3':'Is registered to a user', |
| 216 | 'msgCheck4':'Code expired', |
| 217 | 'msgCheck5':'Code is already used', |
| 218 | 'msgCheck6':'Code and CVV is not valid', |
| 219 | 'msgCheck7':'Product is stolen' |
| 220 | }; |
| 221 | } |
| 222 | showCheckResult(obj) { |
| 223 | if (obj.success === false) { |
| 224 | //let error_code = _server_result_getError(obj.error.msg); |
| 225 | __displayMessage('<center><span style="color:red;font-weight:bold;">'+obj.data.msg+'</span></center>'); |
| 226 | //return alert(obj.data.msg); |
| 227 | return; |
| 228 | } |
| 229 | this.displayCheckResult(obj); |
| 230 | |
| 231 | function __userJSRedirectActiv() { |
| 232 | if (_getOptions_isActivatedByKey('userJSRedirectActiv')) { |
| 233 | //if (obj.data.valid === 1) { |
| 234 | if (typeof obj.data.retObject !== "undefined" && typeof obj.data.retObject.userJSRedirect !== "undefined") { |
| 235 | if (obj.data.retObject.userJSRedirect.url !== "") { |
| 236 | if (obj.data.retObject.userJSRedirect.btnlabel && obj.data.retObject.userJSRedirect.btnlabel !== "") { |
| 237 | // button mit redirect |
| 238 | $(ELEM_OUTPUT).append(_renderJSRedirectBtn(obj.data.retObject.userJSRedirect.btnlabel, obj.data.retObject.userJSRedirect.url)); |
| 239 | } else { |
| 240 | // redirect |
| 241 | window.location.href = obj.data.retObject.userJSRedirect.url; |
| 242 | } |
| 243 | } |
| 244 | } |
| 245 | //} |
| 246 | } |
| 247 | } |
| 248 | |
| 249 | if (_getOptions_isActivatedByKey('allowUserRegisterCode')) { |
| 250 | if (obj.data.valid === 1) { |
| 251 | $(ELEM_OUTPUT).append(_renderRegisterBtn(__userJSRedirectActiv)); |
| 252 | } |
| 253 | } else { |
| 254 | __userJSRedirectActiv(); |
| 255 | } |
| 256 | } |
| 257 | displayCheckResult(obj) { |
| 258 | let valid = obj.data.valid; |
| 259 | let default_msgs = this.getDefaultMessages(); |
| 260 | let msgs = default_msgs; |
| 261 | if (typeof myAjax._messages !== "undefined") msgs = myAjax._messages; |
| 262 | if (obj.data.messages) msgs = obj.data.messages; |
| 263 | |
| 264 | CODE_ELEMENT.classList.remove("sngmbh_is-valid"); |
| 265 | CODE_ELEMENT.classList.remove("sngmbh_is-invalid"); |
| 266 | |
| 267 | let _isOk = true; |
| 268 | let _text = ''; |
| 269 | let _textColor = 'red'; |
| 270 | let _textWeight = 'bold'; |
| 271 | |
| 272 | if (obj.data.retObject && obj.data.retObject.message) { |
| 273 | if (valid === 1) _textColor = 'green'; |
| 274 | _isOk = obj.data.retObject.message.ok; |
| 275 | _text = obj.data.retObject.message.text; |
| 276 | if (typeof obj.data.retObject.message.color !== "undefined") _textColor = obj.data.retObject.message.color; |
| 277 | if (typeof obj.data.retObject.message.weight !== "undefined") _textWeight = obj.data.retObject.message.weight; |
| 278 | } else { |
| 279 | if (valid === 1) { |
| 280 | _textColor = 'green'; |
| 281 | _text = (msgs.msgCheck1.trim() !== "" ? msgs.msgCheck1 : default_msgs.msgCheck1); |
| 282 | } else if (valid === 2) { |
| 283 | _isOk = false; |
| 284 | _text = (msgs.msgCheck2.trim() !== "" ? msgs.msgCheck2 : default_msgs.msgCheck2); |
| 285 | } else if (valid === 3) { |
| 286 | _text = (msgs.msgCheck3.trim() !== "" ? msgs.msgCheck3 : default_msgs.msgCheck3); |
| 287 | } else if (valid === 4) { |
| 288 | _text = (msgs.msgCheck4.trim() !== "" ? msgs.msgCheck4 : default_msgs.msgCheck4); |
| 289 | } else if (valid === 5) { |
| 290 | _text = (msgs.msgCheck5.trim() !== "" ? msgs.msgCheck5 : default_msgs.msgCheck5); |
| 291 | } else if (valid === 6) { |
| 292 | _isOk = false; |
| 293 | _text = (typeof msgs.msgCheck6 !== "undefined" && msgs.msgCheck6.trim() !== "" ? msgs.msgCheck6 : default_msgs.msgCheck6); |
| 294 | } else if (valid === 7) { |
| 295 | _isOk = false; |
| 296 | _text = default_msgs.msgCheck7; |
| 297 | } else { |
| 298 | _isOk = false; |
| 299 | _text = (msgs.msgCheck0.trim() !== "" ? msgs.msgCheck0 : default_msgs.msgCheck0); |
| 300 | } |
| 301 | } |
| 302 | |
| 303 | CODE_ELEMENT.classList.add(_isOk ? "sngmbh_is-valid" : "sngmbh_is-invalid"); |
| 304 | let text = '<center><span style="'+(_textColor != "" ? 'color:'+_textColor : '')+';font-weight:'+_textWeight+';">'+_text+'</span></center>'; |
| 305 | |
| 306 | __displayMessage(text); |
| 307 | } |
| 308 | } |
| 309 | |
| 310 | function _renderEingabeMaske() { |
| 311 | let btn_id = _prefix + 'btn'; |
| 312 | let input_id = _prefix + 'code'; |
| 313 | DIV_MAIN.innerHTML = ''; |
| 314 | |
| 315 | let elem = document.createElement("div"); |
| 316 | elem.className = "sngmbh_container"; |
| 317 | if (!SHORTCODES.inputid) { |
| 318 | elem.innerHTML = LAYOUT.renderInputMaske(input_id, btn_id); |
| 319 | } |
| 320 | |
| 321 | if (!SHORTCODES.outputid) { |
| 322 | ELEM_OUTPUT = document.createElement("div"); |
| 323 | elem.appendChild(ELEM_OUTPUT); |
| 324 | DIV_MAIN.appendChild(elem); |
| 325 | } else { |
| 326 | ELEM_OUTPUT = document.querySelector('[id="'+SHORTCODES.outputid+'"]'); |
| 327 | if (!ELEM_OUTPUT) alert("Event Ticket Code validator: Output element cannot be found. Please check your outputid-value on the shortcode"); |
| 328 | } |
| 329 | |
| 330 | if (!SHORTCODES.inputid) { |
| 331 | CODE_ELEMENT = document.querySelector('[data-input="'+input_id+'"]'); |
| 332 | } else { |
| 333 | CODE_ELEMENT = document.querySelector('[id="'+SHORTCODES.inputid+'"]'); |
| 334 | if (!CODE_ELEMENT) alert("Event Ticket Code Generator: Input element cannot be found. Please check your inputid-value on the shortcode"); |
| 335 | } |
| 336 | |
| 337 | if (typeof PARAS.code !== "undefined") { |
| 338 | let c = PARAS.code.trim(); |
| 339 | let cs = PARAS.code.split(":"); |
| 340 | CODE_ELEMENT.value = encodeURIComponent(cs[0]); |
| 341 | if (cs.length > 1) { |
| 342 | CODE_ELEMENT.value = CODE_ELEMENT.value + ":" + encodeURIComponent(cs[1]); |
| 343 | } |
| 344 | } |
| 345 | |
| 346 | CODE_ELEMENT.onchange = function() { |
| 347 | ELEM_OUTPUT.innerHTML = ""; |
| 348 | CODE_ELEMENT.classList.remove("is-valid"); |
| 349 | CODE_ELEMENT.classList.remove("is-invalid"); |
| 350 | } |
| 351 | CODE_ELEMENT.onkeyup = function() { |
| 352 | ELEM_OUTPUT.innerHTML = ""; |
| 353 | CODE_ELEMENT.classList.remove("is-valid"); |
| 354 | CODE_ELEMENT.classList.remove("is-invalid"); |
| 355 | } |
| 356 | CODE_ELEMENT.onkeydown = function() { |
| 357 | if (event.key === 'Enter') { |
| 358 | BUTTON_ELEMENT.click(); |
| 359 | } |
| 360 | } |
| 361 | |
| 362 | if (!SHORTCODES.triggerid) { |
| 363 | BUTTON_ELEMENT = document.querySelector('[data-btn="'+btn_id+'"]'); |
| 364 | } else { |
| 365 | BUTTON_ELEMENT = document.querySelector('[id="'+SHORTCODES.triggerid+'"]'); |
| 366 | if (!BUTTON_ELEMENT) alert("Event Ticket Code Generator: Trigger not found. Please check your triggerid-value on the shortcode"); |
| 367 | } |
| 368 | |
| 369 | BUTTON_ELEMENT.onclick = function() { |
| 370 | let code = CODE_ELEMENT.value.trim(); |
| 371 | if (code === "") { |
| 372 | CODE_ELEMENT.select(); |
| 373 | return; |
| 374 | } |
| 375 | if (SHORTCODES.jspre) { |
| 376 | let _retcode = _execShortCodeJSFunction(SHORTCODES.jspre, code); |
| 377 | if (_retcode) code = _retcode; |
| 378 | } |
| 379 | |
| 380 | BUTTON_ELEMENT.disabled = true; |
| 381 | CODE_ELEMENT.disabled = true; |
| 382 | ELEM_OUTPUT.innerHTML = '<center>'+_getSpinnerHTML()+'</center>'; |
| 383 | |
| 384 | function __callCheckService(cvv) { |
| 385 | let url = DATEN_URL+'?action='+myAjax._action+'&a_sngmbh=checkCode&data[code]='+encodeURIComponent(code); |
| 386 | if (cvv && cvv !== "") url += '&data[cvv]='+encodeURIComponent(cvv); |
| 387 | url += '&t='+new Date().getTime(); |
| 388 | macheAjax(url, function(responseText) { |
| 389 | let obj = JSON.parse(responseText); |
| 390 | if (obj.data.valid === 6 && !cvv) { // cvv |
| 391 | let value = prompt(__("Please enter your CVV for this ticket", 'event-tickets-with-ticket-scanner')); |
| 392 | if (value) { |
| 393 | __callCheckService(value); |
| 394 | return; |
| 395 | } |
| 396 | } |
| 397 | if (SHORTCODES.jsafter) _execShortCodeJSFunction(SHORTCODES.jsafter, obj.data); |
| 398 | LAYOUT.showCheckResult(obj); |
| 399 | }, null, true); |
| 400 | } |
| 401 | let cvv; |
| 402 | if (code.match(/:/)) { |
| 403 | let parts = code.split(':'); |
| 404 | code = parts[0].trim(); |
| 405 | cvv = parts[1].trim(); |
| 406 | } |
| 407 | __callCheckService(cvv); |
| 408 | } |
| 409 | } |
| 410 | |
| 411 | function _execShortCodeJSFunction(fktname, paras) { |
| 412 | var fn = window[fktname]; |
| 413 | if (typeof fn === "function") return fn(paras); |
| 414 | else alert('function '+fktname+' not found. Please check your shortcode parameters'); |
| 415 | } |
| 416 | |
| 417 | function checkIfCssRuleExists(identifier) { |
| 418 | let styles = document.styleSheets; |
| 419 | for(var a=0;a<styles.length;a++) { |
| 420 | try { |
| 421 | let rules = styles[a].cssRules; |
| 422 | for(var b=0;b<rules.length;b++){ |
| 423 | if (rules[b].cssText.match(identifier)) return true; |
| 424 | }; |
| 425 | } catch(e) {} |
| 426 | } |
| 427 | return false; |
| 428 | } |
| 429 | function addStyleCode(content) { |
| 430 | let c = document.createElement('style'); |
| 431 | c.innerHTML = content; |
| 432 | document.getElementsByTagName("head")[0].appendChild(c); |
| 433 | } |
| 434 | function addStyleTag(url, id, onloadfkt, attrListe, loadLatest) { |
| 435 | var script = document.createElement('link'); |
| 436 | script.type = 'text/css'; |
| 437 | script.rel = "stylesheet"; |
| 438 | let myId = id; |
| 439 | if (!myId) myId = url; |
| 440 | if (document.getElementById(id) && document.getElementById(id).src === url) { |
| 441 | onloadfkt && onloadfkt(); |
| 442 | return; // prevent re-adding the same tag |
| 443 | } |
| 444 | script.id = id; |
| 445 | if (attrListe) for(var attr in attrListe) script.setAttribute(attr, attrListe[attr]); |
| 446 | script.href = url; |
| 447 | if (loadLatest) script.href += '?t='+new Date().getTime(); |
| 448 | if (typeof onloadfkt !== "undefined") script.onload = onloadfkt; |
| 449 | document.getElementsByTagName("head")[0].appendChild(script); |
| 450 | } |
| 451 | |
| 452 | function addScriptTag(url, id, onloadfkt, attrListe, loadLatest) { |
| 453 | var head = document.getElementsByTagName("head")[0]; |
| 454 | var script = document.createElement('script'); |
| 455 | script.type = 'text/javascript'; |
| 456 | let myId = id; |
| 457 | if (!myId) myId = url; |
| 458 | if (document.getElementById(id) && document.getElementById(id).src === url) { |
| 459 | onloadfkt && onloadfkt(); |
| 460 | return; // prevent re-adding the same tag |
| 461 | } |
| 462 | script.id = id; |
| 463 | if (attrListe) for(var attr in attrListe) script.setAttribute(attr, attrListe[attr]); |
| 464 | script.src = url; |
| 465 | if (loadLatest) script.src += '?t='+new Date().getTime(); |
| 466 | if (typeof onloadfkt !== "undefined") script.onload = onloadfkt; |
| 467 | head.appendChild(script); |
| 468 | } |
| 469 | |
| 470 | function getLabelPremiumOnly() { |
| 471 | return "[PREMIUM ONLY]"; |
| 472 | } |
| 473 | |
| 474 | function _getSpinnerHTML() { |
| 475 | return '<span class="lds-dual-ring"></span>'; |
| 476 | } |
| 477 | |
| 478 | function isPremium() { |
| 479 | return myAjax._isPremium == "1" || myAjax._isPremium === true; |
| 480 | } |
| 481 | function isUserLoggedIn() { |
| 482 | return myAjax._isUserLoggedin == "1" || myAjax._isUserLoggedin === true; |
| 483 | } |
| 484 | |
| 485 | function getHelperFunktions() { |
| 486 | return { |
| 487 | _getSpinnerHTML:_getSpinnerHTML, |
| 488 | _macheAjax:macheAjax, |
| 489 | _basics_ermittelJSPath:basics_ermittelJSPath, |
| 490 | _basics_ermittelURLParameter:basics_ermittelURLParameter, |
| 491 | _renderEingabeMaske:_renderEingabeMaske, |
| 492 | _addScriptTag:addScriptTag, |
| 493 | _addStyleCode:addStyleCode, |
| 494 | _checkIfCssRuleExists:checkIfCssRuleExists, |
| 495 | _getCODE_ELEMENT:function(){return CODE_ELEMENT;}, |
| 496 | _getELEM_OUTPUT:function() {return ELEM_OUTPUT;}, |
| 497 | _getBUTTON_ELEMENT:function(){return BUTTON_ELEMENT;}, |
| 498 | _getBasicSelf:function() { return _self;}, |
| 499 | _getLAYOUT:function(){ return LAYOUT;}, |
| 500 | _getDIV_MAIN:function(){ return DIV_MAIN;}, |
| 501 | _getOptions_getByKey:_getOptions_getByKey, |
| 502 | _getOptions_isActivatedByKey:_getOptions_isActivatedByKey, |
| 503 | _getOptions_getLabelByKey:_getOptions_getLabelByKey, |
| 504 | _getOptions_getValByKey:_getOptions_getValByKey |
| 505 | }; |
| 506 | } |
| 507 | |
| 508 | function init() { |
| 509 | PARAS = basics_ermittelURLParameter(); |
| 510 | if (!checkIfCssRuleExists('lds-dual-ring')) addStyleCode('.lds-dual-ring {display:inline-block;width:64px;height:64px;}.lds-dual-ring:after {content:" ";display:block;width:46px;height:46px;margin:1px;border-radius:50%;border:5px solid #fff;border-color:#2e74b5 transparent #2e74b5 transparent;animation:lds-dual-ring 0.6s linear infinite;}@keyframes lds-dual-ring {0% {transform: rotate(0deg);}100% {transform: rotate(360deg);}}'); |
| 511 | addStyleTag(myAjax._plugin_home_url+'/css/styles.css'); |
| 512 | //addStyleTag('https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css'); |
| 513 | //addStyleTag('https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css'); |
| 514 | //addScriptTag('https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js'); |
| 515 | |
| 516 | LAYOUT = new Layout(); |
| 517 | |
| 518 | if (DIV_MAIN == null) { |
| 519 | DIV_MAIN = document.getElementById(DIV_ID); |
| 520 | if (DIV_MAIN == null) { |
| 521 | DIV_MAIN = document.createElement('div'); |
| 522 | document.getElementsByTagName('body')[0].appendChild(DIV_MAIN); |
| 523 | } |
| 524 | } |
| 525 | |
| 526 | function _init() { |
| 527 | LAYOUT.renderEingabeMaske(); |
| 528 | //_renderEingabeMaske(); |
| 529 | } |
| 530 | function _initPremium() { |
| 531 | if (isPremium() && myAjax._premJS !== "") { |
| 532 | if (window.SasoEventticketsValidatorPremium) { |
| 533 | PREMIUM = new SasoEventticketsValidatorPremium(myAjax, getHelperFunktions()); |
| 534 | _init(); |
| 535 | } |
| 536 | } else { |
| 537 | _init(); |
| 538 | } |
| 539 | } |
| 540 | |
| 541 | let url = DATEN_URL+'?action='+myAjax._action+'&a_sngmbh=getOptions&t='+new Date().getTime(); |
| 542 | macheAjax(url, function(responseText) { |
| 543 | let optionData = JSON.parse(responseText); |
| 544 | OPTIONS.list = optionData.data; |
| 545 | for (let a=0;a<OPTIONS.list.length;a++) { |
| 546 | let item = OPTIONS.list[a]; |
| 547 | OPTIONS.mapKeys[item.key] = item; |
| 548 | } |
| 549 | _initPremium(); |
| 550 | },null,true); |
| 551 | } |
| 552 | |
| 553 | init(); |
| 554 | //window.BASIC = getHelperFunktions(); |
| 555 | } |
| 556 | Ajax_sasoEventtickets && SasoEventticketsValidator(Ajax_sasoEventtickets); |