Themes: When only one theme is available, show just the details view.

Only one theme may be available when no other themes are allowed (multisite), no other themes are installed, or when the user is denied the switch_themes capability but still has edit_theme_options.

props matveb, markjaquith.
see #25962.


git-svn-id: https://develop.svn.wordpress.org/trunk@26652 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Nacin 2013-12-05 00:15:59 +00:00
parent f90e3dc450
commit e75582f9c8
2 changed files with 41 additions and 0 deletions

View File

@ -7052,6 +7052,26 @@ body.folded .theme-overlay .theme-wrap {
.theme-overlay .parent-theme strong {
font-weight: 700;
}
/**
* Single Theme Mode
* Displays detailed view inline when a user has no switch capabilities
*/
.single-theme .theme-overlay .theme-backdrop,
.single-theme .theme-overlay .theme-header,
.single-theme .theme {
display: none;
}
.single-theme .theme-overlay .theme-wrap {
clear: both;
position: static;
}
.single-theme .theme-overlay .theme-about {
padding: 30px;
position: static;
}
.single-theme .theme-overlay .theme-actions {
position: static;
}
/**
* Basic Responsive structure...

View File

@ -61,6 +61,11 @@ themes.view.Appearance = wp.Backbone.View.extend({
var view,
self = this;
// Don't render the search if there is only one theme
if ( themes.data.themes.length === 1 ) {
return;
}
view = new themes.view.Search({ collection: self.collection });
// Render and append after screen title
@ -408,6 +413,22 @@ themes.view.Themes = wp.Backbone.View.extend({
// Clear the DOM, please
this.$el.html( '' );
// If the user doesn't have switch capabilities
// or there is only one theme in the collection
// render the detailed view of the active theme
if ( themes.data.themes.length === 1 ) {
// Constructs the view
this.singleTheme = new themes.view.Details({
model: this.collection.models[0]
});
// Render and apply a 'single-theme' class to our container
this.singleTheme.render();
this.$el.addClass( 'single-theme' );
this.$el.append( this.singleTheme.el );
}
// Generate the themes
// Using page instance
this.renderThemes( this.parent.page );