Ticket #20614: 20614-9.patch
File 20614-9.patch, 8.9 KB (added by , 12 years ago) |
---|
-
wp-admin/js/common.js
160 160 }); 161 161 162 162 $(document).ready( function() { 163 var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'), 163 var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'), mobileEvent, 164 164 pageInput = $('input.current-page'), currentPage = pageInput.val(); 165 165 166 166 // when the menu is folded, make the fly-out submenu header clickable … … 196 196 }); 197 197 198 198 if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // touch screen device 199 // iOS Safari works with touchstart, the rest work with click 200 mobileEvent = /Mobile\/.+Safari/.test(navigator.userAgent) ? 'touchstart' : 'click'; 201 199 202 // close any open submenus when touch/click is not on the menu 200 $(document.body).on( 'click.wp-mobile-hover', function(e) {203 $(document.body).on( mobileEvent+'.wp-mobile-hover', function(e) { 201 204 if ( !$(e.target).closest('#adminmenu').length ) 202 205 menu.find('li.wp-has-submenu.opensub').removeClass('opensub'); 203 206 }); 204 207 205 menu.find(' li.wp-has-submenu').on('click.wp-mobile-hover', function(e) {206 var el = $(this) ;208 menu.find('a.wp-has-submenu').on( mobileEvent+'.wp-mobile-hover', function(e) { 209 var el = $(this), parent = el.parent(); 207 210 208 if ( !el.hasClass('opensub') ) { 211 // Show the sub instead of following the link if: 212 // - the submenu is not open 213 // - the submenu is not shown inline or the menu is not folded 214 if ( !parent.hasClass('opensub') && ( !parent.hasClass('wp-menu-open') || parent.width() < 40 ) ) { 209 215 e.preventDefault(); 210 menu.find('li. wp-has-submenu.opensub').removeClass('opensub');211 el.addClass('opensub');216 menu.find('li.opensub').removeClass('opensub'); 217 parent.addClass('opensub'); 212 218 } 213 219 }); 214 } else { 215 menu.find('li.wp-has-submenu').hoverIntent({ 216 over: function(e){ 217 var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop, top = parseInt( m.css('top'), 10 ); 220 } 218 221 219 if ( isNaN(top) || top > -5 ) // meaning the submenu is visible 220 return; 222 menu.find('li.wp-has-submenu').hoverIntent({ 223 over: function(e){ 224 var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop, top = parseInt( m.css('top'), 10 ); 221 225 222 menutop = $(this).offset().top; 223 wintop = $(window).scrollTop(); 224 maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar 226 if ( isNaN(top) || top > -5 ) // meaning the submenu is visible 227 return; 225 228 226 b = menutop + m.height() + 1; // Bottom offset of the menu 227 h = $('#wpwrap').height(); // Height of the entire page 228 o = 60 + b - h; 229 f = $(window).height() + wintop - 15; // The fold 229 menutop = $(this).offset().top; 230 wintop = $(window).scrollTop(); 231 maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar 230 232 231 if ( f < (b - o) ) 232 o = b - f; 233 b = menutop + m.height() + 1; // Bottom offset of the menu 234 h = $('#wpwrap').height(); // Height of the entire page 235 o = 60 + b - h; 236 f = $(window).height() + wintop - 15; // The fold 233 237 234 if ( o > maxtop)235 o = maxtop;238 if ( f < (b - o) ) 239 o = b - f; 236 240 237 if ( o > 1 ) 238 m.css('margin-top', '-'+o+'px'); 239 else 240 m.css('margin-top', ''); 241 if ( o > maxtop ) 242 o = maxtop; 241 243 242 menu.find('li.menu-top').removeClass('opensub'); 243 $(this).addClass('opensub'); 244 }, 245 out: function(){ 246 $(this).removeClass('opensub').find('.wp-submenu').css('margin-top', ''); 247 }, 248 timeout: 200, 249 sensitivity: 7, 250 interval: 90 251 }); 244 if ( o > 1 ) 245 m.css('margin-top', '-'+o+'px'); 246 else 247 m.css('margin-top', ''); 252 248 253 menu.on('focus.adminmenu', '.wp-submenu a', function(e){ 254 $(e.target).closest('li.menu-top').addClass('opensub'); 255 }).on('blur.adminmenu', '.wp-submenu a', function(e){ 256 $(e.target).closest('li.menu-top').removeClass('opensub'); 257 }); 258 } 249 menu.find('li.menu-top').removeClass('opensub'); 250 $(this).addClass('opensub'); 251 }, 252 out: function(){ 253 $(this).removeClass('opensub').find('.wp-submenu').css('margin-top', ''); 254 }, 255 timeout: 200, 256 sensitivity: 7, 257 interval: 90 258 }); 259 259 260 menu.on('focus.adminmenu', '.wp-submenu a', function(e){ 261 $(e.target).closest('li.menu-top').addClass('opensub'); 262 }).on('blur.adminmenu', '.wp-submenu a', function(e){ 263 $(e.target).closest('li.menu-top').removeClass('opensub'); 264 }); 265 260 266 // Move .updated and .error alert boxes. Don't move boxes designed to be inline. 261 267 $('div.wrap h2:first').nextAll('div.updated, div.error').addClass('below-h2'); 262 268 $('div.updated, div.error').not('.below-h2, .inline').insertAfter( $('div.wrap h2:first') ); -
wp-includes/js/admin-bar.js
4 4 (function(a){a.fn.hoverIntent=function(l,j){var m={sensitivity:7,interval:100,timeout:0};m=a.extend(m,j?{over:l,out:j}:l);var o,n,h,d;var e=function(f){o=f.pageX;n=f.pageY};var c=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);if((Math.abs(h-o)+Math.abs(d-n))<m.sensitivity){a(f).unbind("mousemove",e);f.hoverIntent_s=1;return m.over.apply(f,[g])}else{h=o;d=n;f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}};var i=function(g,f){f.hoverIntent_t=clearTimeout(f.hoverIntent_t);f.hoverIntent_s=0;return m.out.apply(f,[g])};var b=function(q){var f=this;var g=(q.type=="mouseover"?q.fromElement:q.toElement)||q.relatedTarget;while(g&&g!=this){try{g=g.parentNode}catch(q){g=this}}if(g==this){if(a.browser.mozilla){if(q.type=="mouseout"){f.mtout=setTimeout(function(){k(q,f)},30)}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}}}return}else{if(f.mtout){f.mtout=clearTimeout(f.mtout)}k(q,f)}};var k=function(p,f){var g=jQuery.extend({},p);if(f.hoverIntent_t){f.hoverIntent_t=clearTimeout(f.hoverIntent_t)}if(p.type=="mouseover"){h=g.pageX;d=g.pageY;a(f).bind("mousemove",e);if(f.hoverIntent_s!=1){f.hoverIntent_t=setTimeout(function(){c(g,f)},m.interval)}}else{a(f).unbind("mousemove",e);if(f.hoverIntent_s==1){f.hoverIntent_t=setTimeout(function(){i(g,f)},m.timeout)}}};return this.mouseover(b).mouseout(b)}})(jQuery); 5 5 6 6 jQuery(document).ready(function($){ 7 var adminbar = $('#wpadminbar'), refresh ;7 var adminbar = $('#wpadminbar'), refresh, touchOpen, touchClose, disableHoverIntent = false; 8 8 9 9 refresh = function(i, el){ // force the browser to refresh the tabbing index 10 10 var node = $(el), tab = node.attr('tabindex'); … … 12 12 node.attr('tabindex', '0').attr('tabindex', tab); 13 13 }; 14 14 15 adminbar.removeClass('nojq').removeClass('nojs'); 16 17 if ( 'ontouchstart' in window || /IEMobile\/[1-9]/.test(navigator.userAgent) ) { // touch screen device 18 // close any open drop-downs when the click/touch is not on the toolbar 19 $(document.body).on('click.wp-mobile-hover', function(e) { 20 if ( !$(e.target).closest('#wpadminbar').length ) 21 adminbar.find('li.menupop.hover').removeClass('hover'); 22 }); 23 15 touchOpen = function(unbind) { 24 16 adminbar.find('li.menupop').on('click.wp-mobile-hover', function(e) { 25 17 var el = $(this); 26 18 … … 29 21 adminbar.find('li.menupop.hover').removeClass('hover'); 30 22 el.addClass('hover'); 31 23 } 24 25 if ( unbind ) { 26 $('li.menupop').off('click.wp-mobile-hover'); 27 disableHoverIntent = false; 28 } 32 29 }); 33 } else { 34 adminbar.find('li.menupop').hoverIntent({ 35 over: function(e){ 36 $(this).addClass('hover'); 37 }, 38 out: function(e){ 39 $(this).removeClass('hover'); 40 }, 41 timeout: 180, 42 sensitivity: 7, 43 interval: 100 30 }; 31 32 touchClose = function() { 33 var mobileEvent = /Mobile\/.+Safari/.test(navigator.userAgent) ? 'touchstart' : 'click'; 34 // close any open drop-downs when the click/touch is not on the toolbar 35 $(document.body).on( mobileEvent+'.wp-mobile-hover', function(e) { 36 if ( !$(e.target).closest('#wpadminbar').length ) 37 adminbar.find('li.menupop.hover').removeClass('hover'); 44 38 }); 39 }; 40 41 adminbar.removeClass('nojq').removeClass('nojs'); 42 43 if ( 'ontouchstart' in window ) { 44 adminbar.on('touchstart', function(){ 45 touchOpen(true); 46 disableHoverIntent = true; 47 }); 48 touchClose(); 49 } else if ( /IEMobile\/[1-9]/.test(navigator.userAgent) ) { 50 touchOpen(); 51 touchClose(); 45 52 } 46 53 54 adminbar.find('li.menupop').hoverIntent({ 55 over: function(e){ 56 if ( disableHoverIntent ) 57 return; 58 59 $(this).addClass('hover'); 60 }, 61 out: function(e){ 62 if ( disableHoverIntent ) 63 return; 64 65 $(this).removeClass('hover'); 66 }, 67 timeout: 180, 68 sensitivity: 7, 69 interval: 100 70 }); 71 47 72 $('#wp-admin-bar-get-shortlink').click(function(e){ 48 73 e.preventDefault(); 49 74 $(this).addClass('selected').children('.shortlink-input').blur(function(){