diff --git src/wp-admin/css/common.css src/wp-admin/css/common.css index ddfaad3..2be5a13 100644 --- src/wp-admin/css/common.css +++ src/wp-admin/css/common.css @@ -1087,6 +1087,20 @@ th.action-links { color: #fff; } +.wp-filter .favorites-form { + display: none; + margin: 0 -20px; + padding: 20px; + border-top: 1px solid #eee; + background: #fafafa; + overflow: hidden; + width: 100%; +} + +.show-favorites-form .wp-filter .favorites-form { + display: block; +} + .filter-drawer { display: none; margin: 0 -20px; diff --git src/wp-admin/includes/ajax-actions.php src/wp-admin/includes/ajax-actions.php index 0170cd9..c35b775 100644 --- src/wp-admin/includes/ajax-actions.php +++ src/wp-admin/includes/ajax-actions.php @@ -2815,6 +2815,13 @@ function wp_ajax_query_themes() { 'fields' => $theme_field_defaults ) ); + if ( 'favorites' === $args['browse'] ) { + $user = get_user_option( 'wporg_favorites' ); + if ( $user ) { + $args['user'] = $user; + } + } + $old_filter = isset( $args['browse'] ) ? $args['browse'] : 'search'; /** This filter is documented in wp-admin/includes/class-wp-theme-install-list-table.php */ diff --git src/wp-admin/js/theme.js src/wp-admin/js/theme.js index 0961922..28f3f4c 100644 --- src/wp-admin/js/theme.js +++ src/wp-admin/js/theme.js @@ -1448,6 +1448,10 @@ themes.view.Installer = themes.view.Appearance.extend({ $( '.filter-links li > a, .theme-filter' ).removeClass( this.activeClass ); $( '[data-sort="' + sort + '"]' ).addClass( this.activeClass ); + if ( 'favorites' === sort ) { + $ ( 'body' ).addClass( 'show-favorites-form' ); + } + this.browse( sort ); }, @@ -1681,7 +1685,7 @@ themes.RunInstaller = { if ( ! sort ) { sort = 'featured'; } - self.view.sort( sort ); + self.view.sort( sort.split('&')[0] ); self.view.trigger( 'theme:close' ); }); diff --git src/wp-admin/theme-install.php src/wp-admin/theme-install.php index 6213a5a..e9d6254 100644 --- src/wp-admin/theme-install.php +++ src/wp-admin/theme-install.php @@ -139,12 +139,30 @@ include(ABSPATH . 'wp-admin/admin-header.php');