PluginProbe
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot / 2.5.5
BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot v2.5.5
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 / includes / Editors / BlockEditor.php

BlockEditor.php in BetterDocs – AI Documentation, Knowledge Base, MCP Server, Docs, Wikis, FAQ & Chatbot 2.5.5, at includes/Editors/BlockEditor.php

135 lines 4.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace WPDeveloper\BetterDocs\Editors;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly
7 }
8
9 use WPDeveloper\BetterDocs\Editors\BlockEditor\StyleHandler;
10 use WPDeveloper\BetterDocs\Editors\BlockEditor\TemplatesController;
11
12 class BlockEditor extends BaseEditor {
13
14 public function init() {
15 // TemplatesController::get_instance();
16
17 add_action( 'admin_init', [$this, 'enqueue_styles'] );
18 add_action( 'admin_enqueue_scripts', [$this, 'enqueue_styles'] );
19
20 $_blocks_category_hook = version_compare( get_bloginfo( 'version' ), '5.8', '>=' ) ? 'block_categories_all' : 'block_categories';
21 add_filter( $_blocks_category_hook, [$this, 'register_category'], 9, 2 );
22
23 StyleHandler::get_instance();
24
25 $this->register_blocks();
26 }
27
28 public function admin_init() {
29 $blocks = $this->get_blocks();
30
31 if ( empty( $blocks ) || ! is_array( $blocks ) ) {
32 return;
33 }
34
35 foreach ( $blocks as $block_name => $block ) {
36 if ( isset( $block['object'] ) ) {
37 $block_object = betterdocs()->container->get( $block['object'] );
38
39 if ( ! $block_object->can_enable() ) {
40 continue;
41 }
42
43 $block_object->register_scripts();
44 }
45 }
46 }
47
48 /**
49 * Only for Admin Add/Edit Pages
50 */
51 public function enqueue_styles( $hook ) {
52 $editor = 'core/edit-post';
53 if ( $hook == 'site-editor.php' || ( $hook == 'themes.php' && isset( $_GET['page'] ) && $_GET['page'] == 'gutenberg-edit-site' ) ) {
54 $editor = 'core/edit-site';
55 }
56
57 $this->assets->register( 'betterdocs-blocks-editor-controls', 'blocks/controls.css' );
58 $this->assets->register( 'betterdocs-blocks-editor', 'blocks/style-editor.css', ['betterdocs-blocks-editor-controls'] );
59 $this->assets->register( 'betterdocs-blocks-editor', 'blocks/editor.js', ['betterdocs-blocks-style-handler'] );
60 $this->assets->localize( 'betterdocs-blocks-editor', 'betterDocsBlocksHelper', [
61 'is_pro_active' => betterdocs()->is_pro_active(),
62 'resturl' => get_rest_url(),
63 'editorType' => $editor
64 ] );
65
66 if ( $hook == 'post-new.php' || $hook == 'post.php' || $hook == 'site-editor.php' ) {
67 $this->assets->enqueue( 'fontpicker-default-theme', 'vendor/css/fonticonpicker.base-theme.react.css' );
68 $this->assets->enqueue( 'fontpicker-material-theme', 'vendor/css/fonticonpicker.material-theme.react.css' );
69 }
70 }
71
72 /**
73 * Add a block category
74 *
75 * @param array $categories Block categories.
76 *
77 * @return array
78 */
79 public function register_category( $block_categories, $block_editor_context ) {
80 $categories_slugs = wp_list_pluck( $block_categories, 'slug' );
81
82 return in_array( 'betterdocs', $categories_slugs, true ) ? $block_categories : array_merge( [[
83 'slug' => 'betterdocs',
84 'title' => __( 'Betterdocs', 'betterdocs' )
85 ]], $block_categories );
86 }
87
88 /**
89 * Get Blocks
90 *
91 * @since 2.5.0
92 * @return array<array>
93 */
94 public function get_blocks() {
95 $config_array = require_once BETTERDOCS_ABSPATH . 'includes/blocks.php';
96 return apply_filters( 'betterdocs_blocks_config', $config_array );
97 }
98
99 public function register_blocks( $enqueue = false ) {
100 $blocks = $this->get_blocks();
101
102 if ( empty( $blocks ) || ! is_array( $blocks ) ) {
103 return;
104 }
105
106 foreach ( $blocks as $block_name => $block ) {
107 if ( isset( $block['object'] ) ) {
108 $block_object = betterdocs()->container->get( $block['object'] );
109
110 if ( ! $block_object->can_enable() ) {
111 continue;
112 }
113
114 if ( method_exists( $block_object, 'load_dependencies' ) ) {
115 $block_object->load_dependencies();
116 }
117
118 if ( $enqueue && method_exists( $block_object, 'enqueue' ) ) {
119 $block_object->enqueue( $this->assets );
120 continue;
121 }
122
123 if ( method_exists( $block_object, 'inner_blocks' ) ) {
124 $_inner_blocks = $block_object->inner_blocks();
125 foreach ( $_inner_blocks as $block_name => $block ) {
126 $block->register( $this->assets );
127 }
128 }
129
130 $block_object->register( $this->assets );
131 }
132 }
133 }
134 }
135