Ticket #30409: 30409.3.diff
File 30409.3.diff, 13.9 KB (added by , 9 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' ); … … 266 282 add_action( 'customize_preview_init', 'twentyfifteen_customize_preview_js' ); 267 283 268 284 /** 269 * Output an Underscore template for generating CSS for the color scheme.285 * Returns CSS for the color schemes. 270 286 * 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. 287 * @since Twenty Fifteen 1.0 273 288 * 274 * @since Twenty Fifteen 1.0 289 * @param array $colors Color scheme colors. 290 * @return string Color scheme CSS. 275 291 */ 276 function twentyfifteen_color_scheme_css_template() { 277 ?> 278 <script type="text/html" id="tmpl-twentyfifteen-color-scheme"> 292 function twentyfifteen_get_color_scheme_css( $colors ) { 293 if ( empty( $colors ) ) { 294 return ''; 295 } 296 297 $colors = wp_parse_args( $colors, array( 298 'background_color' => '', 299 'header_background_color' => '', 300 'box_background_color' => '', 301 'textcolor' => '', 302 'secondary_textcolor' => '', 303 'border_color' => '', 304 'border_focus_color' => '', 305 'sidebar_textcolor' => '', 306 'sidebar_border_color' => '', 307 'sidebar_border_focus_color' => '', 308 'secondary_sidebar_textcolor' => '', 309 'meta_box_background_color' => '', 310 ) ); 311 312 $css = <<<CSS 279 313 /* Color Scheme */ 280 314 281 315 /* Background Color */ 282 316 body { 283 background-color: { { data.background_color }};317 background-color: {$colors['background_color']}; 284 318 } 285 319 286 320 /* Sidebar Background Color */ 287 321 body:before, 288 322 .site-header { 289 background-color: { { data.header_background_color }};323 background-color: {$colors['header_background_color']}; 290 324 } 291 325 292 326 /* Box Background Color */ … … 298 332 .page-header, 299 333 .page-content, 300 334 .comments-area { 301 background-color: { { data.box_background_color }};335 background-color: {$colors['box_background_color']}; 302 336 } 303 337 304 338 /* Box Background Color */ … … 315 349 .page-links a:hover, 316 350 .page-links a:focus, 317 351 .sticky-post { 318 color: { { data.box_background_color }};352 color: {$colors['box_background_color']}; 319 353 } 320 354 321 355 /* Main Text Color */ … … 328 362 .widget_calendar tbody a, 329 363 .page-links a, 330 364 .sticky-post { 331 background-color: { { data.textcolor }};365 background-color: {$colors['textcolor']}; 332 366 } 333 367 334 368 /* Main Text Color */ … … 352 386 .comment-list .reply a:focus, 353 387 .site-info a:hover, 354 388 .site-info a:focus { 355 color: { { data.textcolor }};389 color: {$colors['textcolor']}; 356 390 } 357 391 358 392 /* Main Text Color */ … … 369 403 .pingback .edit-link a:hover, 370 404 .comment-list .reply a:hover, 371 405 .site-info a:hover { 372 border-color: { { data.textcolor }};406 border-color: {$colors['textcolor']}; 373 407 } 374 408 375 409 /* Secondary Text Color */ … … 389 423 .widget_calendar tbody a:focus, 390 424 .page-links a:hover, 391 425 .page-links a:focus { 392 background-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */393 background-color: { { data.secondary_textcolor }};426 background-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 427 background-color: {$colors['secondary_textcolor']}; 394 428 } 395 429 396 430 /* Secondary Text Color */ … … 429 463 .wp-caption-text, 430 464 .gallery-caption, 431 465 .comment-list .reply a { 432 color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */433 color: { { data.secondary_textcolor }};466 color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 467 color: {$colors['secondary_textcolor']}; 434 468 } 435 469 436 470 /* Secondary Text Color */ 437 471 blockquote, 438 472 .logged-in-as a:hover, 439 473 .comment-author a:hover { 440 border-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */441 border-color: { { data.secondary_textcolor }};474 border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 475 border-color: {$colors['secondary_textcolor']}; 442 476 } 443 477 444 478 /* Border Color */ 445 479 hr, 446 480 .dropdown-toggle:hover, 447 481 .dropdown-toggle:focus { 448 background-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */449 background-color: { { data.border_color }};482 background-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 483 background-color: {$colors['border_color']}; 450 484 } 451 485 452 486 /* Border Color */ … … 481 515 .comment-list .trackback, 482 516 .comment-list .reply a, 483 517 .no-comments { 484 border-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */485 border-color: { { data.border_color }};518 border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 519 border-color: {$colors['border_color']}; 486 520 } 487 521 488 522 /* Border Focus Color */ 489 523 a:focus, 490 524 button:focus, 491 525 input:focus { 492 outline-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */493 outline-color: { { data.border_focus_color }};526 outline-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 527 outline-color: {$colors['border_focus_color']}; 494 528 } 495 529 496 530 input:focus, 497 531 textarea:focus { 498 border-color: { { data.textcolor }}; /* Fallback for IE7 and IE8 */499 border-color: { { data.border_focus_color }};532 border-color: {$colors['textcolor']}; /* Fallback for IE7 and IE8 */ 533 border-color: {$colors['border_focus_color']}; 500 534 } 501 535 502 536 /* Sidebar Link Color */ 503 537 .secondary-toggle:before { 504 color: { { data.sidebar_textcolor }};538 color: {$colors['sidebar_textcolor']}; 505 539 } 506 540 507 541 .site-title a, 508 542 .site-description { 509 color: { { data.sidebar_textcolor }};543 color: {$colors['sidebar_textcolor']}; 510 544 } 511 545 512 546 /* Sidebar Text Color */ 513 547 .site-title a:hover, 514 548 .site-title a:focus { 515 color: { { data.secondary_sidebar_textcolor }};549 color: {$colors['secondary_sidebar_textcolor']}; 516 550 } 517 551 518 552 /* Sidebar Border Color */ 519 553 .secondary-toggle { 520 border-color: { { data.sidebar_textcolor }}; /* Fallback for IE7 and IE8 */521 border-color: { { data.sidebar_border_color }};554 border-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ 555 border-color: {$colors['sidebar_border_color']}; 522 556 } 523 557 524 558 /* Sidebar Border Focus Color */ 525 559 .secondary-toggle:hover, 526 560 .secondary-toggle:focus { 527 border-color: { { data.sidebar_textcolor }}; /* Fallback for IE7 and IE8 */528 border-color: { { data.sidebar_border_focus_color }};561 border-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ 562 border-color: {$colors['sidebar_border_focus_color']}; 529 563 } 530 564 531 565 .site-title a { 532 outline-color: { { data.sidebar_textcolor }}; /* Fallback for IE7 and IE8 */533 outline-color: { { data.sidebar_border_focus_color }};566 outline-color: {$colors['sidebar_textcolor']}; /* Fallback for IE7 and IE8 */ 567 outline-color: {$colors['sidebar_border_focus_color']}; 534 568 } 535 569 536 570 /* Meta Background Color */ 537 571 .entry-footer { 538 background-color: { { data.meta_box_background_color }};572 background-color: {$colors['meta_box_background_color']}; 539 573 } 540 574 541 575 @media screen and (min-width: 38.75em) { 542 576 /* Main Text Color */ 543 577 .page-header { 544 border-color: { { data.textcolor }};578 border-color: {$colors['textcolor']}; 545 579 } 546 580 } 547 581 … … 560 594 .widget_calendar tbody a, 561 595 .widget_calendar tbody a:hover, 562 596 .widget_calendar tbody a:focus { 563 color: { { data.header_background_color }};597 color: {$colors['header_background_color']}; 564 598 } 565 599 566 600 /* Sidebar Link Color */ … … 569 603 .widget-title, 570 604 .widget blockquote cite, 571 605 .widget blockquote small { 572 color: { { data.sidebar_textcolor }};606 color: {$colors['sidebar_textcolor']}; 573 607 } 574 608 575 609 .widget button, … … 577 611 .widget input[type="reset"], 578 612 .widget input[type="submit"], 579 613 .widget_calendar tbody a { 580 background-color: { { data.sidebar_textcolor }};614 background-color: {$colors['sidebar_textcolor']}; 581 615 } 582 616 583 617 .textwidget a { 584 border-color: { { data.sidebar_textcolor }};618 border-color: {$colors['sidebar_textcolor']}; 585 619 } 586 620 587 621 /* Sidebar Text Color */ … … 592 626 .widget blockquote, 593 627 .widget .wp-caption-text, 594 628 .widget .gallery-caption { 595 color: { { data.secondary_sidebar_textcolor }};629 color: {$colors['secondary_sidebar_textcolor']}; 596 630 } 597 631 598 632 .widget button:hover, … … 605 639 .widget input[type="submit"]:focus, 606 640 .widget_calendar tbody a:hover, 607 641 .widget_calendar tbody a:focus { 608 background-color: { { data.secondary_sidebar_textcolor }};642 background-color: {$colors['secondary_sidebar_textcolor']}; 609 643 } 610 644 611 645 .widget blockquote { 612 border-color: { { data.secondary_sidebar_textcolor }};646 border-color: {$colors['secondary_sidebar_textcolor']}; 613 647 } 614 648 615 649 /* Sidebar Border Color */ … … 626 660 .widget_nav_menu .sub-menu, 627 661 .widget_pages .children, 628 662 .widget abbr[title] { 629 border-color: { { data.sidebar_border_color }};663 border-color: {$colors['sidebar_border_color']}; 630 664 } 631 665 632 666 .dropdown-toggle:hover, 633 667 .dropdown-toggle:focus, 634 668 .widget hr { 635 background-color: { { data.sidebar_border_color }};669 background-color: {$colors['sidebar_border_color']}; 636 670 } 637 671 638 672 .widget input:focus, 639 673 .widget textarea:focus { 640 border-color: { { data.sidebar_border_focus_color }};674 border-color: {$colors['sidebar_border_focus_color']}; 641 675 } 642 676 643 677 .sidebar a:focus, 644 678 .dropdown-toggle:focus { 645 outline-color: { { data.sidebar_border_focus_color }};679 outline-color: {$colors['sidebar_border_focus_color']}; 646 680 } 647 681 } 682 CSS; 683 684 return $css; 685 } 686 687 /** 688 * Output an Underscore template for generating CSS for the color scheme. 689 * 690 * The template generates the css dynamically for instant display in the Customizer 691 * preview. 692 * 693 * @since Twenty Fifteen 1.0 694 */ 695 function twentyfifteen_color_scheme_css_template() { 696 $colors = array( 697 'background_color' => '{{ data.background_color }}', 698 'header_background_color' => '{{ data.header_background_color }}', 699 'box_background_color' => '{{ data.box_background_color }}', 700 'textcolor' => '{{ data.textcolor }}', 701 'secondary_textcolor' => '{{ data.secondary_textcolor }}', 702 'border_color' => '{{ data.border_color }}', 703 'border_focus_color' => '{{ data.border_focus_color }}', 704 'sidebar_textcolor' => '{{ data.sidebar_textcolor }}', 705 'sidebar_border_color' => '{{ data.sidebar_border_color }}', 706 'sidebar_border_focus_color' => '{{ data.sidebar_border_focus_color }}', 707 'secondary_sidebar_textcolor' => '{{ data.secondary_sidebar_textcolor }}', 708 'meta_box_background_color' => '{{ data.meta_box_background_color }}', 709 ); 710 ?> 711 <script type="text/html" id="tmpl-twentyfifteen-color-scheme"> 712 <?php echo twentyfifteen_get_color_scheme_css( $colors ); ?> 648 713 </script> 649 714 <?php 650 715 } -
src/wp-content/themes/twentyfifteen/js/color-scheme-control.js
47 47 } ); 48 48 49 49 // Generate the CSS for the current Color Scheme. 50 function getCSS() {50 function updateCSS() { 51 51 var scheme = api( 'color_scheme' )(), 52 52 colors = _.object( colorSchemeKeys, colorScheme[ scheme ].colors ); 53 53 … … 71 71 _.each( colorSettings, function( setting ) { 72 72 api( setting, function( setting ) { 73 73 setting.bind( _.throttle( function() { 74 api( 'color_scheme_css' ).set( getCSS());74 updateCSS(); 75 75 }, 250 ) ); 76 76 } ); 77 77 } ); -
src/wp-content/themes/twentyfifteen/js/customize-preview.js
25 25 } ); 26 26 27 27 // Color Scheme CSS. 28 wp.customize( 'color_scheme_css', function( value ) { 29 value.bind( function( to ) { 30 $style.html( to ); 31 } ); 32 } ); 28 // @todo 33 29 34 30 } )( jQuery );