| @@ -31,22 +31,30 @@ | ||
| 31 | 31 | private static function generateBfGlobalObjJS($contentIds = []) |
| 32 | 32 | { |
| 33 | 33 | $contentidArray = wp_json_encode($contentIds); |
| 34 | 34 | return ' if(!window.bf_globals){ window.bf_globals = {};} |
| 35 | - ' . $contentidArray . '.forEach(function(contentId){ | |
| 36 | - const form = document.getElementById(contentId); | |
| 37 | - if(!form){ | |
| 38 | - delete window.bf_globals[contentId]; | |
| 39 | - return; | |
| 40 | - } | |
| 41 | - if(!window.bf_globals[contentId]){ | |
| 42 | - window.bf_globals[contentId] = {inits: {}, contentId: contentId}; | |
| 43 | - }else{ | |
| 44 | - window.bf_globals[contentId].inits = {}; | |
| 45 | - window.bf_globals[contentId].contentId = contentId; | |
| 35 | + (function(){ | |
| 36 | + var bfSetupGlobals = function(){ | |
| 37 | + ' . $contentidArray . '.forEach(function(contentId){ | |
| 38 | + const form = document.getElementById(contentId); | |
| 39 | + if(!form){ | |
| 40 | + delete window.bf_globals[contentId]; | |
| 41 | + return; | |
| 42 | + } | |
| 43 | + if(!window.bf_globals[contentId]){ | |
| 44 | + window.bf_globals[contentId] = {inits: {}, contentId: contentId}; | |
| 45 | + }else{ | |
| 46 | + if(!window.bf_globals[contentId].inits) window.bf_globals[contentId].inits = {}; | |
| 47 | + window.bf_globals[contentId].contentId = contentId; | |
| 48 | + } | |
| 49 | + }); | |
| 50 | + }; | |
| 51 | + if(document.readyState === "loading"){ | |
| 52 | + document.addEventListener("DOMContentLoaded", bfSetupGlobals, { once: true }); | |
| 53 | + } else { | |
| 54 | + bfSetupGlobals(); | |
| 46 | 55 | } |
| 47 | - | |
| 48 | - });'; | |
| 56 | + })();'; | |
| 49 | 57 | } |
| 50 | 58 | |
| 51 | 59 | private static function isValidationNeeded($fldData) |
| 52 | 60 | { |
| @@ -102,8 +110,10 @@ | ||
| 102 | 110 | $this->appendJs($this->getScript(), $postId, $preview); |
| 103 | 111 | $this->appendJs($this->generateFieldConfigsJs($contentIds), $postId, $preview); |
| 104 | 112 | // init all js events and functions at last |
| 105 | 113 | $this->appendJs(self::getFileFromAssetsJs('bitform-init.min.js'), $postId, $preview); |
| 114 | + // picks up forms injected after load (AJAX, popups, lazy content) | |
| 115 | + $this->appendJs(self::getFileFromAssetsJs('bitform-observer.min.js'), $postId, $preview); | |
| 106 | 116 | if (defined('ELEMENTOR_PRO_VERSION')) { |
| 107 | 117 | $this->appendJs(self::getFileFromAssetsJs('bitform-elementor.min.js'), $postId, $preview); |
| 108 | 118 | } |
| 109 | 119 | |
| @@ -558,9 +568,15 @@ | ||
| 558 | 568 | |
| 559 | 569 | private function jsHiddenFieldScript() |
| 560 | 570 | { |
| 561 | 571 | $appConfig = get_option('bitform_app_config'); |
| 562 | - if (Helpers::property_exists_nested($appConfig, 'cache_plugin', true)) { | |
| 572 | + $cacheTokenEnabled = true; | |
| 573 | + if (is_object($appConfig) && property_exists($appConfig, 'cache_plugin')) { | |
| 574 | + $cacheTokenEnabled = (bool) $appConfig->cache_plugin; | |
| 575 | + } elseif (is_array($appConfig) && array_key_exists('cache_plugin', $appConfig)) { | |
| 576 | + $cacheTokenEnabled = (bool) $appConfig['cache_plugin']; | |
| 577 | + } | |
| 578 | + if ($cacheTokenEnabled) { | |
| 563 | 579 | $fileArr = ScriptFilePriorityManager::frontendScriptFile()['hidden-token-field']; |
| 564 | 580 | $this->addScriptInLoadedScriptsList($fileArr); |
| 565 | 581 | return; |
| 566 | 582 | } |
| @@ -574,16 +590,6 @@ | ||
| 574 | 590 | $this->addScriptInLoadedScriptsList(['priority' => 303, 'filename' => 'initRecaptchaV3Fld.min.js']); |
| 575 | 591 | return; |
| 576 | 592 | } |
| 577 | 593 | } |
| 578 | - } | |
| 579 | - | |
| 580 | - public function dd($data, $exit = false) | |
| 581 | - { | |
| 582 | - echo '+++++++++++++'; | |
| 583 | - echo '<pre>'; | |
| 584 | - var_dump($data); | |
| 585 | - echo '</pre>'; | |
| 586 | - echo '+++++++++++++'; | |
| 587 | - $exit ? exit : ''; | |
| 588 | 594 | } |
| 589 | 595 | } |