PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 4.9.2
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v4.9.2
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 3.5.1 All 200 releases
← All changes | includes/Core/Scripts.php +151 -59 3.4.24.9.2 View file →
@@ -1,83 +1,175 @@
1 1 <?php
2 +namespace WPDeveloper\BetterDocs\Core;
2 3
3 -namespace WPDeveloper\BetterDocs\Core;
4 +if ( ! defined( 'ABSPATH' ) ) {
5 + exit;
6 +}
7 +
8 +
4 9 use WPDeveloper\BetterDocs\Utils\Base;
10 +use WPDeveloper\BetterDocs\Utils\Helper;
11 +use WPDeveloper\BetterDocs\FrontEnd\PrintTemplate;
5 12
6 13 class Scripts extends Base {
7 - protected $settings;
14 + protected $settings;
8 15
9 - public function __construct( Settings $settings ) {
10 - $this->settings = $settings;
16 + public function __construct( Settings $settings ) {
17 + $this->settings = $settings;
11 18
12 - add_action( 'init', [$this, 'init'], 1 );
13 - }
19 + add_action( 'init', [ $this, 'init' ], 1 );
20 + }
14 21
15 - public function init(){
16 - $assets = betterdocs()->assets;
22 + public function init() {
23 + $assets = betterdocs()->assets;
17 24
18 - // Vendor CSS
19 - $assets->register( 'simplebar', 'vendor/css/simplebar.css' );
25 + // Vendor CSS
26 + $assets->register( 'simplebar', 'vendor/css/simplebar.css' );
20 27
21 - // Vendor JS
22 - $assets->register( 'simplebar', 'vendor/js/simplebar.js' );
23 - $assets->register( 'clipboard', 'vendor/js/clipboard.min.js' );
28 + // Vendor JS
29 + $assets->register( 'simplebar', 'vendor/js/simplebar.js' );
24 30
31 + if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
32 + $assets->register( 'clipboard', 'vendor/js/clipboard.min.js' );
33 + }
25 34
26 - // Shortcodes Styles Registrations
27 - $assets->register( 'betterdocs-search', 'public/css/search.css' );
28 - $assets->register( 'betterdocs-social-share', 'public/css/social-share.css' );
29 - $assets->register( 'betterdocs-feedback-form', 'public/css/feedback-form.css' );
30 - $assets->register( 'betterdocs-reactions', 'public/css/reactions.css' );
31 - $assets->register( 'betterdocs-toc', 'public/css/toc.css' );
32 - $assets->register( 'betterdocs-faq', 'public/css/faq.css' );
33 - $assets->register( 'betterdocs-category-tab-grid', 'public/css/category-tab-grid.css' );
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' );
34 45
35 - // Template Parts
36 - $assets->register( 'betterdocs-sidebar', 'public/css/sidebar.css' );
37 - $assets->register( 'betterdocs-breadcrumb', 'public/css/breadcrumb.css' );
38 - $assets->register( 'betterdocs-single', 'public/css/single.css' );
39 - $assets->register( 'betterdocs-docs', 'public/css/docs.css' );
40 - $assets->register( 'betterdocs-doc_category', 'public/css/tax-doc_category.css', [ 'betterdocs-breadcrumb' ] );
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' );
41 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' );
42 61
43 - $assets->register( 'betterdocs-category-grid', 'public/css/category-grid.css', [ 'simplebar' ] );
44 - $assets->register( 'betterdocs-category-box', 'public/css/category-box.css' );
45 - $assets->register( 'betterdocs-category-grid-list', 'public/css/category-grid-list.css' );
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' ] );
46 80
47 - // JS
48 - $assets->register( 'betterdocs', 'public/js/betterdocs.js', [ 'jquery' ] );
49 - // Shortcode JS
50 - $assets->register( 'betterdocs-category-toggler', 'public/js/category-toggler.js', [ 'jquery' ] );
51 - $assets->register( 'betterdocs-category-grid', 'public/js/category-grid.js', [
52 - 'jquery', 'masonry', 'simplebar', 'betterdocs-category-toggler'
53 - ] );
54 - $assets->register( 'betterdocs-faq', 'shortcodes/js/faq.js', [ 'jquery' ] );
55 - $assets->register( 'betterdocs-reactions', 'shortcodes/js/reactions.js', [ 'jquery' ] );
56 - $assets->register( 'betterdocs-search', 'shortcodes/js/search.js', [ 'jquery' ] );
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();
57 97
58 - $assets->localize( 'betterdocs', 'betterdocsConfig', [
59 - 'ajax_url' => admin_url( 'admin-ajax.php' ),
60 - 'copy_text' => __( 'Copied', 'betterdocs' ),
61 - 'sticky_toc_offset' => $this->settings->get( 'sticky_toc_offset' ),
62 - ] );
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 + );
63 113
64 - $assets->localize( 'betterdocs-search', 'betterdocsSearchConfig', [
65 - 'ajax_url' => admin_url( 'admin-ajax.php' ),
66 - 'search_letter_limit' => $this->settings->get( 'search_letter_limit' )
67 - ] );
114 + $assets->localize(
115 + 'betterdocs-search',
116 + 'betterdocsSearchConfig',
117 + [
118 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
119 + 'search_letter_limit' => $this->settings->get( 'search_letter_limit' )
120 + ]
121 + );
68 122
123 + $assets->localize(
124 + 'betterdocs-search-modal',
125 + 'betterdocsSearchModalConfig',
126 + [
127 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
128 + 'rest_url' => esc_url_raw(rest_url()),
129 + 'advance_search' => $this->settings->get( 'advance_search' ),
130 + 'child_category_exclude' => $this->settings->get( 'child_category_exclude' ),
131 + 'popular_keyword_limit' => $this->settings->get( 'popular_keyword_limit' ),
132 + 'search_letter_limit' => $this->settings->get( 'search_letter_limit' ),
133 + 'search_placeholder' => $this->settings->get( 'search_placeholder' ),
134 + 'search_button_text' => $this->settings->get( 'search_button_text' ),
135 + 'search_not_found_text' => $this->settings->get( 'search_not_found_text' ),
136 + 'kb_based_search' => $this->settings->get( 'kb_based_search' )
137 + ]
138 + );
69 139
70 - $this->blocks( $assets );
140 + /**
141 + * Localize This In Order To Know If This Shortcode Is Arriving From Betterdocs Templates Or Not
142 + */
143 + betterdocs()->assets->localize(
144 + 'betterdocs-category-grid',
145 + 'betterdocsCategoryGridConfig',
146 + [
147 + 'is_betterdocs_templates' => betterdocs()->helper->is_templates() ? true : false,
148 + 'ajax_url' => admin_url( 'admin-ajax.php' ),
149 + 'lazy_load_action' => 'betterdocs_lazy_category_body'
150 + ]
151 + );
71 152
72 - return $assets;
73 - }
153 + $this->blocks( $assets );
154 + $this->admin_assets( $assets );
74 155
156 + return $assets;
157 + }
75 158
76 - public function blocks( $assets ){
77 - $assets->register( 'betterdocs-fontawesome', 'vendor/css/font-awesome5.css' );
78 - $assets->register( 'betterdocs-blocks-category-box', 'blocks/categorybox/default.css' );
79 - $assets->register( 'betterdocs-blocks-category-grid', 'blocks/categorygrid/default.css' );
80 - $assets->register( 'betterdocs-feedback-form-editor', 'blocks/feedback-form/style-feedback-editor.css' );
81 - $assets->register( 'betterdocs-doc-archive-list', 'blocks/doc-archive-list/default.css' );
82 - }
159 +
160 +
161 + public function blocks( $assets ) {
162 + $assets->register( 'betterdocs-fontawesome', 'vendor/css/font-awesome5.css' );
163 + $assets->register( 'betterdocs-blocks-category-box', 'blocks/categorybox/default.css' );
164 + $assets->register( 'betterdocs-blocks-category-grid', 'blocks/categorygrid/default.css' );
165 + $assets->register( 'betterdocs-blocks-category-tech-layout', 'blocks/category-tech-layout/default.css' );
166 + $assets->register( 'betterdocs-blocks-category-slate-layout', 'blocks/category-slate-layout/default.css' );
167 + $assets->register( 'betterdocs-feedback-form-editor', 'blocks/feedback-form/style-feedback-editor.css' );
168 + $assets->register( 'betterdocs-doc-archive-list', 'blocks/doc-archive-list/default.css' );
169 + }
170 +
171 + public function admin_assets( $assets ) {
172 + $assets->register( 'betterdocs-article-quality-score', 'admin/js/article-quality-score.js', [ 'jquery' ] );
173 +
174 + }
83 175 }