by Kevin Lawver
This file powers the yummy Shared Events module (live example), which is related to the My Events module (live example). This is just for the presentation so I can project code in a big enough font without messing up my text editor's settings.
if ( !sharedevents ) {
var sharedevents={
isinit:false,
standalone:false,
debug:false
};
if ( sharedevents.standalone && !sharedevents.isinit ) {
var head=document.getElementsByTagName("head")[0];
djConfig={ baseScriptUri:"http://www.aimpages.com/.resource/jssdk/dojo-0.2.2", isDebug:true };
lop_dojoBaseScriptUri="http://www.aimpages.com/.resource/jssdk/dojo-0.2.2";
var ds=document.createElement("script");
ds.setAttribute("type","text/javascript");
ds.setAttribute("src","http://o.aolcdn.com/iamalpha/.resource/jssdk/dojo-0.2.2/dojo.js");
var ls=ds.cloneNode(true);
ls.setAttribute("src","http://www.aimpages.com/.resource/jssdk/lop.js");
head.appendChild(ds);
head.appendChild(ls);
}
}
sharedevents.init=function(instance,action) {
var module,view;
module=dojo.byId(instance);
view=dojo.html.getElementsByClass("view",module,"div")[0];
if ( !instance ) {
instance="shared-events";
action="view";
}
if (lop_isEditDomain()) {
var notice=view.getElementsByTagName("p")[0];
notice.innerHTML="This module will look for an events module on your visitors' pages and then display any events you have in common.";
if ( dojo.event.topic && !sharedevents.isinit) {
dojo.event.topic.subscribe("pageSaveImminent",sharedevents,"onsave");
}
} else {
sharedevents.view(instance,module,view);
}
sharedevents.isinit=true;
}
sharedevents.onsave=function(module) {
var ps=dojo.html.getElementsByClass("shared-events-notice",dojo.html.body(),"p"), n=ps.length;
for (var i=0;i<n;i++) {
ps[i].innerHTML="<!-- -->";
}
}
sharedevents.view=function(instance,module,view) {
var sn=pub.visitor.getNormalizedScreenName(), notice=view.getElementsByTagName("p")[0];
if (!sn || sn.length<1) {
notice.innerHTML="I can't figure out who you are, so I can't see if we share any events. Oh well!";
return;
}
if (pub.visitor.isAuthor()) {
notice.innerHTML="Hey, you own this page, it would be silly to show anything here.";
return;
}
var url, ajx=new lop.Ajax(), success, error, myModules=dojo.html.getElementsByClass("view my-events"), myLinks, myURLs=[], myTitles=[], yourURLs=[], yourTitles=[], sharedLinks=[], yourLinks, i, n, shared="", nShared=0;
if (myModules.length<1) {
notice.innerHTML="Oops, I don't have any events. Silly me!";
return;
}
success=function(req,data) {
sharedevents.dbg("sharedevents: Success!");
var dom=req.responseXML;
if (req.responseText.length<1) {
notice.innerHTML="We don't share any events. Why is that?";
}
sharedevents.dbg("sharedevents: returned: "+req.responseText);
var yourLinks=dom.getElementsByTagName("a");
sharedevents.dbg("sharedevents: yourLinks.length: "+yourLinks.length);
if (yourLinks.length>0) {
n=yourLinks.length;
for (i=0;i<n;i++) {
var l=yourLinks[i];
yourURLs[yourURLs.length]=l.href;
}
var nModules=myModules.length;
for (i=0;i<nModules;i++) {
myLinks=myModules[i].getElementsByTagName("a");
var nl=myLinks.length;
for (var k=0;k<nl;k++ ) {
var l=myLinks[k];
if (dojo.lang.inArray(yourURLs,l.href)) {
shared+="<li><a href='"+l.href+"'>"+dojo.dom.textContent(l)+"</a></li>";
nShared++;
}
}
}
sharedevents.dbg("sharedevents: nShared:"+nShared);
if (nShared>0) {
notice.innerHTML="Hey, we share "+nShared+" events!";
var dest=view.getElementsByTagName("ul")[0];
dest.innerHTML=shared;
} else {
notice.innerHTML="We don't share any events. Why is that?";
}
} else {
notice.innerHTML="We don't share any events. Why is that?";
}
}
error=function() {
notice.innerHTML="There was some error getting your profile. I'm sure it's all my fault though.";
}
url="http://www.aimpages.com/"+sn+"/profile.html?moduleid=my-events-0";
ajx.simpleGet(url,success,error,null);
}
sharedevents.dbg=function(msg) {
if (sharedevents.debug && console && console.debug) {
console.debug(msg);
}
}
sharedevents.n=function() {}