[ Index ]

PHP Cross Reference of Wordpress 2.9.1

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          try {
  27              cl = $(e).attr('class') || '';
  28              cl = cl.match(new RegExp(t+':[\\S]+'));
  29              if ( cl ) { c = cl[0].split(':'); }
  30          } catch(r) {}
  31          return c;
  32      },
  33  
  34      pre: function(e,s,a) {
  35          var bg, r;
  36          s = $.extend( {}, this.wpList.settings, {
  37              element: null,
  38              nonce: 0,
  39              target: e.get(0)
  40          }, s || {} );
  41          if ( $.isFunction( s.confirm ) ) {
  42              if ( 'add' != a ) {
  43                  bg = $('#' + s.element).css('backgroundColor');
  44                  $('#' + s.element).css('backgroundColor', '#FF9966');
  45              }
  46              r = s.confirm.call(this,e,s,a,bg);
  47              if ( 'add' != a ) { $('#' + s.element).css('backgroundColor', bg ); }
  48              if ( !r ) { return false; }
  49          }
  50          return s;
  51      },
  52  
  53      ajaxAdd: function( e, s ) {
  54          e = $(e);
  55          s = s || {};
  56          var list = this, cls = wpList.parseClass(e,'add'), es, valid, formData;
  57          s = wpList.pre.call( list, e, s, 'add' );
  58  
  59          s.element = cls[2] || e.attr( 'id' ) || s.element || null;
  60          if ( cls[3] ) { s.addColor = '#' + cls[3]; }
  61          else { s.addColor = s.addColor || '#FFFF33'; }
  62  
  63          if ( !s ) { return false; }
  64  
  65          if ( !e.is("[class^=add:" + list.id + ":]") ) { return !wpList.add.call( list, e, s ); }
  66  
  67          if ( !s.element ) { return true; }
  68  
  69          s.action = 'add-' + s.what;
  70  
  71          s.nonce = wpList.nonce(e,s);
  72  
  73          es = $('#' + s.element + ' :input').not('[name=_ajax_nonce], [name=_wpnonce], [name=action]');
  74          valid = wpAjax.validateForm( '#' + s.element );
  75          if ( !valid ) { return false; }
  76  
  77          s.data = $.param( $.extend( { _ajax_nonce: s.nonce, action: s.action }, wpAjax.unserialize( cls[4] || '' ) ) );
  78          formData = $.isFunction(es.fieldSerialize) ? es.fieldSerialize() : es.serialize();
  79          if ( formData ) { s.data += '&' + formData; }
  80  
  81          if ( $.isFunction(s.addBefore) ) {
  82              s = s.addBefore( s );
  83              if ( !s ) { return true; }
  84          }
  85          if ( !s.data.match(/_ajax_nonce=[a-f0-9]+/) ) { return true; }
  86  
  87          s.success = function(r) {
  88              var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o;
  89              if ( !res || res.errors ) { return false; }
  90  
  91              if ( true === res ) { return true; }
  92  
  93              jQuery.each( res.responses, function() {
  94                  wpList.add.call( list, this.data, $.extend( {}, s, { // this.firstChild.nodevalue
  95                      pos: this.position || 0,
  96                      id: this.id || 0,
  97                      oldId: this.oldId || null
  98                  } ) );
  99              } );
 100  
 101              if ( $.isFunction(s.addAfter) ) {
 102                  o = this.complete;
 103                  this.complete = function(x,st) {
 104                      var _s = $.extend( { xml: x, status: st, parsed: res }, s );
 105                      s.addAfter( r, _s );
 106                      if ( $.isFunction(o) ) { o(x,st); }
 107                  };
 108              }
 109              list.wpList.recolor();
 110              $(list).trigger( 'wpListAddEnd', [ s, list.wpList ] );
 111              wpList.clear.call(list,'#' + s.element);
 112          };
 113  
 114          $.ajax( s );
 115          return false;
 116      },
 117  
 118      ajaxDel: function( e, s ) {
 119          e = $(e); s = s || {};
 120          var list = this, cls = wpList.parseClass(e,'delete'), element;
 121          s = wpList.pre.call( list, e, s, 'delete' );
 122  
 123          s.element = cls[2] || s.element || null;
 124          if ( cls[3] ) { s.delColor = '#' + cls[3]; }
 125          else { s.delColor = s.delColor || '#faa'; }
 126  
 127          if ( !s || !s.element ) { return false; }
 128  
 129          s.action = 'delete-' + s.what;
 130  
 131          s.nonce = wpList.nonce(e,s);
 132  
 133          s.data = $.extend(
 134              { action: s.action, id: s.element.split('-').pop(), _ajax_nonce: s.nonce },
 135              wpAjax.unserialize( cls[4] || '' )
 136          );
 137  
 138          if ( $.isFunction(s.delBefore) ) {
 139              s = s.delBefore( s, list );
 140              if ( !s ) { return true; }
 141          }
 142          if ( !s.data._ajax_nonce ) { return true; }
 143  
 144          element = $('#' + s.element);
 145  
 146          if ( 'none' != s.delColor ) {
 147              element.css( 'backgroundColor', s.delColor ).fadeOut( 350, function(){
 148                  list.wpList.recolor();
 149                  $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
 150              });
 151          } else {
 152              list.wpList.recolor();
 153              $(list).trigger( 'wpListDelEnd', [ s, list.wpList ] );
 154          }
 155  
 156          s.success = function(r) {
 157              var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o;
 158              if ( !res || res.errors ) {
 159                  element.stop().stop().css( 'backgroundColor', '#faa' ).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
 160                  return false;
 161              }
 162              if ( $.isFunction(s.delAfter) ) {
 163                  o = this.complete;
 164                  this.complete = function(x,st) {
 165                      element.queue( function() {
 166                          var _s = $.extend( { xml: x, status: st, parsed: res }, s );
 167                          s.delAfter( r, _s );
 168                          if ( $.isFunction(o) ) { o(x,st); }
 169                      } ).dequeue();
 170                  };
 171              }
 172          };
 173          $.ajax( s );
 174          return false;
 175      },
 176  
 177      ajaxDim: function( e, s ) {
 178          if ( $(e).parent().css('display') == 'none' ) // Prevent hidden links from being clicked by hotkeys
 179              return false;
 180          e = $(e); s = s || {};
 181          var list = this, cls = wpList.parseClass(e,'dim'), element, isClass, color, dimColor;
 182          s = wpList.pre.call( list, e, s, 'dim' );
 183  
 184          s.element = cls[2] || s.element || null;
 185          s.dimClass =  cls[3] || s.dimClass || null;
 186          if ( cls[4] ) { s.dimAddColor = '#' + cls[4]; }
 187          else { s.dimAddColor = s.dimAddColor || '#FFFF33'; }
 188          if ( cls[5] ) { s.dimDelColor = '#' + cls[5]; }
 189          else { s.dimDelColor = s.dimDelColor || '#FF3333'; }
 190  
 191          if ( !s || !s.element || !s.dimClass ) { return true; }
 192  
 193          s.action = 'dim-' + s.what;
 194  
 195          s.nonce = wpList.nonce(e,s);
 196  
 197          s.data = $.extend(
 198              { action: s.action, id: s.element.split('-').pop(), dimClass: s.dimClass, _ajax_nonce : s.nonce },
 199              wpAjax.unserialize( cls[6] || '' )
 200          );
 201  
 202          if ( $.isFunction(s.dimBefore) ) {
 203              s = s.dimBefore( s );
 204              if ( !s ) { return true; }
 205          }
 206  
 207          element = $('#' + s.element);
 208          isClass = element.toggleClass(s.dimClass).is('.' + s.dimClass);
 209          color = wpList.getColor( element );
 210          element.toggleClass( s.dimClass )
 211          dimColor = isClass ? s.dimAddColor : s.dimDelColor;
 212          if ( 'none' != dimColor ) {
 213              element
 214                  .animate( { backgroundColor: dimColor }, 'fast' )
 215                  .queue( function() { element.toggleClass(s.dimClass); $(this).dequeue(); } )
 216                  .animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] ); } } );
 217          } else {
 218              $(list).trigger( 'wpListDimEnd', [ s, list.wpList ] );
 219          }
 220  
 221          if ( !s.data._ajax_nonce ) { return true; }
 222  
 223          s.success = function(r) {
 224              var res = wpAjax.parseAjaxResponse(r, s.response, s.element), o;
 225              if ( !res || res.errors ) {
 226                  element.stop().stop().css( 'backgroundColor', '#FF3333' )[isClass?'removeClass':'addClass'](s.dimClass).show().queue( function() { list.wpList.recolor(); $(this).dequeue(); } );
 227                  return false;
 228              }
 229              if ( $.isFunction(s.dimAfter) ) {
 230                  o = this.complete;
 231                  this.complete = function(x,st) {
 232                      element.queue( function() {
 233                          var _s = $.extend( { xml: x, status: st, parsed: res }, s );
 234                          s.dimAfter( r, _s );
 235                          if ( $.isFunction(o) ) { o(x,st); }
 236                      } ).dequeue();
 237                  };
 238              }
 239          };
 240  
 241          $.ajax( s );
 242          return false;
 243      },
 244  
 245      // From jquery.color.js: jQuery Color Animation by John Resig
 246      getColor: function( el ) {
 247          if ( el.constructor == Object )
 248              el = el.get(0);
 249          var elem = el, color, rgbaTrans = new RegExp( "rgba\\(\\s*0,\\s*0,\\s*0,\\s*0\\s*\\)", "i" );
 250          do {
 251              color = jQuery.curCSS(elem, 'backgroundColor');
 252              if ( color != '' && color != 'transparent' && !color.match(rgbaTrans) || jQuery.nodeName(elem, "body") )
 253                  break;
 254          } while ( elem = elem.parentNode );
 255          return color || '#ffffff';
 256      },
 257  
 258      add: function( e, s ) {
 259          e = $(e);
 260  
 261          var list = $(this), old = false, _s = { pos: 0, id: 0, oldId: null }, ba, ref, color;
 262          if ( 'string' == typeof s ) { s = { what: s }; }
 263          s = $.extend(_s, this.wpList.settings, s);
 264          if ( !e.size() || !s.what ) { return false; }
 265          if ( s.oldId ) { old = $('#' + s.what + '-' + s.oldId); }
 266          if ( s.id && ( s.id != s.oldId || !old || !old.size() ) ) { $('#' + s.what + '-' + s.id).remove(); }
 267  
 268          if ( old && old.size() ) {
 269              old.before(e);
 270              old.remove();
 271          } else if ( isNaN(s.pos) ) {
 272              ba = 'after';
 273              if ( '-' == s.pos.substr(0,1) ) {
 274                  s.pos = s.pos.substr(1);
 275                  ba = 'before';
 276              }
 277              ref = list.find( '#' + s.pos );
 278              if ( 1 === ref.size() ) { ref[ba](e); }
 279              else { list.append(e); }
 280          } else if ( s.pos < 0 ) {
 281              list.prepend(e);
 282          } else {
 283              list.append(e);
 284          }
 285  
 286          if ( s.alt ) {
 287              if ( ( list.children(':visible').index( e[0] ) + s.altOffset ) % 2 ) { e.removeClass( s.alt ); }
 288              else { e.addClass( s.alt ); }
 289          }
 290  
 291          if ( 'none' != s.addColor ) {
 292              color = wpList.getColor( e );
 293              e.css( 'backgroundColor', s.addColor ).animate( { backgroundColor: color }, { complete: function() { $(this).css( 'backgroundColor', '' ); } } );
 294          }
 295          list.each( function() { this.wpList.process( e ); } );
 296          return e;
 297      },
 298  
 299      clear: function(e) {
 300          var list = this, t, tag;
 301          e = $(e);
 302          if ( list.wpList && e.parents( '#' + list.id ).size() ) { return; }
 303          e.find(':input').each( function() {
 304              if ( $(this).parents('.form-no-clear').size() )
 305                  return;
 306              t = this.type.toLowerCase();
 307              tag = this.tagName.toLowerCase();
 308              if ( 'text' == t || 'password' == t || 'textarea' == tag ) { this.value = ''; }
 309              else if ( 'checkbox' == t || 'radio' == t ) { this.checked = false; }
 310              else if ( 'select' == tag ) { this.selectedIndex = null; }
 311          });
 312      },
 313  
 314      process: function(el) {
 315          var list = this;
 316          $("[class^=add:" + list.id + ":]", el || null)
 317              .filter('form').submit( function() { return list.wpList.add(this); } ).end()
 318              .not('form').click( function() { return list.wpList.add(this); } );
 319          $("[class^=delete:" + list.id + ":]", el || null).click( function() { return list.wpList.del(this); } );
 320          $("[class^=dim:" + list.id + ":]", el || null).click( function() { return list.wpList.dim(this); } );
 321      },
 322  
 323      recolor: function() {
 324          var list = this, items, eo;
 325          if ( !list.wpList.settings.alt ) { return; }
 326          items = $('.list-item:visible', list);
 327          if ( !items.size() ) { items = $(list).children(':visible'); }
 328          eo = [':even',':odd'];
 329          if ( list.wpList.settings.altOffset % 2 ) { eo.reverse(); }
 330          items.filter(eo[0]).addClass(list.wpList.settings.alt).end().filter(eo[1]).removeClass(list.wpList.settings.alt);
 331      },
 332  
 333      init: function() {
 334          var lists = this;
 335          lists.wpList.process = function(a) {
 336              lists.each( function() {
 337                  this.wpList.process(a);
 338              } );
 339          };
 340          lists.wpList.recolor = function() {
 341              lists.each( function() {
 342                  this.wpList.recolor();
 343              } );
 344          };
 345      }
 346  };
 347  
 348  $.fn.wpList = function( settings ) {
 349      this.each( function() {
 350          var _this = this;
 351          this.wpList = { settings: $.extend( {}, wpList.settings, { what: wpList.parseClass(this,'list')[1] || '' }, settings ) };
 352          $.each( fs, function(i,f) { _this.wpList[i] = function( e, s ) { return wpList[f].call( _this, e, s ); }; } );
 353      } );
 354      wpList.init.call(this);
 355      this.wpList.process();
 356      return this;
 357  };
 358  
 359  })(jQuery);


Generated: Fri Jan 8 00:19:48 2010 Cross-referenced by PHPXref 0.7