Ticket #13204: ajaxy-pagification-of-meta-boxes.13204.diff
| File ajaxy-pagification-of-meta-boxes.13204.diff, 6.6 KB (added by filosofo, 3 years ago) |
|---|
-
wp-admin/admin-ajax.php
1091 1091 1092 1092 die('1'); 1093 1093 break; 1094 case '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; 1094 1133 case 'menu-quick-search': 1095 1134 if ( ! current_user_can( 'edit_theme_options' ) ) 1096 1135 die('-1'); -
wp-admin/includes/nav-menu.php
455 455 ); 456 456 457 457 ?> 458 <div class="customlinkdiv" >458 <div class="customlinkdiv" id="customlinkdiv"> 459 459 460 460 <input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" /> 461 461 <p id="menu-item-url-wrap"> … … 478 478 </span> 479 479 <span class="add-to-menu"> 480 480 <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" /> 482 482 </span> 483 483 </p> 484 484 … … 533 533 array( 534 534 $post_type_name . '-tab' => 'all', 535 535 'paged' => '%#%', 536 'item-type' => 'post_type', 537 'item-object' => $post_type_name, 536 538 ) 537 539 ), 538 540 'format' => '', … … 662 664 663 665 <span class="add-to-menu"> 664 666 <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; ?>" /> 666 668 </span> 667 669 </p> 668 670 … … 707 709 return; 708 710 } 709 711 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 ); 711 713 712 714 $page_links = paginate_links( array( 713 715 'base' => add_query_arg( 714 716 array( 715 717 $taxonomy_name . '-tab' => 'all', 716 718 'paged' => '%#%', 719 'item-type' => 'taxonomy', 720 'item-object' => $taxonomy_name, 717 721 ) 718 722 ), 719 723 'format' => '', … … 831 835 832 836 <span class="add-to-menu"> 833 837 <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; ?>" /> 835 839 </span> 836 840 </p> 837 841 -
wp-admin/js/nav-menu.dev.js
33 33 this.attachMenuEditListeners(); 34 34 35 35 this.setupInputWithDefaultTitle(); 36 this.attachAddMenuItemListeners();37 36 this.attachQuickSearchListeners(); 38 37 this.attachThemeLocationsListeners(); 39 38 … … 412 411 }); 413 412 }, 414 413 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 431 414 attachThemeLocationsListeners : function() { 432 415 var loc = $('#nav-menu-theme-locations'), params = {}; 433 416 params['action'] = 'menu-locations-save'; … … 618 601 items.attr('checked', 'checked'); 619 602 return false; 620 603 } 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; 621 639 } 622 640 }); 623 641 },