// PHP options required by embed.js $options = array("id" => $formModel->id, "app" => $baseUrl . "app", "tracker" => $baseUrl . "/static_files/js/form.tracker.js", "name" => "#form-app", "actionUrl" => Url::to(['app/a', 'id' => $formModel->id], true), "validationUrl" => Url::to(['app/check', 'id' => $formModel->id], true), "_csrf" => Yii::$app->request->getCsrfToken(), "resume" => $formModel->resume, "autocomplete" => $formModel->autocomplete, "analytics" => $formModel->analytics && $record, "confirmationType" => $formConfirmationModel->type, "confirmationMessage" => $formConfirmationModel->message, "confirmationUrl" => $formConfirmationModel->url, "showOnlyMessage" => $formConfirmationModel::CONFIRM_WITH_ONLY_MESSAGE, "redirectToUrl" => $formConfirmationModel::CONFIRM_WITH_REDIRECTION, "rules" => $rules, "fieldIds" => $formDataModel->getFieldIds(), "submitted" => false, "runOppositeActions" => true, "i18n" => ['complete' => Yii::t('app', 'Complete'), 'unexpectedError' => Yii::t('app', 'An unexpected error has occurred. Please retry later.')]); // Pass php options to javascript $this->registerJs("var options = " . json_encode($options) . ";", View::POS_BEGIN, 'form-options'); // Load reCAPTCHA JS Api // Only if Form has reCaptcha component and was not passed in this session if ($formModel->recaptcha === $formModel::RECAPTCHA_ACTIVE && !Yii::$app->session['reCaptcha']) { $this->registerJsFile('https://www.google.com/recaptcha/api.js', ['position' => View::POS_HEAD]); $this->registerCss(".g-recaptcha { height: 78px; }"); } // Pager $pager = new Pager(Html::decode($formDataModel->html)); // Utilities required for javascript files $this->registerJsFile('@web/static_files/js/form.utils.min.js', ['depends' => JqueryAsset::className()]); // If form has multiple pages if ($pager->getNumberOfPages() > 1) { // Animations $this->registerJsFile('@web/static_files/js/libs/jquery.easing.min.js', ['depends' => JqueryAsset::className()]); } // If resume later is enabled if ($formModel->resume) { $this->registerJsFile('@web/static_files/js/form.resume.min.js', ['depends' => JqueryAsset::className()]); } // If form has rules if (count($rules) > 0) { // Load rules engine and run $this->registerJsFile('@web/static_files/js/rules.engine.min.js', ['depends' => JqueryAsset::className()]); $this->registerJsFile('@web/static_files/js/rules.engine.run.min.js', ['depends' => JqueryAsset::className()]); } $this->registerJsFile('@web/static_files/js/libs/jquery.form.js', ['depends' => JqueryAsset::className()]); // Load embed.js after all