Monday, November 08, 2010 at 12:00 AM.

scripting2Suite.server.buildDayPage

on buildDayPage (username, theday) {
	<<Changes
		<<6/6/10; 8:57:35 AM by DW
			<<Created. 
	local (adrdata = scripting2suite.inituser (username), adrcal = @adrdata^.calendar);
	local (adrday = mainresponder.calendar.getdayaddress (adrcal, theday), htmltext, path);
	local (whenLastSave = date (0));
	bundle { //get htmltext
		local (indentlevel = 0, i);
		htmltext = "\r\r";
		on add (s) {
			htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"};
		on decode (s) {
			return (xml.entitydecode (s, true))};
		for i = sizeof (adrday^) downto 1 {
			local (adrstory = @adrday^ [i]);
			if scripting2Suite.server.isStoryVisible (adrstory) {
				add (scripting2Suite.server.getStoryText (adrstory, flComments:adrdata^.prefs.flDisqusComments));
				if adrstory^.whenLastSave > whenLastSave {
					whenLastSave = adrstory^.whenLastSave}}};
		htmltext = scripting2Suite.server.glossarySubstitution (@adrdata^.prefs.glossary, htmltext);
		htmltext = scripting2Suite.server.glossarySubstitution (@scripting2Suite.data.systemGlossary, htmltext)};
		<<webbrowser.displaytext (htmltext)
	bundle { //run it through the template
		local (t);
		new (tabletype, @t);
		t.whenLastUpdate = whenLastSave;
		t.title = date.longstring (theday);
		<<t.calendar = ""
		<<t.nextPrevMonths = ""
		scripting2Suite.server.setupMacrosTable (username, @t); //add common elements
		t.crumbTrail = scripting2Suite.server.getCrumbTrail (t.baseurl, theday, fldaybold:true); //6/8/10 by DW
		bundle { //set up calendar
			scripting2Suite.server.getCalendarText (username, theday, t.baseurl, @t.calendar, @t.nextPrevMonths)};
			<<local (pt, pta = @pt); new (tabletype, pta); html.setpagetableaddress (pta)
			<<local (myt = "<font size=\"+0\"><center><b>***</b></center></font>")
			<<local (dnt = "<font size=\"-2\" color=\"gray\"><center>***</center></font>")
			<<local (dt = "<font size=\"-2\" color=\"black\"><center>***</center></font>")
			<<t.calendar = mainresponder.calendar.draw (@adrdata^.calendar, t.baseurl, colWidth:19, rowHeight:10, tableBorder:0, monthYearTemplate:myt, dayNameTemplate:dnt, dayTemplate:dt, curdate: adrstory^.postdate)
			<<t.nextPrevMonths = mainresponder.calendar.getlinks (@adrdata^.calendar, adrstory^.postdate, t.baseurl, date ("4/1/97"))
		bundle { //set nextPrev
			local (nextlink = "Next", prevlink = "Previous", nexturl = "", prevurl = "");
			on getdaylink (d) {
				return (t.baseurl + file.getdatepath ("/", d, false) + ".html")};
			try {
				local (nextday = mainResponder.calendar.getNextDay (adrcal, date.tomorrow (theday)));
				local (adrnext = mainresponder.calendar.getdayaddress (adrcal, nextday));
				nexturl = getdaylink (mainResponder.calendar.getAddressDay (adrnext))};
			try {
				local (prevday = mainResponder.calendar.getPreviousDay (adrcal, date.yesterday (theday)));
				local (adrprev = mainresponder.calendar.getdayaddress (adrcal, prevday));
				prevurl = getdaylink (mainResponder.calendar.getAddressDay (adrprev))};
			if prevurl != "" {
				prevlink = "<a href=\"" + prevurl + "\">" + prevlink + "</a>"};
			if nexturl != "" {
				nextlink = "<a href=\"" + nexturl + "\">" + nextlink + "</a>"};
			t.nextPrev = prevlink + " / " + nextlink};
		bundle { //do simple replacements on the blogroll, 6/7/10 by DW
			local (tsmall);
			new (tabletype, @tsmall);
			tsmall.calendar = t.calendar;
			tsmall.nextPrevMonths = t.nextPrevMonths;
			t.blogroll = string.multiplereplaceall (t.blogroll, @tsmall, false, "<%", "%>")};
		t.bodytext = htmltext;
		htmltext = string.multiplereplaceall (string (adrdata^.prefs.hometemplate), @t, false, "<%", "%>")};
	bundle { //upload it
		local (path = file.getdatepath ("/", theday, false) + ".html");
		return (scripting2Suite.writeStaticFile (username, path, htmltext))}};
bundle { //test code
	local (d = date ("June 8, 2010"));
	webbrowser.openurl (buildDayPage ("davewiner", d))}



This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.