[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/js/ -> wp-lists.dev.js (source)

   1  (function($) {
   2  var fs = {add:'ajaxAdd',del:'ajaxDel',dim:'ajaxDim',process:'process',recolor:'recolor'}, wpList;
   3  
   4  wpList = {
   5      settings: {
   6          url: ajaxurl, type: 'POST',
   7          response: 'ajax-response',
   8  
   9          what: '',
  10          alt: 'alternate', altOffset: 0,
  11          addColor: null, delColor: null, dimAddColor: null, dimDelColor: null,
  12  
  13          confirm: null,
  14          addBefore: null, addAfter: null,
  15          delBefore: null, delAfter: null,
  16          dimBefore: null, dimAfter: null
  17      },
  18  
  19      nonce: function(e,s) {
  20          var url = wpAjax.unserialize(e.attr('href'));
  21          return s.nonce || url._ajax_nonce || $('#' + s.element + ' input[name="_ajax_nonce"]').val() || url._wpnonce || $('#' + s.element + ' input[name="_wpnonce"]').val() || 0;
  22      },
  23  
  24      parseClass: function(e,t) {
  25          var c = [], cl;
  26  
  27          try {
  28              cl = $(e).attr('class') || '';
  29              cl = cl.match(new RegExp(t+':[\\S]+'));
  30  
  31              if ( cl )
  32                  c = cl[0].split(':');
  33          } catch(r) {}
  34  
  35          return c;
  36      },
  37  
  38      pre: function(e,s,a) {
  39          var bg, r;
  40  
  41          s = $.extend( {}, this.wpList.settings, {
  42              element: null,
  43              nonce: 0,
  44              target: e.get(0)
  45          }, s || {} );
  46  
  47          if ( $.isFunction( s.confirm ) ) {
  48              if ( 'add' != a ) {
  49                  bg = $('#' + s.element).css('backgroundColor');
  50                  $('#' + s.element).css('backgroundColor', '#FF9966');
  51              }
  52              r = s.confirm.call(this, e, s, a, bg);
  53  
  54              if ( 'add' != a )
  55                  $('#' + s.element).css('backgroundColor', bg );
  56  
  57              if ( !r )
  58                  return false;
  59          }
  60  
  61          return s;
  62      },
  63  
  64      ajaxAdd: function( e, s ) {
  65          e = $(e);
  66          s = s || {};
  67          var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData, res, rres;
  68  
  69          s = wpList.pre.call( list, e, s, 'add' );
  70  
  71          s.element = cls[2] || e.attr( 'id' ) || s.element || null;
  72  
  73          if ( cls[3] )
  74              s.addColor = '#' + cls[3];
  75          else
  76              s.addColor = s.addColor || '#FFFF33';
  77  
  78          if ( !s )
  79              return false;
  80  
  81          if ( !e.is('[class^="add:' + list.id + ':"]') )
  82              return !wpList.add.call( list, e, s );
  83  
  84          if ( !s.element )
  85              return true;
  86  
  87          s.action = 'add-' + s.what;
  88  
  89          s.nonce = wpList.nonce(e,s);
  90  
  91          es = $('#' + s.element + ' :input').not('[name="_ajax_nonce"], [name="_wpnonce"], [name="action"]');
  92          valid = wpAjax.validateForm( '#' + s.element );
  93  
  94          if ( !valid )
  95              return false;
  96  
  97          s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) );
  98          formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize();
  99  
 100          if ( formData )
 101              s.data += '&' + formData;
 102  
 103          if ( $.isFunction(s.addBefore) ) {
 104              s = s.addBefore( s );
 105              if ( !s )
 106                  return true;
 107          }
 108  
 109          if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) )
 110              return true;
 111  
 112          s.success = function(r) {
 113              res = wpAjax.parseAjaxResponse(r, s.response, s.element);
 114  
 115              rres = r;
 116  
 117              if ( !res || res.errors )
 118                  return false;
 119  
 120              if ( true === res )
 121                  return true;
 122  
 123              jQuery.each( res.responses, function() {
 124                  wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue
 125                      pos: this.position || 0,
 126                      id: this.id || 0,
 127                      oldId: this.oldId || null
 128                  } ) );
 129              } );
 130  
 131              list.wpList.recolor();
 132              $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] );
 133              wpList.clear.call(list,'#' + s.element);
 134          };
 135  
 136          s.complete = function(x, st) {
 137              if ( $.isFunction(s.addAfter) ) {
 138                  var _s = $.extend( { xml: x, status: st, parsed: res }, s );
 139                  s.addAfter( rres, _s );
 140              }
 141          };
 142  
 143          $.ajax( s );
 144          return false;
 145      },
 146  
 147      ajaxDel: function( e, s ) {
 148          e = $(e);
 149          s = s || {};
 150          var list = this, cls = wpList.parseClass(e,'delete'), element, res, rres;
 151  
 152          s = wpList.pre.call( list, e, s, 'delete' );
 153  
 154          s.element = cls[2] || s.element || null;
 155  
 156          if ( cls[3] )
 157              s.delColor = '#' + cls[3];
 158          else
 159              s.delColor = s.delColor || '#faa';
 160  
 161          if ( !s || !s.element )
 162              return false;
 163  
 164          s.action = 'delete-' + s.what;
 165  
 166          s.nonce = wpList.nonce(e,s);
 167  
 168          s.data = $.extend(
 169              { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce },
 170              wpAjax.unserialize( cls[4] || '' )
 171          );
 172  
 173          if ( $.isFunction(s.delBefore) ) {
 174              s = s.delBefore( s, list );
 175              if ( !s )
 176                  return true;
 177          }
 178  
 179          if ( !s.data._ajax_nonce )
 180              return true;
 181  
 182          element = $('#' + s.element);
 183  
 184          if ( 'none' != s.delColor ) {
 185              element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){
 186                  list.wpList.recolor();
 187                  $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
 188              });
 189          } else {
 190              list.wpList.recolor();
 191              $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
 192          }
 193  
 194          s.success = function(r) {
 195              res = wpAjax.parseAjaxResponse(r, s.response, s.element);
 196              rres = r;
 197  
 198              if ( !res || res.errors ) {
 199                  element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
 200                  return false;
 201              }
 202          };
 203  
 204          s.complete = function(x, st) {
 205              if ( $.isFunction(s.delAfter) ) {
 206                  element.queue( function() {
 207                      var _s = $.extend( { xml: x, status: st, parsed: res }, s );
 208                      s.delAfter( rres, _s );
 209                  }).dequeue();
 210              }
 211          }
 212  
 213          $.ajax( s );
 214          return false;
 215      },
 216  
 217      ajaxDim: function( e, s ) {
 218          if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys
 219              return false;
 220  
 221          e = $(e);
 222          s = s || {};
 223  
 224          var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor, res, rres;
 225  
 226          s = wpList.pre.call( list, e, s, 'dim' );
 227  
 228          s.element = cls[2] || s.element || null;
 229          s.dimClass =  cls[3] || s.dimClass || null;
 230  
 231          if ( cls[4] )
 232              s.dimAddColor = '#' + cls[4];
 233          else
 234              s.dimAddColor = s.dimAddColor || '#FFFF33';
 235  
 236          if ( cls[5] )
 237              s.dimDelColor = '#' + cls[5];
 238          else
 239              s.dimDelColor = s.dimDelColor || '#FF3333';
 240  
 241          if ( !s || !s.element || !s.dimClass )
 242              return true;
 243  
 244          s.action = 'dim-' + s.what;
 245  
 246          s.nonce = wpList.nonce(e,s);
 247  
 248          s.data = $.extend(
 249              { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce },
 250              wpAjax.unserialize( cls[6] || '' )
 251          );
 252  
 253          if ( $.isFunction(s.dimBefore) ) {
 254              s = s.dimBefore( s );
 255              if ( !s )
 256                  return true;
 257          }
 258  
 259          element = $('#' + s.element);
 260          isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass);
 261          color = wpList.getColor( element );
 262          element.toggleClass( s.dimClass );
 263          dimColor = isClass ? s.dimAddColor : s.dimDelColor;
 264  
 265          if ( 'none' != dimColor ) {
 266              element
 267                  .animate( { backgroundColor: dimColor }, 'fast' )
 268                  .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } )
 269                  .animate( { backgroundColor: color }, { complete: function() {
 270                          $(this).css( 'backgroundColor', '' );
 271                          $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
 272                      }
 273                  });
 274          } else {
 275              $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
 276          }
 277  
 278          if ( !s.data._ajax_nonce )
 279              return true;
 280  
 281          s.success = function(r) {
 282              res = wpAjax.parseAjaxResponse(r, s.response, s.element);
 283              rres = r;
 284  
 285              if ( !res || res.errors ) {
 286                  element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
 287                  return false;
 288              }
 289          };
 290  
 291          s.complete = function(x, st) {
 292              if ( $.isFunction(s.dimAfter) ) {
 293                  element.queue( function() {
 294                      var _s = $.extend( { xml: x, status: st, parsed: res }, s );
 295                      s.dimAfter( rres, _s );
 296                  }).dequeue();
 297              }
 298          };
 299  
 300          $.ajax( s );
 301          return false;
 302      },
 303  
 304      getColor: function( el ) {
 305          var color = jQuery(el).css('backgroundColor');
 306  
 307          return color || '#ffffff';
 308      },
 309  
 310      add: function( e, s ) {
 311          e = $(e);
 312  
 313          var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color;
 314  
 315          if ( 'string' == typeof s )
 316              s = { what: s };
 317  
 318          s = $.extend(_s, this.wpList.settings, s);
 319  
 320          if ( !e.size() || !s.what )
 321              return false;
 322  
 323          if ( s.oldId )
 324              old = $('#' + s.what + '-' + s.oldId);
 325  
 326          if ( s.id && ( s.id != s.oldId || !old || !old.size() ) )
 327              $('#' + s.what + '-' + s.id).remove();
 328  
 329          if ( old && old.size() ) {
 330              old.before(e);
 331              old.remove();
 332          } else if ( isNaN(s.pos) ) {
 333              ba = 'after';
 334  
 335              if ( '-' == s.pos.substr(0,1) ) {
 336                  s.pos = s.pos.substr(1);
 337                  ba = 'before';
 338              }
 339  
 340              ref = list.find( '#' + s.pos );
 341  
 342              if ( 1 === ref.size() )
 343                  ref[ba](e);
 344              else
 345                  list.append(e);
 346  
 347          } else if ( 'comment' != s.what || 0 === $('#' + s.element).length ) {
 348              if ( s.pos < 0 ) {
 349                  list.prepend(e);
 350              } else {
 351                  list.append(e);
 352              }
 353          }
 354  
 355          if ( s.alt ) {
 356              if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); }
 357              else { e.addClass( s.alt ); }
 358          }
 359  
 360          if ( 'none' != s.addColor ) {
 361              color = wpList.getColor( e );
 362              e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } );
 363          }
 364          list.each( function() { this.wpList.process( e ); } );
 365          return e;
 366      },
 367  
 368      clear: function(e) {
 369          var list = this, t, tag;
 370  
 371          e = $(e);
 372  
 373          if ( list.wpList && e.parents( '#' + list.id ).size() )
 374              return;
 375  
 376          e.find(':input').each( function() {
 377              if ( $(this).parents('.form-no-clear').size() )
 378                  return;
 379  
 380              t = this.type.toLowerCase();
 381              tag = this.tagName.toLowerCase();
 382  
 383              if ( 'text' == t || 'password' == t || 'textarea' == tag )
 384                  this.value = '';
 385              else if ( 'checkbox' == t || 'radio' == t )
 386                  this.checked = false;
 387              else if ( 'select' == tag )
 388                  this.selectedIndex = null;
 389          });
 390      },
 391  
 392      process: function(el) {
 393          var list = this,
 394              $el = $(el || document);
 395  
 396          $el.delegate( 'form[class^="add:' + list.id + ':"]', 'submit', function(){
 397              return list.wpList.add(this);
 398          });
 399  
 400          $el.delegate( '[class^="add:' + list.id + ':"]:not(form)', 'click', function(){
 401              return list.wpList.add(this);
 402          });
 403  
 404          $el.delegate( '[class^="delete:' + list.id + ':"]', 'click', function(){
 405              return list.wpList.del(this);
 406          });
 407  
 408          $el.delegate( '[class^="dim:' + list.id + ':"]', 'click', function(){
 409              return list.wpList.dim(this);
 410          });
 411      },
 412  
 413      recolor: function() {
 414          var list = this, items, eo;
 415  
 416          if ( !list.wpList.settings.alt )
 417              return;
 418  
 419          items = $('.list-item:visible', list);
 420  
 421          if ( !items.size() )
 422              items = $(list).children(':visible');
 423  
 424          eo = [':even',':odd'];
 425  
 426          if ( list.wpList.settings.altOffset % 2 )
 427              eo.reverse();
 428  
 429          items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt);
 430      },
 431  
 432      init: function() {
 433          var lists = this;
 434  
 435          lists.wpList.process = function(a) {
 436              lists.each( function() {
 437                  this.wpList.process(a);
 438              } );
 439          };
 440  
 441          lists.wpList.recolor = function() {
 442              lists.each( function() {
 443                  this.wpList.recolor();
 444              } );
 445          };
 446      }
 447  };
 448  
 449  $.fn.wpList = function( settings ) {
 450      this.each( function() {
 451          var _this = this;
 452  
 453          this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) };
 454          $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } );
 455      } );
 456  
 457      wpList.init.call(this);
 458  
 459      this.wpList.process();
 460  
 461      return this;
 462  };
 463  
 464  })(jQuery);


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