| [ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 var showNotice, adminMenu, columns, validateForm, screenMeta, autofold_menu; 2 (function($){ 3 // Removed in 3.3. 4 // (perhaps) needed for back-compat 5 adminMenu = { 6 init : function() {}, 7 fold : function() {}, 8 restoreMenuState : function() {}, 9 toggle : function() {}, 10 favorites : function() {} 11 }; 12 13 // show/hide/save table columns 14 columns = { 15 init : function() { 16 var that = this; 17 $('.hide-column-tog', '#adv-settings').click( function() { 18 var $t = $(this), column = $t.val(); 19 if ( $t.prop('checked') ) 20 that.checked(column); 21 else 22 that.unchecked(column); 23 24 columns.saveManageColumnsState(); 25 }); 26 }, 27 28 saveManageColumnsState : function() { 29 var hidden = this.hidden(); 30 $.post(ajaxurl, { 31 action: 'hidden-columns', 32 hidden: hidden, 33 screenoptionnonce: $('#screenoptionnonce').val(), 34 page: pagenow 35 }); 36 }, 37 38 checked : function(column) { 39 $('.column-' + column).show(); 40 this.colSpanChange(+1); 41 }, 42 43 unchecked : function(column) { 44 $('.column-' + column).hide(); 45 this.colSpanChange(-1); 46 }, 47 48 hidden : function() { 49 return $('.manage-column').filter(':hidden').map(function() { return this.id; }).get().join(','); 50 }, 51 52 useCheckboxesForHidden : function() { 53 this.hidden = function(){ 54 return $('.hide-column-tog').not(':checked').map(function() { 55 var id = this.id; 56 return id.substring( id, id.length - 5 ); 57 }).get().join(','); 58 }; 59 }, 60 61 colSpanChange : function(diff) { 62 var $t = $('table').find('.colspanchange'), n; 63 if ( !$t.length ) 64 return; 65 n = parseInt( $t.attr('colspan'), 10 ) + diff; 66 $t.attr('colspan', n.toString()); 67 } 68 } 69 70 $(document).ready(function(){columns.init();}); 71 72 validateForm = function( form ) { 73 return !$( form ).find('.form-required').filter( function() { return $('input:visible', this).val() == ''; } ).addClass( 'form-invalid' ).find('input:visible').change( function() { $(this).closest('.form-invalid').removeClass( 'form-invalid' ); } ).size(); 74 } 75 76 // stub for doing better warnings 77 showNotice = { 78 warn : function() { 79 var msg = commonL10n.warnDelete || ''; 80 if ( confirm(msg) ) { 81 return true; 82 } 83 84 return false; 85 }, 86 87 note : function(text) { 88 alert(text); 89 } 90 }; 91 92 screenMeta = { 93 element: null, // #screen-meta 94 toggles: null, // .screen-meta-toggle 95 page: null, // #wpcontent 96 97 init: function() { 98 this.element = $('#screen-meta'); 99 this.toggles = $('.screen-meta-toggle a'); 100 this.page = $('#wpcontent'); 101 102 this.toggles.click( this.toggleEvent ); 103 }, 104 105 toggleEvent: function( e ) { 106 var panel = $( this.href.replace(/.+#/, '#') ); 107 e.preventDefault(); 108 109 if ( !panel.length ) 110 return; 111 112 if ( panel.is(':visible') ) 113 screenMeta.close( panel, $(this) ); 114 else 115 screenMeta.open( panel, $(this) ); 116 }, 117 118 open: function( panel, link ) { 119 120 $('.screen-meta-toggle').not( link.parent() ).css('visibility', 'hidden'); 121 122 panel.parent().show(); 123 panel.slideDown( 'fast', function() { 124 link.addClass('screen-meta-active'); 125 }); 126 }, 127 128 close: function( panel, link ) { 129 panel.slideUp( 'fast', function() { 130 link.removeClass('screen-meta-active'); 131 $('.screen-meta-toggle').css('visibility', ''); 132 panel.parent().hide(); 133 }); 134 } 135 }; 136 137 /** 138 * Help tabs. 139 */ 140 $('.contextual-help-tabs').delegate('a', 'click focus', function(e) { 141 var link = $(this), 142 panel; 143 144 e.preventDefault(); 145 146 // Don't do anything if the click is for the tab already showing. 147 if ( link.is('.active a') ) 148 return false; 149 150 // Links 151 $('.contextual-help-tabs .active').removeClass('active'); 152 link.parent('li').addClass('active'); 153 154 panel = $( link.attr('href') ); 155 156 // Panels 157 $('.help-tab-content').not( panel ).removeClass('active').hide(); 158 panel.addClass('active').show(); 159 }); 160 161 $(document).ready( function() { 162 var lastClicked = false, checks, first, last, checked, menu = $('#adminmenu'), 163 pageInput = $('input.current-page'), currentPage = pageInput.val(), refresh; 164 165 // admin menu 166 refresh = function(i, el){ // force the browser to refresh the tabbing index 167 var node = $(el), tab = node.attr('tabindex'); 168 if ( tab ) 169 node.attr('tabindex', '0').attr('tabindex', tab); 170 }; 171 172 $('#collapse-menu', menu).click(function(){ 173 var body = $(document.body); 174 175 // reset any compensation for submenus near the bottom of the screen 176 $('#adminmenu div.wp-submenu').css('margin-top', ''); 177 178 if ( body.hasClass('folded') ) { 179 body.removeClass('folded'); 180 setUserSetting('mfold', 'o'); 181 } else { 182 body.addClass('folded'); 183 setUserSetting('mfold', 'f'); 184 } 185 return false; 186 }); 187 188 $('li.wp-has-submenu', menu).hoverIntent({ 189 over: function(e){ 190 var b, h, o, f, m = $(this).find('.wp-submenu'), menutop, wintop, maxtop; 191 192 if ( !$(document.body).hasClass('folded') && $(this).hasClass('wp-menu-open') ) 193 return; 194 195 menutop = $(this).offset().top; 196 wintop = $(window).scrollTop(); 197 maxtop = menutop - wintop - 30; // max = make the top of the sub almost touch admin bar 198 199 b = menutop + m.height() + 1; // Bottom offset of the menu 200 h = $('#wpwrap').height(); // Height of the entire page 201 o = 60 + b - h; 202 f = $(window).height() + wintop - 15; // The fold 203 204 if ( f < (b - o) ) 205 o = b - f; 206 207 if ( o > maxtop ) 208 o = maxtop; 209 210 if ( o > 1 ) 211 m.css('margin-top', '-'+o+'px'); 212 else 213 m.css('margin-top', ''); 214 215 menu.find('.wp-submenu').removeClass('sub-open'); 216 m.addClass('sub-open'); 217 }, 218 out: function(){ 219 $(this).find('.wp-submenu').removeClass('sub-open'); 220 }, 221 timeout: 200, 222 sensitivity: 7, 223 interval: 90 224 }); 225 226 // Tab to select, Enter to open sub, Esc to close sub and focus the top menu 227 $('li.wp-has-submenu > a.wp-not-current-submenu', menu).bind('keydown.adminmenu', function(e){ 228 if ( e.which != 13 ) 229 return; 230 231 var target = $(e.target); 232 233 e.stopPropagation(); 234 e.preventDefault(); 235 236 menu.find('.wp-submenu').removeClass('sub-open'); 237 target.siblings('.wp-submenu').toggleClass('sub-open').find('a[role="menuitem"]').each(refresh); 238 }).each(refresh); 239 240 $('a[role="menuitem"]', menu).bind('keydown.adminmenu', function(e){ 241 if ( e.which != 27 ) 242 return; 243 244 var target = $(e.target); 245 246 e.stopPropagation(); 247 e.preventDefault(); 248 249 target.add( target.siblings() ).closest('.sub-open').removeClass('sub-open').siblings('a.wp-not-current-submenu').focus(); 250 }); 251 252 // Move .updated and .error alert boxes. Don't move boxes designed to be inline. 253 $('div.wrap h2:first').nextAll('div.updated, div.error').addClass('below-h2'); 254 $('div.updated, div.error').not('.below-h2, .inline').insertAfter( $('div.wrap h2:first') ); 255 256 // Init screen meta 257 screenMeta.init(); 258 259 // check all checkboxes 260 $('tbody').children().children('.check-column').find(':checkbox').click( function(e) { 261 if ( 'undefined' == e.shiftKey ) { return true; } 262 if ( e.shiftKey ) { 263 if ( !lastClicked ) { return true; } 264 checks = $( lastClicked ).closest( 'form' ).find( ':checkbox' ); 265 first = checks.index( lastClicked ); 266 last = checks.index( this ); 267 checked = $(this).prop('checked'); 268 if ( 0 < first && 0 < last && first != last ) { 269 checks.slice( first, last ).prop( 'checked', function(){ 270 if ( $(this).closest('tr').is(':visible') ) 271 return checked; 272 273 return false; 274 }); 275 } 276 } 277 lastClicked = this; 278 return true; 279 }); 280 281 $('thead, tfoot').find('.check-column :checkbox').click( function(e) { 282 var c = $(this).prop('checked'), 283 kbtoggle = 'undefined' == typeof toggleWithKeyboard ? false : toggleWithKeyboard, 284 toggle = e.shiftKey || kbtoggle; 285 286 $(this).closest( 'table' ).children( 'tbody' ).filter(':visible') 287 .children().children('.check-column').find(':checkbox') 288 .prop('checked', function() { 289 if ( $(this).closest('tr').is(':hidden') ) 290 return false; 291 if ( toggle ) 292 return $(this).prop( 'checked' ); 293 else if (c) 294 return true; 295 return false; 296 }); 297 298 $(this).closest('table').children('thead, tfoot').filter(':visible') 299 .children().children('.check-column').find(':checkbox') 300 .prop('checked', function() { 301 if ( toggle ) 302 return false; 303 else if (c) 304 return true; 305 return false; 306 }); 307 }); 308 309 $('#default-password-nag-no').click( function() { 310 setUserSetting('default_password_nag', 'hide'); 311 $('div.default-password-nag').hide(); 312 return false; 313 }); 314 315 // tab in textareas 316 $('#newcontent').bind('keydown.wpevent_InsertTab', function(e) { 317 if ( e.keyCode != 9 ) 318 return true; 319 320 var el = e.target, selStart = el.selectionStart, selEnd = el.selectionEnd, val = el.value, scroll, sel; 321 322 try { 323 this.lastKey = 9; // not a standard DOM property, lastKey is to help stop Opera tab event. See blur handler below. 324 } catch(err) {} 325 326 if ( document.selection ) { 327 el.focus(); 328 sel = document.selection.createRange(); 329 sel.text = '\t'; 330 } else if ( selStart >= 0 ) { 331 scroll = this.scrollTop; 332 el.value = val.substring(0, selStart).concat('\t', val.substring(selEnd) ); 333 el.selectionStart = el.selectionEnd = selStart + 1; 334 this.scrollTop = scroll; 335 } 336 337 if ( e.stopPropagation ) 338 e.stopPropagation(); 339 if ( e.preventDefault ) 340 e.preventDefault(); 341 }); 342 343 $('#newcontent').bind('blur.wpevent_InsertTab', function(e) { 344 if ( this.lastKey && 9 == this.lastKey ) 345 this.focus(); 346 }); 347 348 if ( pageInput.length ) { 349 pageInput.closest('form').submit( function(e){ 350 351 // Reset paging var for new filters/searches but not for bulk actions. See #17685. 352 if ( $('select[name="action"]').val() == -1 && $('select[name="action2"]').val() == -1 && pageInput.val() == currentPage ) 353 pageInput.val('1'); 354 }); 355 } 356 357 }); 358 359 // internal use 360 $(document).bind( 'wp_CloseOnEscape', function( e, data ) { 361 if ( typeof(data.cb) != 'function' ) 362 return; 363 364 if ( typeof(data.condition) != 'function' || data.condition() ) 365 data.cb(); 366 367 return true; 368 }); 369 370 })(jQuery);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Fri May 25 03:56:23 2012 | Hosted by follow the white rabbit. |