WordPress.org

Make WordPress Core

Ticket #13204: ajaxy-pagification-of-meta-boxes.13204.diff

File ajaxy-pagification-of-meta-boxes.13204.diff, 6.6 KB (added by filosofo, 4 years ago)
  • wp-admin/admin-ajax.php

     
    10911091 
    10921092        die('1'); 
    10931093        break; 
     1094case 'menu-get-metabox' : 
     1095        if ( ! current_user_can( 'edit_theme_options' ) ) 
     1096                die('-1'); 
     1097 
     1098        require_once ABSPATH . 'wp-admin/includes/nav-menu.php'; 
     1099 
     1100        if ( isset( $_POST['item-type'] ) && 'post_type' == $_POST['item-type'] ) { 
     1101                $type = 'posttype'; 
     1102                $callback = 'wp_nav_menu_item_post_type_meta_box'; 
     1103                $items = (array) get_post_types( array( 'show_in_nav_menus' => true ), 'object' ); 
     1104        } elseif ( isset( $_POST['item-type'] ) && 'taxonomy' == $_POST['item-type'] ) { 
     1105                $type = 'taxonomy'; 
     1106                $callback = 'wp_nav_menu_item_taxonomy_meta_box'; 
     1107                $items = (array) get_taxonomies( array( 'show_ui' => true ), 'object' ); 
     1108        } 
     1109 
     1110        if ( ! empty( $_POST['item-object'] ) && isset( $items[$_POST['item-object']] ) ) { 
     1111                $item = apply_filters( 'nav_menu_meta_box_object', $items[ $_POST['item-object'] ] ); 
     1112                ob_start(); 
     1113                call_user_func_array($callback, array( 
     1114                        null, 
     1115                        array( 
     1116                                'id' => 'add-' . $item->name, 
     1117                                'title' => $item->labels->name, 
     1118                                'callback' => $callback, 
     1119                                'args' => $item, 
     1120                        ) 
     1121                )); 
     1122                 
     1123                $markup = ob_get_clean(); 
     1124                 
     1125                echo json_encode(array( 
     1126                        'replace-id' => $type . '-' . $item->name, 
     1127                        'markup' => $markup, 
     1128                )); 
     1129        } 
     1130 
     1131        exit; 
     1132        break; 
    10941133case 'menu-quick-search': 
    10951134        if ( ! current_user_can( 'edit_theme_options' ) ) 
    10961135                die('-1'); 
  • wp-admin/includes/nav-menu.php

     
    455455        ); 
    456456 
    457457        ?> 
    458         <div class="customlinkdiv"> 
     458        <div class="customlinkdiv" id="customlinkdiv"> 
    459459 
    460460                        <input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" /> 
    461461                        <p id="menu-item-url-wrap"> 
     
    478478                        </span> 
    479479                        <span class="add-to-menu"> 
    480480                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
    481                                 <input type="submit" class="button-secondary" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" /> 
     481                                <input type="submit" class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-custom-menu-item" id="submit-customlinkdiv" /> 
    482482                        </span> 
    483483                </p> 
    484484 
     
    533533                        array( 
    534534                                $post_type_name . '-tab' => 'all', 
    535535                                'paged' => '%#%', 
     536                                'item-type' => 'post_type', 
     537                                'item-object' => $post_type_name, 
    536538                        ) 
    537539                ), 
    538540                'format' => '', 
     
    662664 
    663665                        <span class="add-to-menu"> 
    664666                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
    665                                 <input type="submit" class="button-secondary" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-post-type-menu-item" /> 
     667                                <input type="submit" class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-post-type-menu-item" id="submit-posttype-<?php echo $post_type_name; ?>" /> 
    666668                        </span> 
    667669                </p> 
    668670 
     
    707709                return; 
    708710        } 
    709711 
    710         $num_pages = ceil( count($terms) / $per_page ); 
     712        $num_pages = ceil( wp_count_terms( $taxonomy_name , array_merge( $args, array('number' => '', 'offset' => '') ) ) / $per_page ); 
    711713 
    712714        $page_links = paginate_links( array( 
    713715                'base' => add_query_arg( 
    714716                        array( 
    715717                                $taxonomy_name . '-tab' => 'all', 
    716718                                'paged' => '%#%', 
     719                                'item-type' => 'taxonomy', 
     720                                'item-object' => $taxonomy_name, 
    717721                        ) 
    718722                ), 
    719723                'format' => '', 
     
    831835 
    832836                        <span class="add-to-menu"> 
    833837                                <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 
    834                                 <input type="submit" class="button-secondary" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-taxonomy-menu-item" /> 
     838                                <input type="submit" class="button-secondary submit-add-to-menu" value="<?php esc_attr_e('Add to Menu'); ?>" name="add-taxonomy-menu-item" id="submit-taxonomy-<?php echo $taxonomy_name; ?>" /> 
    835839                        </span> 
    836840                </p> 
    837841 
  • wp-admin/js/nav-menu.dev.js

     
    3333                        this.attachMenuEditListeners(); 
    3434 
    3535                        this.setupInputWithDefaultTitle(); 
    36                         this.attachAddMenuItemListeners(); 
    3736                        this.attachQuickSearchListeners(); 
    3837                        this.attachThemeLocationsListeners(); 
    3938 
     
    412411                        }); 
    413412                }, 
    414413 
    415                 attachAddMenuItemListeners : function() { 
    416                         var form = $('#nav-menu-meta'); 
    417  
    418                         form.find('.add-to-menu input').click(function(){ 
    419                                 api.registerChange(); 
    420                                 $(this).trigger('wp-add-menu-item', [api.addMenuItemToBottom]); 
    421                                 return false; 
    422                         }); 
    423                         form.find('.customlinkdiv').bind('wp-add-menu-item', function(e, processMethod) { 
    424                                 api.addCustomLink( processMethod ); 
    425                         }); 
    426                         form.find('.posttypediv, .taxonomydiv').bind('wp-add-menu-item', function(e, processMethod) { 
    427                                 $(this).addSelectedToMenu( processMethod ); 
    428                         }); 
    429                 }, 
    430  
    431414                attachThemeLocationsListeners : function() { 
    432415                        var loc = $('#nav-menu-theme-locations'), params = {}; 
    433416                        params['action'] = 'menu-locations-save'; 
     
    618601                                                        items.attr('checked', 'checked'); 
    619602                                                return false; 
    620603                                        } 
     604                                } else if ( target.hasClass('submit-add-to-menu') ) { 
     605                                        api.registerChange(); 
     606 
     607                                        if ( e.target.id && 'submit-customlinkdiv' == e.target.id ) 
     608                                                api.addCustomLink( api.addMenuItemToBottom ); 
     609                                        else if ( e.target.id && -1 != e.target.id.indexOf('submit-') ) 
     610                                                $('#' + e.target.id.replace(/submit-/, '')).addSelectedToMenu( api.addMenuItemToBottom ); 
     611                                        return false; 
     612                                } else if ( target.hasClass('page-numbers') ) { 
     613                                        $.post( ajaxurl, e.target.href.replace(/.*\?/, '').replace(/action=([^&]*)/, '') + '&action=menu-get-metabox',  
     614                                                function( resp ) { 
     615                                                        if ( -1 == resp.indexOf('replace-id') ) 
     616                                                                return; 
     617 
     618                                                        var metaBoxData = $.parseJSON(resp), 
     619                                                        toReplace = document.getElementById(metaBoxData['replace-id']), 
     620                                                        placeholder = document.createElement('div'), 
     621                                                        wrap = document.createElement('div'); 
     622 
     623                                                        if ( ! metaBoxData['markup'] || ! toReplace ) 
     624                                                                return; 
     625 
     626                                                        wrap.innerHTML = metaBoxData['markup'] ? metaBoxData['markup'] : ''; 
     627 
     628                                                        toReplace.parentNode.insertBefore( placeholder, toReplace ); 
     629                                                        placeholder.parentNode.removeChild( toReplace ); 
     630 
     631                                                        placeholder.parentNode.insertBefore( wrap, placeholder ); 
     632 
     633                                                        placeholder.parentNode.removeChild( placeholder ); 
     634 
     635                                                } 
     636                                        ); 
     637                                         
     638                                        return false; 
    621639                                } 
    622640                        }); 
    623641                },