2021-12-13 20:57:26 -05:00
|
|
|
<?php
|
|
|
|
/**
|
|
|
|
* Server-side rendering of the `core/image` block.
|
|
|
|
*
|
|
|
|
* @package WordPress
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Renders the `core/image` block on the server,
|
|
|
|
* adding a data-id attribute to the element if core/gallery has added on pre-render.
|
|
|
|
*
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
* @param array $attributes The block attributes.
|
|
|
|
* @param string $content The block content.
|
|
|
|
* @param WP_Block $block The block object.
|
|
|
|
*
|
|
|
|
* @return string The block content with the data-id attribute added.
|
2021-12-13 20:57:26 -05:00
|
|
|
*/
|
2023-09-26 10:23:26 -04:00
|
|
|
function render_block_core_image( $attributes, $content, $block ) {
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
if ( false === stripos( $content, '<img' ) ) {
|
|
|
|
return '';
|
|
|
|
}
|
2023-06-27 10:24:19 -04:00
|
|
|
|
|
|
|
$processor = new WP_HTML_Tag_Processor( $content );
|
|
|
|
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
if ( ! $processor->next_tag( 'img' ) || null === $processor->get_attribute( 'src' ) ) {
|
2023-06-27 10:24:19 -04:00
|
|
|
return '';
|
|
|
|
}
|
|
|
|
|
2021-12-13 20:57:26 -05:00
|
|
|
if ( isset( $attributes['data-id'] ) ) {
|
|
|
|
// Add the data-id="$id" attribute to the img element
|
|
|
|
// to provide backwards compatibility for the Gallery Block,
|
|
|
|
// which now wraps Image Blocks within innerBlocks.
|
|
|
|
// The data-id attribute is added in a core/gallery `render_block_data` hook.
|
2023-06-27 10:24:19 -04:00
|
|
|
$processor->set_attribute( 'data-id', $attributes['data-id'] );
|
2021-12-13 20:57:26 -05:00
|
|
|
}
|
|
|
|
|
2023-09-26 10:23:26 -04:00
|
|
|
$link_destination = isset( $attributes['linkDestination'] ) ? $attributes['linkDestination'] : 'none';
|
|
|
|
$lightbox_settings = block_core_image_get_lightbox_settings( $block->parsed_block );
|
|
|
|
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
/*
|
|
|
|
* If the lightbox is enabled and the image is not linked, add the filter
|
|
|
|
* and the JavaScript view file.
|
|
|
|
*/
|
|
|
|
if (
|
|
|
|
isset( $lightbox_settings ) &&
|
|
|
|
'none' === $link_destination &&
|
|
|
|
isset( $lightbox_settings['enabled'] ) &&
|
|
|
|
true === $lightbox_settings['enabled']
|
|
|
|
) {
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
wp_enqueue_script_module( '@wordpress/block-library/image' );
|
2023-09-26 10:23:26 -04:00
|
|
|
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
/*
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
* This render needs to happen in a filter with priority 15 to ensure that
|
|
|
|
* it runs after the duotone filter and that duotone styles are applied to
|
|
|
|
* the image in the lightbox. Lightbox has to work with any plugins that
|
|
|
|
* might use filters as well. Removing this can be considered in the
|
|
|
|
* future if the way the blocks are rendered changes, or if a
|
|
|
|
* new kind of filter is introduced.
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
*/
|
Update npm packages to latest.
The npm packages needed a further update for beta 2 in preparation for 6.4.
Props @mmaattiiaass , @wildworks , @aaronrobertshaw, @bartkalisz, @mamaduka, @artemiosans, @youknowriad, @czapla, @richtabor, @glendaviesnz, @pbking, @cbravobernal, @madhudollu, @kevin940726, @adamsilverstein, @get_dave, @ntsekouras, @ramonopoly, @jffng, @swissspidy, @carlosgprim, @siobhyb, @mikachan.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56755
git-svn-id: http://core.svn.wordpress.org/trunk@56267 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-02 14:58:22 -04:00
|
|
|
add_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15, 2 );
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
} else {
|
|
|
|
/*
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
* Remove the filter if previously added by other Image blocks.
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
*/
|
|
|
|
remove_filter( 'render_block_core/image', 'block_core_image_render_lightbox', 15 );
|
2023-09-26 10:23:26 -04:00
|
|
|
}
|
|
|
|
|
2023-06-27 10:24:19 -04:00
|
|
|
return $processor->get_updated_html();
|
|
|
|
}
|
2021-12-13 20:57:26 -05:00
|
|
|
|
2023-09-26 10:23:26 -04:00
|
|
|
/**
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
* Adds the lightboxEnabled flag to the block data.
|
2023-09-26 10:23:26 -04:00
|
|
|
*
|
|
|
|
* This is used to determine whether the lightbox should be rendered or not.
|
|
|
|
*
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
* @param array $block Block data.
|
|
|
|
*
|
|
|
|
* @return array Filtered block data.
|
2023-09-26 10:23:26 -04:00
|
|
|
*/
|
|
|
|
function block_core_image_get_lightbox_settings( $block ) {
|
|
|
|
// Get the lightbox setting from the block attributes.
|
|
|
|
if ( isset( $block['attrs']['lightbox'] ) ) {
|
|
|
|
$lightbox_settings = $block['attrs']['lightbox'];
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( ! isset( $lightbox_settings ) ) {
|
|
|
|
$lightbox_settings = wp_get_global_settings( array( 'lightbox' ), array( 'block_name' => 'core/image' ) );
|
|
|
|
|
|
|
|
// If not present in global settings, check the top-level global settings.
|
|
|
|
//
|
|
|
|
// NOTE: If no block-level settings are found, the previous call to
|
|
|
|
// `wp_get_global_settings` will return the whole `theme.json`
|
|
|
|
// structure in which case we can check if the "lightbox" key is present at
|
|
|
|
// the top-level of the global settings and use its value.
|
|
|
|
if ( isset( $lightbox_settings['lightbox'] ) ) {
|
|
|
|
$lightbox_settings = wp_get_global_settings( array( 'lightbox' ) );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return $lightbox_settings ?? null;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
* Adds the directives and layout needed for the lightbox behavior.
|
|
|
|
*
|
|
|
|
* @param string $block_content Rendered block content.
|
|
|
|
* @param array $block Block object.
|
2023-09-26 10:23:26 -04:00
|
|
|
*
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
* @return string Filtered block content.
|
2023-09-26 10:23:26 -04:00
|
|
|
*/
|
|
|
|
function block_core_image_render_lightbox( $block_content, $block ) {
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
/*
|
|
|
|
* If it's not possible that an IMG element exists then return the given
|
|
|
|
* block content as-is. It may be that there's no actual image in the block
|
|
|
|
* or it could be that another plugin already modified this HTML.
|
|
|
|
*/
|
|
|
|
if ( false === stripos( $block_content, '<img' ) ) {
|
|
|
|
return $block_content;
|
|
|
|
}
|
|
|
|
|
2023-09-26 10:23:26 -04:00
|
|
|
$processor = new WP_HTML_Tag_Processor( $block_content );
|
|
|
|
|
|
|
|
$aria_label = __( 'Enlarge image' );
|
|
|
|
|
Editor: Update npm packages ahead of 6.4 RC1.
Updates the npm packages and code for:
* [https://github.com/WordPress/gutenberg/pull/55121 List: fix forward merging of nested list]
* [https://github.com/WordPress/gutenberg/pull/55182 Update consent string for using private APIs.]
* [https://github.com/WordPress/gutenberg/pull/55204 useBlockSettings: add missing useMemo dependencies]
* [https://github.com/WordPress/gutenberg/pull/55120 Remove the lightbox filter and view file when the lightbox setting is disabled.]
* [https://github.com/WordPress/gutenberg/pull/55245 Patterns: Remove the version enforcement for npm in engines field]
* [https://github.com/WordPress/gutenberg/pull/55237 Remove `@return void` from PHP function docs]
* [https://github.com/WordPress/gutenberg/pull/55141 Image: Disable lightbox editor UI for linked images]
* [https://github.com/WordPress/gutenberg/pull/55269 Image: Stop crashing with Lightbox on image blocks without an image]
* [https://github.com/WordPress/gutenberg/pull/55021 Update fullscreen icon]
* [https://github.com/WordPress/gutenberg/pull/55217 Template Part block: Fall back to current theme if no theme attribute is given.] This change is part of fix for a performance regression re-introduced by [56818].
References:
* [https://github.com/WordPress/gutenberg/pull/55298 Gutenberg PR 55298] Cherry-pick commits
Follow-up to [56818], [56816].
Props ellatrix, peterwilsoncc, jsnajdr, afercia, gziolo, isabel_brison, artemiosans, richtabor, bernhard-reiter, flixos90, mikachan, spacedmonkey, hellofromTonya.
See #59583, #59411.
Built from https://develop.svn.wordpress.org/trunk@56849
git-svn-id: http://core.svn.wordpress.org/trunk@56361 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-12 09:58:15 -04:00
|
|
|
/*
|
|
|
|
* If there's definitely no IMG element in the block then return the given
|
|
|
|
* block content as-is. There's nothing that this code can knowingly modify
|
|
|
|
* to add the lightbox behavior.
|
|
|
|
*/
|
|
|
|
if ( ! $processor->next_tag( 'img' ) ) {
|
|
|
|
return $block_content;
|
|
|
|
}
|
|
|
|
|
2023-09-26 10:23:26 -04:00
|
|
|
$alt_attribute = $processor->get_attribute( 'alt' );
|
|
|
|
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
// An empty alt attribute `alt=""` is valid for decorative images.
|
|
|
|
if ( is_string( $alt_attribute ) ) {
|
2023-09-26 10:23:26 -04:00
|
|
|
$alt_attribute = trim( $alt_attribute );
|
|
|
|
}
|
|
|
|
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
// It only makes sense to append the alt text to the button aria-label when the alt text is non-empty.
|
2023-09-26 10:23:26 -04:00
|
|
|
if ( $alt_attribute ) {
|
|
|
|
/* translators: %s: Image alt text. */
|
|
|
|
$aria_label = sprintf( __( 'Enlarge image: %s' ), $alt_attribute );
|
|
|
|
}
|
|
|
|
|
|
|
|
// Currently, we are only enabling the zoom animation.
|
|
|
|
$lightbox_animation = 'zoom';
|
|
|
|
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
// Note: We want to store the `src` in the context so we
|
|
|
|
// can set it dynamically when the lightbox is opened.
|
2023-09-26 10:23:26 -04:00
|
|
|
if ( isset( $block['attrs']['id'] ) ) {
|
|
|
|
$img_uploaded_src = wp_get_attachment_url( $block['attrs']['id'] );
|
|
|
|
$img_metadata = wp_get_attachment_metadata( $block['attrs']['id'] );
|
Update editor related npm packages for 6.4 RC1.
The npm packages needed a second part to the update for 6.4 RC1.
Props isabel_brison, andrewserong, jsnajdr, wildworks, joen, mciampini, tyxla, youknowriad, ramonopoly, spacedmonkey, dmsnell, mikachan, kishanjasani, czapla, siobhyb, darerodz, luisherranz
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56945
git-svn-id: http://core.svn.wordpress.org/trunk@56456 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-16 15:17:19 -04:00
|
|
|
$img_width = $img_metadata['width'] ?? 'none';
|
|
|
|
$img_height = $img_metadata['height'] ?? 'none';
|
2023-09-26 10:23:26 -04:00
|
|
|
} else {
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
$img_uploaded_src = $processor->get_attribute( 'src' );
|
2023-09-26 10:23:26 -04:00
|
|
|
$img_width = 'none';
|
|
|
|
$img_height = 'none';
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( isset( $block['attrs']['scale'] ) ) {
|
|
|
|
$scale_attr = $block['attrs']['scale'];
|
|
|
|
} else {
|
|
|
|
$scale_attr = false;
|
|
|
|
}
|
|
|
|
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
$w = new WP_HTML_Tag_Processor( $block_content );
|
2023-09-26 10:23:26 -04:00
|
|
|
$w->next_tag( 'figure' );
|
|
|
|
$w->add_class( 'wp-lightbox-container' );
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
$w->set_attribute( 'data-wp-interactive', '{"namespace":"core/image"}' );
|
2023-09-26 10:23:26 -04:00
|
|
|
|
|
|
|
$w->set_attribute(
|
|
|
|
'data-wp-context',
|
|
|
|
sprintf(
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
'{ "imageLoaded": false,
|
|
|
|
"initialized": false,
|
|
|
|
"lightboxEnabled": false,
|
|
|
|
"hideAnimationEnabled": false,
|
|
|
|
"preloadInitialized": false,
|
|
|
|
"lightboxAnimation": "%s",
|
|
|
|
"imageUploadedSrc": "%s",
|
|
|
|
"imageCurrentSrc": "",
|
|
|
|
"targetWidth": "%s",
|
|
|
|
"targetHeight": "%s",
|
|
|
|
"scaleAttr": "%s",
|
|
|
|
"dialogLabel": "%s"
|
2023-09-26 10:23:26 -04:00
|
|
|
}',
|
|
|
|
$lightbox_animation,
|
|
|
|
$img_uploaded_src,
|
|
|
|
$img_width,
|
|
|
|
$img_height,
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
$scale_attr,
|
|
|
|
__( 'Enlarged image' )
|
2023-09-26 10:23:26 -04:00
|
|
|
)
|
|
|
|
);
|
|
|
|
$w->next_tag( 'img' );
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
$w->set_attribute( 'data-wp-init', 'callbacks.initOriginImage' );
|
|
|
|
$w->set_attribute( 'data-wp-on--load', 'actions.handleLoad' );
|
|
|
|
$w->set_attribute( 'data-wp-watch', 'callbacks.setButtonStyles' );
|
Editor: Bugfixes npm packages updates for 6.4 RC1.
Updates for needed bugfixes in RC1:
* [https://github.com/WordPress/gutenberg/pull/55212 Image: Reimplement lightbox trigger as a minimal button in corner of image]
* [https://github.com/WordPress/gutenberg/pull/55403 [Edit Widgets] Only suppress admin notices when JS enabled.]
Follow-up to [56849], [56818], [56816].
Props artemiosans, jameskoster, SantosGuillamot, aristath, czapla, joen, afercia, richtabor, peterwilsoncc, andraganescu, hellofromTonya, siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56961
git-svn-id: http://core.svn.wordpress.org/trunk@56472 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-17 12:08:23 -04:00
|
|
|
// We need to set an event callback on the `img` specifically
|
|
|
|
// because the `figure` element can also contain a caption, and
|
|
|
|
// we don't want to trigger the lightbox when the caption is clicked.
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
$w->set_attribute( 'data-wp-on--click', 'actions.showLightbox' );
|
|
|
|
$w->set_attribute( 'data-wp-watch--setStylesOnResize', 'callbacks.setStylesOnResize' );
|
2023-09-26 10:23:26 -04:00
|
|
|
$body_content = $w->get_updated_html();
|
|
|
|
|
Editor: Bugfixes npm packages updates for 6.4 RC1.
Updates for needed bugfixes in RC1:
* [https://github.com/WordPress/gutenberg/pull/55212 Image: Reimplement lightbox trigger as a minimal button in corner of image]
* [https://github.com/WordPress/gutenberg/pull/55403 [Edit Widgets] Only suppress admin notices when JS enabled.]
Follow-up to [56849], [56818], [56816].
Props artemiosans, jameskoster, SantosGuillamot, aristath, czapla, joen, afercia, richtabor, peterwilsoncc, andraganescu, hellofromTonya, siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56961
git-svn-id: http://core.svn.wordpress.org/trunk@56472 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-17 12:08:23 -04:00
|
|
|
// Add a button alongside image in the body content.
|
2023-09-26 10:23:26 -04:00
|
|
|
$img = null;
|
|
|
|
preg_match( '/<img[^>]+>/', $body_content, $img );
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
|
|
|
|
$button =
|
|
|
|
$img[0]
|
|
|
|
. '<button
|
Update editor related npm packages for 6.4 RC2.
The npm packages needed update for 6.4 RC2.
Props siobhyb, cbravobernal, DAreRodz, luisherranz, artemiosans, afercia, jameskoster, czapla, alexstine, SantosGuillamot, ramonopoly, isabel_brison, andrewserong, jeryj, joedolson
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56987
git-svn-id: http://core.svn.wordpress.org/trunk@56498 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-23 13:08:31 -04:00
|
|
|
class="lightbox-trigger"
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
type="button"
|
|
|
|
aria-haspopup="dialog"
|
|
|
|
aria-label="' . esc_attr( $aria_label ) . '"
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
data-wp-init="callbacks.initTriggerButton"
|
|
|
|
data-wp-on--click="actions.showLightbox"
|
|
|
|
data-wp-style--right="context.imageButtonRight"
|
|
|
|
data-wp-style--top="context.imageButtonTop"
|
Editor: Bugfixes npm packages updates for 6.4 RC1.
Updates for needed bugfixes in RC1:
* [https://github.com/WordPress/gutenberg/pull/55212 Image: Reimplement lightbox trigger as a minimal button in corner of image]
* [https://github.com/WordPress/gutenberg/pull/55403 [Edit Widgets] Only suppress admin notices when JS enabled.]
Follow-up to [56849], [56818], [56816].
Props artemiosans, jameskoster, SantosGuillamot, aristath, czapla, joen, afercia, richtabor, peterwilsoncc, andraganescu, hellofromTonya, siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56961
git-svn-id: http://core.svn.wordpress.org/trunk@56472 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-17 12:08:23 -04:00
|
|
|
>
|
Editor: Update of npm packages after 6.4 RC3.
This update includes the following fixes reported after RC3:
* Regression: [https://github.com/WordPress/gutenberg/pull/55858 Fixes patterns not working anymore as a post template for custom post types].
Scenario: When creating a new post for any custom post type registered with its "template" argument set to a pattern.
For this scenario, the pattern template no longer renders in the post editor or the frontend with 6.4, whereas it did render properly in 6.3.2.
This package update resolves the console error raised:
{{{
Uncaught TypeError: select(...).getCurrentTheme() is undefined
}}}
which restores the rendering of the pattern template.
* Regression: [https://github.com/WordPress/gutenberg/pull/55859 Fixes positioning and styles for the new lightbox's trigger] introduced in 6.4.
Follow up to [57048], [57034], [56987], [56961], [56849], [56818], [56816].
Props renathoc, rajinsharwar, richtabor, joen, mikachan, hellofromTonya.
Fixes #59411.
Built from https://develop.svn.wordpress.org/trunk@57063
git-svn-id: http://core.svn.wordpress.org/trunk@56574 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-11-05 12:16:25 -05:00
|
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" fill="none" viewBox="0 0 12 12">
|
|
|
|
<path fill="#fff" d="M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z" />
|
Editor: Bugfixes npm packages updates for 6.4 RC1.
Updates for needed bugfixes in RC1:
* [https://github.com/WordPress/gutenberg/pull/55212 Image: Reimplement lightbox trigger as a minimal button in corner of image]
* [https://github.com/WordPress/gutenberg/pull/55403 [Edit Widgets] Only suppress admin notices when JS enabled.]
Follow-up to [56849], [56818], [56816].
Props artemiosans, jameskoster, SantosGuillamot, aristath, czapla, joen, afercia, richtabor, peterwilsoncc, andraganescu, hellofromTonya, siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56961
git-svn-id: http://core.svn.wordpress.org/trunk@56472 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-17 12:08:23 -04:00
|
|
|
</svg>
|
|
|
|
</button>';
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
|
2023-09-26 10:23:26 -04:00
|
|
|
$body_content = preg_replace( '/<img[^>]+>/', $button, $body_content );
|
|
|
|
|
|
|
|
// We need both a responsive image and an enlarged image to animate
|
|
|
|
// the zoom seamlessly on slow internet connections; the responsive
|
|
|
|
// image is a copy of the one in the body, which animates immediately
|
|
|
|
// as the lightbox is opened, while the enlarged one is a full-sized
|
|
|
|
// version that will likely still be loading as the animation begins.
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
$m = new WP_HTML_Tag_Processor( $block_content );
|
2023-09-26 10:23:26 -04:00
|
|
|
$m->next_tag( 'figure' );
|
|
|
|
$m->add_class( 'responsive-image' );
|
|
|
|
$m->next_tag( 'img' );
|
|
|
|
// We want to set the 'src' attribute to an empty string in the responsive image
|
|
|
|
// because otherwise, as of this writing, the wp_filter_content_tags() function in
|
|
|
|
// WordPress will automatically add a 'srcset' attribute to the image, which will at
|
|
|
|
// times cause the incorrectly sized image to be loaded in the lightbox on Firefox.
|
|
|
|
// Because of this, we bind the 'src' attribute explicitly the current src to reliably
|
|
|
|
// use the exact same image as in the content when the lightbox is first opened while
|
|
|
|
// we wait for the larger image to load.
|
|
|
|
$m->set_attribute( 'src', '' );
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
$m->set_attribute( 'data-wp-bind--src', 'context.imageCurrentSrc' );
|
|
|
|
$m->set_attribute( 'data-wp-style--object-fit', 'state.lightboxObjectFit' );
|
2023-09-26 10:23:26 -04:00
|
|
|
$initial_image_content = $m->get_updated_html();
|
|
|
|
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
$q = new WP_HTML_Tag_Processor( $block_content );
|
2023-09-26 10:23:26 -04:00
|
|
|
$q->next_tag( 'figure' );
|
|
|
|
$q->add_class( 'enlarged-image' );
|
|
|
|
$q->next_tag( 'img' );
|
|
|
|
|
|
|
|
// We set the 'src' attribute to an empty string to prevent the browser from loading the image
|
|
|
|
// on initial page load, then bind the attribute to a selector that returns the full-sized image src when
|
|
|
|
// the lightbox is opened. We could use 'loading=lazy' in combination with the 'hidden' attribute to
|
|
|
|
// accomplish the same behavior, but that approach breaks progressive loading of the image in Safari
|
|
|
|
// and Chrome (see https://github.com/WordPress/gutenberg/pull/52765#issuecomment-1674008151). Until that
|
|
|
|
// is resolved, manually setting the 'src' seems to be the best solution to load the large image on demand.
|
|
|
|
$q->set_attribute( 'src', '' );
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
$q->set_attribute( 'data-wp-bind--src', 'state.enlargedImgSrc' );
|
|
|
|
$q->set_attribute( 'data-wp-style--object-fit', 'state.lightboxObjectFit' );
|
2023-09-26 10:23:26 -04:00
|
|
|
$enlarged_image_content = $q->get_updated_html();
|
|
|
|
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
// If the current theme does NOT have a `theme.json`, or the colors are not defined,
|
|
|
|
// we need to set the background color & close button color to some default values
|
|
|
|
// because we can't get them from the Global Styles.
|
|
|
|
$background_color = '#fff';
|
|
|
|
$close_button_color = '#000';
|
|
|
|
if ( wp_theme_has_theme_json() ) {
|
|
|
|
$global_styles_color = wp_get_global_styles( array( 'color' ) );
|
|
|
|
if ( ! empty( $global_styles_color['background'] ) ) {
|
|
|
|
$background_color = esc_attr( $global_styles_color['background'] );
|
|
|
|
}
|
|
|
|
if ( ! empty( $global_styles_color['text'] ) ) {
|
|
|
|
$close_button_color = esc_attr( $global_styles_color['text'] );
|
|
|
|
}
|
|
|
|
}
|
2023-09-26 10:23:26 -04:00
|
|
|
|
Editor: Update of npm packages after 6.4 RC3.
This update includes the following fixes reported after RC3:
* Regression: [https://github.com/WordPress/gutenberg/pull/55858 Fixes patterns not working anymore as a post template for custom post types].
Scenario: When creating a new post for any custom post type registered with its "template" argument set to a pattern.
For this scenario, the pattern template no longer renders in the post editor or the frontend with 6.4, whereas it did render properly in 6.3.2.
This package update resolves the console error raised:
{{{
Uncaught TypeError: select(...).getCurrentTheme() is undefined
}}}
which restores the rendering of the pattern template.
* Regression: [https://github.com/WordPress/gutenberg/pull/55859 Fixes positioning and styles for the new lightbox's trigger] introduced in 6.4.
Follow up to [57048], [57034], [56987], [56961], [56849], [56818], [56816].
Props renathoc, rajinsharwar, richtabor, joen, mikachan, hellofromTonya.
Fixes #59411.
Built from https://develop.svn.wordpress.org/trunk@57063
git-svn-id: http://core.svn.wordpress.org/trunk@56574 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-11-05 12:16:25 -05:00
|
|
|
$close_button_icon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" focusable="false"><path d="M13 11.8l6.1-6.3-1-1-6.1 6.2-6.1-6.2-1 1 6.1 6.3-6.5 6.7 1 1 6.5-6.6 6.5 6.6 1-1z"></path></svg>';
|
2023-09-26 10:23:26 -04:00
|
|
|
$close_button_label = esc_attr__( 'Close' );
|
|
|
|
|
|
|
|
$lightbox_html = <<<HTML
|
|
|
|
<div data-wp-body="" class="wp-lightbox-overlay $lightbox_animation"
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
data-wp-bind--role="state.roleAttribute"
|
|
|
|
data-wp-bind--aria-label="state.dialogLabel"
|
|
|
|
data-wp-class--initialized="context.initialized"
|
|
|
|
data-wp-class--active="context.lightboxEnabled"
|
|
|
|
data-wp-class--hideAnimationEnabled="context.hideAnimationEnabled"
|
|
|
|
data-wp-bind--aria-modal="state.ariaModal"
|
|
|
|
data-wp-watch="callbacks.initLightbox"
|
|
|
|
data-wp-on--keydown="actions.handleKeydown"
|
|
|
|
data-wp-on--touchstart="actions.handleTouchStart"
|
|
|
|
data-wp-on--touchmove="actions.handleTouchMove"
|
|
|
|
data-wp-on--touchend="actions.handleTouchEnd"
|
|
|
|
data-wp-on--click="actions.hideLightbox"
|
Update editor related npm packages for 6.4 RC2.
The npm packages needed update for 6.4 RC2.
Props siobhyb, cbravobernal, DAreRodz, luisherranz, artemiosans, afercia, jameskoster, czapla, alexstine, SantosGuillamot, ramonopoly, isabel_brison, andrewserong, jeryj, joedolson
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56987
git-svn-id: http://core.svn.wordpress.org/trunk@56498 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-23 13:08:31 -04:00
|
|
|
tabindex="-1"
|
2023-09-26 10:23:26 -04:00
|
|
|
>
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
<button type="button" aria-label="$close_button_label" style="fill: $close_button_color" class="close-button" data-wp-on--click="actions.hideLightbox">
|
2023-09-26 10:23:26 -04:00
|
|
|
$close_button_icon
|
|
|
|
</button>
|
|
|
|
<div class="lightbox-image-container">$initial_image_content</div>
|
Update editor related npm packages for 6.4 RC2.
The npm packages needed update for 6.4 RC2.
Props siobhyb, cbravobernal, DAreRodz, luisherranz, artemiosans, afercia, jameskoster, czapla, alexstine, SantosGuillamot, ramonopoly, isabel_brison, andrewserong, jeryj, joedolson
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56987
git-svn-id: http://core.svn.wordpress.org/trunk@56498 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-23 13:08:31 -04:00
|
|
|
<div class="lightbox-image-container">$enlarged_image_content</div>
|
Update npm packages to latest versions for 6.4 beta 3.
The npm packages needed a further update for beta 3 in preparation for 6.4.
Props @richtabor, @mmaattiiaass, @tellthemachines, @mamaduka, @swissspidy, @scruffian, @andraganescu, @andrewserong, @mujuonly, @get_dave, @ntsekouras, @carlosgprim, @ramonopoly, @jameskoster, @wildworks, @aaronrobertshaw, @czapla, @santosguillamot, @artemiosans, @afercia, @glendaviesnz, @kevin940726, @mikachan, @siobhyb.
See #59411.
Built from https://develop.svn.wordpress.org/trunk@56808
git-svn-id: http://core.svn.wordpress.org/trunk@56320 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-10-09 13:24:24 -04:00
|
|
|
<div class="scrim" style="background-color: $background_color" aria-hidden="true"></div>
|
2023-09-26 10:23:26 -04:00
|
|
|
</div>
|
|
|
|
HTML;
|
|
|
|
|
|
|
|
return str_replace( '</figure>', $lightbox_html . '</figure>', $body_content );
|
|
|
|
}
|
|
|
|
|
2021-12-13 20:57:26 -05:00
|
|
|
/**
|
|
|
|
* Registers the `core/image` block on server.
|
|
|
|
*/
|
|
|
|
function register_block_core_image() {
|
|
|
|
register_block_type_from_metadata(
|
|
|
|
__DIR__ . '/image',
|
|
|
|
array(
|
|
|
|
'render_callback' => 'render_block_core_image',
|
|
|
|
)
|
|
|
|
);
|
Editor: Update the WordPress packages to the Gutenberg 16.7 RC2 version.
This patch, somewhat small brings a lot to WordPress.
This includes features like:
- DataViews.
- Customization tools like box shadow, background size and repeat.
- UI improvements in the site editor.
- Preferences sharing between the post and site editors.
- Unified panels and editors between post and site editors.
- Improved template mode in the post editor.
- Iterations to multiple interactive blocks.
- Preparing the blocks and UI for pattern overrides.
- and a lot more.
Props luisherranz, gziolo, isabel_brison, costdev, jonsurrell, peterwilsoncc, get_dave, antonvlasenko, desrosj.
See #60315.
Built from https://develop.svn.wordpress.org/trunk@57377
git-svn-id: http://core.svn.wordpress.org/trunk@56883 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-01-29 16:07:12 -05:00
|
|
|
|
|
|
|
wp_register_script_module(
|
|
|
|
'@wordpress/block-library/image',
|
|
|
|
defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ? gutenberg_url( '/build/interactivity/image.min.js' ) : includes_url( 'blocks/image/view.min.js' ),
|
|
|
|
array( '@wordpress/interactivity' ),
|
|
|
|
defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' )
|
|
|
|
);
|
2021-12-13 20:57:26 -05:00
|
|
|
}
|
|
|
|
add_action( 'init', 'register_block_core_image' );
|