Make WordPress Core

Changeset 35527


Ignore:
Timestamp:
11/04/2015 09:48:43 PM (9 years ago)
Author:
SergeyBiryukov
Message:

Themes: Add a Favorites tab to the Add Themes screen.

You can now browse and install your wordpress.org theme favorites from the theme installer, just like with plugins.

Props swissspidy.
Fixes #34206.

Location:
trunk/src/wp-admin
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/admin-ajax.php

    r35317 r35527  
    6363    'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail',
    6464    'parse-media-shortcode', 'destroy-sessions', 'install-plugin', 'update-plugin', 'press-this-save-post',
    65     'press-this-add-category', 'crop-image', 'generate-password',
     65    'press-this-add-category', 'crop-image', 'generate-password', 'save-wporg-username',
    6666);
    6767
  • trunk/src/wp-admin/css/common.css

    r35496 r35527  
    10841084.wp-filter .drawer-toggle.current:before {
    10851085    color: #fff;
     1086}
     1087
     1088.wp-filter .favorites-form {
     1089    display: none;
     1090    margin: 0 -20px;
     1091    padding: 20px;
     1092    border-top: 1px solid #eee;
     1093    background: #fafafa;
     1094    overflow: hidden;
     1095    width: 100%;
     1096}
     1097
     1098.show-favorites-form .wp-filter .favorites-form {
     1099    display: block;
    10861100}
    10871101
  • trunk/src/wp-admin/includes/ajax-actions.php

    r35518 r35527  
    28222822    ) );
    28232823
     2824    if ( 'favorites' === $args['browse'] && ! isset( $args['user'] ) ) {
     2825        $user = get_user_option( 'wporg_favorites' );
     2826        if ( $user ) {
     2827            $args['user'] = $user;
     2828        }
     2829    }
     2830
    28242831    $old_filter = isset( $args['browse'] ) ? $args['browse'] : 'search';
    28252832
     
    32913298    wp_send_json_success( wp_generate_password( 24 ) );
    32923299}
     3300
     3301/**
     3302 * Ajax handler for saving the user's WordPress.org username.
     3303 *
     3304 * @since 4.4.0
     3305 */
     3306function wp_ajax_save_wporg_username() {
     3307    if ( ! current_user_can( 'install_themes' ) && ! current_user_can( 'install_plugins' ) ) {
     3308        wp_send_json_error();
     3309    }
     3310
     3311    $username = isset( $_REQUEST['username'] ) ? wp_unslash( $_REQUEST['username'] ) : false;
     3312
     3313    if ( ! $username ) {
     3314        wp_send_json_error();
     3315    }
     3316
     3317    wp_send_json_success( update_user_meta( get_current_user_id(), 'wporg_favorites', $username ) );
     3318}
  • trunk/src/wp-admin/js/theme.js

    r35281 r35527  
    13571357        'click .filter-group [type="checkbox"]': 'addFilter',
    13581358        'click .filter-drawer .clear-filters': 'clearFilters',
    1359         'click .filtered-by': 'backToFilters'
     1359        'click .filtered-by': 'backToFilters',
     1360        'click .favorites-form-submit' : 'saveUsername',
     1361        'keyup #wporg-username-input': 'saveUsername',
    13601362    },
    13611363
     
    14481450        $( '.filter-links li > a, .theme-filter' ).removeClass( this.activeClass );
    14491451        $( '[data-sort="' + sort + '"]' ).addClass( this.activeClass );
     1452
     1453        if ( 'favorites' === sort ) {
     1454            $ ( 'body' ).addClass( 'show-favorites-form' );
     1455        } else {
     1456            $ ( 'body' ).removeClass( 'show-favorites-form' );
     1457        }
    14501458
    14511459        this.browse( sort );
     
    15081516        // or searching the local cache
    15091517        this.collection.query( request );
     1518    },
     1519
     1520    // Save the user's WordPress.org username and get his favorite themes.
     1521    saveUsername: function ( event ) {
     1522        var username = $( '#wporg-username-input' ).val(),
     1523            request = { browse: 'favorites', user: username },
     1524            that = this;
     1525
     1526        if ( event ) {
     1527            event.preventDefault();
     1528        }
     1529
     1530        // save username on enter
     1531        if ( event.type === 'keyup' && event.which !== 13 ) {
     1532            return;
     1533        }
     1534
     1535        return wp.ajax.send( 'save-wporg-username', {
     1536            data: {
     1537                username: username
     1538            },
     1539            success: function () {
     1540                // Get the themes by sending Ajax POST request to api.wordpress.org/themes
     1541                // or searching the local cache
     1542                that.collection.query( request );
     1543            }
     1544        } );
    15101545    },
    15111546
  • trunk/src/wp-admin/theme-install.php

    r35273 r35527  
    140140            <li><a href="#" data-sort="popular"><?php _ex( 'Popular', 'themes' ); ?></a></li>
    141141            <li><a href="#" data-sort="new"><?php _ex( 'Latest', 'themes' ); ?></a></li>
     142            <li><a href="#" data-sort="favorites"><?php _ex( 'Favorites', 'themes' ); ?></a></li>
    142143        </ul>
    143144
     
    145146
    146147        <div class="search-form"></div>
     148
     149        <div class="favorites-form">
     150            <?php
     151            $user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' );
     152            update_user_meta( get_current_user_id(), 'wporg_favorites', $user );
     153            ?>
     154            <p class="install-help"><?php _e( 'If you have marked themes as favorites on WordPress.org, you can browse them here.' ); ?></p>
     155
     156            <p>
     157                <label for="user"><?php _e( 'Your WordPress.org username:' ); ?></label>
     158                <input type="search" id="wporg-username-input" value="<?php echo esc_attr( $user ); ?>" />
     159                <input type="button" class="button button-secondary favorites-form-submit" value="<?php esc_attr_e( 'Get Favorites' ); ?>" />
     160            </p>
     161        </div>
    147162
    148163        <div class="filter-drawer">
Note: See TracChangeset for help on using the changeset viewer.