Ticket #48798: 48799-2.diff
| File 48799-2.diff, 10.3 KB (added by , 6 years ago) |
|---|
-
src/wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php
diff --git a/src/wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php b/src/wp-includes/rest-api/endpoints/class-wp-rest-themes-controller.php index 47491e7774..f22cc8b14a 100644
a b class WP_REST_Themes_Controller extends WP_REST_Controller { 109 109 $formats = get_theme_support( 'post-formats' ); 110 110 $formats = is_array( $formats ) ? array_values( $formats[0] ) : array(); 111 111 $formats = array_merge( array( 'standard' ), $formats ); 112 $data['theme_supports']['formats'] = $formats; 112 $data['theme_supports']['disable-custom-colors'] = (bool) get_theme_support( 'disable-custom-colors' ); 113 $data['theme_supports']['disable-custom-font-sizes'] = (bool) get_theme_support( 'disable-custom-font-sizes' ); 114 $data['theme_supports']['editor-color-palette'] = false; 115 $data['theme_supports']['editor-font-sizes'] = false; 116 $data['theme_supports']['formats'] = $formats; 117 $data['theme_supports']['post-thumbnails'] = false; 118 $data['theme_supports']['responsive-embeds'] = (bool) get_theme_support( 'responsive-embeds' ); 113 119 114 $ data['theme_supports']['post-thumbnails'] = false;115 $ data['theme_supports']['responsive-embeds'] = (bool) get_theme_support( 'responsive-embeds' );116 $ post_thumbnails = get_theme_support( 'post-thumbnails' );120 $post_thumbnails = get_theme_support( 'post-thumbnails' ); 121 $editor_color_palette = get_theme_support( 'editor-color-palette' ); 122 $editor_font_sizes = get_theme_support( 'editor-font-sizes' ); 117 123 118 124 if ( $post_thumbnails ) { 119 125 // $post_thumbnails can contain a nested array of post types. 120 126 // e.g. array( array( 'post', 'page' ) ). 121 127 $data['theme_supports']['post-thumbnails'] = is_array( $post_thumbnails ) ? $post_thumbnails[0] : true; 122 128 } 129 130 if ( is_array( $editor_color_palette ) ) { 131 $data['theme_supports']['editor-color-palette'] = $editor_color_palette[0]; 132 } 133 134 if ( is_array( $editor_font_sizes ) ) { 135 $data['theme_supports']['editor-font-sizes'] = $editor_font_sizes[0]; 136 } 123 137 } 124 138 125 139 $data = $this->add_additional_fields_to_object( $data, $request ); … … class WP_REST_Themes_Controller extends WP_REST_Controller { 161 175 'type' => 'array', 162 176 'readonly' => true, 163 177 'properties' => array( 164 'formats' => array( 178 'disable-custom-colors' => array( 179 'description' => __( 'Whether the theme disables custom colors.' ), 180 'type' => 'bool', 181 'readonly' => true, 182 ), 183 'disable-custom-font-sizes' => array( 184 'description' => __( 'Whether the theme disables custom font sizes.' ), 185 'type' => 'bool', 186 'readonly' => true, 187 ), 188 'editor-color-palette' => array( 189 'description' => __( 'Custom color palette if defined by the theme.' ), 190 'type' => array( 'array', 'bool' ), 191 'items' => [ 192 'type' => 'object', 193 'properties' => array( 194 'name' => 'string', 195 'slug' => 'string', 196 'color' => 'string,' 197 ), 198 'required' => array( 'name', 'slug', 'color' ), 199 ], 200 'readonly' => true, 201 ), 202 'editor-font-sizes' => array( 203 'description' => __( 'Custom font sizes if defined by the theme.' ), 204 'type' => array( 'array', 'bool' ), 205 'items' => array( 206 'type' => 'object', 207 'properties' => array( 208 'name' => 'string', 209 'size' => 'number', 210 'slug' => 'string', 211 ), 212 'required' => array( 'name', 'size', 'slug' ), 213 ), 214 'readonly' => true, 215 ), 216 'formats' => array( 165 217 'description' => __( 'Post formats supported.' ), 166 218 'type' => 'array', 167 219 'readonly' => true, 168 220 ), 169 'post-thumbnails' => array(221 'post-thumbnails' => array( 170 222 'description' => __( 'Whether the theme supports post thumbnails.' ), 171 223 'type' => array( 'array', 'bool' ), 172 224 'readonly' => true, 173 225 ), 174 'responsive-embeds' => array(226 'responsive-embeds' => array( 175 227 'description' => __( 'Whether the theme supports responsive embedded content.' ), 176 228 'type' => 'bool', 177 229 'readonly' => true, -
tests/phpunit/tests/rest-api/rest-themes-controller.php
diff --git a/tests/phpunit/tests/rest-api/rest-themes-controller.php b/tests/phpunit/tests/rest-api/rest-themes-controller.php index 520dbed9d0..39ac0bc89e 100644
a b class WP_Test_REST_Themes_Controller extends WP_Test_REST_Controller_Testcase { 189 189 $this->assertEquals( 1, count( $properties ) ); 190 190 $this->assertArrayHasKey( 'theme_supports', $properties ); 191 191 192 $this->assertEquals( 3, count( $properties['theme_supports']['properties'] ) ); 192 $this->assertEquals( 7, count( $properties['theme_supports']['properties'] ) ); 193 $this->assertArrayHasKey( 'disable-custom-colors', $properties['theme_supports']['properties'] ); 194 $this->assertArrayHasKey( 'disable-custom-font-sizes', $properties['theme_supports']['properties'] ); 195 $this->assertArrayHasKey( 'editor-color-palette', $properties['theme_supports']['properties'] ); 196 $this->assertArrayHasKey( 'editor-font-sizes', $properties['theme_supports']['properties'] ); 193 197 $this->assertArrayHasKey( 'formats', $properties['theme_supports']['properties'] ); 194 198 $this->assertArrayHasKey( 'post-thumbnails', $properties['theme_supports']['properties'] ); 195 199 $this->assertArrayHasKey( 'responsive-embeds', $properties['theme_supports']['properties'] ); 196 200 } 197 201 202 /** 203 * Test when a theme does not disable custom colors. 204 * 205 * @ticket 48798 206 */ 207 public function test_theme_supports_disable_custom_colors_false() { 208 remove_theme_support( 'disable-custom-colors' ); 209 $response = self::perform_active_theme_request(); 210 211 $result = $response->get_data(); 212 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 213 $this->assertTrue( isset( $result[0]['theme_supports']['disable-custom-colors'] ) ); 214 $this->assertFalse( $result[0]['theme_supports']['disable-custom-colors'] ); 215 } 216 217 /** 218 * Test when a theme disables custom colors. 219 * 220 * @ticket 48798 221 */ 222 public function test_theme_supports_disable_custom_colors_true() { 223 remove_theme_support( 'disable-custom-colors' ); 224 add_theme_support( 'disable-custom-colors' ); 225 $response = self::perform_active_theme_request(); 226 $result = $response->get_data(); 227 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 228 $this->assertTrue( $result[0]['theme_supports']['disable-custom-colors'] ); 229 } 230 231 /** 232 * Test when a theme does not disable custom font sizes. 233 * 234 * @ticket 48798 235 */ 236 public function test_theme_supports_disable_custom_font_sizes_false() { 237 remove_theme_support( 'disable-custom-font-sizes' ); 238 $response = self::perform_active_theme_request(); 239 240 $result = $response->get_data(); 241 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 242 $this->assertTrue( isset( $result[0]['theme_supports']['disable-custom-font-sizes'] ) ); 243 $this->assertFalse( $result[0]['theme_supports']['disable-custom-font-sizes'] ); 244 } 245 246 /** 247 * Test when a theme disables custom font sizes. 248 * 249 * @ticket 48798 250 */ 251 public function test_theme_supports_disable_custom_font_sizes_true() { 252 remove_theme_support( 'disable-custom-font-sizes' ); 253 add_theme_support( 'disable-custom-font-sizes' ); 254 $response = self::perform_active_theme_request(); 255 $result = $response->get_data(); 256 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 257 $this->assertTrue( $result[0]['theme_supports']['disable-custom-font-sizes'] ); 258 } 259 260 /** 261 * Test when a theme doesn't support custom font sizes. 262 * 263 * @ticket 48798 264 */ 265 public function test_theme_supports_editor_font_sizes_false() { 266 remove_theme_support( 'editor-font-sizes' ); 267 $response = self::perform_active_theme_request(); 268 269 $result = $response->get_data(); 270 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 271 $this->assertTrue( isset( $result[0]['theme_supports']['editor-font-sizes'] ) ); 272 $this->assertFalse( $result[0]['theme_supports']['editor-font-sizes'] ); 273 } 274 275 /** 276 * Test when a theme supports custom font sizes. 277 * 278 * @ticket 48798 279 */ 280 public function test_theme_supports_editor_font_sizes_array() { 281 remove_theme_support( 'editor-font-sizes' ); 282 $tiny = array( 283 'name' => 'Tiny', 284 'size' => 8, 285 'slug' => 'tiny', 286 ); 287 add_theme_support( 'editor-font-sizes', array( $tiny ) ); 288 $response = self::perform_active_theme_request(); 289 290 $result = $response->get_data(); 291 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 292 $this->assertEquals( array( $tiny), $result[0]['theme_supports']['editor-font-sizes'] ); 293 } 294 295 /** 296 * Test when a theme doesn't support a custom color palette. 297 * 298 * @ticket 48798 299 */ 300 public function test_theme_supports_editor_color_palette_false() { 301 remove_theme_support( 'editor-color-palette' ); 302 $response = self::perform_active_theme_request(); 303 304 $result = $response->get_data(); 305 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 306 $this->assertTrue( isset( $result[0]['theme_supports']['editor-color-palette'] ) ); 307 $this->assertFalse( $result[0]['theme_supports']['editor-color-palette'] ); 308 } 309 310 /** 311 * Test when a theme supports a custom color palette. 312 * 313 * @ticket 48798 314 */ 315 public function test_theme_supports_editor_color_palette_array() { 316 remove_theme_support( 'editor-color-palette' ); 317 $wordpress_blue = array( 318 'name' => 'WordPress Blue', 319 'slug' => 'wordpress-blue', 320 'color' => '#0073AA', 321 ); 322 add_theme_support( 'editor-color-palette', array( $wordpress_blue ) ); 323 $response = self::perform_active_theme_request(); 324 325 $result = $response->get_data(); 326 $this->assertTrue( isset( $result[0]['theme_supports'] ) ); 327 $this->assertEquals( array( $wordpress_blue), $result[0]['theme_supports']['editor-color-palette'] ); 328 } 329 198 330 /** 199 331 * Should include relevant data in the 'theme_supports' key. 200 332 *