wp/wp-admin/widgets-form-blocks.php
changeset 18 be944660c56a
child 19 3d72ae0968f4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wp/wp-admin/widgets-form-blocks.php	Wed Sep 21 18:19:35 2022 +0200
@@ -0,0 +1,81 @@
+<?php
+/**
+ * The block-based widgets editor, for use in widgets.php.
+ *
+ * @package WordPress
+ * @subpackage Administration
+ */
+
+// Don't load directly.
+if ( ! defined( 'ABSPATH' ) ) {
+	die( '-1' );
+}
+
+// Flag that we're loading the block editor.
+$current_screen = get_current_screen();
+$current_screen->is_block_editor( true );
+
+$block_editor_context = new WP_Block_Editor_Context();
+
+$preload_paths = array(
+	array( '/wp/v2/media', 'OPTIONS' ),
+	'/wp/v2/sidebars?context=edit&per_page=-1',
+	'/wp/v2/widgets?context=edit&per_page=-1&_embed=about',
+);
+block_editor_rest_api_preload( $preload_paths, $block_editor_context );
+
+$editor_settings = get_block_editor_settings(
+	array_merge( get_legacy_widget_block_editor_settings(), array( 'styles' => get_block_editor_theme_styles() ) ),
+	$block_editor_context
+);
+
+// The widgets editor does not support the Block Directory, so don't load any of
+// its assets. This also prevents 'wp-editor' from being enqueued which we
+// cannot load in the widgets screen because many widget scripts rely on `wp.editor`.
+remove_action( 'enqueue_block_editor_assets', 'wp_enqueue_editor_block_directory_assets' );
+
+wp_add_inline_script(
+	'wp-edit-widgets',
+	sprintf(
+		'wp.domReady( function() {
+			wp.editWidgets.initialize( "widgets-editor", %s );
+		} );',
+		wp_json_encode( $editor_settings )
+	)
+);
+
+// Preload server-registered block schemas.
+wp_add_inline_script(
+	'wp-blocks',
+	'wp.blocks.unstable__bootstrapServerSideBlockDefinitions(' . wp_json_encode( get_block_editor_server_block_settings() ) . ');'
+);
+
+wp_add_inline_script(
+	'wp-blocks',
+	sprintf( 'wp.blocks.setCategories( %s );', wp_json_encode( get_block_categories( $block_editor_context ) ) ),
+	'after'
+);
+
+wp_enqueue_script( 'wp-edit-widgets' );
+wp_enqueue_script( 'admin-widgets' );
+wp_enqueue_style( 'wp-edit-widgets' );
+
+/** This action is documented in wp-admin/edit-form-blocks.php */
+do_action( 'enqueue_block_editor_assets' );
+
+/** This action is documented in wp-admin/widgets-form.php */
+do_action( 'sidebar_admin_setup' );
+
+require_once ABSPATH . 'wp-admin/admin-header.php';
+
+/** This action is documented in wp-admin/widgets-form.php */
+do_action( 'widgets_admin_page' );
+?>
+
+<div id="widgets-editor" class="blocks-widgets-container"></div>
+
+<?php
+/** This action is documented in wp-admin/widgets-form.php */
+do_action( 'sidebar_admin_page' );
+
+require_once ABSPATH . 'wp-admin/admin-footer.php';