PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.3.6
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.3.6
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 3.4.2 3.5.0 3.5.1 3.5.2 All 199 releases
betterdocs / admin / assets / js / betterdocs-admin.js

betterdocs-admin.js in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.3.6, at admin/assets/js/betterdocs-admin.js

1,091 lines 27.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function ($) {
2 "use strict";
3
4 /**
5 * BetterDocs Admin JS
6 */
7
8 $.betterdocsAdmin = $.betterdocsAdmin || {};
9
10 $(document).ready(function () {
11 $.betterdocsAdmin.init();
12
13 var qVars = $.betterdocsAdmin.get_query_vars("page");
14 if (qVars != undefined) {
15 if (qVars.indexOf("betterdocs-settings") >= 0) {
16 var cSettingsTab = qVars.split("#");
17 $(
18 '.betterdocs-settings-menu li[data-tab="' +
19 cSettingsTab[1] +
20 '"]'
21 ).trigger("click");
22 }
23 }
24 });
25
26 $.betterdocsAdmin.init = function () {
27 $.betterdocsAdmin.toggleFields();
28 $.betterdocsAdmin.bindEvents();
29 $.betterdocsAdmin.initializeFields();
30 };
31
32 $.betterdocsAdmin.bindEvents = function () {
33 //Advance Checkbox with SweetAlear
34 $("body").on(
35 "click",
36 ".betterdocs-adv-checkbox-wrap label, .betterdocs-stats-tease",
37 function (e) {
38 if (typeof $(this)[0].dataset.swal == "undefined") {
39 return;
40 }
41 if (typeof $(this)[0].dataset.swal != "undefined") {
42 e.preventDefault();
43 }
44 var premium_content = document.createElement("p");
45 var premium_anchor = document.createElement("a");
46
47 premium_anchor.setAttribute("href", "https://betterdocs.co");
48 premium_anchor.innerText = "Premium";
49 premium_anchor.style.color = "red";
50 premium_content.innerHTML =
51 "You need to upgrade to the <strong>" +
52 premium_anchor.outerHTML +
53 " </strong> Version to use this feature";
54
55 swal({
56 title: "Opps...",
57 content: premium_content,
58 icon: "warning",
59 buttons: [false, "Close"],
60 dangerMode: true,
61 });
62 }
63 );
64
65 // date range picker
66 $("#dashboard-select-date").change(function () {
67 if (this.value == 'custom_date') {
68 $('#reportrange').show().trigger('click');
69 } else {
70 $('#reportrange').hide();
71 }
72 });
73
74 if ($("#dashboard-select-date").val() === 'custom_date') {
75 $('#reportrange').show();
76 }
77
78 $('#reportrange').daterangepicker({
79 timePicker: false,
80 /*showDropdowns: true,
81 minYear: 1950,
82 maxYear: parseInt(moment().format('YYYY'),10),*/
83 ranges: {
84 'Today': [moment(), moment()],
85 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
86 'Last 7 Days': [moment().subtract(6, 'days'), moment()],
87 'Last 30 Days': [moment().subtract(29, 'days'), moment()],
88 'This Month': [moment().startOf('month'), moment().endOf('month')],
89 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
90 },
91 locale: {
92 format: 'MMMM D, YYYY'
93 }
94 });
95
96 // Switch to Dark Mode
97 $("#betterdocs-mode-toggle").prop(
98 "checked",
99 betterdocs_admin.dark_mode
100 );
101
102 $("#betterdocs-mode-toggle").on("click", function (e) {
103 $("body").toggleClass("betterdocs-dark-mode");
104 $.ajax({
105 type: "POST",
106 url: betterdocs_admin.ajaxurl,
107 data: {
108 action: "betterdocs_dark_mode",
109 mode: e.currentTarget.checked ? 1 : 0,
110 nonce: betterdocs_admin.doc_cat_order_nonce,
111 },
112 dataType: "JSON",
113 success: function (response) {
114 // console.log( response );
115 },
116 });
117 });
118
119 // Go To Sorting UI
120 $("body.post-type-docs.edit-php .wp-heading-inline").after(
121 '<a href="admin.php?page=betterdocs-admin" class="page-title-action">' +
122 betterdocs_admin.menu_title +
123 "</a>"
124 );
125
126 /**
127 * Group Field Events
128 */
129 $(".betterdocs-group-field .betterdocs-group-field-title").on(
130 "click",
131 function (e) {
132 e.preventDefault();
133 if ($(e.srcElement).hasClass("betterdocs-group-field-title")) {
134 $.betterdocsAdmin.groupToggle(this);
135 }
136 }
137 );
138
139 $(".betterdocs-group-field .betterdocs-group-clone").on(
140 "click",
141 function () {
142 $.betterdocsAdmin.cloneGroup(this);
143 }
144 );
145
146 $("body").on(
147 "click",
148 ".betterdocs-group-field .betterdocs-group-remove",
149 function () {
150 $.betterdocsAdmin.removeGroup(this);
151 }
152 );
153
154 /**
155 * Media Field
156 */
157 $(".betterdocs-media-field-wrapper .betterdocs-media-upload-button").on(
158 "click",
159 function (e) {
160 e.preventDefault();
161 $.betterdocsAdmin.initMediaField(this);
162 }
163 );
164
165 $(".betterdocs-media-field-wrapper .betterdocs-media-remove-button").on(
166 "click",
167 function (e) {
168 e.preventDefault();
169 $.betterdocsAdmin.removeMedia(this);
170 }
171 );
172
173 /**
174 * Settings Tab
175 */
176 $(".betterdocs-settings-menu li").on("click", function (e) {
177 $.betterdocsAdmin.settingsTab(this);
178 });
179
180 $(".betterdocs-settings-button").on("click", function (e) {
181 e.preventDefault();
182 var form = $(this).parents("#betterdocs-settings-form");
183 $.betterdocsAdmin.submitSettings(this, form);
184 });
185
186 $("#test_report").on("click", function (e) {
187 e.preventDefault();
188 $.betterdocsAdmin.sendEmail(this);
189 });
190
191 $(".betterdocs-opt-alert").on("click", function (e) {
192 $.betterdocsAdmin.fieldAlert(this);
193 });
194
195 /**
196 * Reset Section Settings
197 */
198 $(".betterdocs-section-reset").on("click", function (e) {
199 e.preventDefault();
200 $.betterdocsAdmin.resetSection(this);
201 });
202
203 $.betterdocsAdmin.permalink_structure();
204 $('#permalink_structure').on('change', $.betterdocsAdmin.permalink_structure);
205 $('#multiple_kb').on('change', function(){
206 var kb = $('.permalink-structure .available-structure-tags .knowledge-base');
207 var multiple_kb = $(this);
208 if(multiple_kb.is(':checked')){
209 kb.show();
210 }
211 else{
212 kb.hide();
213 }
214 $.betterdocsAdmin.permalink_structure();
215 });
216 };
217
218 $.betterdocsAdmin.permalink_structure = function(){
219 var multiple_kb = $('#multiple_kb');
220 var permalink_structure = $('#permalink_structure');
221 var $val = permalink_structure.val();
222 if($val && !multiple_kb.is(':checked')){
223 permalink_structure.val($val.replace(/%knowledge_base%\/?/g, ''));
224 }
225 }
226
227 $.betterdocsAdmin.initializeFields = function () {
228 $.betterdocsAdmin.innerTab();
229 if ($(".betterdocs-meta-field, .betterdocs-settings-field").length > 0) {
230 $(".betterdocs-meta-field, .betterdocs-settings-field").map(
231 function (iterator, item) {
232 var node = item.nodeName;
233 if (node === "SELECT") {
234 $(item).select2({
235 placeholder: "Select any",
236 });
237 }
238 }
239 );
240 }
241
242 if ($(".betterdocs-countdown-datepicker").length > 0) {
243 $(".betterdocs-countdown-datepicker").each(function () {
244 $(this).find("input").datepicker({
245 changeMonth: true,
246 changeYear: true,
247 dateFormat: "DD, d MM, yy",
248 });
249 });
250 }
251
252 $(".betterdocs-settings-field.betterdocs-select").on("select2:select", function (evt) {
253 let $values = $(this).val();
254 if ( Array.isArray( $values ) && $values.includes('all') && $values.length > 1 ) {
255 let mod_values = $values.filter((value) => {
256 return value != 'all'
257 });
258 $(this).val(mod_values);
259 $(this).trigger('change');
260 }
261 });
262
263 $(".betterdocs-metabox-wrapper .betterdocs-meta-field, .betterdocs-settings-field").trigger("change");
264
265 if ($(".betterdocs-colorpicker-field").length > 0) {
266 if ("undefined" !== typeof $.fn.wpColorPicker) {
267 $(".betterdocs-colorpicker-field").each(function () {
268 var color = $(this).val();
269 $(this)
270 .wpColorPicker({
271 change: function (event, ui) {
272 var element = event.target;
273 var color = ui.color.toString();
274 $(element)
275 .parents(".wp-picker-container")
276 .find("input.betterdocs-colorpicker-field")
277 .val(color)
278 .trigger("change");
279 },
280 })
281 .parents(".wp-picker-container")
282 .find(".wp-color-result")
283 .css("background-color", "#" + color);
284 });
285 }
286 }
287 $.betterdocsAdmin.groupField();
288 $(".betterdocs-meta-template-editable").trigger("blur");
289 };
290
291 $.betterdocsAdmin.innerTab = function () {
292 if ($(".betterdocs-section-inner-tab").length <= 0) {
293 return;
294 }
295
296 $(".betterdocs-section-inner-tab").each(function (i, item) {
297 $(item)
298 .find("ul")
299 .on("click", "li", function (e) {
300 var target = e.currentTarget.dataset.target;
301 $(this)
302 .addClass("betterdocs-active")
303 .siblings()
304 .removeClass("betterdocs-active");
305 $("#" + target)
306 .show()
307 .siblings()
308 .hide();
309 });
310 $(item).find("ul").find("li:first").trigger("click");
311 });
312 };
313
314 $.betterdocsAdmin.groupField = function () {
315 if ($(".betterdocs-group-field-wrapper").length < 0) {
316 return;
317 }
318
319 var fields = $(".betterdocs-group-field-wrapper");
320
321 fields.each(function () {
322 var $this = $(this),
323 groups = $this.find(".betterdocs-group-field"),
324 firstGroup = $this.find(".betterdocs-group-field:first"),
325 lastGroup = $this.find(".betterdocs-group-field:last");
326
327 groups.each(function () {
328 var groupContent = $(this)
329 .find(".betterdocs-group-field-title:not(.open)")
330 .next();
331 if (groupContent.is(":visible")) {
332 groupContent.addClass("open");
333 }
334 });
335
336 $this.find(".betterdocs-group-field-add").on("click", function (e) {
337 e.preventDefault();
338
339 var fieldId = $this.attr("id"),
340 dataId = $this.data("name"),
341 wrapper = $this.find(".betterdocs-group-fields-wrapper"),
342 groups = $this.find(".betterdocs-group-field"),
343 firstGroup = $this.find(".betterdocs-group-field:first"),
344 lastGroup = $this.find(".betterdocs-group-field:last"),
345 clone = $($this.find(".betterdocs-group-template").html()),
346 groupId = parseInt(lastGroup.data("id")),
347 nextGroupId = 1,
348 title = clone.data("group-title");
349
350 if (!isNaN(groupId)) {
351 nextGroupId = groupId + 1;
352 }
353
354 groups.each(function () {
355 $(this).removeClass("open");
356 });
357
358 // Reset all data of clone object.
359 clone.attr("data-id", nextGroupId);
360 clone.addClass("open");
361 // clone.find('.betterdocs-group-field-title > span').html(title + ' ' + nextGroupId);
362 clone
363 .find("tr.betterdocs-field[id*=" + fieldId + "]")
364 .each(function () {
365 var fieldName = dataId;
366 var fieldNameSuffix = $(this)
367 .attr("id")
368 .split("[1]")[1];
369 var nextFieldId =
370 fieldName +
371 "[" +
372 nextGroupId +
373 "]" +
374 fieldNameSuffix;
375 var label = $(this).find("th label");
376
377 $(this)
378 .find('[name*="' + fieldName + '[1]"]')
379 .each(function () {
380 var inputName = $(this)
381 .attr("name")
382 .split("[1]");
383 var inputNamePrefix = inputName[0];
384 var inputNameSuffix = inputName[1];
385 var newInputName =
386 inputNamePrefix +
387 "[" +
388 nextGroupId +
389 "]" +
390 inputNameSuffix;
391 $(this)
392 .attr("id", newInputName)
393 .attr("name", newInputName);
394 label.attr("for", newInputName);
395 });
396
397 $(this).attr("id", nextFieldId);
398 });
399
400 clone.insertBefore($(this));
401
402 $.betterdocsAdmin.resetFieldIds($(".betterdocs-group-field"));
403 });
404 });
405 };
406
407 /**
408 * This function will change tab
409 * with menu click & Next Previous Button Click
410 */
411 $.betterdocsAdmin.tabChanger = function (buttonName) {
412 var button = $(buttonName),
413 tabID = button.data("tabid"),
414 tabKey = button.data("tab"),
415 tab;
416
417 if (tabKey != "") {
418 tab = $("#betterdocs-" + tabKey);
419 $("#betterdocs_builder_current_tab").val(tabKey);
420 }
421
422 if (buttonName.nodeName !== "BUTTON") {
423 button
424 .parent()
425 .find("li")
426 .each(function (i) {
427 if (i < tabID) {
428 $(this).addClass("betterdocs-complete");
429 } else {
430 $(this).removeClass("betterdocs-complete");
431 }
432 });
433
434 button.addClass("active").siblings().removeClass("active");
435 tab.addClass("active").siblings().removeClass("active");
436 return;
437 }
438 if (tab === undefined) {
439 $("#publish").trigger("click");
440 return;
441 }
442 $('.betterdocs-metatab-menu li[data-tabid="' + tabID + '"]').trigger(
443 "click"
444 );
445 $(
446 '.betterdocs-builder-tab-menu li[data-tabid="' + tabID + '"]'
447 ).trigger("click");
448 };
449
450 $.betterdocsAdmin.toggleFields = function () {
451 $(".betterdocs-meta-field, .betterdocs-settings-field").on(
452 "change",
453 function (e) {
454 $.betterdocsAdmin.checkDependencies(this);
455 }
456 );
457 };
458
459 $.betterdocsAdmin.toggle = function (array, func, prefix, suffix, id) {
460 var i = 0;
461 suffix = "undefined" == typeof suffix ? "" : suffix;
462
463 if (typeof array !== "undefined") {
464 for (; i < array.length; i++) {
465 var selector = prefix + array[i] + suffix;
466 $(selector)[func]();
467 }
468 }
469 };
470
471 $.betterdocsAdmin.checkDependencies = function (variable) {
472 if (betterdocsAdminConfig.toggleFields === null) {
473 return;
474 }
475
476 var current = $(variable),
477 container = current.parents(".betterdocs-field:first"),
478 id = container.data("id"),
479 value = current.val();
480
481 if ("checkbox" === current.attr("type")) {
482 if (!current.is(":checked")) {
483 value = 0;
484 } else {
485 value = 1;
486 }
487 }
488
489 if (current.hasClass("betterdocs-theme-selected")) {
490 var currentTheme = current
491 .parents(".betterdocs-theme-control-wrapper")
492 .data("name");
493 value = $("#" + currentTheme).val();
494 }
495
496 var mainid = id;
497
498 if (betterdocsAdminConfig.toggleFields.hasOwnProperty(id)) {
499 var canShow = betterdocsAdminConfig.toggleFields[id].hasOwnProperty(
500 value
501 );
502 var canHide = true;
503 if (betterdocsAdminConfig.hideFields[id]) {
504 var canHide = betterdocsAdminConfig.hideFields[
505 id
506 ].hasOwnProperty(value);
507 }
508
509 if (
510 betterdocsAdminConfig.toggleFields.hasOwnProperty(id) &&
511 canHide
512 ) {
513 $.each(betterdocsAdminConfig.toggleFields[id], function (
514 key,
515 array
516 ) {
517 $.betterdocsAdmin.toggle(
518 array.fields,
519 "hide",
520 "#betterdocs-meta-",
521 "",
522 mainid
523 );
524 $.betterdocsAdmin.toggle(
525 array.sections,
526 "hide",
527 "#betterdocs-settings-",
528 "",
529 mainid
530 );
531 });
532 }
533
534 if (canShow) {
535 $.betterdocsAdmin.toggle(
536 betterdocsAdminConfig.toggleFields[id][value].fields,
537 "show",
538 "#betterdocs-meta-",
539 "",
540 mainid
541 );
542 $.betterdocsAdmin.toggle(
543 betterdocsAdminConfig.toggleFields[id][value].sections,
544 "show",
545 "#betterdocs-settings-",
546 "",
547 mainid
548 );
549 }
550 }
551
552 if (betterdocsAdminConfig.hideFields.hasOwnProperty(id)) {
553 var hideFields = betterdocsAdminConfig.hideFields[id];
554
555 if (hideFields.hasOwnProperty(value)) {
556 $.betterdocsAdmin.toggle(
557 hideFields[value].fields,
558 "hide",
559 "#betterdocs-meta-",
560 "",
561 mainid
562 );
563 $.betterdocsAdmin.toggle(
564 hideFields[value].sections,
565 "hide",
566 "#betterdocs-settings-",
567 "",
568 mainid
569 );
570 }
571 }
572 };
573
574 $.betterdocsAdmin.groupToggle = function (group) {
575 var input = $(group),
576 wrapper = input.parents(".betterdocs-group-field");
577
578 if (wrapper.hasClass("open")) {
579 wrapper.removeClass("open");
580 } else {
581 wrapper.addClass("open").siblings().removeClass("open");
582 }
583 };
584
585 $.betterdocsAdmin.removeGroup = function (button) {
586 var groupId = $(button)
587 .parents(".betterdocs-group-field")
588 .attr("data-id"),
589 group = $(button).parents(
590 '.betterdocs-group-field[data-id="' + groupId + '"]'
591 ),
592 parent = group.parent();
593
594 group.fadeOut({
595 duration: 300,
596 complete: function () {
597 $(this).remove();
598 },
599 });
600
601 $.betterdocsAdmin.resetFieldIds(parent.find(".betterdocs-group-field"));
602 };
603
604 $.betterdocsAdmin.cloneGroup = function (button) {
605 var groupId = $(button)
606 .parents(".betterdocs-group-field")
607 .attr("data-id"),
608 group = $(button).parents(
609 '.betterdocs-group-field[data-id="' + groupId + '"]'
610 ),
611 clone = $(group.clone()),
612 lastGroup = $(button)
613 .parents(".betterdocs-group-fields-wrapper")
614 .find(".betterdocs-group-field:last"),
615 parent = group.parent(),
616 nextGroupID = $(lastGroup).data("id") + 1;
617
618 group.removeClass("open");
619
620 clone.attr("data-id", nextGroupID);
621 clone.insertAfter(group);
622 $.betterdocsAdmin.resetFieldIds(parent.find(".betterdocs-group-field"));
623 };
624
625 $.betterdocsAdmin.resetFieldIds = function (groups) {
626 if (groups.length <= 0) {
627 return;
628 }
629 var groupID = 0;
630
631 groups.map(function (iterator, item) {
632 var item = $(item),
633 fieldName = item.data("field-name"),
634 groupInfo = item
635 .find(".betterdocs-group-field-info")
636 .data("info"),
637 subFields = groupInfo.group_sub_fields;
638
639 item.attr("data-id", groupID);
640
641 var table_row = item.find("tr.betterdocs-field");
642
643 table_row.each(function (i, child) {
644 var child = $($(child)[0]),
645 childInput = child.find(
646 '[name*="betterdocs_meta_' + fieldName + '"]'
647 ),
648 key = childInput.attr("data-key"),
649 subKey = subFields[i].original_name,
650 dataID = fieldName + "[" + groupID + "][" + subKey + "]",
651 idName = "betterdocs-meta-" + dataID,
652 inputName = "betterdocs_meta_" + dataID;
653
654 child.attr("data-id", dataID);
655 child.attr("id", idName);
656
657 if (key != undefined) {
658 childInput.attr("id", inputName);
659 childInput.attr("name", inputName);
660 childInput.attr("data-key", dataID);
661 } else {
662 if (childInput.length > 1) {
663 childInput.each(function (i, subInput) {
664 if (subInput.type === "text") {
665 var subInputName = inputName + "[url]";
666 }
667 if (subInput.type === "hidden") {
668 var subInputName = inputName + "[id]";
669 }
670 subInput = $(subInput);
671 subInput.attr("id", subInputName);
672 subInput.attr("name", subInputName);
673 subInput.attr("data-key", dataID);
674 });
675 }
676 }
677 });
678
679 groupID++;
680 });
681 };
682
683 $.betterdocsAdmin.initMediaField = function (button) {
684 var button = $(button),
685 wrapper = button.parents(".betterdocs-media-field-wrapper"),
686 removeButton = wrapper.find(".betterdocs-media-remove-button"),
687 imgContainer = wrapper.find(".betterdocs-thumb-container"),
688 idField = wrapper.find(".betterdocs-media-id"),
689 urlField = wrapper.find(".betterdocs-media-url");
690
691 // Create a new media frame
692 var frame = wp.media({
693 title: "Upload Photo",
694 button: {
695 text: "Use this photo",
696 },
697 multiple: false, // Set to true to allow multiple files to be selected
698 });
699
700 // When an image is selected in the media frame...
701 frame.on("select", function () {
702 // Get media attachment details from the frame state
703 var attachment = frame.state().get("selection").first().toJSON();
704 /**
705 * Set image to the image container
706 */
707 imgContainer
708 .addClass("betterdocs-has-thumb")
709 .append(
710 '<img src="' +
711 attachment.url +
712 '" alt="" style="max-width:100%;"/>'
713 );
714 idField.val(attachment.id); // set image id
715 urlField.val(attachment.url); // set image url
716 // Hide the upload button
717 button.addClass("hidden");
718 // Show the remove button
719 removeButton.removeClass("hidden");
720 });
721 // Finally, open the modal on click
722 frame.open();
723 };
724
725 $.betterdocsAdmin.removeMedia = function (button) {
726 var button = $(button),
727 wrapper = button.parents(".betterdocs-media-field-wrapper"),
728 uploadButton = wrapper.find(".betterdocs-media-upload-button"),
729 imgContainer = wrapper.find(".betterdocs-has-thumb"),
730 idField = wrapper.find(".betterdocs-media-id"),
731 urlField = wrapper.find(".betterdocs-media-url");
732
733 imgContainer.removeClass("betterdocs-has-thumb").find("img").remove();
734
735 urlField.val(""); // URL field has to be empty
736 idField.val(""); // ID field has to empty as well
737
738 button.addClass("hidden"); // Hide the remove button first
739 uploadButton.removeClass("hidden"); // Show the uplaod button
740 };
741
742 $.betterdocsAdmin.fieldAlert = function (button) {
743 var premium_content = document.createElement("p");
744 var premium_anchor = document.createElement("a");
745
746 premium_anchor.setAttribute("href", "https://betterdocs.co/upgrade");
747 premium_anchor.innerText = "Premium";
748 premium_anchor.style.color = "red";
749 premium_content.innerHTML =
750 "You need to upgrade to the <strong>" +
751 premium_anchor.outerHTML +
752 " </strong> Version to use this feature";
753
754 swal({
755 title: "Opps...",
756 content: premium_content,
757 icon: "warning",
758 buttons: [false, "Close"],
759 dangerMode: true,
760 });
761 };
762
763 $.betterdocsAdmin.resetSection = function (button) {
764 var button = $(button),
765 parent = button.parents(".betterdocs-meta-section"),
766 fields = parent.find(".betterdocs-meta-field"),
767 updateFields = [];
768
769 window.fieldsss = fields;
770 fields.map(function (iterator, item) {
771 var item = $(item),
772 default_value = item.data("default");
773
774 item.val(default_value);
775
776 if (item.hasClass("wp-color-picker")) {
777 item.parents(".wp-picker-container")
778 .find(".wp-color-result")
779 .removeAttr("style");
780 }
781 if (item[0].id == "betterdocs_meta_border") {
782 item.trigger("click");
783 } else {
784 item.trigger("change");
785 }
786 });
787 };
788
789 $.betterdocsAdmin.settingsTab = function (button) {
790 var button = $(button),
791 tabToGo = button.data("tab");
792
793 button.addClass("active").siblings().removeClass("active");
794 $("#betterdocs-" + tabToGo)
795 .addClass("active")
796 .siblings()
797 .removeClass("active");
798 };
799
800 $.betterdocsAdmin.submitSettings = function (button, form) {
801 var button = $(button),
802 submitKey = button.data("key"),
803 nonce = button.data("nonce"),
804 formData = $(form).serializeArray();
805
806 $.ajax({
807 type: "POST",
808 url: ajaxurl,
809 data: {
810 action: "betterdocs_general_settings",
811 key: submitKey,
812 nonce: nonce,
813 form_data: formData,
814 },
815 beforeSend: function () {
816 button.html("<span>Saving...</span>");
817 },
818 success: function (res) {
819 button.html("Save Settings");
820 if (res.data === "success") {
821 swal({
822 title: "Settings Saved!",
823 text: "Click OK to continue",
824 icon: "success",
825 buttons: [false, "Ok"],
826 timer: 2000,
827 }).then(function () {
828 $(".betterdocs-save-now").removeClass(
829 "betterdocs-save-now"
830 );
831 location=location.origin+location.pathname+location.search+'&saved=true'+location.hash;
832 });
833 } else {
834 swal({
835 title: "Settings Not Saved!",
836 text: "Click OK to continue",
837 icon: "error",
838 buttons: [false, "Ok"],
839 timer: 1000,
840 });
841 }
842 },
843 });
844 };
845
846 $.betterdocsAdmin.sendEmail = function (button) {
847 var button = $(button),
848 submitKey = button.data("key"),
849 nonce = button.data("nonce");
850
851 $.ajax({
852 type: "POST",
853 url: ajaxurl,
854 data: {
855 action: "test_email_report",
856 key: submitKey,
857 nonce: nonce
858 },
859 beforeSend: function () {
860 button.val(betterdocs_admin.sending);
861 },
862 success: function (res) {
863 button.val(betterdocs_admin.test_report);
864 if (res.success === true) {
865 swal({
866 title: "Email Report Sent!",
867 text: "Click OK to continue",
868 icon: "success",
869 buttons: [false, "Ok"],
870 timer: 2000,
871 }).then(function () {
872 $(".betterdocs-save-now").removeClass(
873 "betterdocs-save-now"
874 );
875 });
876 } else {
877 swal({
878 title: "Email sending failed!",
879 text: "Click OK to continue",
880 icon: "error",
881 buttons: [false, "Ok"],
882 timer: 1000,
883 });
884 }
885 },
886 });
887 };
888
889 $.betterdocsAdmin.get_query_vars = function (name) {
890 var vars = {};
891 window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (
892 m,
893 key,
894 value
895 ) {
896 vars[key] = value;
897 });
898 if (name != "") {
899 return vars[name];
900 }
901 return vars;
902 };
903
904 /**
905 * Copy To Clipboard
906 */
907 $('.betterdocs-settings-input-text span').on('click', function(e){
908 var previousValue = this.previousSibling;
909 previousValue.select();
910 document.execCommand("copy");
911 this.firstChild.textContent = betterdocs_admin.text;
912 previousValue.setSelectionRange(0, 99999);
913 });
914
915 /**
916 * admin tabs to display All Docs list and grid view
917 */
918
919 let active_tab = localStorage.getItem("betterdocs_admin_tab");
920 if (active_tab === 'tab-content-1') {
921 $('.icon-wrap-1').addClass('active');
922 $('.tab-content-1').addClass('active');
923 $('.select-kb-top').hide();
924 } else {
925 $('.icon-wrap-2').addClass('active');
926 $('.tab-content-2').addClass('active');
927 $('.select-kb-top').show();
928 }
929
930 $('.tabs-nav a').click(function(e) {
931 e.preventDefault();
932 $(this).siblings('a').removeClass('active').end().addClass('active');
933 let sel = this.getAttribute('data-toggle-target');
934 if (sel === '.tab-content-2') {
935 $('.select-kb-top').show();
936 } else {
937 $('.select-kb-top').hide();
938 }
939 let val = $(this).hasClass('active') ? sel : '';
940 localStorage.setItem('betterdocs_admin_tab', val.replace('.',''));
941 $('.betterdocs-tab-content').removeClass('active').filter(sel).addClass('active');
942 });
943
944 /**
945 * drag and drop sortalbe doc post
946 */
947 const docs_post_list = $(".betterdocs-single-listing ul");
948 docs_post_list.each(function (i, single_doc_list) {
949 var single_doc_list = $(single_doc_list),
950 list_term_id = single_doc_list.data("category_id"),
951 droppable = false;
952
953 if (single_doc_list.hasClass("docs-droppable")) {
954 droppable = true;
955 }
956
957 single_doc_list.sortable({
958 connectWith: "ul.docs-droppable",
959 placeholder: "betterdocs-post-list-placeholder",
960 // axis: droppable ? "y" : true,
961 // On start, set a height for the placeholder to prevent table jumps.
962 start: function (event, ui) {
963 const item = $(ui.item[0]);
964 $(".betterdocs-post-list-placeholder").css(
965 "height",
966 item.css("height")
967 );
968 },
969 receive: function (event, ui) {
970 const item = ui.item;
971 item.siblings(".betterdocs-no-docs").remove();
972 if (list_term_id != undefined) {
973 // AJAX Data.
974 const data = {
975 action: "update_docs_term",
976 object_id: item.data("id"),
977 prev_term_id: ui.sender.data("category_id"),
978 list_term_id: list_term_id,
979 doc_cat_order_nonce:
980 betterdocs_admin.doc_cat_order_nonce,
981 };
982 // Run the ajax request.
983 $.ajax({
984 type: "POST",
985 url: betterdocs_admin.ajaxurl,
986 data: data,
987 dataType: "JSON",
988 success: function (response) {
989 // console.log( response );
990 },
991 });
992 }
993 },
994 update: function (event, ui) {
995 const docs_ordering_data = [];
996 single_doc_list
997 .find("li.ui-sortable-handle")
998 .each(function () {
999 const ele = $(this);
1000 docs_ordering_data.push(ele.data("id"));
1001 });
1002 if (list_term_id != undefined) {
1003 // AJAX Data.
1004 const data = {
1005 action: "update_doc_order_by_category",
1006 docs_ordering_data: docs_ordering_data,
1007 list_term_id: list_term_id,
1008 doc_cat_order_nonce:
1009 betterdocs_admin.doc_cat_order_nonce,
1010 };
1011 // console.log( docs_ordering_data );
1012 // Run the ajax request.
1013 $.ajax({
1014 type: "POST",
1015 url: betterdocs_admin.ajaxurl,
1016 data: data,
1017 dataType: "JSON",
1018 success: function (response) {
1019 // console.log( response );
1020 },
1021 });
1022 }
1023 },
1024 });
1025 });
1026
1027 // drag and drop sortalbe doc category
1028 const base_index =
1029 parseInt(betterdocs_admin.paged) > 0
1030 ? (parseInt(betterdocs_admin.paged) - 1) *
1031 parseInt($("#" + betterdocs_admin.per_page_id).val())
1032 : 0;
1033 const tax_table = $(".taxonomy-doc_category #the-list");
1034
1035 if (tax_table.length > 0) {
1036 // If the tax table contains items.
1037 if (!tax_table.find("tr:first-child").hasClass("no-items")) {
1038 tax_table.sortable({
1039 placeholder: "betterdocs-drag-drop-cat-tax-placeholder",
1040 axis: "y",
1041
1042 // On start, set a height for the placeholder to prevent table jumps.
1043 start: function (event, ui) {
1044 const item = $(ui.item[0]);
1045 const index = item.index();
1046 $(".betterdocs-drag-drop-cat-tax-placeholder").css(
1047 "height",
1048 item.css("height")
1049 );
1050 },
1051 // Update callback.
1052 update: function (event, ui) {
1053 const item = $(ui.item[0]);
1054
1055 const taxonomy_ordering_data = [];
1056
1057 tax_table
1058 .find("tr.ui-sortable-handle")
1059 .each(function () {
1060 const ele = $(this);
1061 const term_data = {
1062 term_id: ele.attr("id").replace("tag-", ""),
1063 order: parseInt(ele.index()) + 1,
1064 };
1065 taxonomy_ordering_data.push(term_data);
1066 });
1067
1068 // AJAX Data.
1069 const data = {
1070 action: "update_doc_cat_order",
1071 taxonomy_ordering_data: taxonomy_ordering_data,
1072 base_index: base_index,
1073 doc_cat_order_nonce:
1074 betterdocs_admin.doc_cat_order_nonce,
1075 };
1076
1077 // Run the ajax request.
1078 $.ajax({
1079 type: "POST",
1080 url: betterdocs_admin.ajaxurl,
1081 data: data,
1082 dataType: "JSON",
1083 success: function (response) {},
1084 });
1085 },
1086 });
1087 }
1088 }
1089
1090 })(jQuery);
1091