WordPress.org

Make WordPress Core

Ticket #6677: ajax_load_all_categories.diff

File ajax_load_all_categories.diff, 10.9 KB (added by ryan, 6 years ago)
  • wp-includes/script-loader.php

     
    144144                                'save' => __('Save'), 
    145145                                'cancel' => __('Cancel'), 
    146146                        ) ); 
    147                         $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080411' ); 
     147                        $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080412' ); 
    148148                        $this->localize( 'post', 'postL10n', array( 
    149149                                'tagsUsed' =>  __('Tags used on this post:'), 
    150150                                'add' => attribute_escape(__('Add')), 
  • wp-admin/wp-admin.css

     
    12651265        margin: 0; 
    12661266} 
    12671267 
     1268ul#category-tabs a { 
     1269        width: 100%; 
     1270        display: block; 
     1271} 
     1272 
     1273.ui-tabs-loading { 
     1274        outline: none; 
     1275        background: url(../images/loading.gif) no-repeat 0 50%; 
     1276} 
     1277 
    12681278#linkcategorydiv ul#category-tabs { 
    12691279        float: left; 
    12701280        width: 120px; 
  • wp-admin/includes/template.php

     
    194194} 
    195195 
    196196function wp_popular_terms_checklist( $taxonomy, $default = 0, $number = 10 ) { 
     197        global $checked_categories; 
     198        wp_set_checked_post_categories( $default ); 
    197199        $categories = get_terms( $taxonomy, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => $number ) ); 
    198200 
    199201        $popular_ids = array(); 
     
    204206 
    205207                <li id="<?php echo $id; ?>" class="popular-category"> 
    206208                        <label class="selectit" for="in-<?php echo $id; ?>"> 
    207                         <input id="in-<?php echo $id; ?>" type="checkbox" value="<?php echo (int) $category->term_id; ?>" /> 
     209                        <input id="in-<?php echo $id; ?>" type="checkbox" value="<?php echo (int) $category->term_id; ?>" name="post_category[]" <?php checked( in_array( $category->term_id, $checked_categories ), true ); ?> /> 
    208210                                <?php echo wp_specialchars( apply_filters( 'the_category', $category->name ) ); ?> 
    209211                        </label> 
    210212                </li> 
  • wp-admin/js/post.js

     
    100100        jQuery('#newtag').keypress( tag_press_key ); 
    101101 
    102102        // category tabs 
    103         var categoryTabs =jQuery('#category-tabs').tabs(); 
     103        var newCatFocus = false; 
     104        var categoryTabs =jQuery('#category-tabs').tabs( { 
     105                cache: true, 
     106                show: function(ui) { 
     107                        if ( 'category-tabs-all' != ui.id ) { return; } // only do this for the all tab 
     108                        var adder = jQuery('#category-add-hidden'); 
    104109 
    105         // Ajax Cat 
    106         var newCat = jQuery('#newcat').one( 'focus', function() { jQuery(this).val( '' ).removeClass( 'form-input-tip' ) } ); 
    107         jQuery('#category-add-sumbit').click( function() { newCat.focus(); } ); 
    108         var newCatParent = false; 
    109         var newCatParentOption = false; 
    110         var noSyncChecks = false; // prophylactic. necessary? 
    111         var syncChecks = function() { 
    112                 if ( noSyncChecks ) 
    113                         return; 
    114                 noSyncChecks = true; 
    115                 var th = jQuery(this); 
    116                 var c = th.is(':checked'); 
    117                 var id = th.val().toString(); 
    118                 jQuery('#in-category-' + id + ', #in-popular-category-' + id).attr( 'checked', c ); 
    119                 noSyncChecks = false; 
    120         }; 
    121         var catAddBefore = function( s ) { 
    122                 s.data += '&' + jQuery( '#categorychecklist :checked' ).serialize(); 
    123                 return s; 
    124         }; 
    125         var catAddAfter = function( r, s ) { 
    126                 if ( !newCatParent ) newCatParent = jQuery('#newcat_parent'); 
    127                 if ( !newCatParentOption ) newCatParentOption = newCatParent.find( 'option[value=-1]' ); 
    128                 jQuery(s.what + ' response_data', r).each( function() { 
    129                         var t = jQuery(jQuery(this).text()); 
    130                         t.find( 'label' ).each( function() { 
     110                        if ( !adder.size() ) { return; } // we're already done 
     111 
     112                        // Put HTML in proper place and set up the wp-lists etc 
     113                        jQuery('#category-add').html( adder.remove().html() ); 
     114 
     115                        // Ajax Cat 
     116                        var newCat = jQuery('#newcat').one( 'focus', function() { jQuery(this).val( '' ).removeClass( 'form-input-tip' ) } ); 
     117                        jQuery('#category-add-sumbit').click( function() { newCat.focus(); } ); 
     118                        var newCatParent = false; 
     119                        var newCatParentOption = false; 
     120                        var noSyncChecks = false; // prophylactic. necessary? 
     121                        var syncChecks = function() { 
     122                                if ( noSyncChecks ) 
     123                                        return; 
     124                                noSyncChecks = true; 
    131125                                var th = jQuery(this); 
    132                                 var val = th.find('input').val(); 
    133                                 var id = th.find('input')[0].id 
    134                                 jQuery('#' + id).change( syncChecks ); 
    135                                 if ( newCatParent.find( 'option[value=' + val + ']' ).size() ) 
    136                                         return; 
    137                                 var name = jQuery.trim( th.text() ); 
    138                                 var o = jQuery( '<option value="' +  parseInt( val, 10 ) + '"></option>' ).text( name ); 
    139                                 newCatParent.prepend( o ); 
     126                                var c = th.is(':checked'); 
     127                                var id = th.val().toString(); 
     128                                jQuery('#in-category-' + id + ', #in-popular-category-' + id).attr( 'checked', c ); 
     129                                noSyncChecks = false; 
     130                        }; 
     131                        var catAddBefore = function( s ) { 
     132                                s.data += '&' + jQuery( '#categorychecklist :checked' ).serialize(); 
     133                                return s; 
     134                        }; 
     135                        var catAddAfter = function( r, s ) { 
     136                                if ( !newCatParent ) newCatParent = jQuery('#newcat_parent'); 
     137                                if ( !newCatParentOption ) newCatParentOption = newCatParent.find( 'option[value=-1]' ); 
     138                                jQuery(s.what + ' response_data', r).each( function() { 
     139                                        var t = jQuery(jQuery(this).text()); 
     140                                        t.find( 'label' ).each( function() { 
     141                                                var th = jQuery(this); 
     142                                                var val = th.find('input').val(); 
     143                                                var id = th.find('input')[0].id 
     144                                                jQuery('#' + id).change( syncChecks ); 
     145                                                if ( newCatParent.find( 'option[value=' + val + ']' ).size() ) 
     146                                                        return; 
     147                                                var name = jQuery.trim( th.text() ); 
     148                                                var o = jQuery( '<option value="' +  parseInt( val, 10 ) + '"></option>' ).text( name ); 
     149                                                newCatParent.prepend( o ); 
     150                                        } ); 
     151                                        newCatParentOption.attr( 'selected', true ); 
     152                                } ); 
     153                        }; 
     154                        jQuery('#categorychecklist').wpList( { 
     155                                alt: '', 
     156                                response: 'category-ajax-response', 
     157                                addBefore: catAddBefore, 
     158                                addAfter: catAddAfter 
    140159                        } ); 
    141                         newCatParentOption.attr( 'selected', true ); 
    142                 } ); 
    143         }; 
    144         jQuery('#categorychecklist').wpList( { 
    145                 alt: '', 
    146                 response: 'category-ajax-response', 
    147                 addBefore: catAddBefore, 
    148                 addAfter: catAddAfter 
     160                        jQuery('.categorychecklist .popular-category :checkbox').change( syncChecks ).filter( ':checked' ).change(); 
     161                 
     162                        if ( newCatFocus ) { 
     163                                jQuery('#newcat').focus(); 
     164                                newCatFocus = false; 
     165                        } 
     166                } 
    149167        } ); 
     168 
    150169        jQuery('#category-add-toggle').click( function() { 
    151170                jQuery(this).parents('div:first').toggleClass( 'wp-hidden-children' ); 
    152                 categoryTabs.tabsClick( 1 ); 
     171                categoryTabs.tabsClick( 2 ); 
    153172                jQuery('#newcat').focus(); 
     173                newCatFocus = true; 
    154174                return false; 
    155175        } ); 
    156         jQuery('.categorychecklist .popular-category :checkbox').change( syncChecks ).filter( ':checked' ).change(); 
    157176 
    158177        jQuery('.edit-timestamp').click(function () { 
    159178                if (jQuery('#timestampdiv').is(":hidden")) { 
  • wp-admin/edit-form-advanced.php

     
    219219 
    220220<div id="category-adder" class="wp-hidden-children"> 
    221221        <h4><a id="category-add-toggle" href="#category-add" class="hide-if-no-js" tabindex="3"><?php _e( '+ Add New Category' ); ?></a></h4> 
    222         <p id="category-add" class="wp-hidden-child"> 
    223                 <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" /> 
    224                 <?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:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" /> 
    226                 <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?> 
    227                 <span id="category-ajax-response"></span> 
    228         </p> 
     222        <p id="category-add" class="wp-hidden-child"></p> 
    229223</div> 
    230224 
    231225<ul id="category-tabs"> 
    232         <li class="ui-tabs-selected"><a href="#categories-all" tabindex="3"><?php _e( 'All Categories' ); ?></a></li> 
    233         <li class="wp-no-js-hidden"><a href="#categories-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li> 
     226        <li class="ui-tabs-selected"><a href="#categories-pop" tabindex="3"><?php _e( 'Most Used' ); ?></a></li> 
     227        <li class="wp-no-js-hidden"><a id="category-tabs-all" href="edit-form-advanced-tabs.php?post=<?php echo $post_ID; ?>" tabindex="3"><?php _e( 'All Categories' ); ?></a></li> 
    234228</ul> 
    235229 
    236230<div id="categories-pop" class="ui-tabs-panel" style="display: none;"> 
    237231        <ul id="categorychecklist-pop" class="categorychecklist form-no-clear" > 
    238                 <?php $popular_ids = wp_popular_terms_checklist('category'); ?> 
     232                <?php $popular_ids = wp_popular_terms_checklist('category'); // If we up the # here we have to do so in edit-form-advanced-tabs.php too ?> 
    239233        </ul> 
    240234</div> 
    241235 
    242 <div id="categories-all" class="ui-tabs-panel"> 
    243         <ul id="categorychecklist" class="list:category categorychecklist form-no-clear"> 
    244                 <?php dropdown_categories( 0, 0, $popular_ids ); ?> 
    245         </ul> 
    246236</div> 
    247  
    248237</div> 
    249 </div> 
    250238 
    251239<?php do_meta_boxes('post', 'normal', $post); ?> 
    252240 
  • wp-admin/edit-form-advanced-tabs.php

    Cannot display: file marked as a binary type.
    svn:mime-type = application/octet-stream
    
    Property changes on: wp-admin/images/loading.gif
    ___________________________________________________________________
    Name: svn:mime-type
       + application/octet-stream
    
     
     1<?php 
     2 
     3require('admin.php' ); 
     4 
     5$post_ID = (int) $_GET['post']; 
     6 
     7if ( $post_ID ? !current_user_can( 'edit_post', $post_ID ) : !current_user_can( 'edit_posts' ) ) 
     8        die(); 
     9         
     10ob_start(); 
     11$popular_ids = wp_popular_terms_checklist('category'); 
     12ob_end_clean(); 
     13 
     14?> 
     15 
     16 
     17        <ul id="categorychecklist" class="list:category categorychecklist form-no-clear"> 
     18                <?php dropdown_categories( 0, 0, $popular_ids ); ?> 
     19        </ul> 
     20 
     21 
     22        <div id="category-add-hidden" style="display: none;"> 
     23                <input type="text" name="newcat" id="newcat" class="form-required form-input-tip" value="<?php _e( 'New category name' ); ?>" tabindex="3" /> 
     24                <?php wp_dropdown_categories( array( 'hide_empty' => 0, 'name' => 'newcat_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => __('Parent category'), 'tab_index' => 3 ) ); ?> 
     25                <input type="button" id="category-add-sumbit" class="add:categorychecklist:category-add button" value="<?php _e( 'Add' ); ?>" tabindex="3" /> 
     26                <?php wp_nonce_field( 'add-category', '_ajax_nonce', false ); ?> 
     27                <span id="category-ajax-response"></span> 
     28        </div>