1/* globals I18n */ 2/* globals Booking_App_Calendar */ 3/* globals Booking_App_ObjectsControl */ 4/* globals Booking_App_XMLHttp */ 5/* globals Booking_manage */ 6/* globals Booking_Package_Input */ 7/* Booking_Package_Elements */ 8 9 function Booking_Package_Member(prefix, plugin_name, calendarAccount, setting, subscription, url, nonce, action, reservation_info, booking_package_dictionary, debug) { 10 11 var object = this; 12 this._debug = debug; 13 this._console = {}; 14 this._console.log = debug.getConsoleLog(); 15 16 this._i18n = new I18n(null); 17 this._i18n.setDictionary(booking_package_dictionary); 18 this._booking_package_dictionary = booking_package_dictionary; 19 this._prefix = prefix; 20 this._plugin_name = plugin_name; 21 this._calendarAccount = calendarAccount; 22 this._setting = setting; 23 this._reservation_info = reservation_info; 24 this._subscriptions = subscription; 25 //this._subscriptions = null; 26 this._url = url; 27 this._nonce = nonce; 28 this._wp_rest_nonce = null; 29 this._action = action; 30 this._function = {name: "root", post: {}}; 31 this._top = 0; 32 this._calendarAccountList = {}; 33 this._bookingVerificationCode = false; 34 if (parseInt(this._setting.check_email_for_member) == 1) { 35 36 this._bookingVerificationCode = true; 37 38 } 39 this._locale = reservation_info.locale; 40 this._numberFormatter = false; 41 if (parseInt(reservation_info.numberFormatter) === 1) { 42 43 this._numberFormatter = true; 44 45 } 46 47 if (reservation_info.wp_rest_nonce != null) { 48 49 this._wp_rest_nonce = reservation_info.wp_rest_nonce; 50 51 } 52 53 this._currency = reservation_info.currency; 54 this._currencies = reservation_info.currencies; 55 this._currency_info = {locale: this._locale, currency: this._currency, info: this._currencies[this._currency]}; 56 this._defaultName = {'user_login': this._i18n.get('Username'), 'user_email': this._i18n.get('Email'), 'user_pass': this._i18n.get('Password')}; 57 this._userFormFields = reservation_info.userFormFields; 58 object._console.log('_bookingVerificationCode = ' + this._bookingVerificationCode); 59 object._console.log('this._plugin_name = ' + this._plugin_name); 60 object._console.log(setting); 61 object._console.log(booking_package_dictionary); 62 63 this._startOfWeek = this._calendarAccount.startOfWeek; 64 this._dateFormat = reservation_info.dateFormat; 65 this._positionOfWeek = reservation_info.positionOfWeek; 66 this._positionTimeDate = reservation_info.positionTimeDate; 67 this._googleReCAPTCHA = reservation_info.googleReCAPTCHA; 68 this._googleReCAPTCHA_token = null; 69 this._hCaptcha = reservation_info.hCaptcha; 70 this._hCaptcha_token = null; 71 this._lockBookingButton = false; 72 object._console.log(this._googleReCAPTCHA); 73 object._console.log(this._hCaptcha); 74 this._weekName = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; 75 this._calendar = new Booking_App_Calendar(this._weekName, this._dateFormat, this._positionOfWeek, this._positionTimeDate, this._startOfWeek, this._i18n, this._debug); 76 this._servicesControl = new Booking_App_ObjectsControl(reservation_info, booking_package_dictionary); 77 this._calendar.setClock(reservation_info.clock); 78 //this._hotel = new Hotel(this._currency, this._weekName, this._dateFormat, this._positionOfWeek, this._startOfWeek, booking_package_dictionary, this._debug); 79 this._booking_manage = new Booking_manage(reservation_info, booking_package_dictionary); 80 this._input = new Booking_Package_Input(this._debug); 81 this._element = new Booking_Package_Elements(this._debug); 82 for (var key in reservation_info.calendarAccountList) { 83 84 var account = reservation_info.calendarAccountList[key]; 85 object._calendarAccountList[parseInt(account.key)] = account; 86 87 } 88 89 for (var i = 0; i < this._userFormFields.length; i++) { 90 91 const field = this._userFormFields[i]; 92 if (this._defaultName.hasOwnProperty(field.id) === true) { 93 94 field.name = this._defaultName[field.id]; 95 96 } 97 98 99 } 100 101 } 102 /** 103 Booking_Package_Member.prototype.setBookingVerificationCode = function(bookingVerificationCode) { 104 105 var object = this; 106 object._console.log("bookingVerificationCode = " + bookingVerificationCode); 107 if (bookingVerificationCode == 0) { 108 109 object._bookingVerificationCode = false;
110 111 } 112 113 } 114 **/ 115 Booking_Package_Member.prototype.setFunction = function(name, post){ 116 117 this._function = {name: name, post: post}; 118 119 } 120 121 Booking_Package_Member.prototype.getFunction = function(){ 122 123 return this._function; 124 125 } 126 127 Booking_Package_Member.prototype.setTop = function(top) { 128 129 this._top = top; 130 131 } 132 133 Booking_Package_Member.prototype.setSubscription = function(subscriptions){ 134 135 this._subscriptions = subscriptions; 136 137 } 138 139 Booking_Package_Member.prototype.setNewNonce = function(data) { 140 141 if (data.new_nonce != null) { 142 143 this._nonce = data.new_nonce; 144 145 } 146 147 } 148 149 Booking_Package_Member.prototype.setGoogleReCAPTCHA = function(id, parentID, postion) { 150 151 var object = this; 152 var parentPanel = document.getElementById(parentID); 153 var oldPanel = document.getElementById(id); 154 if (oldPanel != null) { 155 156 parentPanel.removeChild(oldPanel); 157 158 } 159 160 var captchaElement = document.createElement('p'); 161 captchaElement.id = id; 162 captchaElement.setAttribute('class', 'row row_reCAPTCHA g-recaptcha'); 163 captchaElement.setAttribute('data-callback', 'reCAPTCHA_by_google_for_booking_package'); 164 captchaElement.setAttribute('data-expired-callback', 'expired_reCAPTCHA_by_google_for_booking_package'); 165 captchaElement.setAttribute('data-error-callback', 'error_reCAPTCHA_by_google_for_booking_package'); 166 //parentPanel.appendChild(captchaElement); 167 parentPanel.insertAdjacentElement(postion, captchaElement); 168 object._console.log(captchaElement); 169 170 var timer = setInterval(function(){ 171 172 object._googleReCAPTCHA.reCaptcha = grecaptcha.render( 173 id, 174 { 175 sitekey: object._googleReCAPTCHA.key, 176 } 177 ); 178 clearInterval(timer); 179 180 }, 500); 181 182 183 } 184 185 Booking_Package_Member.prototype.memberOperation = function(top){ 186 187 var object = this; 188 object._top = top; 189 var calendarAccount = object._calendarAccount; 190 var memberSetting = object._setting; 191 var subscriptions = object._subscriptions; 192 object._console.log(memberSetting); 193 object._console.log(calendarAccount); 194 object._console.log(subscriptions); 195 object.hiddenLoginErrorMessage(); 196 197 if (parseInt(memberSetting.function_for_member) == 1) { 198 199 /** 200 var user_status_field = document.getElementById("booking-package-user_status_field"); 201 user_status_field.textContent = null; 202 user_status_field.classList.add("hidden_panel"); 203 **/ 204 205 document.getElementById('booking-package-user-profile').textContent = null; 206 var myBookingDetailsFroVisitor = document.getElementById('booking-package_myBookingDetailsFroVisitor'); 207 var login = document.getElementById("booking-package-login"); 208 var logout = document.getElementById("booking-package-logout"); 209 var register = document.getElementById("booking-package-register"); 210 var edit = document.getElementById("booking-package-edit"); 211 var bookingHistory = document.getElementById("booking-package-bookedHistory"); 212 var delete_button = document.getElementById("booking-package-edit_user_delete_button"); 213 var subscribed = document.getElementById("booking-package-subscribed"); 214 215 var edit_form = document.getElementById('booking-package-user-edit-form'); 216 var login_form = document.getElementById("booking-package-loginform"); 217 var user_form = document.getElementById("booking-package-user-form"); 218 var subscription_form = document.getElementById("booking-package-subscription_form"); 219 var subscribed_panel = document.getElementById("booking-package-subscribed_panel");
220 var booking_calendar = document.getElementById("booking-package"); 221 var myBookingHistory = document.getElementById("booking-package_myBookingHistory"); 222 var myBookingDetails = document.getElementById("booking-package_myBookingDetails"); 223 var login_submit = login_form.getElementsByClassName("login-submit")[0]; 224 var login_input = login_submit.getElementsByTagName("input"); 225 //var pElements = login_form.getElementsByClassName("login-submit")[0]; 226 227 const activeChildren = login_form.querySelectorAll('.login-username, .login-password, .login-remember'); 228 activeChildren.forEach(child => { 229 230 const className = child.getAttribute('class'); 231 let label = null; 232 let inputElement = null; 233 if (className === 'login-username' || className === 'login-password') { 234 235 label = child.children[0].textContent; 236 inputElement = child.children[1]; 237 let namePanel = object.create('div', label, null, null, null, className + ' name', null); 238 let valuePanel = object.create('div', null, [inputElement], null, null, 'value', null); 239 let rowPanel = object.create('div', null, [namePanel, valuePanel], null, null, 'row', null); 240 login_form.appendChild(rowPanel); 241 242 } else { 243 244 label = child.children[0]; 245 let rowPanel = object.create('div', null, [label], null, null, className + ' row', null); 246 login_form.appendChild(rowPanel); 247 248 } 249 250 if (child.parentNode === login_form) { 251 252 login_form.removeChild(child); 253 254 } 255 256 }); 257 login_form.appendChild(login_submit); 258 259 var register_user_button = document.getElementById("booking-package-register_user_button"); 260 if (document.getElementById("wp-submit") != null) { 261 262 document.getElementById("wp-submit").classList.add('login_button'); 263 264 265 } 266 267 var login_button = null; 268 login_submit.id = object._prefix + 'login_submit'; 269 270 if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) { 271 272 if (object._googleReCAPTCHA.v == 'v2') { 273 274 object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_login', object._prefix + 'login_submit', 'beforebegin'); 275 object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_register', 'booking-package-register_user_button', 'beforebegin'); 276 277 } else { 278 279 var reCAPTCHA = document.createElement('input'); 280 reCAPTCHA.id = object._prefix + 'reCAPTCHA_login'; 281 reCAPTCHA.type = 'hidden'; 282 reCAPTCHA.name = 'action_login'; 283 reCAPTCHA.value = 'reCAPTCHA_login_v3'; 284 login_form.appendChild(reCAPTCHA); 285 286 } 287 288 } 289 290 if (object._hCaptcha.status === true) { 291 292 var hCaptcha = document.createElement('div'); 293 hCaptcha.id = object._prefix + 'hCaptcha_for_login'; 294 hCaptcha.setAttribute('class', 'row row_reCAPTCHA g-recaptcha'); 295 hCaptcha.setAttribute('data-sitekey', object._hCaptcha.key); 296 hCaptcha.setAttribute('data-theme', object._hCaptcha.theme); 297 hCaptcha.setAttribute('data-size', object._hCaptcha.size); 298 hCaptcha.setAttribute('data-callback', 'hCaptcha_for_booking_package'); 299 hCaptcha.setAttribute('data-expired-callback', 'expired_hCaptcha_for_booking_package'); 300 hCaptcha.setAttribute('data-error-callback', 'error_hCaptcha_for_booking_package'); 301 login_submit.insertAdjacentElement('beforebegin', hCaptcha); 302 /** 303 hcaptcha.render( 304 object._prefix + 'hCaptcha_for_login', 305 { 306 sitekey: object._hCaptcha.key, 307 size: object._hCaptcha.size, 308 theme: object._hCaptcha.theme, 309 } 310 ); 311 **/ 312 var hCaptcha_for_register = document.createElement('div'); 313 hCaptcha_for_register.id = object._prefix + 'hCaptcha_for_register'; 314 hCaptcha_for_register.setAttribute('class', 'row row_reCAPTCHA g-recaptcha'); 315 hCaptcha_for_register.setAttribute('data-sitekey', object._hCaptcha.key); 316 hCaptcha_for_register.setAttribute('data-theme', object._hCaptcha.theme); 317 hCaptcha_for_register.setAttribute('data-size', object._hCaptcha.size); 318 hCaptcha_for_register.setAttribute('data-callback', 'hCaptcha_for_booking_package'); 319 hCaptcha_for_register.setAttribute('data-expired-callback', 'expired_hCaptcha_for_booking_package'); 320 hCaptcha_for_register.setAttribute('data-error-callback', 'error_hCaptcha_for_booking_package'); 321 register_user_button.insertAdjacentElement('beforebegin', hCaptcha_for_register); 322 /** 323 hcaptcha.render( 324 object._prefix + 'hCaptcha_for_register', 325 { 326 sitekey: object._hCaptcha.key, 327 size: object._hCaptcha.size, 328 theme: object._hCaptcha.theme, 329 } 330 ); 331 **/ 332 333 var timer = setInterval(function(){ 334 335 object._hCaptcha.hCaptchaID_login = hcaptcha.render( 336 object._prefix + 'hCaptcha_for_login', 337 { 338 sitekey: object._hCaptcha.key, 339 size: object._hCaptcha.size, 340 theme: object._hCaptcha.theme, 341 } 342 ); 343 344 object._hCaptcha.hCaptchaID_register = hcaptcha.render( 345 object._prefix + 'hCaptcha_for_register', 346 { 347 sitekey: object._hCaptcha.key, 348 size: object._hCaptcha.size, 349 theme: object._hCaptcha.theme, 350 } 351 ); 352 clearInterval(timer); 353 354 }, 500); 355 356 object.lockBooking(true, null, 'hCaptcha'); 357 358 } 359 360 361 object._console.log(login_input); 362 for (var i = 0;
362 i < login_input.length; i++) { 363 364 var input = login_input[i]; 365 if (input.type == "submit") { 366 367 login_button = input; 368 input.value = object._i18n.get("Sign In"); 369 object._console.log(input); 370 object._console.log(object._booking_package_dictionary); 371 break; 372 373 } 374 375 } 376 377 var inputFields = [...login_form.getElementsByTagName('input'), ...user_form.getElementsByTagName('input'), ...edit_form.getElementsByTagName('input')]; 378 for (var i = 0; i < inputFields.length; i++) { 379 380 var input = inputFields[i]; 381 if (input.type == 'text' || input.type == 'password') { 382 383 input.classList.add('form_text'); 384 385 } 386 387 } 388 389 var pluginName = document.getElementById(this._prefix + "pluginName"); 390 if(pluginName == null){ 391 392 pluginName = document.createElement("input"); 393 pluginName.id = this._prefix + "pluginName"; 394 pluginName.type = "hidden"; 395 pluginName.name = "pluginName"; 396 pluginName.value = "booking-package"; 397 login_form.appendChild(pluginName); 398 399 } 400 401 if(parseInt(subscriptions.subscribed) == 1){ 402 403 subscription_form = null; 404 //subscribed_panel = null; 405 406 } 407 408 if(subscriptions.status == 0){ 409 410 subscribed.classList.add("hidden_panel"); 411 subscribed = document.createElement("div"); 412 413 } 414 415 var login_error_panel = document.createElement('p'); 416 login_error_panel.setAttribute('class', 'login_error hidden_panel'); 417 login_form.insertAdjacentElement('afterbegin', login_error_panel); 418 419 var login_close_button = document.createElement('div'); 420 421 if (parseInt(memberSetting.reject_non_membder) == 0) { 422 423 login_close_button.setAttribute('class', 'material-icons closeButton'); 424 login_close_button.textContent = 'close'; 425 login_form.insertAdjacentElement('afterbegin', login_close_button); 426 427 } 428 429 if (parseInt(memberSetting.lost_password) == 1) { 430 431 const lost_password = document.createElement('a'); 432 lost_password.textContent = object._i18n.get('Lost your password?'); 433 lost_password.href = memberSetting.lost_password_url; 434 login_form.appendChild(lost_password); 435 436 } 437 438 login_form.onsubmit = function(event) { 439 440 event.preventDefault(); 441 object._console.log(this); 442 var user_login = document.getElementById('user_login').value; 443 var user_password = document.getElementById('user_pass').value; 444 var remember = 0; 445 if (document.getElementById('rememberme').checked == 1) { 446 447 remember = 1; 448 449 } 450 451 452 if (user_login.length == 0 || user_password.length == 0) { 453 454 return false; 455 456 } 457 458 var post = {mode: 'user_login_for_frontend', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, user_login: user_login, user_password: user_password, remember: remember, plugin: 'booking-package'}; 459 var sendToServer = function() { 460 461 object._console.log(post); 462 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 463 bookingBlockPanel.classList.remove("hidden_panel"); 464 new Booking_App_XMLHttp(object._url, post, false, function(response) { 465 466 object.setNewNonce(response); 467 if (response.status == 'success') { 468 469 window.location.href = object._reservation_info.permalink; 470 471 } else { 472 473 login_error_panel.classList.remove('hidden_panel'); 474 login_error_panel.textContent = null; 475 login_error_panel.insertAdjacentHTML('afterbegin', response.message); 476 var links = login_error_panel.getElementsByTagName('a'); 477 if (links.length > 0) { 478 479 for (var i = 0; i < links.length; i++) { 480 481 var link = links[i]; 482 object._console.log(link); 483 if (link.search.length == 0) { 484 485 link.search += '?plugin=booking-package'; 486 487 } else { 488 489 link.search += '&plugin=booking-package'; 490 491 } 492 493 object._console.log(link.search); 494 495 } 496 497 } 498 499 if (object._hCaptcha.status === true) { 500 501 object.lockBooking(true, null, 'hCaptcha'); 502 hcaptcha.reset(object._hCaptcha.hCaptchaID_login); 503 504 } 505 506 if (object._googleReCAPTCHA.status === true && object._googleReCAPTCHA.v == 'v2') { 507 508 object.lockBooking(true, null, 'ReCAPTCHA'); 509 document.getElementById('booking-package-loginform').removeChild(document.getElementById(object._prefix + 'reCAPTCHA_for_login')); 510 object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_login', object._prefix + 'login_submit', 'beforebegin'); 511 512 } 513 514 } 515 516 bookingBlockPanel.classList.add("hidden_panel"); 517 518 }); 519 520 }; 521 522 if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) { 523 524 if (object._googleReCAPTCHA.v == 'v2') { 525 526 if (object._lockBookingButton === false) { 527 528 post.googleReCaptchaToken = object._googleReCAPTCHA_token; 529 sendToServer(); 530 531 } 532 533 } else if (object._googleReCAPTCHA.v == 'v3') { 534 535 grecaptcha.ready(function() { 536 grecaptcha.execute(object._googleReCAPTCHA.key, {action:'reCAPTCHA_login_v3'}).then(function(token) { 537 538 //object.lockBooking(false, token); 539 post.googleReCaptchaToken = token; 540 sendToServer(); 541 542 }); 543 }); 544 545 } 546 547 } else if (object._hCaptcha.status === true) { 548 549 if (object._lockBookingButton === false) { 550 551 post.hCaptcha = object._hCaptcha_token; 552 sendToServer(); 553 554 } 555 556 } else { 557 558 sendToServer(); 559 560 } 561 562 563 564 565 566 return false;
567 568 569 }; 570 571 login_close_button.onclick = function() { 572 573 login_form.classList.add('hidden_panel'); 574 login_form.classList.remove("loginform"); 575 login.classList.remove('hidden_panel'); 576 booking_calendar.classList.remove("hidden_panel"); 577 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 578 579 } 580 581 var register_user_return_button = document.getElementById("booking-package-register_user_return_button"); 582 if (parseInt(memberSetting.reject_non_membder) == 0) { 583 584 register_user_return_button.classList.remove("hidden_panel"); 585 586 } else { 587 588 register_user_return_button.classList.add("hidden_panel"); 589 590 } 591 592 register_user_return_button.onclick = function(){ 593 594 user_form.classList.add("hidden_panel"); 595 register.classList.remove("hidden_panel"); 596 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 597 if (parseInt(memberSetting.visitors_registration_for_member) == 1) { 598 599 login.classList.remove("hidden_panel"); 600 login_form.classList.remove("loginform"); 601 booking_calendar.classList.remove("hidden_panel"); 602 if (parseInt(memberSetting.reject_non_membder) == 1) { 603 604 login.classList.add("hidden_panel"); 605 login_form.classList.add("loginform"); 606 607 } 608 609 } else { 610 611 login.classList.remove("hidden_panel"); 612 booking_calendar.classList.remove("hidden_panel"); 613 614 } 615 616 }; 617 618 var edit_user_return_button = document.getElementById("booking-package-edit_user_return_button"); 619 edit_user_return_button.classList.remove("hidden_panel"); 620 edit_user_return_button.onclick = function(){ 621 622 if (subscription_form != null) { 623 624 625 if(parseInt(subscriptions.subscribed) == 1){ 626 627 subscription_form.classList.add("hidden_panel"); 628 booking_calendar.classList.remove("hidden_panel"); 629 630 }else{ 631 632 633 subscription_form.classList.remove("hidden_panel"); 634 635 } 636 637 } 638 639 var edit_form = document.getElementById("booking-package-user-edit-form"); 640 booking_calendar.classList.remove("hidden_panel"); 641 bookingHistory.classList.remove("hidden_panel"); 642 edit.classList.remove("hidden_panel"); 643 subscribed.classList.remove("hidden_panel"); 644 edit_form.classList.add("hidden_panel"); 645 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 646 document.getElementById("booking-package_myBookingDetails_panel").textContent = null; 647 648 }; 649 650 var bookingHistory_close_button = document.getElementById("booking-package-bookingHistory_close_button") 651 bookingHistory_close_button.classList.remove("hidden_panel"); 652 bookingHistory_close_button.onclick = function() { 653 654 var myBookingHistory = document.getElementById("booking-package_myBookingHistory"); 655 myBookingHistory.classList.add("hidden_panel"); 656 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 657 bookingHistory.classList.remove("hidden_panel");
658 booking_calendar.classList.remove("hidden_panel"); 659 document.getElementById("booking-package_myBookingDetails_panel").textContent = null; 660 661 }; 662 663 if(memberSetting.login == 1){ 664 665 login.classList.add("hidden_panel"); 666 logout.classList.remove("hidden_panel"); 667 register.classList.add("hidden_panel"); 668 edit.classList.remove("hidden_panel"); 669 subscribed.classList.remove("hidden_panel"); 670 bookingHistory.classList.remove("hidden_panel"); 671 /** 672 console.error(object._userFormFields); 673 var user_login = document.getElementById("booking-package-user_login"); 674 user_login.textContent = memberSetting.user_login; 675 **/ 676 677 object._userInformation = memberSetting.value; 678 679 }else{ 680 681 login.classList.remove("hidden_panel"); 682 logout.classList.add("hidden_panel"); 683 edit.classList.add("hidden_panel"); 684 subscribed.classList.add("hidden_panel"); 685 bookingHistory.classList.add("hidden_panel"); 686 687 if (parseInt(memberSetting.visitors_registration_for_member) == 1) { 688 689 register.classList.remove("hidden_panel"); 690 691 } else { 692 693 register.classList.add("hidden_panel"); 694 695 } 696 697 if (parseInt(memberSetting.reject_non_membder) == 1) { 698 699 user_form.classList.add("hidden_panel"); 700 booking_calendar.classList.add("hidden_panel"); 701 booking_calendar.textContent = null; 702 login_form.classList.add("loginform"); 703 login.classList.add("hidden_panel"); 704 705 } 706 707 } 708 709 if(memberSetting.activation != null && memberSetting.activation.status == "success"){ 710 711 login_form.classList.remove("hidden_panel"); 712 login_form.classList.add("loginform"); 713 booking_calendar.classList.add("hidden_panel"); 714 register.classList.add("hidden_panel"); 715 login.classList.add("hidden_panel"); 716 document.getElementById("user_login").textContent = memberSetting.activation.user_login; 717 718 } 719 720 var memberActionPanel = document.getElementById("booking-package-memberActionPanel"); 721 memberActionPanel.classList.remove("hidden_panel"); 722 723 login.onclick = function() { 724 725 object._console.log(this); 726 user_form.classList.add("hidden_panel"); 727 booking_calendar.classList.add("hidden_panel"); 728 login_form.classList.add("loginform"); 729 login.classList.add("hidden_panel"); 730 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 731 732 if (parseInt(memberSetting.visitors_registration_for_member) == 1) { 733 734 register.classList.remove("hidden_panel"); 735 736 } else { 737 738 register.classList.add("hidden_panel"); 739 740 } 741 742 object.lockBooking(false, null, 'ReCAPTCHA'); 743 if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) { 744 745 object.lockBooking(true, null, 'ReCAPTCHA'); 746 747 } 748 749 if (object._hCaptcha.status === true) { 750 751 object.lockBooking(true, null, 'hCaptcha'); 752 753 } 754 755 }; 756 757 register.onclick = function(){ 758 759 object._console.log(this); 760 user_form.classList.remove("hidden_panel");
761 booking_calendar.classList.add("hidden_panel"); 762 login_form.classList.remove("loginform"); 763 login.classList.remove("hidden_panel"); 764 register.classList.add("hidden_panel"); 765 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 766 object.lockBooking(false, null, 'ReCAPTCHA'); 767 if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) { 768 769 object.lockBooking(true, null, 'ReCAPTCHA'); 770 771 } 772 773 if (object._hCaptcha.status === true) { 774 775 object.lockBooking(true, null, 'hCaptcha'); 776 777 } 778 779 }; 780 781 if(memberSetting.login == 1){ 782 783 logout.onclick = function(){ 784 785 object.logout(login, logout, register, function(response){ 786 787 }); 788 789 } 790 791 bookingHistory.onclick = function(){ 792 793 edit.classList.remove("hidden_panel"); 794 var edit_form = document.getElementById("booking-package-user-edit-form"); 795 edit_form.classList.add("hidden_panel"); 796 object.bookingHistory_form(0, function(response) { 797 798 799 800 }); 801 802 }; 803 804 edit.onclick = function() { 805 806 var edit_form = document.getElementById("booking-package-user-edit-form"); 807 var edit_user_button = document.getElementById("booking-package-edit_user_button"); 808 809 if (subscription_form != null) { 810 811 subscription_form.classList.add("hidden_panel"); 812 813 } 814 815 object._console.log(subscribed_panel); 816 if (subscribed_panel != null) { 817 818 subscribed_panel.classList.add("hidden_panel"); 819 820 } 821 822 booking_calendar.classList.add("hidden_panel"); 823 subscribed.classList.add("hidden_panel"); 824 edit.classList.add("hidden_panel"); 825 bookingHistory.classList.remove("hidden_panel"); 826 myBookingHistory.classList.add("hidden_panel"); 827 myBookingDetails.classList.add("hidden_panel"); 828 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 829 830 831 edit_form.classList.remove("hidden_panel"); 832 833 object.edit_form(memberActionPanel, edit_user_button, null, function(response) { 834 835 object._console.log(response); 836 837 }); 838 839 }; 840 841 delete_button.onclick = function() { 842 843 object.delete_member(); 844 845 }; 846 847 subscribed.onclick = function() { 848 849 850 booking_calendar.classList.add("hidden_panel"); 851 object.subscribed_form(booking_calendar, function(response) { 852 853 854 855 }); 856 857 }; 858 859 } 860 861 object.register_form(memberActionPanel, register_user_button, null, function(response){ 862 863 object._console.log(response); 864 865 866 }); 867 868 } 869 870 } 871 872 Booking_Package_Member.prototype.lockBooking = function(locked, token, captcha) { 873 874 var object = this; 875 object._console.log('locked = ' + locked); 876 object._console.log(token); 877 object._lockBookingButton = locked; 878 //object._googleReCAPTCHA_token = token; 879 if (captcha == 'ReCAPTCHA') { 880 881 object._googleReCAPTCHA.locked = locked; 882 object._googleReCAPTCHA_token = token; 883 884 885 } else if (captcha == 'hCaptcha') { 886 887 object._hCaptcha.locked = locked; 888 object._hCaptcha_token = token; 889 890 } 891 892 var reCAPTCHA = document.getElementById(object._prefix + 'reCAPTCHA_for_login'); 893 if (reCAPTCHA != null) { 894 895 reCAPTCHA.classList.remove('error_empty_value'); 896 897 } 898 899 } 900 901 Booking_Package_Member.prototype.bookingHistory_form = function(offset, callback){ 902 903 var object = this; 904 var setting = object._setting; 905 object._console.log(setting); 906 object._console.log(object._top);
907 var booking_calendar = document.getElementById("booking-package"); 908 var myBookingHistory = document.getElementById("booking-package_myBookingHistory"); 909 var table = document.getElementById("booking-package_myBookingHistoryTable"); 910 911 var beforButton = document.getElementById("booking-package-bookingHistory_returnButton"); 912 beforButton.removeEventListener("click", null); 913 914 var nextButton = document.getElementById("booking-package-bookingHistory_nextButton"); 915 nextButton.removeEventListener("click", null); 916 917 918 919 var post = {mode: 'getUsersBookedList', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, offset: offset, user_id: setting.current_member_id, locale: object._locale}; 920 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 921 bookingBlockPanel.classList.remove("hidden_panel"); 922 new Booking_App_XMLHttp(object._url, post, false, function(response) { 923 924 object._console.log(response); 925 object.setNewNonce(response); 926 var myBookingDetailsFroVisitor = document.getElementById('booking-package_myBookingDetailsFroVisitor'); 927 myBookingDetailsFroVisitor.classList.add('hidden_panel'); 928 929 var responseOffset = 0; 930 var responseLimit = 0; 931 var nextClick = 0; 932 //table.textContent = null; 933 var ths = table.getElementsByTagName("th"); 934 for (var i = 0; i < ths.length; i++) { 935 936 ths[i].setAttribute("style", "top: " + object._top + "px;"); 937 938 } 939 940 var trs = table.getElementsByTagName("tr"); 941 for (var i = trs.length; i > 0; i--) { 942 943 if (i > 1) { 944 object._console.log(trs[i - 1]); 945 table.removeChild(trs[i - 1]); 946 947 } 948 949 } 950 951 952 document.getElementById("booking-package-bookedHistory").classList.add("hidden_panel"); 953 bookingBlockPanel.classList.add("hidden_panel"); 954 booking_calendar.classList.add("hidden_panel"); 955 myBookingHistory.classList.remove("hidden_panel"); 956 957 if (response.status == 'success') { 958 959 var bookedList = response.bookedList; 960 responseOffset = parseInt(response.offset); 961 responseLimit = parseInt(response.limit); 962 nextClick = parseInt(response.next); 963 964 for (var i = 0; i < bookedList.length; i++) { 965 966 var userInfo = bookedList[i]; 967 object._console.log(userInfo); 968 969 var tr = document.createElement("tr"); 970 tr.setAttribute("valign", "top"); 971 tr.setAttribute("data-key", i); 972 table.appendChild(tr); 973 974 var th = document.createElement("td"); 975 th.setAttribute("scope", "row"); 976 th.textContent = userInfo.key; 977 tr.appendChild(th); 978 979 var dateTd = document.createElement("td"); 980 dateTd.setAttribute("scope", "row"); 981 dateTd.textContent = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, userInfo.date.hour, userInfo.date.min, userInfo.scheduleTitle, userInfo.date.week, 'text'); 982 tr.appendChild(dateTd); 983 984 var accountTd = document.createElement("td"); 985 accountTd.setAttribute("scope", "row"); 986 accountTd.textContent = userInfo.accountKey; 987 tr.appendChild(accountTd); 988 989 if (object._calendarAccountList[parseInt(userInfo.accountKey)] != null) { 990 991 if (object._calendarAccountList[parseInt(userInfo.accountKey)].type == 'hotel') { 992 993 dateTd.textContent = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, null, null, null, userInfo.date.week, 'text'); 994 995 } else { 996 997 //dateTd.textContent = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, userInfo.date.hour, userInfo.date.min, userInfo.scheduleTitle, userInfo.date.week, 'text'); 998 dateTd.textContent = null; 999 var date = object._calendar.formatBookingDate(userInfo.date.month, userInfo.date.day, userInfo.date.year, userInfo.date.hour, userInfo.date.min, userInfo.scheduleTitle, userInfo.date.week, 'elements'); 1000 dateTd.appendChild(date.dateAndTime); 1001 1002 } 1003 1004 accountTd.textContent = object._calendarAccountList[parseInt(userInfo.accountKey)].name; 1005 1006 } 1007 1008 var status = document.createElement("div"); 1009 status.id = "booking-status-" + i; 1010 status.setAttribute("data-status", i); 1011 status.textContent = object._i18n.get(userInfo.status.toLowerCase()); 1012 var statusClassName = "pendingLabel"; 1013 if (userInfo.status.toLowerCase() == "approved") { 1014 1015 statusClassName = "approvedLabel"; 1016 1017 } else if (userInfo.status.toLowerCase() == "canceled") { 1018 1019 statusClassName = "canceledLabel"; 1020 1021 } 1022 status.classList.add(statusClassName); 1023 1024 var td = document.createElement("td"); 1025 td.classList.add("statusTd"); 1026 td.setAttribute("scope", "row"); 1027 td.appendChild(status); 1028 tr.appendChild(td); 1029 1030 tr.onclick = function(){ 1031 1032 var tr = this; 1033 var key = parseInt(this.getAttribute("data-key")); 1034 var status = document.getElementById("booking-status-" + key); 1035 object._console.log(key); 1036 object._console.log(bookedList[key]); 1037 object.bookingDetails(key, bookedList[key], function(response) { 1038 1039 object._console.log(response); 1040 object._console.log(object._top); 1041 var rect = document.getElementById("booking-package-memberActionPanel").getBoundingClientRect(); 1042 object._console.log(rect); 1043 document.getElementById("booking-package-memberActionPanel").scrollIntoView(); 1044 if (typeof window.scrollBy == 'function') { 1045 1046 window.scrollBy(0, object._top); 1047 1048 } 1049 1050 bookedList[key].status = 'canceled'; 1051 status.textContent = object._i18n.get('canceled'); 1052 status.classList.add("canceledLabel"); 1053 1054 //table.removeChild(tr); 1055 1056 }); 1057 /** 1058 object.setSelectedKey(key); 1059 object.showUserInfo(key, bookedList[key], true, bookedList[key].accountKey, function(response){ 1060 1061 object._console.log(response); 1062 if(response.status == "returnButton"){ 1063 1064 object.reservation_users(reservation_usersPanel, response.month, response.day, response.
1064year, calendarData, accountKey, callback); 1065 1066 } 1067 1068 }); 1069 **/ 1070 1071 }; 1072 1073 } 1074 1075 } else { 1076 1077 window.location.reload(true); 1078 1079 } 1080 1081 1082 1083 beforButton.onclick = function() { 1084 1085 offset = responseOffset - responseLimit; 1086 if (offset <= 0) { 1087 1088 offset = 0; 1089 1090 } 1091 object._console.log("offset = " + offset); 1092 object.bookingHistory_form(offset, callback); 1093 1094 }; 1095 1096 nextButton.onclick = function() { 1097 1098 if (nextClick == 0) { 1099 1100 return null; 1101 1102 } 1103 offset = responseOffset + responseLimit; 1104 object._console.log("offset = " + offset); 1105 object.bookingHistory_form(offset, callback); 1106 1107 }; 1108 1109 }); 1110 1111 } 1112 1113 Booking_Package_Member.prototype.bookingDetails = function(key, reservationData, callback) { 1114 1115 var object = this; 1116 var setting = object._setting; 1117 object._console.log(reservationData); 1118 object._console.log(object._calendarAccountList); 1119 1120 var myBookingHistory = document.getElementById("booking-package_myBookingHistory"); 1121 var myBookingDetails = document.getElementById("booking-package_myBookingDetails"); 1122 var infoPanel = document.getElementById("booking-package_myBookingDetails_panel"); 1123 var closeButton = document.getElementById("booking-package-myBookingDetails_close_button"); 1124 var cancelButton = document.getElementById("booking-package-cancelThisBooking"); 1125 1126 cancelButton.removeEventListener("click", null); 1127 var rect = myBookingHistory.getBoundingClientRect(); 1128 object._console.log(rect); 1129 myBookingHistory.classList.add("hidden_panel"); 1130 myBookingDetails.classList.remove("hidden_panel"); 1131 infoPanel.textContent = null; 1132 1133 var calendarAccount = object._calendarAccountList[parseInt(reservationData.accountKey)]; 1134 object._console.log(calendarAccount); 1135 1136 var bookingTimeChange = document.createElement("div"); 1137 bookingTimeChange.setAttribute("data-status", "1"); 1138 bookingTimeChange.setAttribute("class", "change hidden_panel"); 1139 bookingTimeChange.textContent = object._i18n.get("Change"); 1140 1141 var courseChange = document.createElement("div"); 1142 courseChange.setAttribute("data-status", "1"); 1143 courseChange.setAttribute("class", "change hidden_panel"); 1144 courseChange.textContent = object._i18n.get("Change"); 1145 1146 var response = object._booking_manage.showUserDetails(key, {account: calendarAccount, schedule: {}}, reservationData, calendarAccount.key, false, infoPanel, bookingTimeChange, courseChange, function(callback){ 1147 1148 object._console.log(callback); 1149 1150 }); 1151 1152 if (parseInt(reservationData.cancel) == 1 && reservationData.status != 'canceled') { 1153 1154 cancelButton.disabled = false; 1155 cancelButton.classList.remove("hidden_panel"); 1156 1157 cancelButton.onclick = function() { 1158 1159 object._console.log(reservationData); 1160 var post = {booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, mode: 'cancelUserBooking', key: reservationData.key, accountKey: reservationData.accountKey, token: reservationData.cancellationToken, status: 'canceled', user_id: setting.current_member_id, sendEmail: 1}; 1161 object._console.log(post); 1162 if (window.confirm(object._i18n.get("Can we really cancel your booking?"))) { 1163 1164 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1165 bookingBlockPanel.classList.remove("hidden_panel"); 1166 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1167 1168 object._console.log(response); 1169 object.setNewNonce(response); 1170 if (response.status != "error") { 1171 1172 myBookingHistory.classList.remove("hidden_panel"); 1173 myBookingDetails.classList.add("hidden_panel"); 1174 1175 callback(true); 1176 1177 } else { 1178 1179 document.getElementById("booking-package_myBookingDetails_panel").textContent = null; 1180 if (response.reload != null && parseInt(response.reload) == 1) { 1181 1182 window.location.reload(true); 1183 1184 } else { 1185 1186 1187 1188 } 1189 1190 } 1191 bookingBlockPanel.classList.add("hidden_panel"); 1192 1193 }); 1194 1195 1196 } 1197 1198 }; 1199 1200 } else { 1201 1202 cancelButton.disabled = true; 1203 cancelButton.classList.add("hidden_panel"); 1204 1205 } 1206 1207 closeButton.removeEventListener("click", null, false); 1208 closeButton.onclick = function() { 1209 1210 infoPanel.textContent = null; 1211 myBookingHistory.classList.remove("hidden_panel"); 1212 myBookingDetails.classList.add("hidden_panel"); 1213 1214 }; 1215 1216 var returnButton = document.getElementById("booking-package-myBookingDetails_returnButton"); 1217 returnButton.classList.add("hidden_panel"); 1218 returnButton.removeEventListener("click", null); 1219 returnButton.onclick = function() { 1220 1221 infoPanel.textContent = null; 1222 myBookingHistory.classList.remove("hidden_panel"); 1223 myBookingDetails.classList.add("hidden_panel"); 1224 1225 }; 1226 1227 } 1228 1229 Booking_Package_Member.prototype.subscribed_form = function(booking_c
1229alendar, callback){ 1230 1231 var object = this; 1232 var memberSetting = object._setting; 1233 var subscriptions = object._subscriptions; 1234 object._console.log(memberSetting); 1235 object._console.log(subscriptions); 1236 var subscription_form = document.getElementById("booking-package-subscription_form"); 1237 var subscribed_panel = document.getElementById("booking-package-subscribed_panel"); 1238 var return_button = document.getElementById("booking-package-subscribed_return_button"); 1239 var edit = document.getElementById("booking-package-edit"); 1240 var subscribed = document.getElementById("booking-package-subscribed"); 1241 edit.classList.add("hidden_panel"); 1242 subscribed.classList.add("hidden_panel"); 1243 subscribed_panel.classList.remove("hidden_panel"); 1244 subscription_form.classList.add("hidden_panel"); 1245 1246 var cost = new FORMAT_COST(object._i18n, object._debug, object._numberFormatter, this._currency_info); 1247 var tbody = document.getElementById("booking-package-subscribed_items"); 1248 tbody.textContent = null; 1249 var subscription_list = memberSetting.subscription_list; 1250 for(var key in subscription_list){ 1251 1252 var product = subscription_list[key]; 1253 var items = product.items; 1254 var currency = null; 1255 var amount = 0; 1256 object._console.log(product); 1257 for(var i = 0; i < items.length; i++){ 1258 1259 var item = items[i]; 1260 currency = item.currency; 1261 amount += parseInt(item.amount); 1262 object._console.log(item); 1263 1264 } 1265 1266 amount = cost.formatCost(amount, currency); 1267 1268 var amountPanel = document.createElement("div"); 1269 amountPanel.textContent = object._i18n.get("%s per month", [amount]); 1270 1271 var expirationDate = document.createElement("div"); 1272 expirationDate.textContent = object._i18n.get("Expiration date: %s", [product.period_end_date]); 1273 1274 var itemPanel = document.createElement("div"); 1275 itemPanel.textContent = product.name; 1276 1277 var itemTd = document.createElement("td"); 1278 itemTd.appendChild(itemPanel); 1279 itemTd.appendChild(amountPanel); 1280 itemTd.appendChild(expirationDate); 1281 1282 var deleteTd = document.createElement("td"); 1283 deleteTd.setAttribute("data-key", key); 1284 deleteTd.setAttribute("style", "font-family: 'Material Icons' !important;"); 1285 deleteTd.setAttribute("class", "material-icons delete_icon"); 1286 deleteTd.textContent = "delete"; 1287 1288 var tr = document.createElement("tr"); 1289 tr.id = object._prefix + key; 1290 tr.appendChild(itemTd); 1291 tr.appendChild(deleteTd); 1292 if(product.canceled != null && parseInt(product.canceled) == 1){ 1293 1294 tr.classList.add("canceled"); 1295 deleteTd.setAttribute("style", "cursor: not-allowed; font-family: 'Material Icons' !important;"); 1296 1297 } 1298 1299 1300 tbody.appendChild(tr); 1301 1302 deleteTd.onclick = function(){ 1303 1304 var deleteTd = this; 1305 var key = this.getAttribute("data-key"); 1306 var product = subscription_list[key]; 1307 object._console.log(product); 1308 if(product.canceled != null && parseInt(product.canceled) == 1){ 1309 1310 return null; 1311 1312 } 1313 1314 if(window.confirm(object._i18n.get('If you cancel the "%s" subscription, you can not make a reservation after the deadline of %s. Do you really want to cancel the subscription?', [product.name, product.period_end_date]))){ 1315 1316 object.deleteSubscription(product, function(response){ 1317 1318 var tr = document.getElementById(object._prefix + key); 1319 if(response.status == 1){ 1320 1321 subscription_list[key]['canceled'] = 1; 1322 tr.classList.add("canceled"); 1323 deleteTd.setAttribute("style", "cursor: n
1323ot-allowed; font-family: 'Material Icons' !important;"); 1324 1325 }else{ 1326 1327 tbody.removeChild(tr); 1328 1329 } 1330 1331 }); 1332 1333 } 1334 1335 } 1336 1337 } 1338 1339 1340 return_button.onclick = function(){ 1341 1342 edit.classList.remove("hidden_panel"); 1343 subscribed.classList.remove("hidden_panel"); 1344 subscribed_panel.classList.add("hidden_panel"); 1345 1346 if(parseInt(subscriptions.subscribed) == 1){ 1347 1348 booking_calendar.classList.remove("hidden_panel"); 1349 1350 }else{ 1351 1352 subscription_form.classList.remove("hidden_panel"); 1353 1354 1355 } 1356 1357 } 1358 1359 } 1360 1361 Booking_Package_Member.prototype.deleteSubscription = function(product, callback){ 1362 1363 var object = this; 1364 var post = {mode: 'deleteSubscription', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, product: product.product}; 1365 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1366 bookingBlockPanel.classList.remove("hidden_panel"); 1367 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1368 1369 object._console.log(response); 1370 object.setNewNonce(response); 1371 if(parseInt(response.status) == 1){ 1372 1373 callback({stats: 1, error: null}); 1374 1375 }else{ 1376 1377 if(response.reload != null && parseInt(response.reload) == 1){ 1378 1379 window.location.reload(); 1380 1381 }else{ 1382 1383 callback({stats: 0, error: response.error}); 1384 1385 } 1386 1387 } 1388 1389 bookingBlockPanel.classList.add("hidden_panel"); 1390 1391 }); 1392 1393 } 1394 1395 Booking_Package_Member.prototype.delete_member = function(){ 1396 1397 var object = this; 1398 object._console.log("delete_member"); 1399 if(window.confirm(object._i18n.get("Do you really want to delete the license as a member?"))){ 1400 1401 var post = {mode: 'deleteUser', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action}; 1402 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1403 bookingBlockPanel.classList.remove("hidden_panel"); 1404 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1405 1406 object._console.log(response); 1407 object.setNewNonce(response); 1408 if(response.status == "success"){ 1409 1410 window.location.reload(); 1411 1412 } 1413 1414 bookingBlockPanel.classList.add("hidden_panel"); 1415 1416 }); 1417 1418 } 1419 1420 } 1421 1422 Booking_Package_Member.prototype.edit_form = function(mainPanel, register_user_button, return_button, callback){ 1423 1424 var object = this; 1425 object._console.log(object._setting); 1426 var setting = object._setting; 1427 const userInfo = {user_login: setting.user_login, user_email: setting.user_email}; 1428 var edit_panel = document.getElementById("booking-package-user-edit-form"); 1429 object._console.log(setting); 1430 var inputData = {}; 1431 const formFields = JSON.parse(JSON.stringify(object._userFormFields)); 1432 for (var i = 0; i < formFields.length; i++) { 1433 1434 if (formFields[i].id === 'user_login') { 1435 1436 formFields[i].disabled = 1; 1437 1438 } 1439 1440 if (formFields[i].id === 'user_pass') { 1441
1442 formFields[i].required = 'false'; 1443 1444 } 1445 1446 } 1447 object._console.log(formFields); 1448 const input = new Booking_Package_Input(object._debug); 1449 object._input.setPrefix(object._prefix + 'edit_form'); 1450 const userProfile = object._input.changeValueForUserFormFields(formFields, JSON.parse(JSON.stringify(setting.profile))); 1451 object._console.log(userProfile); 1452 const table = object._input.createUserProfiledPanel(formFields, userProfile, inputData, 'edit_', 'div', {}); 1453 object._console.log(table); 1454 const editCustomFormFieldPanel = document.getElementById('editCustomFormFieldPanel'); 1455 editCustomFormFieldPanel.textContent = null; 1456 editCustomFormFieldPanel.appendChild(table); 1457 const change_password_button = object.create('button', object._i18n.get('Change Password'), null, null, null, 'change_user_password_button', null); 1458 const inputPassword = document.getElementById('booking_package_edit_forminput_user_pass'); 1459 inputPassword.classList.add('hidden_panel'); 1460 inputPassword.insertAdjacentElement('afterend', change_password_button); 1461 1462 /** 1463 var user_login = document.getElementById("booking-package-user_edit_login"); 1464 var user_email = document.getElementById("booking-package-user_edit_email"); 1465 var user_pass = document.getElementById("booking-package-user_edit_pass"); 1466 user_login.textContent = setting.user_login; 1467 1468 var change_password_button = document.getElementById("booking-package-user_edit_change_password_button"); 1469 **/ 1470 1471 1472 change_password_button.onclick = function(){ 1473 1474 inputPassword.classList.remove("hidden_panel"); 1475 change_password_button.classList.add("hidden_panel"); 1476 1477 } 1478 1479 register_user_button.onclick = function(){ 1480 1481 1482 const response = input.validateInputValuesForUser(formFields, inputData, 'edit_'); 1483 let updata = response.updata; 1484 let customUserFields = response.customUserFields; 1485 object._console.log(response); 1486 if (updata === false) { 1487 1488 return null; 1489 1490 } 1491 1492 var user_data = { 1493 user_login: document.getElementById("booking_package_edit_forminput_user_login").value, 1494 user_email: document.getElementById("booking_package_edit_forminput_user_email").value, 1495 user_pass: document.getElementById("booking_package_edit_forminput_user_pass").value, 1496 }; 1497 object._console.log(user_data); 1498 1499 if (!user_data.user_email.match(/.+@.+\..+/)) { 1500 1501 updata = false; 1502 document.getElementById("booking_package_edit_forminput_user_email").classList.add("errorPanel"); 1503 1504 } 1505 1506 if (user_data.user_pass.length > 0 && user_data.user_pass.length < 8) { 1507 1508 updata = false; 1509 document.getElementById("booking_package_edit_forminput_user_pass").classList.add("errorPanel"); 1510 1511 } 1512 1513 var post = {mode: 'updateUser', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, user_login: setting.user_login, accountKey: object._calendarAccount.key, customUserFields: JSON.stringify(customUserFields)}; 1514 if (document.getElementById("booking-package-permalink") != null) { 1515 1516 post.permalink = document.getElementById("booking-package-permalink").value; 1517 1518 } 1519 object._console.log(post); 1520 object._console.log("updata = " + updata); 1521 if (updata == true) { 1522 1523 post.user_email = setting.user_email; 1524 user_new_email = user_data.user_email; 1525 if (user_data.user_pass.length != 0) { 1526 1527 post.user_pass = user_data.user_pass; 1528 1529 } 1530 1531 object._console.log(post); 1532 post.mode = object._prefix + 'sendVerificationCode'; 1533 post.booking_package_user_action = 1; 1534 object._servicesControl.sendbookingVerificationCode(object._url, object._action, object._nonce, object._wp_rest_nonce, object._plugin_name, object._prefix, post, object._bookingVerificationCode, function(response){ 1535 1536 if (response === true) { 1537 1538 delete post.booking_package_user_action; 1539 post.mode = 'updateUser'; 1540 post.user_email = user_new_email; 1541 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1542 bookingBlockPanel.classList.remove("hidden_panel"); 1543 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1544 1545 object._console.log(response); 1546 object.setNewNonce(response); 1547 if (response.status == 'success') { 1548 1549 window.location.reload(); 1550 1551 } else if (response.status == 'error') { 1552 1553 window.alert(response.error_messages); 1554 1555 } 1556 bookingBlockPanel.classList.add("hidden_panel"); 1557 1558 }); 1559 1560 } 1561 1562 }); 1563 1564 } 1565 1566 /** 1567 var updata = true; 1568 var user_new_email = null; 1569 user_email.parentElement.classList.remove("errorPanel"); 1570 user_pass.parentElement.classList.remove("errorPanel"); 1571 if(!user_email.value.match(/.+@.+\..+/)){ 1572 1573 updata = false;
1574 user_email.parentElement.classList.add("errorPanel"); 1575 1576 } 1577 1578 if(user_pass.value.length > 0 && user_pass.value.length < 8){ 1579 1580 updata = false; 1581 user_pass.parentElement.classList.add("errorPanel"); 1582 1583 } 1584 1585 var post = {mode: 'updateUser', booking_package_nonce: object._nonce, plugin_name: object._plugin_name, action: object._action, user_login: setting.user_login, accountKey: object._calendarAccount.key}; 1586 if (document.getElementById("booking-package-permalink") != null) { 1587 1588 post.permalink = document.getElementById("booking-package-permalink").value; 1589 1590 } 1591 1592 object._console.log("updata = " + updata); 1593 if (updata == true) { 1594 1595 post.user_email = setting.user_email; 1596 user_new_email = user_email.value; 1597 if(user_pass.value.length != 0){ 1598 1599 post.user_pass = user_pass.value; 1600 1601 } 1602 object._console.log(post); 1603 1604 var sendbookingVerificationCode = function() { 1605 1606 1607 1608 }; 1609 1610 post.mode = object._prefix + 'sendVerificationCode'; 1611 post.booking_package_user_action = 1; 1612 object._servicesControl.sendbookingVerificationCode(object._url, object._action, object._nonce, object._plugin_name, object._prefix, post, object._bookingVerificationCode, function(response){ 1613 1614 if (response === true) { 1615 1616 delete post.booking_package_user_action; 1617 post.mode = 'updateUser'; 1618 post.user_email = user_new_email; 1619 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1620 bookingBlockPanel.classList.remove("hidden_panel"); 1621 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1622 1623 object._console.log(response); 1624 object.setNewNonce(response); 1625 if (response.status == 'success') { 1626 1627 window.location.reload(); 1628 1629 } else if (response.status == 'error') { 1630 1631 window.alert(response.error_messages); 1632 1633 } 1634 bookingBlockPanel.classList.add("hidden_panel"); 1635 1636 }); 1637 1638 } 1639 1640 }); 1641 1642 1643 1644 } 1645 **/ 1646 1647 } 1648 1649 } 1650 1651 Booking_Package_Member.prototype.register_form = function(mainPanel, register_user_button, return_button, callback){ 1652 1653 var object = this; 1654 object._console.log("register_form"); 1655 var user_regist_error_message = document.getElementById("booking-package-user_regist_error_message"); 1656 user_regist_error_message.classList.add("hidden_panel"); 1657 user_regist_error_message.textContent = null; 1658 1659 var inputData = {}; 1660 const formFields = JSON.parse(JSON.stringify(object._userFormFields)); 1661 object._console.log(formFields); 1662 const input = new Booking_Package_Input(object._debug); 1663 object._input.setPrefix(object._prefix + 'sign_up_'); 1664 const table = object._input.createUserProfiledPanel(formFields, {}, inputData, 'add_', 'div', {}); 1665 object._console.log(table); 1666 const addCustomFormFieldPanel = document.getElementById('addCustomFormFieldPanel'); 1667 addCustomFormFieldPanel.textContent = null; 1668 addCustomFormFieldPanel.appendChild(table); 1669 1670 register_user_button.onclick = function() { 1671 1672 const response = input.validateInputValuesForUser(formFields, inputData, 'add_'); 1673 let updata = response.updata; 1674 let customUserFields = response.customUserFields; 1675 object._console.log(response); 1676 1677 var registering = response.updata; 1678 1679 1680 var user_data = { 1681 user_login: document.getElementById("booking_package_sign_up_input_user_login").value, 1682 user_email: document.getElementById("booking_package_sign_up_input_user_email").value, 1683 user_pass: document.getElementById("booking_package_sign_up_input_user_pass").value, 1684 }; 1685 1686 var registeringErrorMessage = ''; 1687 var post = {mode: 'createUser', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action, accountKey: object._calendarAccount.key, user_login: user_data.user_login, user_email: user_data.user_email, user_pass: user_data.user_pass, customUserFields: JSON.stringify(customUserFields)}; 1688 for (var key in user_data) { 1689 1690 let errorPanel = null; 1691 var value = user_data[key]; 1692 object._console.log(key + " = " + value); 1693 1694 if (key == 'user_login' && (value.length < 4 || !value.match(/^[A-Za-z0-9]*$/))) { 1695 1696 registering = false;
1697 errorPanel = document.getElementById('tr_input_field_user_login'); 1698 registeringErrorMessage = object._i18n.get('Usernames can only contain lowercase letters (a-z) and numbers.'); 1699 console.error("error key = " + key + " value = " + value); 1700 1701 } 1702 1703 if (key == 'user_email' && !value.match(/.+@.+\..+/)) { 1704 1705 registering = false; 1706 //panel.classList.add("errorPanel"); 1707 errorPanel = document.getElementById('tr_input_field_user_email'); 1708 registeringErrorMessage = object._i18n.get('Please enter a valid email address.'); 1709 console.error("error key = " + key + " value = " + value); 1710 1711 } 1712 1713 if (key == 'user_pass' && value.length < 8) { 1714 1715 registering = false; 1716 //panel.classList.add("errorPanel"); 1717 errorPanel = document.getElementById('tr_input_field_user_pass'); 1718 registeringErrorMessage = object._i18n.get('Please enter a valid password.'); 1719 console.error("error key = " + key + " value = " + value); 1720 1721 } 1722 1723 } 1724 1725 if (object._googleReCAPTCHA.v == 'v2' && object._lockBookingButton === true) { 1726 1727 registering = false; 1728 1729 } 1730 1731 if (document.getElementById("booking-package-permalink") != null) { 1732 1733 post.permalink = document.getElementById("booking-package-permalink").value; 1734 1735 } 1736 1737 var sendbookingVerificationCode = function() { 1738 1739 post.mode = object._prefix + 'sendVerificationCode'; 1740 post.booking_package_user_action = 1; 1741 object._servicesControl.sendbookingVerificationCode(object._url, object._action, object._nonce, object._wp_rest_nonce, object._plugin_name, object._prefix, post, object._bookingVerificationCode, function(response){ 1742 1743 if (response === true) { 1744 1745 post.mode = 'createUser'; 1746 delete post.booking_package_user_action; 1747 sendToServer(); 1748 1749 } 1750 1751 }); 1752 1753 }; 1754 1755 var sendToServer = function() { 1756 1757 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1758 bookingBlockPanel.classList.remove("hidden_panel"); 1759 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1760 1761 object._console.log(response); 1762 bookingBlockPanel.classList.add("hidden_panel"); 1763 if (response.status == 'success') { 1764 1765 window.location.reload(); 1766 1767 } else { 1768 1769 user_regist_error_message.classList.remove("hidden_panel"); 1770 user_regist_error_message.textContent = response.error_messages; 1771 //window.alert(response.error_messages); 1772 if (object._hCaptcha.status === true) { 1773 1774 object.lockBooking(true, null, 'hCaptcha'); 1775 hcaptcha.reset(object._hCaptcha.hCaptchaID_register); 1776 1777 } 1778 1779 if (object._googleReCAPTCHA.status === true && object._googleReCAPTCHA.v == 'v2') { 1780 1781 object.lockBooking(true, null, 'ReCAPTCHA'); 1782 var userForm = document.getElementById('booking-package-user-form').getElementsByTagName('div')[0]; 1783 object._console.log(userForm); 1784 userForm.removeChild(document.getElementById(object._prefix + 'reCAPTCHA_for_register')); 1785 object.setGoogleReCAPTCHA(object._prefix + 'reCAPTCHA_for_register', 'booking-package-register_user_button', 'beforebegin'); 1786 1787 } 1788 1789 } 1790 1791 }); 1792 1793 }; 1794 1795 1796 if (registering == true) { 1797 1798 object._console.log(post); 1799 user_regist_error_message.textContent.textContent = null; 1800 1801 if (object._googleReCAPTCHA.key != null && object._googleReCAPTCHA.key.length > 0) { 1802 1803 if (object._googleReCAPTCHA.v == 'v2') { 1804 1805 if (object._lockBookingButton === false) { 1806 1807 post.googleReCaptchaToken = object._googleReCAPTCHA_token; 1808 //sendToServer(); 1809 sendbookingVerificationCode(); 1810 1811 } 1812 1813 } else if (object._googleReCAPTCHA.v == 'v3') { 1814 1815 object._console.log(object._googleReCAPTCHA.v); 1816 grecaptcha.ready(function() { 1817 grecaptcha.execute(object._googleReCAPTCHA.key, {action:'reCAPTCHA_v3'}).then(function(token) { 1818 1819 object._console.log(token); 1820 post.googleReCaptchaToken = token; 1821 //sendToServer(); 1822 sendbookingVerificationCode(); 1823 1824 }); 1825 }); 1826 1827 } 1828 1829 } else if (object._hCaptcha.status === true) { 1830 1831 if (object._lockBookingButton === false) { 1832 1833 post.hCaptcha = object._hCaptcha_token; 1834 //sendToServer(); 1835 sendbookingVerificationCode(); 1836 1837 } 1838 1839 } else { 1840 1841 //sendToServer(); 1842 sendbookingVerificationCode(); 1843 1844 } 1845 1846 } else { 1847 1848 user_regist_error_message.classList.remove("hidden_panel"); 1849 user_regist_error_message.textContent = registeringErrorMessage; 1850 object._console.log(registeringErrorMessage); 1851 1852 1853 } 1854 1855 } 1856 1857 if (return_button != null) { 1858 1859 return_button.onclick = function(){ 1860 1861 1862 1863 } 1864 1865 } 1866 1867 1868 } 1869 1870 Booking_Package_Member.prototype.logout = function(login, logout, register, callback){ 1871 1872 var object = this; 1873 var post = {mode: 'logout', booking_package_nonce: object._nonce, booking_package_wp_rest_nonce: object._wp_rest_nonce, plugin_name: object._plugin_name, action: object._action}; 1874 object._console.log(post); 1875 var bookingBlockPanel = document.getElementById("bookingBlockPanel"); 1876 bookingBlockPanel.classList.remove("hidden_panel"); 1877 new Booking_App_XMLHttp(object._url, post, false, function(response){ 1878 1879 object._console.log(response); 1880 if(response.status == 'success'){ 1881 1882 window.location.reload(); 1883 1884 } 1885 1886 1887 1888 }); 1889 1890 } 1891 1892 Booking_Package_Member.prototype.hiddenLoginErrorMessage = function(){ 1893 1894 var object = this; 1895 var loginError = document.getElementById(object._prefix + "login_error"); 1896 if (loginError != null) { 1897 1898 var timer = setInterval(function(){ 1899 1900 loginError.classList.add("hiddenLoginErrorPanel"); 1901 var timer1 = setInterval(function(){ 1902 1903 loginError.classList.add("hidden_panel"); 1904 clearInterval(timer1); 1905 1906 }, 1000); 1907 clearInterval(timer); 1908 1909 }, 10000); 1910 1911 } 1912 1913 } 1914 1915 Booking_Package_Member.prototype.isEmail = function(email){ 1916 1917 var mail_regex1 = new RegExp( '(?:[-!#-\'*+/-9=?A-Z^-~]+\.?(?:\.[-!#-\'*+/-9=?A-Z^-~]+)*|"(?:[!#-\[\]-~]|\\\\[\x09 -~])*")@[-!#-\'*+/-9=?A-Z^-~]+(?:\.[-!#-\'*+/-9=?A-Z^-~]+)*' ); 1918 var mail_regex2 = new RegExp( '^[^\@]+\@[^\@]+$' ); 1919 1920 1921 } 1922 1923 Booking_Package_Member.prototype.setScrollY = function(element){ 1924 1925 element = document.getElementById("booking-package"); 1926 var object = this; 1927 var rect = element.getBoundingClientRect(); 1928 object._console.log("this._top = " + this._top); 1929 object._console.log(rect); 1930 if (rect.y < this._top) { 1931 1932 object._console.log("this._top = " + this._top); 1933 object._console.log("this._topPanelHeight = " + this._topPanelHeight); 1934 var scrollY = rect.y + window.pageYOffset - this._top; 1935 object._console.log("scrollY = " + scrollY); 1936 if (typeof window.scroll == 'function') { 1937 1938 window.scroll(window.pageXOffset, scrollY); 1939 1940 } 1941 1942 } 1943 1944 }; 1945 1946 Booking_Package_Member.prototype.create = function(elementType, text, childElements, id, style, className, data_x) { 1947 1948 var panel = this._element.create(elementType, text, childElements, id, style, className, data_x); 1949 return panel; 1950 1951 }; 1952 1953 Booking_Package_Member.prototype.createButtonPanel = function(id, style, className, buttons) { 1954 1955 var buttonPanel = this._element.createButtonPanel(id, style, className, buttons); 1956 return buttonPanel; 1957 1958 }; 1959 1960 Booking_Package_Member.prototype.createButton = function(id, style, className, data_x, text) { 1961 1962 var button = this._element.createButton(id, style, className, data_x, text); 1963 return button; 1964 1965 }; 1966 1967 Booking_Package_Member.prototype.createInputElement = function(tagName, type, name, value, text, disabled, id, style, className, data_x) { 1968 1969 var input = this._element.createInputElement(tagName, type, name, value, text, disabled, id, style, className, data_x); 1970 return input; 1971 1972 };
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.