| [ Index ] |
WordPress Source Cross Reference |
[Summary view] [Print] [Text view]
1 <?php 2 require_once ('admin.php'); 3 header('Content-type: text/javascript; charset=' . get_settings('blog_charset'), true); 4 ?> 5 addLoadEvent(function(){theList=new listMan();}); 6 function deleteSomething(what,id,message,obj){if(!obj)obj=theList;if(!message)message="<?php printf(__('Are you sure you want to delete this %s?'),"'+what+'"); ?>";if(confirm(message))return obj.ajaxDelete(what,id);else return false;} 7 function dimSomething(what,id,dimClass,obj){if(!obj)obj=theList;return obj.ajaxDimmer(what,id,dimClass);} 8 9 function WPAjax(file, responseEl){//class WPAjax extends sack 10 this.getResponseElement=function(r){var p=document.getElementById(r+'-p');if(!p){p=document.createElement('span');p.id=r+'-p';document.getElementById(r).appendChild(p);}this.myResponseElement=p; } 11 this.parseAjaxResponse=function(){ 12 if(isNaN(this.response)){this.myResponseElement.innerHTML='<div class="error"><p>'+this.response+'</p></div>';return false;} 13 this.response=parseInt(this.response,10); 14 if(-1==this.response){this.myResponseElement.innerHTML="<div class='error'><p><?php _e("You don't have permission to do that."); ?></p></div>";return false;} 15 else if(0==this.response){this.myResponseElement.innerHTML="<div class='error'><p><?php _e("Something odd happened. Try refreshing the page? Either that or what you tried to change never existed in the first place."); ?></p></div>";return false;} 16 return true; 17 } 18 this.parseAjaxResponseXML=function(){ 19 if(this.responseXML&&typeof this.responseXML=='object')return true; 20 if(isNaN(this.response)){this.myResponseElement.innerHTML='<div class="error"><p>'+this.response+'</p></div>';return false;} 21 var r=parseInt(this.response,10); 22 if(-1==r){this.myResponseElement.innerHTML="<div class='error'><p><?php _e("You don't have permission to do that."); ?></p></div>";} 23 else if(0==r){this.myResponseElement.innerHTML="<div class='error'><p><?php _e("Invalid Entry."); ?></p></div>";} 24 return false; 25 } 26 this.init(file,responseEl); 27 } WPAjax.prototype=new sack; 28 WPAjax.prototype.init=function(f,r){ 29 this.encVar('cookie', document.cookie); 30 this.requestFile=f;this.getResponseElement(r);this.method='POST'; 31 this.onLoading=function(){this.myResponseElement.innerHTML="<?php _e('Sending Data...'); ?>";}; 32 this.onLoaded=function(){this.myResponseElement.innerHTML="<?php _e('Data Sent...'); ?>";}; 33 this.onInteractive=function(){this.myResponseElement.innerHTML="<?php _e('Processing Data...'); ?>";}; 34 } 35 36 function listMan(theListId){ 37 this.theList=null; 38 this.ajaxRespEl=null; 39 this.inputData='';this.clearInputs=new Array();this.showLink=1; 40 this.topAdder=0;this.alt='alternate';this.recolorPos;this.reg_color='#FFFFFF';this.alt_color='#F1F1F1'; 41 this.addComplete=null;this.delComplete=null;this.dimComplete=null; 42 var listType;var listItems; 43 self.aTrap=0; 44 45 this.ajaxAdder=function(what,where,update){//for TR, server must wrap TR in TABLE TBODY. this.makeEl cleans it 46 if(self.aTrap)return;self.aTrap=1;setTimeout('aTrap=0',300); 47 this.ajaxAdd=new WPAjax('admin-ajax.php',this.ajaxRespEl?this.ajaxRespEl:'ajax-response'); 48 if(this.ajaxAdd.failed)return true; 49 this.grabInputs(where); 50 var tempObj=this; 51 this.ajaxAdd.onCompletion=function(){ 52 if(!this.parseAjaxResponseXML())return; 53 var newItems=this.responseXML.getElementsByTagName(what); 54 if(tempObj.topAdder)tempObj.recolorPos=0; 55 if(newItems){for (c=0;c<newItems.length;c++){ 56 var id=parseInt(getNodeValue(newItems[c],'id'),10); 57 var exists=document.getElementById(what+'-'+id); 58 if(exists)tempObj.replaceListItem(exists.id,getNodeValue(newItems[c],'newitem'),newItems.length,update); 59 else tempObj.addListItem(getNodeValue(newItems[c],'newitem'),newItems.length); 60 }} 61 tempObj.inputData=''; 62 if(tempObj.showLink){this.myResponseElement.innerHTML='<div id="jumplink" class="updated fade"><p><a href="#'+what+'-'+id+'"><?php _e('Jump to new item'); ?></a></p></div>';} 63 else this.myResponseElement.innerHTML=''; 64 for(var i=0;i<tempObj.clearInputs.length;i++){try{var theI=document.getElementById(tempObj.clearInputs[i]);if(theI.tagName.match(/select/i))theI.selectedIndex=0;else theI.value='';}catch(e){}} 65 if(tempObj.addComplete&&typeof tempObj.addComplete=='function')tempObj.addComplete(what,where,update); 66 tempObj.recolorList(tempObj.recolorPos,1000); 67 } 68 this.ajaxAdd.runAJAX('action='+(update?'update-':'add-')+what+this.inputData); 69 return false; 70 } 71 this.ajaxUpdater=function(what,where){return this.ajaxAdder(what,where,true);} 72 this.ajaxDelete=function(what,id){ 73 if(self.aTrap)return;self.aTrap=1;setTimeout('aTrap=0',300); 74 this.ajaxDel=new WPAjax('admin-ajax.php',this.ajaxRespEl?this.ajaxRespEl:'ajax-response'); 75 if(this.ajaxDel.failed)return true; 76 var tempObj=this; 77 this.ajaxDel.onCompletion=function(){if(this.parseAjaxResponse()){tempObj.removeListItem(what.replace('-as-spam','')+'-'+id);this.myResponseElement.innerHTML='';if(tempObj.delComplete&&typeof tempObj.delComplete=='function')tempObj.delComplete(what,id);tempObj.recolorList(tempObj.recolorPos,1000)}}; 78 this.ajaxDel.runAJAX('action=delete-'+what+'&id='+id); 79 return false; 80 } 81 this.ajaxDimmer=function(what,id,dimClass){ 82 if(self.aTrap)return;self.aTrap=1;setTimeout('aTrap=0',300); 83 this.ajaxDim=new WPAjax('admin-ajax.php',this.ajaxRespEl?this.ajaxRespEl:'ajax-response'); 84 if(this.ajaxDim.failed)return true; 85 var tempObj=this; 86 this.ajaxDim.onCompletion=function(){if(this.parseAjaxResponse()){tempObj.dimItem(what+'-'+id,dimClass);this.myResponseElement.innerHTML='';if(tempObj.dimComplete&&typeof tempObj.dimComplete=='function')tempObj.dimComplete(what,id,dimClass);}}; 87 this.ajaxDim.runAJAX('action=dim-'+what+'&id='+id); 88 return false; 89 } 90 this.makeEl=function(h){var fakeItem=document.createElement('div');fakeItem.innerHTML=h;var r=fakeItem.firstChild;while(r.tagName.match(/(table|tbody)/i)){r=r.firstChild;}return r;} 91 this.addListItem=function(h,tot){ 92 newItem=this.makeEl(h); 93 if(this.topAdder){var firstItem=this.theList.getElementsByTagName('table'==listType?'tr':'li')[0];listItems.unshift(newItem.id);this.recolorPos++} 94 else{listItems.push(newItem.id);this.recolorPos=listItems.length;} 95 if(this.alt&&!((tot-this.recolorPos)%2))newItem.className+=' '+this.alt; 96 if(firstItem)firstItem.parentNode.insertBefore(newItem,firstItem); 97 else this.theList.appendChild(newItem); 98 Fat.fade_element(newItem.id); 99 } 100 this.removeListItem=function(id,noFade){ 101 if(!noFade)Fat.fade_element(id,null,700,'#FF3333'); 102 var theItem=document.getElementById(id); 103 if(!noFade){var func=encloseFunc(function(a){a.parentNode.removeChild(a);},theItem);setTimeout(func,705);} 104 else{theItem.parentNode.removeChild(theItem);} 105 var pos=this.getListPos(id); 106 listItems.splice(pos,1); 107 } 108 this.replaceListItem=function(id,h,tot,update){ 109 if(!update){this.removeListItem(id,true);this.addListItem(h,tot);return;} 110 var newItem=this.makeEl(h); 111 var oldItem=document.getElementById(id); 112 var pos=this.getListPos(oldItem.id,1);if(this.alt&&!(pos%2))newItem.className+=' '+this.alt; 113 oldItem.parentNode.replaceChild(newItem,oldItem); 114 Fat.fade_element(newItem.id); 115 } 116 this.dimItem=function(id,dimClass,noFade){ 117 var theItem=document.getElementById(id); 118 if(theItem.className.match(dimClass)){if(!noFade)Fat.fade_element(id,null,700,null);theItem.className=theItem.className.replace(dimClass,'');} 119 else{if(!noFade)Fat.fade_element(id,null,700,'#FF3333');theItem.className=theItem.className+' '+dimClass;} 120 } 121 this.grabInputs=function(elId){//text,password,hidden,textarea,select 122 var theItem=document.getElementById(elId); 123 var inputs=new Array(); 124 inputs.push(theItem.getElementsByTagName('input'),theItem.getElementsByTagName('textarea'),theItem.getElementsByTagName('select')); 125 for(var a=0;a<inputs.length;a++){ 126 for(var i=0;i<inputs[a].length;i++){ 127 if('action'==inputs[a][i].name)continue; 128 if('text'==inputs[a][i].type||'password'==inputs[a][i].type||'hidden'==inputs[a][i].type||inputs[a][i].tagName.match(/textarea/i)){ 129 this.inputData+='&'+inputs[a][i].name+'='+encodeURIComponent(inputs[a][i].value);if('hidden'!=inputs[a][i].type)this.clearInputs.push(inputs[a][i].id); 130 }else if(inputs[a][i].tagName.match(/select/i)){ 131 this.inputData+='&'+inputs[a][i].name+'='+encodeURIComponent(inputs[a][i].options[inputs[a][i].selectedIndex].value);this.clearInputs.push(inputs[a][i].id); 132 } 133 } 134 } 135 } 136 this.getListPos=function(id,n){for(var i=0;i<listItems.length;i++){if(id==listItems[i]){var pos=i;break;}}if(!n){if(pos<this.recolorPos)this.recolorPos=pos;}return pos;} 137 this.getListItems=function(){ 138 if(this.theList)return; 139 listItems=new Array(); 140 if(theListId){this.theList=document.getElementById(theListId);if(!this.theList)return false;} 141 else{this.theList=document.getElementById('the-list');if(this.theList)theListId='the-list';} 142 if(this.theList){ 143 var items=this.theList.getElementsByTagName('tr');listType='table'; 144 if(!items[0]){items=this.theList.getElementsByTagName('li');listType='list';} 145 for(var i=0;i<items.length;i++){listItems.push(items[i].id);} 146 this.recolorPos=listItems.length; 147 } 148 } 149 this.recolorList=function(pos,dur){ 150 if(!this.alt)return;if(!pos)pos=0;this.recolorPos=listItems.length; 151 for(var i=pos;i<listItems.length;i++){var e=document.getElementById(listItems[i]);if(i%2)e.className=e.className.replace(this.alt,'fade-'+this.alt_color.slice(1));else e.className+=' '+this.alt+' fade-'+this.reg_color.slice(1);e.style.backgroundColor='';} 152 Fat.fade_all(dur); 153 var func=encloseFunc(function(l){for(var i=0;i<l.length;i++){var e=document.getElementById(l[i]);e.className=e.className.replace(/fade-[a-f0-9]{6}/i,'');}},listItems); 154 setTimeout(func,dur+5); 155 } 156 this.getListItems(); 157 } 158 //No submit unless eval(code) returns true. 159 function killSubmit(code,e){if(!e){if(window.event)e=window.event;else return;}var t=e.target?e.target:e.srcElement;if(('text'==t.type&&e.keyCode==13)||('submit'==t.type&&'click'==e.type)){if(!eval(code)){e.returnValue=false;e.cancelBubble=true;return false;}}} 160 //Pretty func from ALA http://www.alistapart.com/articles/gettingstartedwithajax 161 function getNodeValue(tree,el){return tree.getElementsByTagName(el)[0].firstChild.nodeValue;} 162 //Generic but lame JS closure 163 function encloseFunc(f){var a=arguments[1];return function(){return f(a);}}
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Sat Jul 15 11:57:04 2006 | Courtesy of Taragana |