PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.9.5
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.9.5
4.9.5 4.9.4 4.9.3 4.9.2 4.9.1 4.9.0 4.8.2 4.8.1 4.8.0 4.7.0 4.6.2 4.6.1 4.6.0 4.5.6 4.5.5 4.5.4 4.5.3 4.5.2 4.5.1 4.5.0 4.4.1 4.4.0 3.3.4 3.4.0 3.4.1 All 203 releases
betterdocs / react-src / admin / setup-wizard.js

setup-wizard.js in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.9.5, at react-src/admin/setup-wizard.js

278 lines 10.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import './scss/setup-wizard.scss';
2
3 jQuery(document).ready(function ($) {
4 // quick setup wizard tab handle
5 if (jQuery(".betterdocs-setup-wizard").length) {
6 betterdocsQuickSetupTabs();
7 }
8 function betterdocsQuickSetupTabs() {
9 var skipEmailStep = false;
10 // tab click handler
11 jQuery("#betterdocs-prev-option").on("click", function (e) {
12 e.preventDefault();
13 betterdocsQswNextPrev(-1);
14 betterdocsQuickSetupWizardTabTracking(-1);
15 });
16 jQuery("#betterdocs-next-option").on("click", function (e) {
17 e.preventDefault();
18 betterdocsQswNextPrev(1);
19 if (betterdocsQswValidateForm()) {
20 if (betterdocsQuickSetupGetTrackNumber() === 0) {
21 betterdocsQswOptinSubmit();
22 }
23 betterdocsQuickSetupWizardTabTracking(1);
24 }
25 });
26 jQuery("#betterdocsqswemailskipbutton").on("click", function (e) {
27 e.preventDefault();
28 skipEmailStep = true;
29 betterdocsQswNextPrev(1);
30 betterdocsQuickSetupWizardTabTracking(1);
31 });
32
33 var currentTab = betterdocsQuickSetupGetTrackNumber(); // Current tab is set to be the first tab (0)
34 showTab(currentTab); // Display the current tab
35 showTabNav(currentTab); // Display the current tab Nav
36 function showTab(n) {
37 // This function will display the specified tab of the form...
38 var tabList = jQuery(".tab-content");
39 for (let i = 0;i <= tabList.length;i++) {
40 if (i === n) {
41 jQuery(tabList[i]).addClass("active");
42 } else {
43 jQuery(tabList[i]).removeClass("active");
44 }
45 }
46 //... and fix the Previous/Next buttons:
47 if (n == 0) {
48 document.getElementById(
49 "betterdocs-prev-option"
50 ).style.display = "none";
51 jQuery(".bottom-notice-left").show();
52 jQuery("#betterdocsqswemailskipbutton").show();
53 } else {
54 document.getElementById(
55 "betterdocs-prev-option"
56 ).style.display = "inline";
57 jQuery(".bottom-notice-left").hide();
58 jQuery("#betterdocsqswemailskipbutton").hide();
59 }
60 if (n == tabList.length - 1) {
61 document.getElementById("betterdocs-next-option").innerHTML =
62 bdquicksetup.finish_txt;
63 // document.getElementById("betterdocs-next-option").classList.add("betterdocs-quick-finish");
64 return false;
65 } else {
66 document.getElementById("betterdocs-next-option").innerHTML =
67 bdquicksetup.next_txt;
68 }
69 }
70 function showTabNav(n) {
71 var tabNavList = jQuery(".nav-item");
72 for (let i = 0;i <= tabNavList.length;i++) {
73 if (i <= n) {
74 jQuery(tabNavList[i]).addClass("tab-active");
75 } else {
76 if (jQuery(tabNavList[i]).hasClass("tab-active")) {
77 jQuery(tabNavList[i]).removeClass("tab-active");
78 }
79 }
80 }
81 }
82
83 function betterdocsQswNextPrev(n) {
84 // This function will figure out which tab to display
85 var x = document.getElementsByClassName("tab-content");
86
87 // Exit the function if any field in the current tab is invalid:
88 if (n == 1 && !betterdocsQswValidateForm() && !skipEmailStep)
89 return false;
90
91 // Increase or decrease the current tab by 1:
92 currentTab = currentTab + n;
93 if (currentTab < x.length) {
94 // Otherwise, display the correct tab:
95 showTab(currentTab);
96 // display tab nav
97 showTabNav(currentTab);
98 } else {
99 // ajax call after false
100 betterdocsQswOptionSubmit();
101 swal({
102 title: "Good job!",
103 text: "Setup is Complete.",
104 icon: "success",
105 timer: 2000,
106 }).then(function () {
107 let locationSearch = location = location.search;
108 let pageReplace = location.search.replace("betterdocs-setup", "betterdocs-settings");
109 location = location.origin + location.pathname + location.search.replace("betterdocs-setup", "betterdocs-settings") + '&saved=true';
110 });
111 currentTab = x.length - 1;
112 if (
113 localStorage.getItem("betterdocsQswTabNumberTracking") <= 5
114 ) {
115 betterdocsQuickSetupWizardTabTracking(-2);
116 } else {
117 betterdocsQuickSetupWizardTabTracking(-1);
118 }
119 }
120 }
121
122 function betterdocsQswValidateForm() {
123 var valid = true;
124 return valid;
125 }
126 }
127
128 function isChecked(selector) {
129 return $(selector).is(":checked")
130 }
131
132 // Quick Setup Wizard Save
133 function betterdocsQswOptionSubmit() {
134 var ajaxnonce = $(
135 '.betterdocs-setup-wizard input[name="betterdocsqswnonce"]'
136 ).val();
137
138
139 var builtin_doc_page = isChecked('.betterdocs-setup-wizard input[name="builtin_doc_page"]');
140 var enable_disable = isChecked('.betterdocs-setup-wizard input[name="enable_disable"]');
141 var docs_slug = $('.betterdocs-setup-wizard input[name="docs_slug"]').val();
142 var activatePlugin = isChecked(".betterdocs-setup-wizard .activate_plugin");
143
144 var activate_plugin = "";
145 if (activatePlugin) {
146 activate_plugin = $(".betterdocs-setup-wizard .activate_plugin").val();
147 }
148
149 var data = {
150 action: "better_docs_quick_setup_wizard_data_save",
151 security: ajaxnonce,
152 activate_plugin: activate_plugin,
153 builtin_doc_page: builtin_doc_page,
154 docs_slug: docs_slug,
155 enable_disable: enable_disable,
156 };
157 // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
158 jQuery.post(ajaxurl, data, function (response) { });
159 }
160
161 function betterdocsQswOptinSubmit() {
162 var quickOptin = $("#betterdocs_user_email_address");
163 if (quickOptin.is(":checked")) {
164 var ajaxnonce = $(
165 '.betterdocs-setup-wizard input[name="betterdocsqswnonce"]'
166 ).val();
167 var data = {
168 nonce: ajaxnonce,
169 action: "optin_wizard_action_betterdocs",
170 admin_email: $("#betterdocs_user_email_address").val(),
171 };
172 jQuery.post(ajaxurl, data, function (response) {
173 if (response.hasOwnProperty("success") && response.success) {
174 $(".notice-betterdocs").remove();
175 }
176 });
177 }
178 }
179
180 // popup modal showing for error message
181 $(".betterdocs-pro-feature-checkbox label").on("click", function () {
182 var premium_content = document.createElement("p");
183 var premium_anchor = document.createElement("a");
184
185 premium_anchor.setAttribute("href", "https://betterdocs.co/");
186 premium_anchor.innerText = "Premium";
187 premium_anchor.style.color = "red";
188 var pro_label = $(this).find(".nx-pro-label");
189 if (pro_label.hasClass("has-to-update")) {
190 premium_anchor.innerText =
191 "Latest Pro v" +
192 pro_label
193 .text()
194 .toString()
195 .replace(/[ >=<]/g, "");
196 }
197 premium_content.innerHTML =
198 "You need to upgrade to the <strong>" +
199 premium_anchor.outerHTML +
200 " </strong> Version to use this module.";
201
202 swal({
203 title: "Opps...",
204 content: premium_content,
205 icon: "warning",
206 buttons: [false, "Close"],
207 dangerMode: true,
208 });
209 });
210
211 /**
212 * quick setup wizard tab tracking
213 */
214 function betterdocsQuickSetupWizardTabTracking(tabNumber) {
215 var allTabs = jQuery(".betterdocs-tabnav-wrap ul.tab-nav li.nav-item");
216 var existing = localStorage.getItem("betterdocsQswTabNumberTracking");
217 existing = parseInt(existing) ? parseInt(existing) : 0;
218 if (parseInt(existing) < allTabs.length) {
219 existing = existing + tabNumber;
220 localStorage.setItem("betterdocsQswTabNumberTracking", existing);
221 } else if (parseInt(existing) >= allTabs.length) {
222 localStorage.setItem(
223 "betterdocsQswTabNumberTracking",
224 allTabs.length - 1
225 );
226 }
227 return parseInt(existing);
228 }
229 /***
230 * Get Current Number
231 */
232 function betterdocsQuickSetupGetTrackNumber() {
233 var oldNumber = localStorage.getItem("betterdocsQswTabNumberTracking");
234 var allTabs = jQuery(".betterdocs-tabnav-wrap ul.tab-nav li.nav-item");
235 if (parseInt(oldNumber) >= allTabs.length) {
236 localStorage.setItem(
237 "betterdocsQswTabNumberTracking",
238 allTabs.length - 1
239 );
240 }
241 return oldNumber ? parseInt(oldNumber) : 0;
242 }
243
244 // email input field length checking
245 jQuery("#betterdocs_user_email_address").on("click", function (e) {
246 if (jQuery(this).prop("checked") === true) {
247 $(this).removeClass("invalid");
248 } else {
249 $(this).addClass("invalid");
250 }
251 });
252
253 // collect Toggle
254 jQuery(".btn-collect").on("click", function () {
255 jQuery("p.whatwecollecttext").toggle();
256 });
257
258 // change url
259 betterdocsSetupWizardSetCustomizerUrl();
260 function betterdocsSetupWizardSetCustomizerUrl() {
261 jQuery('input[name="docs_slug"]').on("change", function () {
262 var data = {
263 action: "better_docs_setup_generate_live_url",
264 docs_slug: jQuery(this).val(),
265 };
266 // since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
267 jQuery.post(ajaxurl, data, function (response) {
268 var allResponse = JSON.parse(response);
269 jQuery("#bdgotocustomize").attr(
270 "href",
271 allResponse.customizerurl
272 );
273 jQuery("#bdgotodocspage").attr("href", allResponse.siteurl);
274 });
275 });
276 }
277 });
278