Customize: Introduce a new experience for discovering, installing, and previewing themes within the customizer.

Unify the theme-browsing and theme-customization experiences by introducing a comprehensive theme browser and installer directly accessible in the customizer. Replaces the customizer theme switcher with a full-screen panel for discovering/browsing and installing themes available on WordPress.org. Themes can now be installed and previewed directly in the customizer without entering the wp-admin context.

For details, see https://make.wordpress.org/core/2016/10/03/feature-proposal-a-new-experience-for-discovering-installing-and-previewing-themes-in-the-customizer/

Fixes #37661, #34843.
Props celloexpressions, folletto, westonruter, karmatosed, afercia.


git-svn-id: https://develop.svn.wordpress.org/trunk@38813 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Weston Ruter
2016-10-19 03:19:13 +00:00
parent 788bb093f2
commit 8a79cdc107
11 changed files with 1799 additions and 393 deletions
+489 -77
View File
@@ -271,21 +271,17 @@ body {
}
#customize-theme-controls .customize-pane-child.open,
#customize-theme-controls .customize-pane-child.current-panel,
#customize-theme-controls .customize-themes-panel.customize-pane-child.current-panel {
#customize-theme-controls .customize-pane-child.current-panel {
-webkit-transform: none;
-ms-transform: none;
transform: none;
}
#customize-theme-controls .customize-themes-panel.customize-pane-child,
.section-open #customize-theme-controls .customize-pane-parent,
.in-sub-panel #customize-theme-controls .customize-pane-parent,
.section-open #customize-info,
.in-sub-panel #customize-info,
.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel,
.in-themes-panel #customize-theme-controls .customize-pane-parent,
.in-themes-panel #customize-info {
.in-sub-panel.section-open #customize-theme-controls .customize-pane-child.current-panel {
visibility: hidden;
height: 0;
overflow: hidden;
@@ -296,10 +292,8 @@ body {
.section-open #customize-theme-controls .customize-pane-parent.busy,
.in-sub-panel #customize-theme-controls .customize-pane-parent.busy,
.in-themes-panel #customize-theme-controls .customize-pane-parent.busy,
.section-open #customize-info.busy,
.in-sub-panel #customize-info.busy,
.in-themes-panel #customize-info.busy,
.busy.section-open.in-sub-panel #customize-theme-controls .customize-pane-child.current-panel,
#customize-theme-controls .customize-pane-child.open,
#customize-theme-controls .customize-pane-child.current-panel,
@@ -309,13 +303,6 @@ body {
overflow: auto;
}
.in-themes-panel #customize-theme-controls .customize-pane-parent,
.in-themes-panel #customize-info {
-webkit-transform: translateX(100%);
-ms-transform: translateX(100%);
transform: translateX(100%);
}
#customize-theme-controls .customize-pane-child.accordion-section-content,
#customize-theme-controls .customize-pane-child.accordion-sub-container {
display: block;
@@ -406,7 +393,7 @@ h3.customize-section-title {
display: block;
float: left;
width: 48px;
height: 71px;
height: 70px;
padding: 0 24px 0 0;
margin: 0;
background: #fff;
@@ -420,7 +407,7 @@ h3.customize-section-title {
}
.customize-section-back {
height: 74px;
height: 73px;
}
.ios .customize-panel-back {
@@ -996,15 +983,21 @@ p.customize-section-description {
animation: customize-reload .75s;
}
#customize-theme-controls .control-section-themes .accordion-section-title:hover, /* Not a focusable element. */
#customize-theme-controls .control-section-themes .accordion-section-title {
#customize-theme-controls .control-panel-themes {
border-bottom: none;
}
#customize-theme-controls .control-panel-themes > .accordion-section-title:hover, /* Not a focusable element. */
#customize-theme-controls .control-panel-themes > .accordion-section-title {
cursor: default;
background: #fff;
color: #555;
border-top: 1px solid #ddd;
border-bottom: 1px solid #ddd;
border-left: none;
margin-top: 0;
border-right: none;
margin: 0 0 15px 0;
padding-right: 100px; /* Space for the button */
}
#customize-theme-controls .control-section-themes .customize-themes-panel .accordion-section-title:first-child:hover, /* Not a focusable element. */
@@ -1012,29 +1005,14 @@ p.customize-section-description {
border-top: 0;
}
#customize-theme-controls .control-section-themes > .accordion-section-title:hover, /* Not a focusable element. */
#customize-theme-controls .control-section-themes > .accordion-section-title {
margin: 0 0 15px;
}
#customize-controls .customize-themes-panel .accordion-section-title {
margin: 15px -8px;
}
#customize-controls .control-section-themes .accordion-section-title,
#customize-controls .customize-themes-panel .accordion-section-title {
padding-right: 100px; /* Space for the button */
}
#customize-controls .control-section-themes .accordion-section-title span.customize-action,
.control-panel-themes .accordion-section-title span.customize-action,
#customize-controls .customize-section-title span.customize-action {
font-size: 13px;
display: block;
font-weight: 400;
}
#customize-controls .control-section-themes .accordion-section-title .change-theme,
#customize-controls .customize-themes-panel .accordion-section-title .customize-theme {
.control-panel-themes .accordion-section-title .change-theme {
position: absolute;
right: 10px;
top: 50%;
@@ -1042,38 +1020,363 @@ p.customize-section-description {
font-weight: 400;
}
#customize-controls .control-section-themes .accordion-section-title:before {
#customize-theme-controls .control-panel-themes > .accordion-section-title:after {
display: none;
}
#customize-controls .customize-themes-panel {
padding: 0 8px;
background: #f1f1f1;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
.control-panel-themes .customize-themes-full-container {
position: fixed;
top: 0;
left: 0;
transition: .18s left ease-in-out;
margin: 0 0 0 300px;
padding:25px;
overflow-y: scroll;
width: calc(100% - 350px);
height: calc(100% - 50px);
background: #eee;
z-index: 20;
}
#customize-controls .customize-themes-panel .accordion-section-title:first-child {
margin-top: 0;
/* Animations for opening the themes panel */
#customize-header-actions .save,
#customize-header-actions .spinner,
#customize-header-actions .customize-controls-preview-toggle {
position: relative;
top: 0;
transition: .18s top ease-in-out;
}
#customize-controls .customize-themes-panel .accordion-section-title:nth-child(2) {
#customize-footer-actions,
#customize-footer-actions .collapse-sidebar {
bottom: 0;
transition: .18s bottom ease-in-out;
}
.in-themes-panel:not(.animating) #customize-header-actions .save,
.in-themes-panel:not(.animating) #customize-header-actions .spinner,
.in-themes-panel:not(.animating) #customize-header-actions .customize-controls-preview-toggle,
.in-themes-panel:not(.animating) #customize-preview,
.in-themes-panel:not(.animating) #customize-footer-actions {
visibility: hidden;
}
.wp-full-overlay.in-themes-panel {
background: #eee; /* Prevents a black flash when fading in the panel */
}
.in-themes-panel #customize-header-actions .save,
.in-themes-panel #customize-header-actions .spinner,
.in-themes-panel #customize-header-actions .customize-controls-preview-toggle {
top: -45px;
}
.in-themes-panel #customize-footer-actions,
.in-themes-panel #customize-footer-actions .collapse-sidebar {
bottom: -45px;
}
/* Don't show the theme count while the panel opens, as it's in the wrong place during the animation */
.in-themes-panel.animating .control-panel-themes .filter-themes-count {
display: none;
}
.in-themes-panel.wp-full-overlay .wp-full-overlay-sidebar-content {
bottom: 0;
}
/* Adds a delay before fading in to avoid it "jumping" */
@keyframes themes-fade-in {
0% {
opacity: 0;
}
50% {
opacity: 0;
}
100% {
opacity: 1;
}
}
.control-panel-themes .customize-themes-full-container.animate {
animation: .6s themes-fade-in 1;
}
.in-themes-panel:not(.animating) .control-panel-themes .filter-themes-count {
animation: .6s themes-fade-in 1;
}
.control-panel-themes .filter-themes-count {
position: fixed;
top: 0;
left: 48px;
width: 222px;
padding: 6px 15px;
margin: 0;
line-height: 32px;
text-align: right;
z-index: 10;
}
.control-panel-themes .filter-themes-count .themes-displayed {
font-weight: 600;
color: #555d66;
}
.control-panel-themes .filter-themes-count .see-themes,
.control-panel-themes .filter-themes-count .filter-themes {
display: none;
}
/* Mobile - toggle between themes and filters */
@media screen and (max-width:600px) {
/* Show a spinner in the filters view also, reusing the main customize spinner */
.in-themes-panel.loading #customize-header-actions .spinner {
position: fixed;
top: 0;
left: 48px;
visibility: visible;
}
.in-themes-panel.loading.showing-themes #customize-header-actions .spinner {
visibility: hidden;
}
.control-panel-themes .filter-themes-count {
width: calc(100% - 93px);
}
.control-panel-themes .filter-themes-count .themes-displayed {
display: none;
}
.wp-full-overlay:not(.showing-themes) .control-panel-themes .filter-themes-count .see-themes {
display: block;
float: right;
}
.wp-full-overlay.showing-themes .control-panel-themes .filter-themes-count .filter-themes {
display: block;
float: right;
}
.in-themes-panel.showing-themes .control-panel-themes .customize-panel-back {
position: fixed;
top: 0;
left: 0;
z-index: 10;
height: 45px;
background: #eee;
}
.in-themes-panel.showing-themes .control-panel-themes .customize-panel-back:before {
line-height: 45px;
}
.control-panel-themes .customize-themes-full-container {
width: calc(100% - 50px);
margin: 0;
top: 46px;
height: calc(100% - 96px);
z-index: 1;
display: none;
}
.showing-themes .control-panel-themes .customize-themes-full-container {
display: block;
}
}
.control-panel-themes .customize-themes-notifications .notice {
margin: 0 0 25px 0;
}
.customize-themes-full-container .customize-themes-section {
display: none !important; /* There is unknown JS that perpetually tries to show all theme sections when more items are added. */
overflow: hidden;
}
.customize-themes-full-container .customize-themes-section.current-section {
display: list-item !important; /* There is unknown JS that perpetually tries to show all theme sections when more items are added. */
}
.theme-section .customize-themes-text-before {
padding: 0 0 8px 15px;
margin: 15px 0 0 0;
line-height: 16px;
border-bottom: 1px solid #ddd;
color: #555d66;
}
.control-panel-themes .customize-themes-section-title {
width: 100%;
background: #fff;
box-shadow: none;
outline: none;
border-top: none;
border-bottom: 1px solid #ddd;
border-left: 4px solid #fff;
border-right: none;
cursor: pointer;
padding: 10px 15px;
position: relative;
text-align: left;
font-size: 14px;
font-weight: 600;
color: #555d66;
text-shadow: none;
}
.control-panel-themes .theme-section {
margin: 0;
position: relative;
}
.control-panel-themes .customize-themes-section-title:focus,
.control-panel-themes .customize-themes-section-title:hover {
border-left-color: #0073aa;
color: #0073aa;
background: #f5f5f5;
}
.control-panel-themes .theme-section .customize-themes-section-title.selected:after {
content: "\f147";
font: 16px/1 dashicons;
box-sizing: border-box;
width: 20px;
height: 20px;
padding: 3px 3px 1px 1px; /* Re-align the icon to the smaller grid */
border-radius: 100%;
position: absolute;
top: 9px;
right: 15px;
background: #0073aa;
color: #fff;
}
.control-panel-themes .customize-themes-section-title.selected {
color: #0073aa;
}
.control-panel-themes .customize-themes-section-title.themes-section-search_themes {
border-left: none;
padding: 5px 10px 5px 15px;
width: auto;
}
.control-panel-themes .customize-themes-section-title.themes-section-feature_filter_themes:after,
.control-panel-themes .customize-themes-section-title.themes-section-favorites_themes:after {
content: "\f140";
font: 20px/1 dashicons;
position: absolute;
right: 15px;
top: 8px;
}
.control-panel-themes .customize-themes-section-title.themes-section-search_themes .wp-filter-search {
width: 100%;
}
.control-panel-themes .customize-themes-section-title.themes-section-search_themes.selected,
.control-panel-themes .customize-themes-section-title.themes-section-search_themes:hover {
background: #fff;
cursor: default;
}
.control-panel-themes .customize-themes-section-title.themes-section-feature_filter_themes {
margin-top: 15px;
border-top: 1px solid #ddd;
}
.control-panel-themes .filter-details {
background: #f5f5f5;
margin: 0;
padding: 8px 15px;
border-top: none;
border-bottom: 1px solid #ddd;
display: none;
}
.control-panel-themes .customize-themes-section-title.selected.details-open {
border-bottom-color: #f5f5f5;
border-left-color: #f5f5f5;
background: #f5f5f5;
}
.control-panel-themes .favorites-form.filter-details label {
padding-bottom: 6px;
display: inline-block;
}
.control-panel-themes .filter-details .filter-group {
float: none;
width: 100%;
background: transparent;
border: none;
padding: 0;
box-shadow: none;
}
.control-panel-themes .filter-details .filter-group legend button {
padding: 18px 15px 8px 10px;
line-height: 14px;
border-bottom: 1px solid #ddd;
width: 100%;
text-align: left;
}
.control-panel-themes .filter-details .filter-group legend {
position: relative;
top: 0;
width: 100%;
}
.control-panel-themes .filter-details .filter-group legend button:after {
content: "\f140";
font: 20px/1 dashicons;
position: absolute;
bottom: 6px;
right: 5px;
}
.control-panel-themes .filter-details .filter-group legend button:hover,
.control-panel-themes .filter-details .filter-group legend button:focus {
color: #0073aa;
border-bottom-color: #0073aa; /* Color change for focus style should be acceptable because border-bottom is barely visible previously. */
outline: none;
box-shadow: none;
}
.control-panel-themes .filter-details .filter-group legend button.open:after {
content: "\f142";
}
.control-panel-themes .filter-details .filter-group .filter-group-feature {
display: none;
margin: 0;
}
.control-panel-themes .filter-details .filter-group-feature label {
border: 1px solid #ddd;
border-top: 0;
background: #fff;
color: #555d66;
margin: 0;
padding: 12px 10px 12px 34px;
width: calc(100% - 46px);
line-height: 16px;
font-weight: 600;
}
#customize-controls .customize-themes-panel > h2 {
padding: 15px 8px 0 8px;
.control-panel-themes .filter-details .filter-group-feature input {
position: absolute;
margin: 12px 10px;
}
#customize-theme-controls .customize-themes-panel .accordion-section-content {
background: transparent;
display: block;
}
.customize-control.customize-control-theme {
margin-bottom: 8px;
.control-panel-themes .filter-details .filter-group-feature label:hover {
color: #0073aa;
}
#customize-theme-controls .themes.accordion-section-content {
@@ -1083,17 +1386,108 @@ p.customize-section-description {
width: 100%;
}
.loading .customize-themes-section .spinner {
display: block;
visibility: visible;
position: relative;
clear: both;
width: 20px;
height: 20px;
left: calc(50% - 10px);
float: none;
margin-top: 50px;
}
.customize-themes-section .filter-drawer {
border-top: none;
display: block;
background: transparent;
padding-top: 5px;
}
.customize-themes-section .clear-filters {
margin-left: 8px;
display: none;
}
.customize-themes-section .no-themes {
display: none;
}
.themes-section-installed_themes .theme .notice-success {
display: none; /* Hide "installed" notice on installed themes tab. */
}
.control-panel-themes .theme-browser .theme .theme-actions .button-primary {
margin: 0 0 0 8px;
}
.customize-control-theme .theme {
width: 100%;
margin: 0;
}
.customize-control.customize-control-theme { /* override most properties on .customize-control */
box-sizing: border-box;
width: 18.4%;
margin: 0 2% 2% 0;
padding: 0;
clear: none;
}
/* 5 columns above 2100px */
@media screen and (min-width: 2101px) {
.customize-control.customize-control-theme:nth-child(5n) {
margin-right: 0;
}
}
/* 4 columns up to 2100px */
@media screen and (min-width: 1601px) and (max-width: 2100px) {
.customize-control.customize-control-theme {
width: 23.5%;
}
.customize-control.customize-control-theme:nth-child(4n) {
margin-right: 0;
}
}
/* 3 columns up to 1600px */
@media screen and (min-width: 1201px) and (max-width: 1600px) {
.customize-control.customize-control-theme {
width: 32%;
}
.customize-control.customize-control-theme:nth-child(3n) {
margin-right: 0;
}
}
/* 2 columns up to 1200px */
@media screen and (min-width: 851px) and (max-width: 1200px) {
.customize-control.customize-control-theme {
width: 49%;
}
.customize-control.customize-control-theme:nth-child(even) {
margin-right: 0;
}
}
/* 1 column up to 850 px */
@media screen and (max-width: 850px) {
.customize-control.customize-control-theme {
width: 100%;
margin: 0 0 3% 0;
}
}
.wp-customizer .theme-browser .themes {
padding-bottom: 8px;
}
.wp-customizer .theme-browser .theme {
margin: 0;
width: 100%;
}
.wp-customizer .theme-browser .theme .theme-actions {
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
opacity: 1;
}
@@ -1112,15 +1506,6 @@ p.customize-section-description {
width: 100%;
}
.control-section-themes .accordion-section-title:after,
.customize-themes-panel .accordion-section-title:after {
display: none;
}
.customize-themes-panel.control-panel-content {
border-top: 1px solid #ddd;
}
/* Details View */
.wp-customizer .theme-overlay {
display: none;
@@ -1135,31 +1520,58 @@ p.customize-section-description {
z-index: 109;
}
/* Avoid a z-index war by resetting elements that should be under the overlay.
This is likely required because of the way that sections and panels are positioned. */
.wp-customizer.modal-open #customize-header-actions,
.wp-customizer.modal-open .control-panel-themes .filter-themes-count,
.wp-customizer.modal-open .control-panel-themes .customize-themes-section-title.selected:after {
z-index: -1;
}
.wp-customizer .theme-overlay .theme-backdrop {
background: rgba( 238, 238, 238, 0.75 );
position: fixed;
z-index: 110;
}
.wp-customizer .theme-overlay .star-rating {
float: left;
margin-right: 8px;
}
.wp-customizer .theme-rating .num-ratings {
line-height: 20px;
}
.wp-customizer .theme-overlay .theme-wrap {
left: 90px;
right: 90px;
top: 45px;
bottom: 45px;
z-index: 120;
max-width: 1740px; /* To ensure that theme screenshots are not displayed larger than 880px wide. */
}
.wp-customizer .theme-overlay .theme-actions {
text-align: right; /* Because there's only one action, match the pattern of media modals and right-align the action. */
text-align: right; /* Because there're only one or two actions, match the UI pattern of media modals and right-align the action. */
padding: 10px 15px;
}
.ie8 .wp-customizer .theme-overlay .theme-header,
.ie8 .wp-customizer .theme-overlay .theme-about,
.ie8 .wp-customizer .theme-overlay .theme-actions {
position: static;
.wp-customizer .theme-overlay .theme-actions .theme-install.preview {
margin-left: 8px;
}
.control-panel-themes .theme-actions .delete-theme {
left: 15px; /* these override themes.css on mobile */
right: auto;
bottom: auto;
position: absolute;
}
.modal-open .in-themes-panel #customize-controls .wp-full-overlay-sidebar-content {
overflow: visible; /* Prevent the top-level Customizer controls from becoming visible when elements on the right of the details modal are focused. */
}
/* Small Screens */
@media (max-width:850px), (max-height:472px) {
.wp-customizer .theme-overlay .theme-wrap {
+1 -1
View File
@@ -570,7 +570,7 @@ body.folded .theme-browser ~ .theme-overlay .theme-wrap {
float: left;
margin: 0 30px 0 0;
width: 55%;
max-width: 880px;
max-width: 1200px; /* Recommended theme screenshot width, set here to avoid stretching */
text-align: center;
}
+2 -1
View File
@@ -109,7 +109,8 @@ $admin_title = sprintf( $wp_customize->get_document_title_template(), __( 'Loadi
?><title><?php echo $admin_title; ?></title>
<script type="text/javascript">
var ajaxurl = <?php echo wp_json_encode( admin_url( 'admin-ajax.php', 'relative' ) ); ?>;
var ajaxurl = <?php echo wp_json_encode( admin_url( 'admin-ajax.php', 'relative' ) ); ?>,
pagenow = 'customize';
</script>
<?php
+32 -16
View File
@@ -607,8 +607,6 @@ function wp_prepare_themes_for_js( $themes = null ) {
* @since 4.2.0
*/
function customize_themes_print_templates() {
$preview_url = esc_url( add_query_arg( 'theme', '__THEME__' ) ); // Token because esc_url() strips curly braces.
$preview_url = str_replace( '__THEME__', '{{ data.id }}', $preview_url );
?>
<script type="text/html" id="tmpl-customize-themes-details-view">
<div class="theme-backdrop"></div>
@@ -620,7 +618,7 @@ function customize_themes_print_templates() {
</div>
<div class="theme-about wp-clearfix">
<div class="theme-screenshots">
<# if ( data.screenshot[0] ) { #>
<# if ( data.screenshot && data.screenshot[0] ) { #>
<div class="screenshot"><img src="{{ data.screenshot[0] }}" alt="" /></div>
<# } else { #>
<div class="screenshot blank"></div>
@@ -633,29 +631,47 @@ function customize_themes_print_templates() {
<# } #>
<h2 class="theme-name">{{{ data.name }}}<span class="theme-version"><?php printf( __( 'Version: %s' ), '{{ data.version }}' ); ?></span></h2>
<h3 class="theme-author"><?php printf( __( 'By %s' ), '{{{ data.authorAndUri }}}' ); ?></h3>
<# if ( data.stars && 0 != data.num_ratings ) { #>
<div class="theme-rating">
{{{ data.stars }}}
<span class="num-ratings"><?php echo sprintf( __( '(%s ratings)' ), '{{ data.num_ratings }}' ); ?></span>
</div>
<# } #>
<# if ( data.hasUpdate ) { #>
<div class="notice notice-warning notice-alt notice-large" data-slug="{{ data.id }}">
<h3 class="notice-title"><?php _e( 'Update Available' ); ?></h3>
{{{ data.update }}}
</div>
<# } #>
<p class="theme-description">{{{ data.description }}}</p>
<# if ( data.parent ) { #>
<p class="parent-theme"><?php printf( __( 'This is a child theme of %s.' ), '<strong>{{{ data.parent }}}</strong>' ); ?></p>
<# } #>
<# if ( data.tags ) { #>
<p class="theme-tags"><span><?php _e( 'Tags:' ); ?></span> {{ data.tags }}</p>
<p class="theme-tags"><span><?php _e( 'Tags:' ); ?></span> {{{ data.tags }}}</p>
<# } #>
</div>
</div>
<# if ( ! data.active ) { #>
<div class="theme-actions">
<div class="inactive-theme">
<?php
/* translators: %s: Theme name */
$aria_label = sprintf( __( 'Preview %s' ), '{{ data.name }}' );
?>
<a href="<?php echo $preview_url; ?>" target="_top" class="button button-primary" aria-label="<?php echo esc_attr( $aria_label ); ?>"><?php _e( 'Live Preview' ); ?></a>
</div>
</div>
<# } #>
<div class="theme-actions">
<# if ( data.active ) { #>
<button type="button" class="button button-primary customize-theme"><?php _e( 'Customize' ); ?></a>
<# } else if ( 'installed' === data.type ) { #>
<?php if ( current_user_can( 'delete_themes' ) ) { ?>
<# if ( data.actions && data.actions['delete'] ) { #>
<a href="{{{ data.actions['delete'] }}}" data-slug="{{ data.id }}" class="button button-secondary delete-theme"><?php _e( 'Delete' ); ?></a>
<# } #>
<?php } ?>
<button type="button" class="button button-primary preview-theme" data-slug="{{ data.id }}"><?php _e( 'Live Preview' ); ?></span>
<# } else { #>
<button type="button" class="button theme-install" data-slug="{{ data.id }}"><?php _e( 'Install' ); ?></button>
<button type="button" class="button button-primary theme-install preview" data-slug="{{ data.id }}"><?php _e( 'Install & Preview' ); ?></button>
<# } #>
</div>
</div>
</script>
<?php
File diff suppressed because it is too large Load Diff
+40 -6
View File
@@ -179,7 +179,11 @@
if ( $notice.length ) {
$notice.replaceWith( $adminNotice );
} else {
$( '.wrap' ).find( '> h1' ).after( $adminNotice );
if ( 'customize' === pagenow ) {
$( '.customize-themes-notifications' ).append( $adminNotice );
} else {
$( '.wrap' ).find( '> h1' ).after( $adminNotice );
}
}
$document.trigger( 'wp-updates-notice-added' );
@@ -907,6 +911,17 @@
if ( 'themes-network' === pagenow ) {
$notice = $( '[data-slug="' + args.slug + '"]' ).find( '.update-message' ).removeClass( 'notice-error' ).addClass( 'updating-message notice-warning' ).find( 'p' );
} else if ( 'customize' === pagenow ) {
// Update the theme details UI.
$notice = $( '#update-theme' ).closest( '.notice' ).removeClass( 'notice-large' );
$notice.find( 'h3' ).remove();
// Add the top-level UI, and update both.
$notice = $notice.add( $( '#customize-control-theme-installed_' + args.slug ).find( '.update-message' ) );
$notice = $notice.addClass( 'updating-message' ).find( 'p' );
} else {
$notice = $( '#update-theme' ).closest( '.notice' ).removeClass( 'notice-large' );
@@ -949,6 +964,10 @@
},
$notice, newText;
if ( 'customize' === pagenow ) {
$theme = wp.customize.control( 'installed_theme_' + response.slug ).container;
}
if ( 'themes-network' === pagenow ) {
$notice = $theme.find( '.update-message' );
@@ -1003,6 +1022,10 @@
return;
}
if ( 'customize' === pagenow ) {
$theme = wp.customize.control( 'installed_theme_' + response.slug ).container;
}
if ( 'themes-network' === pagenow ) {
$notice = $theme.find( '.update-message ' );
} else {
@@ -1139,12 +1162,23 @@
return;
}
if ( $document.find( 'body' ).hasClass( 'full-overlay-active' ) ) {
$button = $( '.theme-install[data-slug="' + response.slug + '"]' );
$card = $( '.install-theme-info' ).prepend( $message );
if ( 'customize' === pagenow ) {
if ( $document.find( 'body' ).hasClass( 'modal-open' ) ) {
$button = $( '.theme-install[data-slug="' + response.slug + '"]' );
$card = $( '.theme-overlay .theme-info' ).prepend( $message );
} else {
$button = $( '.theme-install[data-slug="' + response.slug + '"]' );
$card = $button.closest( '.theme' ).addClass( 'theme-install-failed' ).append( $message );
}
$( '.wp-full-overlay' ).removeClass( 'customize-loading' );
} else {
$card = $( '[data-slug="' + response.slug + '"]' ).removeClass( 'focus' ).addClass( 'theme-install-failed' ).append( $message );
$button = $card.find( '.theme-install' );
if ( $document.find( 'body' ).hasClass( 'full-overlay-active' ) ) {
$button = $( '.theme-install[data-slug="' + response.slug + '"]' );
$card = $( '.install-theme-info' ).prepend( $message );
} else {
$card = $( '[data-slug="' + response.slug + '"]' ).removeClass( 'focus' ).addClass( 'theme-install-failed' ).append( $message );
$button = $card.find( '.theme-install' );
}
}
$button