WordPress.org

Make WordPress Core

Changeset 7669


Ignore:
Timestamp:
04/14/2008 07:31:20 PM (10 years ago)
Author:
ryan
Message:

More efficient category and list JS from mdawaffe. fixes #6677 for trunk

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/edit-form-advanced.php

    r7544 r7669  
    1 <?php
     1 <?php
    22$action = isset($action)? $action : '';
    33if ( isset($_GET['message']) )
     
    223223        <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" />
    224224        <?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?>
    225         <input type="button" id="category-add-sumbit" class="add:categorychecklist:categorydiv button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
     225        <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" />
    226226        <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?>
    227227        <span id="category-ajax-response"></span>
     
    234234</ul>
    235235
     236<div id="categories-pop" class="ui-tabs-panel" style="display: none;">
     237    <ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
     238        <?php $popular_ids = wp_popular_terms_checklist('category'); ?>
     239    </ul>
     240</div>
     241
    236242<div id="categories-all" class="ui-tabs-panel">
    237243    <ul id="categorychecklist" class="list:category categorychecklist form-no-clear">
    238         <?php dropdown_categories(); ?>
    239     </ul>
    240 </div>
    241 
    242 <div id="categories-pop" class="ui-tabs-panel" style="display: none;">
    243     <ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
    244         <?php wp_popular_terms_checklist('category'); ?>
     244        <?php dropdown_categories( 0, 0, $popular_ids ); ?>
    245245    </ul>
    246246</div>
  • trunk/wp-admin/includes/template.php

    r7645 r7669  
    176176}
    177177
    178 function write_nested_categories( $categories ) {
     178function write_nested_categories( $categories, $popular_ids = array() ) {
    179179    foreach ( $categories as $category ) {
    180         echo "\n", '<li id="category-', $category['cat_ID'], '"><label for="in-category-', $category['cat_ID'], '" class="selectit"><input value="', $category['cat_ID'], '" type="checkbox" name="post_category[]" id="in-category-', $category['cat_ID'], '"', ($category['checked'] ? ' checked="checked"' : "" ), '/> ', wp_specialchars( apply_filters('the_category', $category['cat_name'] )), '</label>';
     180        $class = in_array( $category['cat_ID'], $popular_ids ) ? ' class="popular-category"' : '';
     181        echo "\n", "<li id='category-$category[cat_ID]'$class>", '<label for="in-category-', $category['cat_ID'], '" class="selectit"><input value="', $category['cat_ID'], '" type="checkbox" name="post_category[]" id="in-category-', $category['cat_ID'], '"', ($category['checked'] ? ' checked="checked"' : "" ), '/> ', wp_specialchars( apply_filters('the_category', $category['cat_name'] )), '</label>';
    181182
    182183        if ( $category['children'] ) {
     
    189190}
    190191
    191 function dropdown_categories( $default = 0, $parent = 0 ) {
    192     write_nested_categories( get_nested_categories( $default, $parent ) );
     192function dropdown_categories( $default = 0, $parent = 0, $popular_ids = array() ) {
     193    write_nested_categories( get_nested_categories( $default, $parent ), $popular_ids );
    193194}
    194195
     
    196197    $categories = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number ) );
    197198
     199    $popular_ids = array();
    198200    foreach ( (array) $categories as $category ) {
     201        $popular_ids[] = $category->term_id;
    199202        $id = "popular-category-$category->term_id";
    200203        ?>
    201204
    202         <li id="<?php echo $id; ?>" >
     205        <li id="<?php echo $id; ?>" class="popular-category">
    203206            <label class="selectit" for="in-<?php echo $id; ?>">
    204207            <input id="in-<?php echo $id; ?>" type="checkbox" value="<?php echo (int) $category->term_id; ?>" />
     
    209212        <?php
    210213    }
     214    return $popular_ids;
    211215}
    212216
  • trunk/wp-admin/js/post.js

    r7529 r7669  
    119119        noSyncChecks = false;
    120120    };
     121    var catAddBefore = function( s ) {
     122        s.data += '&' + jQuery( '#categorychecklist :checked' ).serialize();
     123        return s;
     124    };
    121125    var catAddAfter = function( r, s ) {
    122126        if ( !newCatParent ) newCatParent = jQuery('#newcat_parent');
     
    141145        alt: '',
    142146        response: 'category-ajax-response',
     147        addBefore: catAddBefore,
    143148        addAfter: catAddAfter
    144149    } );
     
    149154        return false;
    150155    } );
    151     jQuery('.categorychecklist :checkbox').change( syncChecks ).filter( ':checked' ).change();
     156    jQuery('.categorychecklist .popular-category :checkbox').change( syncChecks ).filter( ':checked' ).change();
    152157
    153158    jQuery('.edit-timestamp').click(function () {
  • trunk/wp-includes/js/wp-lists.js

    r7468 r7669  
    314314                var c = wpList.parseClass(this,'add')[2] || addEl.id;
    315315                if ( !c ) { return; }
    316                 var forms = []; var ins = [];
     316                var forms = []; var ins = []; // this is all really inefficient
    317317                $('#' + c + ' :input').focus( function() { currentFormEl = this; } ).blur( function() { currentFormEl = false; } ).each( function() {
    318318                    ins.push(this);
    319                     $.merge(forms,$(this).parents('form'));
    320                     forms = $.unique(forms);
     319                    var f = $(this).parents('form:first').get(0);
     320                    if ( $.inArray(f,forms) < 0 ) { forms.push(f); }
    321321                } );
    322322                $(forms).submit( function() {
  • trunk/wp-includes/script-loader.php

    r7620 r7669  
    5858        ) );
    5959
    60         $this->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080322' );
     60        $this->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080411' );
    6161        $this->localize( 'wp-lists', 'wpListL10n', array(
    6262            'url' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php'
     
    145145                'cancel' => __('Cancel'),
    146146            ) );
    147             $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080322' );
     147            $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080411' );
    148148            $this->localize( 'post', 'postL10n', array(
    149149                'tagsUsed' =>  __('Tags used on this post:'),
Note: See TracChangeset for help on using the changeset viewer.