Ticket #11420: api.cleanup.diff
| File api.cleanup.diff, 11.0 KB (added by , 15 years ago) |
|---|
-
wp-includes/js/tinymce/plugins/wplink/css/wplink.dev.css
47 47 height: 185px; 48 48 overflow: auto; 49 49 } 50 #wp-link li { 50 #wp-link li, 51 #wp-link .query-notice { 51 52 margin-bottom: 0; 52 53 border-bottom: 1px solid #f1f1f1; 53 54 color: #333; … … 66 67 cursor: auto; 67 68 color: #333; 68 69 } 69 #wp-link li.selected {70 #wp-link li.selected { 70 71 background: #ddd; 71 72 color: #333; 72 73 } -
wp-includes/js/tinymce/plugins/wplink/js/wplink.dev.js
1 var wpLink; 2 1 3 (function($){ 2 var inputs = {}, results = {}, ed, 4 var inputs = {}, rivers = {}, ed, River, Query; 5 3 6 wpLink = { 4 7 timeToTriggerRiver: 150, 5 8 minRiverAJAXDuration: 200, 9 riverBottomThreshold: 5, 6 10 lastSearch: '', 7 riverDefaults: function() {8 return {9 page : 2,10 allLoaded: false,11 active: false12 };13 },14 11 init : function() { 15 12 inputs.dialog = $('#wp-link'); 16 13 // URL … … 20 17 // Advanced Options 21 18 inputs.openInNewTab = $('#link-target-checkbox'); 22 19 inputs.search = $('#search-field'); 23 // Result lists 24 results.search = $('#search-results'); 25 results.recent = $('#most-recent-results'); 26 results.search.data('river', wpLink.riverDefaults() ); 27 results.recent.data('river', wpLink.riverDefaults() ); 28 results.group = $('.query-results', inputs.dialog); 20 // Build Rivers 21 rivers.search = new River( $('#search-results') ); 22 rivers.recent = new River( $('#most-recent-results') ); 23 rivers.elements = $('.query-results', inputs.dialog); 29 24 30 25 // Bind event handlers 31 26 $('#wp-link-update').click( wpLink.update ); 32 27 $('#wp-link-cancel').click( function() { tinyMCEPopup.close(); } ); 33 28 34 results.group.delegate('li', 'click', wpLink.selectInternalLink ) 35 results.group.scroll( wpLink.maybeLoadRiver ); 29 rivers.elements.delegate('li', 'click', wpLink.selectInternalLink ) 36 30 37 31 inputs.search.keyup( wpLink.searchInternalLinks ); 38 32 … … 55 49 } 56 50 57 51 // Clear previously selected links 58 r esults.group.find('.selected').removeClass('selected');52 rivers.elements.find('.selected').removeClass('selected'); 59 53 // Focus the URL field 60 54 inputs.url.focus(); 55 // Load the most recent results if this is the first time opening the panel. 56 if ( ! rivers.recent.ul.children().length ) 57 rivers.recent.ajax(); 61 58 }, 62 59 63 60 update : function() { … … 137 134 inputs.title.val( t.children('.item-title').text() ); 138 135 }, 139 136 140 maybeLoadRiver : function() {141 var t = $(this),142 ul = t.children('ul'),143 river = t.data('river'),144 bottom = t.scrollTop() + t.height();145 146 if ( bottom != ul.height() || river.active || river.allLoaded )147 return;148 149 setTimeout(function() {150 var newTop = t.scrollTop(),151 newBottom = newTop + t.height(),152 waiting = t.find('.river-waiting');153 154 if ( bottom != newBottom || newBottom != ul.height() || river.active || river.allLoaded )155 return;156 157 river.active = true;158 waiting.show();159 t.scrollTop( newTop + waiting.outerHeight() );160 161 wpLink.linkAJAX( t, { page : river.page }, function(r) {162 river.page++;163 river.active = false;164 river.allLoaded = !r;165 waiting.hide();166 }, {167 append : true,168 delay : wpLink.minRiverAJAXDuration169 });170 }, wpLink.timeToTriggerRiver );171 },172 137 searchInternalLinks : function() { 173 138 var t = $(this), waiting, 174 title= t.val();139 search = t.val(); 175 140 176 if ( title.length > 2 ) {177 r esults.recent.hide();178 r esults.search.show();141 if ( search.length > 2 ) { 142 rivers.recent.element.hide(); 143 rivers.search.element.show(); 179 144 180 145 // Don't search if the keypress didn't change the title. 181 if ( wpLink.lastSearch == title)146 if ( wpLink.lastSearch == search ) 182 147 return; 183 148 184 wpLink.lastSearch = title;149 wpLink.lastSearch = search; 185 150 waiting = t.siblings('img.waiting').show(); 186 151 187 results.search.data('river', wpLink.riverDefaults() ); 188 results.search.scrollTop(0); 189 wpLink.linkAJAX( results.search, { title : title }, function(){ waiting.hide(); }); 152 rivers.search.change( search ); 153 rivers.search.ajax( function(){ waiting.hide(); }); 190 154 } else { 191 r esults.search.hide();192 r esults.recent.show();155 rivers.search.element.hide(); 156 rivers.recent.element.show(); 193 157 } 194 158 }, 195 159 196 linkAJAX : function( $panel, params, callback, opts ) { 197 var response; 198 opts = opts || {}; 160 delayedCallback : function( func, delay ) { 161 var timeoutTriggered, funcTriggered, funcArgs, funcContext; 199 162 200 if ( ! $panel.hasClass('query-results'))201 $panel = $panel.parents('.query-results');163 if ( ! delay ) 164 return func; 202 165 203 if ( ! $panel.length ) 204 return; 166 setTimeout( function() { 167 if ( funcTriggered ) 168 return func.apply( funcContext, funcArgs ); 169 // Otherwise, wait. 170 timeoutTriggered = true; 171 }, delay); 205 172 206 response = wpLink.delayedCallback( function( results ) { 207 wpLink.processAJAXResponse( $panel, results, callback, opts ); 208 }, opts.delay ); 209 210 $.post( ajaxurl, $.extend({ 211 action : 'wp-link-ajax' 212 }, params ), response, "json" ); 173 return function() { 174 if ( timeoutTriggered ) 175 return func.apply( this, arguments ); 176 // Otherwise, wait. 177 funcArgs = arguments; 178 funcContext = this; 179 funcTriggered = true; 180 }; 181 } 182 } 183 184 River = function( element, search ) { 185 var self = this; 186 this.element = element; 187 this.ul = element.children('ul'); 188 this.waiting = element.find('.river-waiting'); 189 190 this.change( search ); 191 192 element.scroll( function(){ self.maybeLoad(); }); 193 }; 194 195 $.extend( River.prototype, { 196 ajax: function( callback ) { 197 var self = this, 198 delay = this.query.page == 1 ? 0 : wpLink.minRiverAJAXDuration, 199 response = wpLink.delayedCallback( function( results, params ) { 200 self.process( results, params ); 201 if ( callback ) 202 callback( results, params ); 203 }, delay ); 204 205 this.query.ajax( response ); 213 206 }, 207 change: function( search ) { 208 if ( this.query && this._search == search ) 209 return; 210 211 this._search = search; 212 this.query = new Query( search ); 213 this.element.scrollTop(0); 214 }, 215 process: function( results, params ) { 216 var list = '', alt = true, 217 firstPage = params.page == 1; 214 218 215 processAJAXResponse: function( $panel, results, callback, opts ) {216 var list = '', alt = true;217 218 219 if ( !results ) { 219 if ( !opts.append) {220 if ( firstPage ) { 220 221 list += '<li class="unselectable"><span class="item-title"><em>' 221 222 + wpLinkL10n.noMatchesFound 222 223 + '</em></span></li>'; … … 232 233 }); 233 234 } 234 235 235 // Set results 236 $panel.children('ul')[ opts.append ? 'append' : 'html' ]( list ); 237 238 // Run callback 239 if ( callback ) 240 callback( results ); 236 this.ul[ firstPage ? 'html' : 'append' ]( list ); 241 237 }, 238 maybeLoad: function() { 239 var self = this, 240 el = this.element, 241 bottom = el.scrollTop() + el.height(); 242 242 243 delayedCallback : function( func, delay ) {244 var timeoutTriggered, funcTriggered, funcArgs, funcContext;243 if ( ! this.query.ready() || bottom < this.ul.height() - wpLink.riverBottomThreshold ) 244 return; 245 245 246 if ( ! delay ) 247 return func; 246 setTimeout(function() { 247 var newTop = el.scrollTop(), 248 newBottom = newTop + el.height(); 248 249 249 setTimeout( function() { 250 if ( funcTriggered ) 251 return func.apply( funcContext, funcArgs ); 252 // Otherwise, wait. 253 timeoutTriggered = true; 254 }, delay); 250 if ( ! self.query.ready() || newBottom < self.ul.height() - wpLink.riverBottomThreshold ) 251 return; 255 252 256 return function() { 257 if ( timeoutTriggered ) 258 return func.apply( this, arguments ); 259 // Otherwise, wait. 260 funcArgs = arguments; 261 funcContext = this; 262 funcTriggered = true; 263 }; 253 self.waiting.show(); 254 el.scrollTop( newTop + self.waiting.outerHeight() ); 255 256 self.ajax( function() { self.waiting.hide(); }); 257 }, wpLink.timeToTriggerRiver ); 264 258 } 265 } 259 }); 260 261 Query = function( search ) { 262 this.page = 1; 263 this.allLoaded = false; 264 this.querying = false; 265 this.search = search; 266 }; 267 268 $.extend( Query.prototype, { 269 ready: function() { 270 return !( this.querying || this.allLoaded ); 271 }, 272 ajax: function( callback ) { 273 var self = this, 274 query = { 275 action : 'wp-link-ajax', 276 page : this.page 277 }; 266 278 279 if ( this.search ) 280 query.search = this.search; 281 282 this.querying = true; 283 284 $.post( ajaxurl, query, function(r) { 285 self.page++; 286 self.querying = false; 287 self.allLoaded = !r; 288 callback( r, query ); 289 }, "json" ); 290 } 291 }); 292 267 293 $(document).ready( wpLink.init ); 268 294 })(jQuery); 295 No newline at end of file -
wp-admin/admin-ajax.php
1078 1078 1079 1079 $args = array(); 1080 1080 1081 if ( isset( $_POST[' title'] ) )1082 $args['s'] = stripslashes( $_POST[' title'] );1081 if ( isset( $_POST['search'] ) ) 1082 $args['s'] = stripslashes( $_POST['search'] ); 1083 1083 $args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1; 1084 1084 1085 1085 $results = wp_link_query( $args ); -
wp-admin/includes/internal-linking.php
94 94 </label> 95 95 </div> 96 96 <div id="search-results" class="query-results"> 97 <ul> 98 <li class="loading-results unselectable"><em><?php _e( 'Loading...' ); ?></em></li> 99 </ul> 97 <ul></ul> 100 98 <div class="river-waiting"> 101 99 <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 102 100 </div> 103 101 </div> 104 <?php $most_recent = wp_link_query(); ?>105 102 <div id="most-recent-results" class="query-results"> 106 <ul> 107 <li class="unselectable"><em><?php _e( 'No search term specified. Showing recent items.' ); ?></em></li> 108 <?php 109 $alt = true; 110 foreach ( $most_recent as $item ) : ?> 111 <li<?php if ( $alt ) echo ' class="alternate"'; ?>> 112 <input type="hidden" class="item-permalink" value="<?php echo esc_url( $item['permalink'] ); ?>" /> 113 <span class="item-title"><?php echo $item['title']; ?></span> 114 <span class="item-info"><?php echo esc_html( $item['info'] ); ?></span> 115 </li> 116 <?php 117 $alt = ! $alt; 118 endforeach; ?> 119 </ul> 103 <div class="query-notice"><em><?php _e( 'No search term specified. Showing recent items.' ); ?></em></div> 104 <ul></ul> 120 105 <div class="river-waiting"> 121 106 <img class="waiting" src="<?php echo esc_url( admin_url( 'images/wpspin_light.gif' ) ); ?>" alt="" /> 122 107 </div>