diff -r 34716fd837a4 -r be944660c56a wp/wp-admin/edit-form-blocks.php --- a/wp/wp-admin/edit-form-blocks.php Tue Dec 15 15:52:01 2020 +0100 +++ b/wp/wp-admin/edit-form-blocks.php Wed Sep 21 18:19:35 2022 +0200 @@ -18,23 +18,36 @@ * @global WP_Post_Type $post_type_object * @global WP_Post $post Global post object. * @global string $title - * @global array $editor_styles * @global array $wp_meta_boxes */ -global $post_type, $post_type_object, $post, $title, $editor_styles, $wp_meta_boxes; +global $post_type, $post_type_object, $post, $title, $wp_meta_boxes; + +$block_editor_context = new WP_Block_Editor_Context( array( 'post' => $post ) ); // Flag that we're loading the block editor. $current_screen = get_current_screen(); $current_screen->is_block_editor( true ); +// Default to is-fullscreen-mode to avoid jumps in the UI. +add_filter( + 'admin_body_class', + function( $classes ) { + return "$classes is-fullscreen-mode"; + } +); + /* * Emoji replacement is disabled for now, until it plays nicely with React. */ remove_action( 'admin_print_scripts', 'print_emoji_detection_script' ); +/* + * Block editor implements its own Options menu for toggling Document Panels. + */ +add_filter( 'screen_options_show_screen', '__return_false' ); + wp_enqueue_script( 'heartbeat' ); wp_enqueue_script( 'wp-edit-post' ); -wp_enqueue_script( 'wp-format-library' ); $rest_base = ! empty( $post_type_object->rest_base ) ? $post_type_object->rest_base : $post_type_object->name; @@ -52,39 +65,7 @@ sprintf( '/wp/v2/%s/%d/autosaves?context=edit', $rest_base, $post->ID ), ); -/** - * Preload common data by specifying an array of REST API paths that will be preloaded. - * - * Filters the array of paths that will be preloaded. - * - * @since 5.0.0 - * - * @param string[] $preload_paths Array of paths to preload. - * @param WP_Post $post Post being edited. - */ -$preload_paths = apply_filters( 'block_editor_preload_paths', $preload_paths, $post ); - -/* - * Ensure the global $post remains the same after API data is preloaded. - * Because API preloading can call the_content and other filters, plugins - * can unexpectedly modify $post. - */ -$backup_global_post = $post; - -$preload_data = array_reduce( - $preload_paths, - 'rest_preload_api_request', - array() -); - -// Restore the global $post as it was before API preloading. -$post = $backup_global_post; - -wp_add_inline_script( - 'wp-api-fetch', - sprintf( 'wp.apiFetch.use( wp.apiFetch.createPreloadingMiddleware( %s ) );', wp_json_encode( $preload_data ) ), - 'after' -); +block_editor_rest_api_preload( $preload_paths, $block_editor_context ); wp_add_inline_script( 'wp-blocks', @@ -125,31 +106,11 @@ ), $meta_box_url ); -wp_localize_script( 'wp-editor', '_wpMetaBoxUrl', $meta_box_url ); - - -/* - * Initialize the editor. - */ - -$align_wide = get_theme_support( 'align-wide' ); -$color_palette = current( (array) get_theme_support( 'editor-color-palette' ) ); -$font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) ); -$gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) ); -$custom_line_height = get_theme_support( 'custom-line-height' ); -$custom_units = get_theme_support( 'custom-units' ); - -/** - * Filters the allowed block types for the editor, defaulting to true (all - * block types supported). - * - * @since 5.0.0 - * - * @param bool|array $allowed_block_types Array of block type slugs, or - * boolean to enable/disable all. - * @param WP_Post $post The post resource data. - */ -$allowed_block_types = apply_filters( 'allowed_block_types', true, $post ); +wp_add_inline_script( + 'wp-editor', + sprintf( 'var _wpMetaBoxUrl = %s;', wp_json_encode( $meta_box_url ) ), + 'before' +); /* * Get all available templates for the post/page attributes meta-box. @@ -158,7 +119,7 @@ * besides the default value. */ $available_templates = wp_get_theme()->get_page_templates( get_post( $post->ID ) ); -$available_templates = ! empty( $available_templates ) ? array_merge( +$available_templates = ! empty( $available_templates ) ? array_replace( array( /** This filter is documented in wp-admin/includes/meta-boxes.php */ '' => apply_filters( 'default_page_template_title', __( 'Default template' ), 'rest-api' ), @@ -166,78 +127,6 @@ $available_templates ) : $available_templates; -// Media settings. -$max_upload_size = wp_max_upload_size(); -if ( ! $max_upload_size ) { - $max_upload_size = 0; -} - -// Editor Styles. -$styles = array( - array( - 'css' => file_get_contents( - ABSPATH . WPINC . '/css/dist/editor/editor-styles.css' - ), - ), -); - -/* translators: Use this to specify the CSS font family for the default font. */ -$locale_font_family = esc_html_x( 'Noto Serif', 'CSS Font Family for Editor Font' ); -$styles[] = array( - 'css' => "body { font-family: '$locale_font_family' }", -); - -if ( $editor_styles && current_theme_supports( 'editor-styles' ) ) { - foreach ( $editor_styles as $style ) { - if ( preg_match( '~^(https?:)?//~', $style ) ) { - $response = wp_remote_get( $style ); - if ( ! is_wp_error( $response ) ) { - $styles[] = array( - 'css' => wp_remote_retrieve_body( $response ), - ); - } - } else { - $file = get_theme_file_path( $style ); - if ( is_file( $file ) ) { - $styles[] = array( - 'css' => file_get_contents( $file ), - 'baseURL' => get_theme_file_uri( $style ), - ); - } - } - } -} - -// Image sizes. - -/** This filter is documented in wp-admin/includes/media.php */ -$image_size_names = apply_filters( - 'image_size_names_choose', - array( - 'thumbnail' => __( 'Thumbnail' ), - 'medium' => __( 'Medium' ), - 'large' => __( 'Large' ), - 'full' => __( 'Full Size' ), - ) -); - -$available_image_sizes = array(); -foreach ( $image_size_names as $image_size_slug => $image_size_name ) { - $available_image_sizes[] = array( - 'slug' => $image_size_slug, - 'name' => $image_size_name, - ); -} - -$image_dimensions = array(); -$all_sizes = wp_get_registered_image_subsizes(); -foreach ( $available_image_sizes as $size ) { - $key = $size['slug']; - if ( isset( $all_sizes[ $key ] ) ) { - $image_dimensions[ $key ] = $all_sizes[ $key ]; - } -} - // Lock settings. $user_id = wp_check_post_lock( $post->ID ); if ( $user_id ) { @@ -278,30 +167,21 @@ * Filters the body placeholder text. * * @since 5.0.0 + * @since 5.8.0 Changed the default placeholder text. * - * @param string $text Placeholder text. Default 'Start writing or type / to choose a block'. + * @param string $text Placeholder text. Default 'Type / to choose a block'. * @param WP_Post $post Post object. */ -$body_placeholder = apply_filters( 'write_your_story', __( 'Start writing or type / to choose a block' ), $post ); +$body_placeholder = apply_filters( 'write_your_story', __( 'Type / to choose a block' ), $post ); $editor_settings = array( - 'alignWide' => $align_wide, 'availableTemplates' => $available_templates, - 'allowedBlockTypes' => $allowed_block_types, - 'disableCustomColors' => get_theme_support( 'disable-custom-colors' ), - 'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ), - 'disableCustomGradients' => get_theme_support( 'disable-custom-gradients' ), 'disablePostFormats' => ! current_theme_supports( 'post-formats' ), /** This filter is documented in wp-admin/edit-form-advanced.php */ 'titlePlaceholder' => apply_filters( 'enter_title_here', __( 'Add title' ), $post ), 'bodyPlaceholder' => $body_placeholder, - 'isRTL' => is_rtl(), 'autosaveInterval' => AUTOSAVE_INTERVAL, - 'maxUploadFileSize' => $max_upload_size, - 'allowedMimeTypes' => get_allowed_mime_types(), - 'styles' => $styles, - 'imageSizes' => $available_image_sizes, - 'imageDimensions' => $image_dimensions, + 'styles' => get_block_editor_theme_styles(), 'richEditingEnabled' => user_can_richedit(), 'postLock' => $lock_details, 'postLockUtils' => array( @@ -309,17 +189,17 @@ 'unlockNonce' => wp_create_nonce( 'update-post_' . $post->ID ), 'ajaxUrl' => admin_url( 'admin-ajax.php' ), ), + 'supportsLayout' => WP_Theme_JSON_Resolver::theme_has_support(), '__experimentalBlockPatterns' => WP_Block_Patterns_Registry::get_instance()->get_all_registered(), '__experimentalBlockPatternCategories' => WP_Block_Pattern_Categories_Registry::get_instance()->get_all_registered(), + 'supportsTemplateMode' => current_theme_supports( 'block-templates' ), // Whether or not to load the 'postcustom' meta box is stored as a user meta // field so that we're not always loading its assets. 'enableCustomFields' => (bool) get_user_meta( get_current_user_id(), 'enable_custom_fields', true ), - 'enableCustomLineHeight' => $custom_line_height, - 'enableCustomUnits' => $custom_units, ); -$autosave = wp_get_post_autosave( $post_ID ); +$autosave = wp_get_post_autosave( $post->ID ); if ( $autosave ) { if ( mysql2date( 'U', $autosave->post_modified_gmt, false ) > mysql2date( 'U', $post->post_modified_gmt, false ) ) { $editor_settings['autosave'] = array( @@ -330,18 +210,6 @@ } } -if ( false !== $color_palette ) { - $editor_settings['colors'] = $color_palette; -} - -if ( false !== $font_sizes ) { - $editor_settings['fontSizes'] = $font_sizes; -} - -if ( false !== $gradient_presets ) { - $editor_settings['gradients'] = $gradient_presets; -} - if ( ! empty( $post_type_object->template ) ) { $editor_settings['template'] = $post_type_object->template; $editor_settings['templateLock'] = ! empty( $post_type_object->template_lock ) ? $post_type_object->template_lock : false; @@ -366,12 +234,10 @@ wp_tinymce_inline_scripts(); wp_enqueue_editor(); - /** * Styles */ wp_enqueue_style( 'wp-edit-post' ); -wp_enqueue_style( 'wp-format-library' ); /** * Fires after block assets have been enqueued for the editing interface. @@ -395,15 +261,7 @@ unset( $editor_settings['enableCustomFields'] ); } -/** - * Filters the settings to pass to the block editor. - * - * @since 5.0.0 - * - * @param array $editor_settings Default editor settings. - * @param WP_Post $post Post being edited. - */ -$editor_settings = apply_filters( 'block_editor_settings', $editor_settings, $post ); +$editor_settings = get_block_editor_settings( $editor_settings, $block_editor_context ); $init_script = <<ID ) { + add_action( 'admin_enqueue_scripts', '_wp_block_editor_posts_page_notice' ); +} + require_once ABSPATH . 'wp-admin/admin-header.php'; ?>