[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-admin/js/ -> common.dev.js (source)

   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);


Generated: Fri May 25 03:56:23 2012 Hosted by follow the white rabbit.