Ticket #38224: 38224.diff
File 38224.diff, 6.4 KB (added by , 9 years ago) |
---|
-
src/wp-admin/css/nav-menus.css
19 19 margin: 13px 0; 20 20 } 21 21 22 .quick-search-load-more { 23 display: block; 24 text-align: center; 25 padding: 5px 0; 26 cursor: pointer; 27 } 28 29 .quick-search-load-more.fetching { 30 cursor: progress; 31 } 32 22 33 #nav-menu-meta .accordion-section-content { 23 34 padding: 18px 13px; 24 35 } -
src/wp-admin/includes/nav-menu.php
25 25 $type = isset( $request['type'] ) ? $request['type'] : ''; 26 26 $object_type = isset( $request['object_type'] ) ? $request['object_type'] : ''; 27 27 $query = isset( $request['q'] ) ? $request['q'] : ''; 28 $paged = isset( $request['paged'] ) ? intval( $request['paged'] ) : 1; 29 $posts_per_page = isset( $request['posts_per_page'] ) ? intval( $request['posts_per_page'] ) : 10; 28 30 $response_format = isset( $request['response-format'] ) && in_array( $request['response-format'], array( 'json', 'markup' ) ) ? $request['response-format'] : 'json'; 29 31 30 32 if ( 'markup' == $response_format ) { … … 74 76 'no_found_rows' => true, 75 77 'update_post_meta_cache' => false, 76 78 'update_post_term_cache' => false, 77 'posts_per_page' => 10,79 'posts_per_page' => $posts_per_page, 78 80 'post_type' => $matches[2], 79 81 's' => $query, 82 'paged' => $paged 80 83 ) ); 81 84 if ( ! $search_results_query->have_posts() ) { 82 85 return; … … 98 101 } 99 102 } 100 103 } elseif ( 'taxonomy' == $matches[1] ) { 104 $offset = $posts_per_page * ( $paged - 1 ); 105 101 106 $terms = get_terms( $matches[2], array( 102 107 'name__like' => $query, 103 'number' => 10, 108 'number' => $posts_per_page, 109 'offset' => $offset 104 110 )); 105 111 if ( empty( $terms ) || is_wp_error( $terms ) ) 106 112 return; … … 460 466 <li><?php _e('No results found.'); ?></li> 461 467 <?php endif; ?> 462 468 </ul> 469 470 <a id="<?php echo $post_type_name; ?>-search-load-more" style="display: none;" class="quick-search-load-more" data-name="quick-search-posttype-<?php echo $post_type_name; ?>"><?php _e( 'Load More' ); ?></a> 463 471 </div><!-- /.tabs-panel --> 464 472 465 473 <div id="<?php echo $post_type_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php … … 749 757 <li><?php _e('No results found.'); ?></li> 750 758 <?php endif; ?> 751 759 </ul> 760 761 <a id="<?php echo $taxonomy_name; ?>-search-load-more" style="display: none;" class="quick-search-load-more" data-name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>"><?php _e( 'Load More' ); ?></a> 752 762 </div><!-- /.tabs-panel --> 753 763 754 764 <p class="button-controls wp-clearfix"> -
src/wp-admin/js/nav-menu.js
30 30 menusChanged : false, 31 31 isRTL: !! ( 'undefined' != typeof isRtl && isRtl ), 32 32 negateIfRTL: ( 'undefined' != typeof isRtl && isRtl ) ? -1 : 1, 33 currentPage: {}, 33 34 lastSearch: '', 34 35 35 36 // Functions that run on init. … … 893 894 }).on( 'blur', function() { 894 895 api.lastSearch = ''; 895 896 }).attr('autocomplete','off'); 897 898 $( '.quick-search-load-more' ).on( 'click', function() { 899 $( this ).addClass( 'fetching' ).prop( 'disabled', true ); 900 var $quickSearchInput = $( this ).siblings( '.quick-search-wrap' ).children( '.quick-search' ); 901 api.updateQuickSearchResults( $quickSearchInput, true ); 902 }); 896 903 }, 897 904 898 updateQuickSearchResults : function( input) {905 updateQuickSearchResults : function( input, append ) { 899 906 var panel, params, 900 907 minSearchLength = 2, 901 908 q = input.val(); 902 909 910 var append = 'undefined' !== typeof append ? append : false; 911 903 912 /* 904 913 * Minimum characters for a search. Also avoid a new AJAX search when 905 914 * the pressed key (e.g. arrows) doesn't change the searched term. 906 915 */ 907 if ( q.length < minSearchLength || api.lastSearch == q) {916 if ( ( q.length < minSearchLength || api.lastSearch == q ) && ! append ) { 908 917 return; 909 918 } 910 919 911 920 api.lastSearch = q; 912 921 922 if ( ! append ) { 923 api.currentPage[input.attr('name')] = 1; 924 } 925 913 926 panel = input.parents('.tabs-panel'); 914 927 params = { 915 928 'action': 'menu-quick-search', … … 917 930 'menu': $('#menu').val(), 918 931 'menu-settings-column-nonce': $('#menu-settings-column-nonce').val(), 919 932 'q': q, 920 'type': input.attr('name') 933 'type': input.attr('name'), 934 'paged': api.currentPage[input.attr('name')] 921 935 }; 922 936 923 937 $( '.spinner', panel ).addClass( 'is-active' ); 924 938 925 939 $.post( ajaxurl, params, function(menuMarkup) { 926 api.processQuickSearchQueryResponse(menuMarkup, params, panel );940 api.processQuickSearchQueryResponse(menuMarkup, params, panel, append); 927 941 }); 928 942 }, 929 943 … … 1180 1194 * @param object req The request arguments. 1181 1195 * @param jQuery panel The tabs panel we're searching in. 1182 1196 */ 1183 processQuickSearchQueryResponse : function( resp, req, panel) {1197 processQuickSearchQueryResponse : function( resp, req, panel, append ) { 1184 1198 var matched, newID, 1185 1199 takenIDs = {}, 1186 1200 form = document.getElementById('nav-menu-meta'), … … 1188 1202 $items = $('<div>').html(resp).find('li'), 1189 1203 $item; 1190 1204 1191 if( ! $items.length ) { 1192 $('.categorychecklist', panel).html( '<li><p>' + navMenuL10n.noResultsFound + '</p></li>' ); 1205 var append = 'undefined' !== typeof append ? append : false; 1206 1207 if ( ! $items.length ) { 1208 if ( append ) { 1209 $( '.quick-search-load-more[data-name="'+ req.type +'"]' ).hide(); 1210 } else { 1211 $('.categorychecklist', panel).html( '<li><p>' + navMenuL10n.noResultsFound + '</p></li>' ); 1212 } 1213 1193 1214 $( '.spinner', panel ).removeClass( 'is-active' ); 1194 1215 return; 1195 1216 } … … 1216 1237 } 1217 1238 }); 1218 1239 1219 $('.categorychecklist', panel).html( $items ); 1240 if ( append ) { 1241 $( '.categorychecklist', panel ).append( $items ); 1242 } else { 1243 $( '.quick-search-load-more[data-name="'+ req.type +'"]' ).show(); 1244 $( '.categorychecklist', panel ).html( $items ); 1245 } 1246 1247 api.currentPage[req.type] += 1; 1248 $( '.quick-search-load-more[data-name="'+ req.type +'"]' ).removeClass( 'fetching' ).prop( 'disabled', false ); 1220 1249 $( '.spinner', panel ).removeClass( 'is-active' ); 1221 1250 }, 1222 1251