Ticket #30409: 30409.5.diff
| File 30409.5.diff, 20.7 KB (added by , 11 years ago) |
|---|
-
src/wp-content/themes/twentyfifteen/inc/customizer.php
27 27 'transport' => 'postMessage', 28 28 ) ); 29 29 30 $wp_customize->add_setting( 'color_scheme_css', array(31 'default' => '',32 'transport' => 'postMessage',33 ) );34 35 30 $wp_customize->add_control( 'color_scheme', array( 36 31 'label' => esc_html__( 'Base Color Scheme', 'twentyfifteen' ), 37 32 'section' => 'colors', … … 231 226 */ 232 227 function twentyfifteen_color_scheme_css() { 233 228 $color_scheme_option = get_theme_mod( 'color_scheme', 'default' ); 234 $color_scheme_css = get_theme_mod( 'color_scheme_css', '' );235 229 236 230 // Don't do anything if the default color scheme is selected. 237 if ( 'default' === $color_scheme_option || empty( $color_scheme_css )) {231 if ( 'default' === $color_scheme_option ) { 238 232 return; 239 233 } 240 234 235 $color_scheme = twentyfifteen_get_color_scheme(); 236 237 // Convert main and sidebar text hex color to rgba. 238 $color_main_text_rgb = twentyfifteen_hex2rgb( $color_scheme[3] ); 239 $color_sidebar_link_rgb = twentyfifteen_hex2rgb( $color_scheme[4] ); 240 $colors = array( 241 'background_color' => $color_scheme[0], 242 'header_background_color' => $color_scheme[1], 243 'box_background_color' => $color_scheme[2], 244 'textcolor' => $color_scheme[3], 245 'secondary_textcolor' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $color_main_text_rgb ), 246 'border_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $color_main_text_rgb ), 247 'border_focus_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $color_main_text_rgb ), 248 'sidebar_textcolor' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.7)', $color_sidebar_link_rgb ), 249 'sidebar_border_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.1)', $color_sidebar_link_rgb ), 250 'sidebar_border_focus_color' => vsprintf( 'rgba( %1$s, %2$s, %3$s, 0.3)', $color_sidebar_link_rgb ), 251 'secondary_sidebar_textcolor' => $color_scheme[4], 252 'meta_box_background_color' => $color_scheme[5], 253 ); 254 255 $color_scheme_css = twentyfifteen_get_color_scheme_css( $colors ); 256 241 257 wp_add_inline_style( 'twentyfifteen-style', $color_scheme_css ); 242 258 } 243 259 add_action( 'wp_enqueue_scripts', 'twentyfifteen_color_scheme_css' ); … … 250 266 * @since Twenty Fifteen 1.0 251 267 */ 252 268 function twentyfifteen_customize_control_js() { 253 wp_enqueue_script( 'color-scheme-control', get_template_directory_uri() . '/js/color-scheme-control.js', array( 'customize-controls' , 'iris', 'underscore', 'wp-util' ), '', true );269 wp_enqueue_script( 'color-scheme-control', get_template_directory_uri() . '/js/color-scheme-control.js', array( 'customize-controls' ), '20141213', true ); 254 270 wp_localize_script( 'color-scheme-control', 'colorScheme', twentyfifteen_get_color_schemes() ); 255 271 } 256 272 add_action( 'customize_controls_enqueue_scripts', 'twentyfifteen_customize_control_js' ); … … 258 274 /** 259 275 * Binds JS handlers to make the Customizer preview reload changes asynchronously. 260 276 * 277 * Passes color scheme data as colorScheme global. 278 * 261 279 * @since Twenty Fifteen 1.0 262 280 */ 263 281 function twentyfifteen_customize_preview_js() { 264 wp_enqueue_script( 'twentyfifteen-customize-preview', get_template_directory_uri() . '/js/customize-preview.js', array( 'customize-preview' ), '20141029', true ); 282 wp_enqueue_script( 'twentyfifteen-customize-preview', get_template_directory_uri() . '/js/customize-preview.js', array( 'customize-preview', 'iris', 'underscore', 'wp-util' ), '20141213', true ); 283 wp_localize_script( 'twentyfifteen-customize-preview', 'colorScheme', twentyfifteen_get_color_schemes() ); 265 284 } 266 285 add_action( 'customize_preview_init', 'twentyfifteen_customize_preview_js' ); 267 286 268 287 /** 269 * Output an Underscore template for generating CSS for the color scheme.288 * Returns CSS for the color schemes. 270 289 * 271 * The template generates the css dynamically for instant display in the Customizer 272 * preview, and to be saved in a `theme_mod` for display on the front-end. 290 * @since Twenty Fifteen 1.0 273 291 * 274 * @since Twenty Fifteen 1.0 292 * @param array $colors Color scheme colors. 293 * @return string Color scheme CSS. 275 294 */ 276 function twentyfifteen_color_scheme_css_template() { 277 ?> 278 <script type="text/html" id="tmpl-twentyfifteen-color-scheme"> 295 function twentyfifteen_get_color_scheme_css( $colors ) { 296 $colors = wp_parse_args( $colors, array( 297 'background_color' => '', 298 'header_background_color' => '', 299 'box_background_color' => '', 300 'textcolor' => '', 301 'secondary_textcolor' => '', 302 'border_color' => '', 303 'border_focus_color' => '', 304 'sidebar_textcolor' => '', 305 'sidebar_border_color' => '', 306 'sidebar_border_focus_color' => '', 307 'secondary_sidebar_textcolor' => '', 308 'meta_box_background_color' => '', 309 ) ); 310 311 $css = <<<CSS 279 312 /* Color Scheme */ 280 313 281 314 /* Background Color */ 282 315 body { 283 background-color: { { data.background_color }};316 background-color: {$colors['background_color']}; 284 317 } 285 318 286 319 /* Sidebar Background Color */ 287 320 body:before, 288 321 .site-header { 289 background-color: { { data.header_background_color }};322 background-color: {$colors['header_background_color']}; 290 323 } 291 324 292 325 /* Box Background Color */ … … 298 331 .page-header, 299 332 .page-content, 300 333 .comments-area { 301 background-color: { { data.box_background_color }};334 background-color: {$colors['box_background_color']}; 302 335 } 303 336 304 337 /* Box Background Color */ … … 315 348 .page-links a:hover, 316 349 .page-links a:focus, 317 350 .sticky-post { 318 color: { { data.box_background_color }};351 color: {$colors['box_background_color']}; 319 352 } 320 353 321 354 /* Main Text Color */ … … 328 361 .widget_calendar tbody a, 329 362 .page-links a, 330 363 .sticky-post { 331 background-color: { { data.textcolor }};364 background-color: {$colors['textcolor']}; 332 365 } 333 366 334 367 /* Main Text Color */ … … 352 385 .comment-list .reply a:focus, 353 386 .site-info a:hover, 354 387 .site-info a:focus { 355 color: { { data.textcolor }};388 color: {$colors['textcolor']}; 356 389 } 357 390 358 391 /* Main Text Color */ … … 369 402 .pingback .edit-link a:hover, 370 403 .comment-list .reply a:hover, 371 404 .site-info a:hover { 372 border-color: { { data.textcolor }};405 border-color: {$colors['textcolor']}; 373 406 } 374 407 375 408 /* Secondary Text Color */ … … 389 422 .widget_calendar tbody a:focus, 390 423 .page-links a:hover, 391 424 .page-links a:focus { 392 background-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */393 background-color: { { data.secondary_textcolor }};425 background-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 426 background-color: {$colors['secondary_textcolor']}; 394 427 } 395 428 396 429 /* Secondary Text Color */ … … 429 462 .wp-caption-text, 430 463 .gallery-caption, 431 464 .comment-list .reply a { 432 color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */433 color: { { data.secondary_textcolor }};465 color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 466 color: {$colors['secondary_textcolor']}; 434 467 } 435 468 436 469 /* Secondary Text Color */ 437 470 blockquote, 438 471 .logged-in-as a:hover, 439 472 .comment-author a:hover { 440 border-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */441 border-color: { { data.secondary_textcolor }};473 border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 474 border-color: {$colors['secondary_textcolor']}; 442 475 } 443 476 444 477 /* Border Color */ 445 478 hr, 446 479 .dropdown-toggle:hover, 447 480 .dropdown-toggle:focus { 448 background-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */449 background-color: { { data.border_color }};481 background-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 482 background-color: {$colors['border_color']}; 450 483 } 451 484 452 485 /* Border Color */ … … 481 514 .comment-list .trackback, 482 515 .comment-list .reply a, 483 516 .no-comments { 484 border-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */485 border-color: { { data.border_color }};517 border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 518 border-color: {$colors['border_color']}; 486 519 } 487 520 488 521 /* Border Focus Color */ 489 522 a:focus, 490 523 button:focus, 491 524 input:focus { 492 outline-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */493 outline-color: { { data.border_focus_color }};525 outline-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 526 outline-color: {$colors['border_focus_color']}; 494 527 } 495 528 496 529 input:focus, 497 530 textarea:focus { 498 border-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */499 border-color: { { data.border_focus_color }};531 border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 532 border-color: {$colors['border_focus_color']}; 500 533 } 501 534 502 535 /* Sidebar Link Color */ 503 536 .secondary-toggle:before { 504 color: { { data.sidebar_textcolor }};537 color: {$colors['sidebar_textcolor']}; 505 538 } 506 539 507 540 .site-title a, 508 541 .site-description { 509 color: { { data.sidebar_textcolor }};542 color: {$colors['sidebar_textcolor']}; 510 543 } 511 544 512 545 /* Sidebar Text Color */ 513 546 .site-title a:hover, 514 547 .site-title a:focus { 515 color: { { data.secondary_sidebar_textcolor }};548 color: {$colors['secondary_sidebar_textcolor']}; 516 549 } 517 550 518 551 /* Sidebar Border Color */ 519 552 .secondary-toggle { 520 border-color: { { data.sidebar_textcolor }}; /* Fallback for IE7 and IE8 */521 border-color: { { data.sidebar_border_color }};553 border-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ 554 border-color: {$colors['sidebar_border_color']}; 522 555 } 523 556 524 557 /* Sidebar Border Focus Color */ 525 558 .secondary-toggle:hover, 526 559 .secondary-toggle:focus { 527 border-color: { { data.sidebar_textcolor }}; /* Fallback for IE7 and IE8 */528 border-color: { { data.sidebar_border_focus_color }};560 border-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ 561 border-color: {$colors['sidebar_border_focus_color']}; 529 562 } 530 563 531 564 .site-title a { 532 outline-color: { { data.sidebar_textcolor }}; /* Fallback for IE7 and IE8 */533 outline-color: { { data.sidebar_border_focus_color }};565 outline-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ 566 outline-color: {$colors['sidebar_border_focus_color']}; 534 567 } 535 568 536 569 /* Meta Background Color */ 537 570 .entry-footer { 538 background-color: { { data.meta_box_background_color }};571 background-color: {$colors['meta_box_background_color']}; 539 572 } 540 573 541 574 @media screen and (min-width: 38.75em) { 542 575 /* Main Text Color */ 543 576 .page-header { 544 border-color: { { data.textcolor }};577 border-color: {$colors['textcolor']}; 545 578 } 546 579 } 547 580 … … 560 593 .widget_calendar tbody a, 561 594 .widget_calendar tbody a:hover, 562 595 .widget_calendar tbody a:focus { 563 color: { { data.header_background_color }};596 color: {$colors['header_background_color']}; 564 597 } 565 598 566 599 /* Sidebar Link Color */ … … 569 602 .widget-title, 570 603 .widget blockquote cite, 571 604 .widget blockquote small { 572 color: { { data.sidebar_textcolor }};605 color: {$colors['sidebar_textcolor']}; 573 606 } 574 607 575 608 .widget button, … … 577 610 .widget input[type="reset"], 578 611 .widget input[type="submit"], 579 612 .widget_calendar tbody a { 580 background-color: { { data.sidebar_textcolor }};613 background-color: {$colors['sidebar_textcolor']}; 581 614 } 582 615 583 616 .textwidget a { 584 border-color: { { data.sidebar_textcolor }};617 border-color: {$colors['sidebar_textcolor']}; 585 618 } 586 619 587 620 /* Sidebar Text Color */ … … 592 625 .widget blockquote, 593 626 .widget .wp-caption-text, 594 627 .widget .gallery-caption { 595 color: { { data.secondary_sidebar_textcolor }};628 color: {$colors['secondary_sidebar_textcolor']}; 596 629 } 597 630 598 631 .widget button:hover, … … 605 638 .widget input[type="submit"]:focus, 606 639 .widget_calendar tbody a:hover, 607 640 .widget_calendar tbody a:focus { 608 background-color: { { data.secondary_sidebar_textcolor }};641 background-color: {$colors['secondary_sidebar_textcolor']}; 609 642 } 610 643 611 644 .widget blockquote { 612 border-color: { { data.secondary_sidebar_textcolor }};645 border-color: {$colors['secondary_sidebar_textcolor']}; 613 646 } 614 647 615 648 /* Sidebar Border Color */ … … 626 659 .widget_nav_menu .sub-menu, 627 660 .widget_pages .children, 628 661 .widget abbr[title] { 629 border-color: { { data.sidebar_border_color }};662 border-color: {$colors['sidebar_border_color']}; 630 663 } 631 664 632 665 .dropdown-toggle:hover, 633 666 .dropdown-toggle:focus, 634 667 .widget hr { 635 background-color: { { data.sidebar_border_color }};668 background-color: {$colors['sidebar_border_color']}; 636 669 } 637 670 638 671 .widget input:focus, 639 672 .widget textarea:focus { 640 border-color: { { data.sidebar_border_focus_color }};673 border-color: {$colors['sidebar_border_focus_color']}; 641 674 } 642 675 643 676 .sidebar a:focus, 644 677 .dropdown-toggle:focus { 645 outline-color: { { data.sidebar_border_focus_color }};678 outline-color: {$colors['sidebar_border_focus_color']}; 646 679 } 647 680 } 681 CSS; 682 683 return $css; 684 } 685 686 /** 687 * Output an Underscore template for generating CSS for the color scheme. 688 * 689 * The template generates the css dynamically for instant display in the Customizer 690 * preview. 691 * 692 * @since Twenty Fifteen 1.0 693 */ 694 function twentyfifteen_color_scheme_css_template() { 695 if ( ! is_customize_preview() ) { 696 return; 697 } 698 699 $colors = array( 700 'background_color' => '{{ data.background_color }}', 701 'header_background_color' => '{{ data.header_background_color }}', 702 'box_background_color' => '{{ data.box_background_color }}', 703 'textcolor' => '{{ data.textcolor }}', 704 'secondary_textcolor' => '{{ data.secondary_textcolor }}', 705 'border_color' => '{{ data.border_color }}', 706 'border_focus_color' => '{{ data.border_focus_color }}', 707 'sidebar_textcolor' => '{{ data.sidebar_textcolor }}', 708 'sidebar_border_color' => '{{ data.sidebar_border_color }}', 709 'sidebar_border_focus_color' => '{{ data.sidebar_border_focus_color }}', 710 'secondary_sidebar_textcolor' => '{{ data.secondary_sidebar_textcolor }}', 711 'meta_box_background_color' => '{{ data.meta_box_background_color }}', 712 ); 713 ?> 714 <script type="text/html" id="tmpl-twentyfifteen-color-scheme"> 715 <?php echo twentyfifteen_get_color_scheme_css( $colors ); ?> 648 716 </script> 649 717 <?php 650 718 } 651 add_action( ' customize_controls_print_footer_scripts', 'twentyfifteen_color_scheme_css_template' );719 add_action( 'wp_footer', 'twentyfifteen_color_scheme_css_template' ); -
src/wp-content/themes/twentyfifteen/js/color-scheme-control.js
1 /* global colorScheme , Color*/1 /* global colorScheme */ 2 2 /** 3 3 * Add a listener to the Color Scheme control to update other color controls to new values/defaults. 4 4 * Also trigger an update of the Color Scheme CSS when a color is changed. 5 5 */ 6 6 7 7 ( function( api ) { 8 var cssTemplate = wp.template( 'twentyfifteen-color-scheme' ),9 colorSchemeKeys = [10 'background_color',11 'header_background_color',12 'box_background_color',13 'textcolor',14 'sidebar_textcolor',15 'meta_box_background_color'16 ],17 colorSettings = [18 'background_color',19 'header_background_color',20 'sidebar_textcolor'21 ];22 23 8 api.controlConstructor.select = api.Control.extend( { 24 9 ready: function() { 25 10 if ( 'color_scheme' === this.id ) { … … 45 30 } 46 31 } 47 32 } ); 48 49 // Generate the CSS for the current Color Scheme.50 function getCSS() {51 var scheme = api( 'color_scheme' )(),52 colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors );53 54 // Merge in color scheme overrides.55 _.each( colorSettings, function( setting ) {56 colors[ setting ] = api( setting )();57 });58 59 // Add additional colors.60 colors.secondary_textcolor = Color( colors.textcolor ).toCSS( 'rgba', 0.7 );61 colors.border_color = Color( colors.textcolor ).toCSS( 'rgba', 0.1 );62 colors.border_focus_color = Color( colors.textcolor ).toCSS( 'rgba', 0.3 );63 colors.secondary_sidebar_textcolor = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.7 );64 colors.sidebar_border_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.1 );65 colors.sidebar_border_focus_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.3 );66 67 return cssTemplate( colors );68 }69 70 // Update the CSS whenever a color setting is changed.71 _.each( colorSettings, function( setting ) {72 api( setting, function( setting ) {73 setting.bind( _.throttle( function() {74 api( 'color_scheme_css' ).set( getCSS() );75 }, 250 ) );76 } );77 } );78 33 } )( wp.customize ); -
src/wp-content/themes/twentyfifteen/js/customize-preview.js
1 /* global colorScheme, Color */ 1 2 /** 2 3 * Live-update changed settings in real time in the Customizer preview. 3 4 */ … … 2 3 3 ( function( $ ) { 4 var $style = $( '#twentyfifteen-color-scheme-css' ); 4 (function( wp, $ ){ 5 5 6 if ( ! wp || ! wp.customize ) { return; } 7 8 var api = wp.customize, 9 $style = $( '#twentyfifteen-color-scheme-css' ), 10 cssTemplate = wp.template( 'twentyfifteen-color-scheme' ), 11 colorSchemeKeys = [ 12 'background_color', 13 'header_background_color', 14 'box_background_color', 15 'textcolor', 16 'sidebar_textcolor', 17 'meta_box_background_color' 18 ], 19 colorSettings = [ 20 'background_color', 21 'header_background_color', 22 'sidebar_textcolor' 23 ]; 24 6 25 if ( ! $style.length ) { 7 $style = $( 'head' ).append( '<style type="text/css" id="twentyfifteen-color-scheme-css" />' ) 8 .find( '#twentyfifteen-color-scheme-css' ); 26 $style = $( 'head' ) 27 .append( '<style type="text/css" id="twentyfifteen-color-scheme-css" />' ) 28 .find( '#twentyfifteen-color-scheme-css' ); 9 29 } 10 30 11 31 // Site title. 12 wp.customize( 'blogname', function( value ) {32 api( 'blogname', function( value ) { 13 33 value.bind( function( to ) { … … 18 38 } ); 19 39 20 40 // Site tagline. 21 wp.customize( 'blogdescription', function( value ) {41 api( 'blogdescription', function( value ) { 22 42 value.bind( function( to ) { 23 43 $( '.site-description' ).text( to ); 24 44 } ); 25 45 } ); 26 46 27 47 // Color Scheme CSS. 28 wp.customize( 'color_scheme_css', function( value ) { 29 value.bind( function( to ) { 30 $style.html( to ); 31 } ); 48 49 // Generate the CSS for the current Color Scheme. 50 function updateCSS() { 51 var scheme = api( 'color_scheme' )(), css, 52 colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors ); 53 54 // Merge in color scheme overrides. 55 _.each( colorSettings, function( setting ) { 56 colors[ setting ] = api( setting )(); 57 }); 58 59 // Add additional colors. 60 colors.secondary_textcolor = Color( colors.textcolor ).toCSS( 'rgba', 0.7 ); 61 colors.border_color = Color( colors.textcolor ).toCSS( 'rgba', 0.1 ); 62 colors.border_focus_color = Color( colors.textcolor ).toCSS( 'rgba', 0.3 ); 63 colors.secondary_sidebar_textcolor = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.7 ); 64 colors.sidebar_border_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.1 ); 65 colors.sidebar_border_focus_color = Color( colors.sidebar_textcolor ).toCSS( 'rgba', 0.3 ); 66 67 css = cssTemplate( colors ); 68 $style.html( css ); 69 } 70 71 // Update the CSS whenever a color setting is changed. 72 _.each( colorSettings, function( setting ) { 73 api( setting, function( value ) { 74 value.bind( updateCSS ); 75 }); 32 76 } ); 33 34 } )( jQuery ); 77 })( window.wp, jQuery ); -
src/wp-includes/script-loader.php
418 418 $scripts->add( 'media-audiovideo', "/wp-includes/js/media-audiovideo$suffix.js", array( 'media-editor' ), false, 1 ); 419 419 $scripts->add( 'mce-view', "/wp-includes/js/mce-view$suffix.js", array( 'shortcode', 'media-models', 'media-audiovideo', 'wp-playlist' ), false, 1 ); 420 420 421 $scripts->add( 'iris', '/wp-admin/js/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), '1.0.7', 1 ); 422 421 423 if ( is_admin() ) { 422 424 $scripts->add( 'admin-tags', "/wp-admin/js/tags$suffix.js", array('jquery', 'wp-ajax-response'), false, 1 ); 423 425 did_action( 'init' ) && $scripts->localize( 'admin-tags', 'tagsl10n', array( … … 503 505 504 506 $scripts->add( 'farbtastic', '/wp-admin/js/farbtastic.js', array('jquery'), '1.2' ); 505 507 506 $scripts->add( 'iris', '/wp-admin/js/iris.min.js', array( 'jquery-ui-draggable', 'jquery-ui-slider', 'jquery-touch-punch' ), '1.0.7', 1 );507 508 $scripts->add( 'wp-color-picker', "/wp-admin/js/color-picker$suffix.js", array( 'iris' ), false, 1 ); 508 509 did_action( 'init' ) && $scripts->localize( 'wp-color-picker', 'wpColorPickerL10n', array( 509 510 'clear' => __( 'Clear' ),