Skip to content

Commit

Permalink
Editor: output palette presets when appearance tools or border are en…
Browse files Browse the repository at this point in the history
…abled.

Adds color palette presets to global styles output if current theme supports either appearance tools or border.

Props andrewserong, noisysocks.
Fixes #60134.


git-svn-id: https://develop.svn.wordpress.org/trunk@57259 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
tellthemachines committed Jan 9, 2024
1 parent 18cacc0 commit 788d709
Show file tree
Hide file tree
Showing 3 changed files with 81 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/wp-includes/global-styles-and-settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,13 @@ function wp_get_global_stylesheet( $types = array() ) {
* @see wp_add_global_styles_for_blocks
*/
$origins = array( 'default', 'theme', 'custom' );
if ( ! $supports_theme_json ) {
/*
* If the theme doesn't have theme.json but supports both appearance tools and color palette,
* the 'theme' origin should be included so color palette presets are also output.
*/
if ( ! $supports_theme_json && ( current_theme_supports( 'appearance-tools' ) || current_theme_supports( 'border' ) ) && current_theme_supports( 'editor-color-palette' ) ) {
$origins = array( 'default', 'theme' );
} elseif ( ! $supports_theme_json ) {
$origins = array( 'default' );
}
$styles_rest = $tree->get_stylesheet( $types, $origins );
Expand Down
3 changes: 3 additions & 0 deletions tests/phpunit/tests/rest-api/rest-themes-controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,9 @@ public static function wpTearDownAfterClass() {
self::delete_user( self::$subscriber_id );
self::delete_user( self::$contributor_id );
self::delete_user( self::$admin_id );

remove_theme_support( 'editor-gradient-presets' );
remove_theme_support( 'editor-color-palette' );
}

/**
Expand Down
71 changes: 71 additions & 0 deletions tests/phpunit/tests/theme/wpGetGlobalStylesheet.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@ class Tests_Theme_WpGetGlobalStylesheet extends WP_Theme_UnitTestCase {
*/
private $remove_theme_support_at_teardown = false;

/**
* Flag to indicate whether to remove 'border' theme support at tear_down().
*
* @var bool
*/
private $remove_border_support_at_teardown = false;

/**
* Flag to indicate whether to switch back to the default theme at tear down.
*
Expand All @@ -40,6 +47,12 @@ public function tear_down() {
switch_theme( WP_DEFAULT_THEME );
}

if ( $this->remove_border_support_at_teardown ) {
$this->remove_border_support_at_teardown = false;
remove_theme_support( 'border' );
remove_theme_support( 'editor-color-palette' );
}

parent::tear_down();
}

Expand Down Expand Up @@ -246,6 +259,64 @@ public function test_caching_is_used_when_developing_theme() {
$this->assertNotSame( $css, wp_get_global_stylesheet(), 'Caching was used despite theme development mode' );
}

/**
* Tests that theme color palette presets are output when appearance tools are enabled via theme support.
*
* @ticket 60134
*/
public function test_theme_color_palette_presets_output_when_border_support_enabled() {

$args = array(
array(
'name' => 'Black',
'slug' => 'nice-black',
'color' => '#000000',
),
array(
'name' => 'Dark Gray',
'slug' => 'dark-gray',
'color' => '#28303D',
),
array(
'name' => 'Green',
'slug' => 'haunted-green',
'color' => '#D1E4DD',
),
array(
'name' => 'Blue',
'slug' => 'soft-blue',
'color' => '#D1DFE4',
),
array(
'name' => 'Purple',
'slug' => 'cool-purple',
'color' => '#D1D1E4',
),
);

// Add theme support for appearance tools.
add_theme_support( 'border' );
add_theme_support( 'editor-color-palette', $args );
$this->remove_border_support_at_teardown = true;

// Check for both the variable declaration and its use as a value.
$variables = wp_get_global_stylesheet( array( 'variables' ) );

$this->assertStringContainsString( '--wp--preset--color--nice-black: #000000', $variables );
$this->assertStringContainsString( '--wp--preset--color--dark-gray: #28303D', $variables );
$this->assertStringContainsString( '--wp--preset--color--haunted-green: #D1E4DD', $variables );
$this->assertStringContainsString( '--wp--preset--color--soft-blue: #D1DFE4', $variables );
$this->assertStringContainsString( '--wp--preset--color--cool-purple: #D1D1E4', $variables );

$presets = wp_get_global_stylesheet( array( 'presets' ) );

$this->assertStringContainsString( 'var(--wp--preset--color--nice-black)', $presets );
$this->assertStringContainsString( 'var(--wp--preset--color--dark-gray)', $presets );
$this->assertStringContainsString( 'var(--wp--preset--color--haunted-green)', $presets );
$this->assertStringContainsString( 'var(--wp--preset--color--soft-blue)', $presets );
$this->assertStringContainsString( 'var(--wp--preset--color--cool-purple)', $presets );
}

/**
* Adds the 'editor-font-sizes' theme support with custom font sizes.
*
Expand Down

0 comments on commit 788d709

Please sign in to comment.