PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.9.3
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.9.3
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 3.4.2 3.5.0 All 201 releases
betterdocs / includes / Core / Scripts.php

Scripts.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 4.9.3, at includes/Core/Scripts.php

180 lines 7.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace WPDeveloper\BetterDocs\Core;
3
4 if ( ! defined( 'ABSPATH' ) ) {
5 exit;
6 }
7
8
9 use WPDeveloper\BetterDocs\Utils\Base;
10 use WPDeveloper\BetterDocs\Utils\Helper;
11 use WPDeveloper\BetterDocs\FrontEnd\PrintTemplate;
12
13 class Scripts extends Base {
14 protected $settings;
15
16 public function __construct( Settings $settings ) {
17 $this->settings = $settings;
18
19 add_action( 'init', [ $this, 'init' ], 1 );
20 }
21
22 public function init() {
23 $assets = betterdocs()->assets;
24
25 // Vendor CSS
26 $assets->register( 'simplebar', 'vendor/css/simplebar.css' );
27
28 // Vendor JS
29 $assets->register( 'simplebar', 'vendor/js/simplebar.js' );
30
31 if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
32 $assets->register( 'clipboard', 'vendor/js/clipboard.min.js' );
33 }
34
35 // Shortcodes Styles Registrations
36 $assets->register( 'betterdocs-search', 'public/css/search.css' );
37 $assets->register( 'betterdocs-search-modal', 'public/css/search-modal.css' );
38 $assets->register( 'betterdocs-social-share', 'public/css/social-share.css' );
39 $assets->register( 'betterdocs-feedback-form', 'public/css/feedback-form.css' );
40 $assets->register( 'betterdocs-reactions', 'public/css/reactions.css' );
41 $assets->register( 'betterdocs-toc', 'public/css/toc.css' );
42 $assets->register( 'betterdocs-faq', 'public/css/faq.css' );
43 $assets->register( 'betterdocs-category-tab-grid', 'public/css/category-tab-grid.css' );
44 $assets->register( 'reading-time', 'public/css/reading-time.css' );
45
46 // Template Parts
47 $assets->register( 'betterdocs-sidebar', 'public/css/sidebar.css' );
48 $assets->register( 'betterdocs-breadcrumb', 'public/css/breadcrumb.css' );
49 $assets->register( 'betterdocs-single', 'public/css/single.css' );
50 $assets->register( 'betterdocs-docs', 'public/css/docs.css' );
51 $assets->register( 'betterdocs-pagination', 'public/css/pagination.css' );
52 $assets->register( 'betterdocs-doc_category', 'public/css/tax-doc_category.css', [ 'betterdocs-breadcrumb', 'betterdocs-pagination' ] );
53 $assets->register( 'betterdocs-category-archive-header', 'public/css/archive-header.css' );
54 $assets->register( 'betterdocs-category-archive-doc-list', 'public/css/archive-doc-list.css' );
55 $assets->register( 'betterdocs-article-summary', 'public/css/article-summary.css' );
56 $assets->register( 'betterdocs-author', 'public/css/author.css' );
57
58 $assets->register( 'betterdocs-category-grid', 'public/css/category-grid.css', [ 'simplebar' ] );
59 $assets->register( 'betterdocs-category-box', 'public/css/category-box.css' );
60 $assets->register( 'betterdocs-category-grid-list', 'public/css/category-grid-list.css' );
61
62 // JS
63 $assets->register( 'betterdocs', 'public/js/betterdocs.js', [ 'jquery' ] );
64 // Shortcode JS
65 $assets->register( 'betterdocs-category-toggler', 'public/js/category-toggler.js', [ 'jquery' ] );
66 $assets->register(
67 'betterdocs-category-grid',
68 'public/js/category-grid.js',
69 [
70 'jquery',
71 'masonry',
72 'simplebar',
73 'betterdocs-category-toggler'
74 ]
75 );
76 $assets->register( 'betterdocs-faq', 'shortcodes/js/faq.js', [ 'jquery' ] );
77 $assets->register( 'betterdocs-reactions', 'shortcodes/js/reactions.js', [ 'jquery' ] );
78 $assets->register( 'betterdocs-search', 'shortcodes/js/search.js', [ 'jquery' ] );
79 $assets->register( 'betterdocs-search-modal', 'shortcodes/js/search-modal.js', [ 'jquery' ] );
80
81 /**
82 * Print template config for the single-doc Print / Save-as-PDF button.
83 *
84 * These values feed the print *popup* opened by the BetterDocs print
85 * icon. The browser's own Ctrl/Cmd+P route is handled separately by
86 * {@see PrintTemplate}, which resolves the same two values — see that
87 * class for why the two routes use different layout mechanisms.
88 *
89 * Both toggles live in `betterdocs_settings` (BetterDocs → Settings →
90 * Layout → Single Doc → General) rather than theme mods, so they stay
91 * reachable on block/FSE themes, which have no Customizer. Both default
92 * to OFF; while a toggle is off the value resolves empty and the print
93 * script renders nothing for it.
94 */
95 $print_logo = PrintTemplate::get_logo();
96 $print_footer = PrintTemplate::get_footer();
97
98 $assets->localize(
99 'betterdocs',
100 'betterdocsConfig',
101 [
102 'ajax_url' => admin_url( 'admin-ajax.php' ),
103 'copy_text' => __( 'Copied', 'betterdocs' ),
104 'sticky_toc_offset' => $this->settings->get( 'sticky_toc_offset' ),
105 'summary_nonce' => wp_create_nonce( 'betterdocs_article_summary_nonce' ),
106 'summary_error' => __( 'Failed to generate doc summary. Please try again.', 'betterdocs' ),
107 'print' => [
108 'logo' => $print_logo ? esc_url( $print_logo ) : '',
109 'footer' => $print_footer ? wp_kses_post( $print_footer ) : ''
110 ]
111 ]
112 );
113
114 $assets->localize(
115 'betterdocs-search',
116 'betterdocsSearchConfig',
117 [
118 // Root-relative so live search stays same-origin when the KB is
119 // served on a different host than the Site Address (subdomain /
120 // domain alias / reverse proxy). See Helper::frontend_ajax_url().
121 'ajax_url' => Helper::frontend_ajax_url(),
122 'search_letter_limit' => $this->settings->get( 'search_letter_limit' )
123 ]
124 );
125
126 $assets->localize(
127 'betterdocs-search-modal',
128 'betterdocsSearchModalConfig',
129 [
130 // Same-origin (see betterdocsSearchConfig above).
131 'ajax_url' => Helper::frontend_ajax_url(),
132 'rest_url' => esc_url_raw(rest_url()),
133 'advance_search' => $this->settings->get( 'advance_search' ),
134 'child_category_exclude' => $this->settings->get( 'child_category_exclude' ),
135 'popular_keyword_limit' => $this->settings->get( 'popular_keyword_limit' ),
136 'search_letter_limit' => $this->settings->get( 'search_letter_limit' ),
137 'search_placeholder' => $this->settings->get( 'search_placeholder' ),
138 'search_button_text' => $this->settings->get( 'search_button_text' ),
139 'search_not_found_text' => $this->settings->get( 'search_not_found_text' ),
140 'kb_based_search' => $this->settings->get( 'kb_based_search' )
141 ]
142 );
143
144 /**
145 * Localize This In Order To Know If This Shortcode Is Arriving From Betterdocs Templates Or Not
146 */
147 betterdocs()->assets->localize(
148 'betterdocs-category-grid',
149 'betterdocsCategoryGridConfig',
150 [
151 'is_betterdocs_templates' => betterdocs()->helper->is_templates() ? true : false,
152 'ajax_url' => admin_url( 'admin-ajax.php' ),
153 'lazy_load_action' => 'betterdocs_lazy_category_body'
154 ]
155 );
156
157 $this->blocks( $assets );
158 $this->admin_assets( $assets );
159
160 return $assets;
161 }
162
163
164
165 public function blocks( $assets ) {
166 $assets->register( 'betterdocs-fontawesome', 'vendor/css/font-awesome5.css' );
167 $assets->register( 'betterdocs-blocks-category-box', 'blocks/categorybox/default.css' );
168 $assets->register( 'betterdocs-blocks-category-grid', 'blocks/categorygrid/default.css' );
169 $assets->register( 'betterdocs-blocks-category-tech-layout', 'blocks/category-tech-layout/default.css' );
170 $assets->register( 'betterdocs-blocks-category-slate-layout', 'blocks/category-slate-layout/default.css' );
171 $assets->register( 'betterdocs-feedback-form-editor', 'blocks/feedback-form/style-feedback-editor.css' );
172 $assets->register( 'betterdocs-doc-archive-list', 'blocks/doc-archive-list/default.css' );
173 }
174
175 public function admin_assets( $assets ) {
176 $assets->register( 'betterdocs-article-quality-score', 'admin/js/article-quality-score.js', [ 'jquery' ] );
177
178 }
179 }
180