Skip to content

Commit

Permalink
Merge branch 'trunk' into add/autogenerate-heading-anchors
Browse files Browse the repository at this point in the history
  • Loading branch information
aristath committed Apr 20, 2021
2 parents 7260b74 + c164be6 commit 51a6c68
Show file tree
Hide file tree
Showing 108 changed files with 2,988 additions and 1,275 deletions.
1 change: 1 addition & 0 deletions docs/contributors/code/git-workflow.md
Expand Up @@ -83,6 +83,7 @@ Suggested prefixes:
- `try/` = experimental feature, "tentatively add"
- `update/` = update an existing feature
- `remove/` = remove an existing feature
- `fix/` = fix an existing issue

For example, `add/gallery-block` means you're working on adding a new gallery block.

Expand Down
4 changes: 2 additions & 2 deletions docs/how-to-guides/block-based-theme/README.md
Expand Up @@ -172,15 +172,15 @@ Inside the block-templates folder, create an `index.html` file.

In `index.html`, include the template parts by adding two HTML comments.

The HTML comments starts with `wp:template-part` which is the name of the template-part block type. Inside the curly brackets are two keys and their values: The slug of the template part, and the theme name.
The HTML comments starts with `wp:template-part` which is the name of the template-part block type. Inside the curly brackets are two keys and their values: The slug of the template part, and the theme text domain.

```
<!-- wp:template-part {"slug":"header","theme":"myfirsttheme"} /-->
<!-- wp:template-part {"slug":"footer","theme":"myfirsttheme"} /-->
```

If you used a different theme name, adjust the value for the theme key.
If you used a different theme name, adjust the value for the theme text domain.

Eventually, you will be able to create and combine templates and template parts directly in the site editor.

Expand Down
293 changes: 293 additions & 0 deletions lib/block-editor.php
@@ -0,0 +1,293 @@
<?php
/**
* Block Editor API.
*
* @package Gutenberg
* @subpackage Editor
* @since 10.5.0
*/

/**
* Returns the list of default categories for block types.
*
* This is a temporary solution until the Gutenberg plugin sets
* the required WordPress version to 5.8.
*
* @see https://core.trac.wordpress.org/ticket/52920
*
* @since 10.5.0.
*
* @return array[] Array of categories for block types.
*/
function gutenberg_get_default_block_categories() {
return array(
array(
'slug' => 'text',
'title' => _x( 'Text', 'block category' ),
'icon' => null,
),
array(
'slug' => 'media',
'title' => _x( 'Media', 'block category' ),
'icon' => null,
),
array(
'slug' => 'design',
'title' => _x( 'Design', 'block category' ),
'icon' => null,
),
array(
'slug' => 'widgets',
'title' => _x( 'Widgets', 'block category' ),
'icon' => null,
),
array(
'slug' => 'theme',
'title' => _x( 'Theme', 'block category' ),
'icon' => null,
),
array(
'slug' => 'embed',
'title' => _x( 'Embeds', 'block category' ),
'icon' => null,
),
array(
'slug' => 'reusable',
'title' => _x( 'Reusable Blocks', 'block category' ),
'icon' => null,
),
);
}

/**
* Returns all the categories for block types that will be shown in the block editor.
*
* This is a temporary solution until the Gutenberg plugin sets
* the required WordPress version to 5.8.
*
* @see https://core.trac.wordpress.org/ticket/52920
*
* @since 10.5.0
*
* @param string|WP_Post $editor_name_or_post The name of the editor (e.g. 'post-editor')
* or the post object.
*
* @return array[] Array of categories for block types.
*/
function gutenberg_get_block_categories( $editor_name_or_post ) {
// Assume the post editor when the WP_Post object passed.
$editor_name = is_object( $editor_name_or_post ) ? 'post-editor' : $editor_name_or_post;
$default_categories = get_default_block_categories();

/**
* Filters the default array of categories for block types.
*
* @since 5.8.0
*
* @param array[] $default_categories Array of categories for block types.
*/
$block_categories = apply_filters( "block_categories_{$editor_name}", $default_categories );
if ( 'post-editor' === $editor_name ) {
$post = is_object( $editor_name_or_post ) ? $editor_name_or_post : get_post();

/**
* Filters the default array of categories for block types.
*
* @since 5.0.0
* @deprecated 5.8.0 The hook transitioned to support also screens that don't contain the $post instance.
*
* @param array[] $block_categories Array of categories for block types.
* @param WP_Post $post Post being loaded.
*/
$block_categories = apply_filters_deprecated( 'block_categories', array( $block_categories, $post ), '5.8.0', "block_categories_{$editor_name}" );
}

return $block_categories;
}

