From 4ae9c2a785355b67dc0b68402a7f742db1a91da3 Mon Sep 17 00:00:00 2001 From: Jorge Date: Wed, 22 May 2019 22:30:22 +0100 Subject: [PATCH] Remove context usage; Pass only small subset of settings from the server. (+1 squashed commit) Squashed commits: [46e57deec] Add blockEditor settings on the widget screen; Required to make legacy widgets work. --- lib/widgets-page.php | 31 ++++++++++++++++++- lib/widgets.php | 21 ++++++++++--- .../edit-widgets-initializer/index.js | 8 +++-- .../src/components/layout/index.js | 6 ++-- .../src/components/widget-area/index.js | 2 ++ .../src/components/widget-areas/index.js | 3 +- packages/edit-widgets/src/index.js | 9 ++++-- 7 files changed, 66 insertions(+), 14 deletions(-) diff --git a/lib/widgets-page.php b/lib/widgets-page.php index cc63e767cea90c..ffd75d5426e53b 100644 --- a/lib/widgets-page.php +++ b/lib/widgets-page.php @@ -29,9 +29,38 @@ function gutenberg_widgets_init( $hook ) { return; } + // Media settings. + $max_upload_size = wp_max_upload_size(); + if ( ! $max_upload_size ) { + $max_upload_size = 0; + } + + $color_palette = current( (array) get_theme_support( 'editor-color-palette' ) ); + $font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) ); + + $settings = array_merge( + array( + 'disableCustomColors' => get_theme_support( 'disable-custom-colors' ), + 'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ), + 'maxUploadFileSize' => $max_upload_size, + ), + gutenberg_get_legacy_widget_settings() + ); + + if ( false !== $color_palette ) { + $settings['colors'] = $color_palette; + } + + if ( false !== $font_sizes ) { + $settings['fontSizes'] = $font_sizes; + } + wp_add_inline_script( 'wp-edit-widgets', - 'wp.editWidgets.initialize( "widgets-editor" );' + sprintf( + 'wp.editWidgets.initialize( "widgets-editor", %s );', + wp_json_encode( $settings ) + ) ); // Preload server-registered block schemas. wp_add_inline_script( diff --git a/lib/widgets.php b/lib/widgets.php index e35ccf5b0ef385..9fca846e82f767 100644 --- a/lib/widgets.php +++ b/lib/widgets.php @@ -55,14 +55,14 @@ function gutenberg_block_editor_admin_footer() { } add_action( 'admin_footer', 'gutenberg_block_editor_admin_footer' ); + /** - * Extends default editor settings with values supporting legacy widgets. - * - * @param array $settings Default editor settings. + * Returns the settings required by legacy widgets blocks. * - * @return array Filtered editor settings. + * @return array Legacy widget settings. */ -function gutenberg_legacy_widget_settings( $settings ) { +function gutenberg_get_legacy_widget_settings() { + $settings = array(); /** * TODO: The hardcoded array should be replaced with a mechanism to allow * core and third party blocks to specify they already have equivalent @@ -125,6 +125,17 @@ function gutenberg_legacy_widget_settings( $settings ) { return $settings; } + +/** + * Extends default editor settings with values supporting legacy widgets. + * + * @param array $settings Default editor settings. + * + * @return array Filtered editor settings. + */ +function gutenberg_legacy_widget_settings( $settings ) { + return array_merge( $settings, gutenberg_get_legacy_widget_settings() ); +} add_filter( 'block_editor_settings', 'gutenberg_legacy_widget_settings' ); /** diff --git a/packages/edit-widgets/src/components/edit-widgets-initializer/index.js b/packages/edit-widgets/src/components/edit-widgets-initializer/index.js index 025488a0502991..41e15dc5b41102 100644 --- a/packages/edit-widgets/src/components/edit-widgets-initializer/index.js +++ b/packages/edit-widgets/src/components/edit-widgets-initializer/index.js @@ -10,11 +10,15 @@ import { withDispatch } from '@wordpress/data'; */ import Layout from '../layout'; -function EditWidgetsInitializer( { setupWidgetAreas } ) { +function EditWidgetsInitializer( { setupWidgetAreas, settings } ) { useEffect( () => { setupWidgetAreas(); }, [] ); - return ; + return ( + + ); } export default compose( [ diff --git a/packages/edit-widgets/src/components/layout/index.js b/packages/edit-widgets/src/components/layout/index.js index 06ed92455fc6e9..4a9a985e89e477 100644 --- a/packages/edit-widgets/src/components/layout/index.js +++ b/packages/edit-widgets/src/components/layout/index.js @@ -11,7 +11,7 @@ import Header from '../header'; import Sidebar from '../sidebar'; import WidgetAreas from '../widget-areas'; -function Layout() { +function Layout( { blockEditorSettings } ) { return ( <>
@@ -22,7 +22,9 @@ function Layout() { aria-label={ __( 'Widgets screen content' ) } tabIndex="-1" > - + ); diff --git a/packages/edit-widgets/src/components/widget-area/index.js b/packages/edit-widgets/src/components/widget-area/index.js index 7914a4b6ea13ab..4825a45cefc6e4 100644 --- a/packages/edit-widgets/src/components/widget-area/index.js +++ b/packages/edit-widgets/src/components/widget-area/index.js @@ -10,6 +10,7 @@ import { import { withDispatch, withSelect } from '@wordpress/data'; function WidgetArea( { + blockEditorSettings, blocks, initialOpen, updateBlocks, @@ -25,6 +26,7 @@ function WidgetArea( { value={ blocks } onInput={ updateBlocks } onChange={ updateBlocks } + settings={ blockEditorSettings } > diff --git a/packages/edit-widgets/src/components/widget-areas/index.js b/packages/edit-widgets/src/components/widget-areas/index.js index 99a3f1e8689fa6..53eea964ec65ac 100644 --- a/packages/edit-widgets/src/components/widget-areas/index.js +++ b/packages/edit-widgets/src/components/widget-areas/index.js @@ -9,9 +9,10 @@ import { withSelect } from '@wordpress/data'; */ import WidgetArea from '../widget-area'; -function WidgetAreas( { areas } ) { +function WidgetAreas( { areas, blockEditorSettings } ) { return areas.map( ( { id }, index ) => ( , + , document.getElementById( id ) ); }