/**
* Gets the list of allowed block types to use in the block editor.
*
* This is a temporary solution until the Gutenberg plugin sets
* the required WordPress version to 5.8.
*
* @see https://core.trac.wordpress.org/ticket/52920
*
* @since 10.5.0
*
* @param string $editor_name The name of the editor (e.g. 'post-editor').
*
* @return bool|array Array of block type slugs, or boolean to enable/disable all.
*/
function gutenberg_get_allowed_block_types( $editor_name ) {
$allowed_block_types = true;

/**
* Filters the allowed block types for the given editor, defaulting to true (all
* registered block types supported).
*
* @since 5.8.0
*
* @param bool|array $allowed_block_types Array of block type slugs, or
* boolean to enable/disable all.
*/
$allowed_block_types = apply_filters( "allowed_block_types_{$editor_name}", $allowed_block_types );
if ( 'post-editor' === $editor_name ) {
$post = get_post();

/**
* Filters the allowed block types for the editor, defaulting to true (all
* block types supported).
*
* @since 5.0.0
* @deprecated 5.8.0 The hook transitioned to support also screens that don't contain $post instance.
*
* @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_deprecated( 'allowed_block_types', array( $allowed_block_types, $post ), '5.8.0', "allowed_block_types_{$editor_name}" );
}

return $allowed_block_types;
}

/**
* Returns the default block editor settings.
*
* This is a temporary solution until the Gutenberg plugin sets
* the required WordPress version to 5.8.
*
* @see https://core.trac.wordpress.org/ticket/52920
*
* @since 10.5.0
*
* @return array The default block editor settings.
*/
function gutenberg_get_default_block_editor_settings() {
// Media settings.
$max_upload_size = wp_max_upload_size();
if ( ! $max_upload_size ) {
$max_upload_size = 0;
}

/** 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,
);
}

$default_size = get_option( 'image_default_size', 'large' );
$image_default_size = in_array( $default_size, array_keys( $image_size_names ), true ) ? $image_default_size : 'large';

$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 ];
}
}

$editor_settings = array(
'__unstableEnableFullSiteEditingBlocks' => gutenberg_supports_block_templates(),
'alignWide' => get_theme_support( 'align-wide' ),
'allowedBlockTypes' => true,
'allowedMimeTypes' => get_allowed_mime_types(),
'blockCategories' => gutenberg_get_default_block_categories(),
'disableCustomColors' => get_theme_support( 'disable-custom-colors' ),
'disableCustomFontSizes' => get_theme_support( 'disable-custom-font-sizes' ),
'disableCustomGradients' => get_theme_support( 'disable-custom-gradients' ),
'enableCustomLineHeight' => get_theme_support( 'custom-line-height' ),
'enableCustomSpacing' => get_theme_support( 'custom-spacing' ),
'enableCustomUnits' => get_theme_support( 'custom-units' ),
'isRTL' => is_rtl(),
'imageDefaultSize' => $image_default_size,
'imageDimensions' => $image_dimensions,
'imageEditing' => true,
'imageSizes' => $available_image_sizes,
'maxUploadFileSize' => $max_upload_size,
);

// Theme settings.
$color_palette = current( (array) get_theme_support( 'editor-color-palette' ) );
if ( false !== $color_palette ) {
$editor_settings['colors'] = $color_palette;
}

$font_sizes = current( (array) get_theme_support( 'editor-font-sizes' ) );
if ( false !== $font_sizes ) {
$editor_settings['fontSizes'] = $font_sizes;
}

$gradient_presets = current( (array) get_theme_support( 'editor-gradient-presets' ) );
if ( false !== $gradient_presets ) {
$editor_settings['gradients'] = $gradient_presets;
}

return $editor_settings;
}

/**
* Returns the contextualized block editor settings settings for a selected editor type.
*
* This is a temporary solution until the Gutenberg plugin sets
* the required WordPress version to 5.8.
*
* @see https://core.trac.wordpress.org/ticket/52920
*
* @since 10.5.0
*
* @param string $editor_name The name of the editor (e.g. 'post-editor').
* @param array $custom_settings Optional custom settings to use with the editor type.
*
* @return array The contextualized block editor settings.
*/
function gutenberg_get_block_editor_settings( $editor_name, $custom_settings = array() ) {
$editor_settings = array_merge(
gutenberg_get_default_block_editor_settings( $editor_name ),
array(
'allowedBlockTypes' => gutenberg_get_allowed_block_types( $editor_name ),
'blockCategories' => gutenberg_get_block_categories( $editor_name ),
),
$custom_settings
);

/**
* Filters the settings to pass to the block editor for a given editor type.
*
* @since 5.8.0
*
* @param array $editor_settings Default editor settings.
*/
$editor_settings = apply_filters( "block_editor_settings_{$editor_name}", $editor_settings );
if ( 'post-editor' === $editor_name ) {
$post = get_post();

/**
* Filters the settings to pass to the block editor.
*
* @since 5.0.0
* @deprecated 5.8.0 The hook transitioned to support also screens that don't contain $post instance.
*
* @param array $editor_settings Default editor settings.
* @param WP_Post $post Post being edited.
*/
$editor_settings = apply_filters_deprecated( 'block_editor_settings', array( $editor_settings, $post ), '5.8.0', "block_editor_settings_{$editor_name}" );
}

return $editor_settings;
}

0 comments on commit 51a6c68

Please sign in to comment.