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

system.verbs.builtins.radio.macros.weblogArchiveCalendar

on weblogArchiveCalendar (adrdata=radio.weblog.init ()) {
	<<Changes
		<<10/28/01; 3:56:15 PM by JES
			<<Changed the text on the Publish Archive button to "Publish Entire Archive".
		<<9/18/01; 11:35:09 PM by JES
			<<Added the publish this month button. Cleaned up HTML table rendering in the Archive Calendar section.
		<<9/4/01; 1:10:49 AM by JES
			<<When publishing archive pages, call radio.weblog.publishStaticArchivePages, in its own thread.
	
	local (pta = html.getPageTableAddress ());
	
	local (htmltext = "\r", indentlevel = 0);
	on add (s) {
		htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"};
	
	local (basehelpurl = "/system/help/weblog#");
	on separator (s, helpSection="") {
		local (helpUrl = "");
		if helpSection != "" {
			helpUrl = baseHelpUrl + helpSection};
		add (radio.html.prefsElement.separator (s, colspan:3, helpUrl:helpUrl))};
	
	local (d = clock.now (), flArchivePage = false, dateArg); //PBS 02/22/01: archive page support
	bundle { //process GET args
		local (adrargs = @pta^.radioResponder.getArgs);
		if defined (adrargs^) {
			if defined (adrargs^.d) { //PBS 02/22/01: archive page, possibly
				flArchivePage = true;
				local (year = string.nthField (adrargs^.d, '/', 1));
				local (month = string.nthField (adrargs^.d, '/', 2));
				local (day = string.nthField (adrargs^.d, '/', 3));
				d = date.set (day, month, year, 0, 0, 0);
				dateArg = year + "/" + string.padWithZeros (month, 2) + "/" + string.padWithZeros (day, 2);
				bundle { //check d against midnight of the day with the last post
					local (midnightMostRecentDay);
					local (adrLastPost = @adrdata^.posts [sizeOf (adrdata^.posts)]);
					local (day, month, year, hour, minute, second);
					date.get (adrLastPost^.when, @day, @month, @year, @hour, @minute, @second);
					midnightMostRecentDay = date.set (day, month, year, 0, 0, 0);
					if d >= midnightMostRecentDay {
						flArchivePage = false}}}}};
	
	if pta^.method == "POST" {
		<<workspace.pt = pta^; edit (@workspace.pt)
		if defined (pta^.radioResponder.postArgs.publishArchive) { //PBS 02/22/01: publish all archive pages
			thread.callScript (@radio.weblog.publishStaticArchivePages, {adrdata});
			thread.callScript (@radio.weblog.publishStaticHomePage, {adrdata, true, false})};
		if defined (pta^.radioResponder.postArgs.publishThisMonth) { //PBS 02/22/01: publish all archive pages
			local (year = date.year (d));
			local (month = date.month (d));
			local (minDate = date.set (1, month, year, 0, 0, 0));
			month++;
			if month > 12 {
				month = 1;
				year++};
			local (maxDate = date.yesterday (date.set (1, month, year, 23, 59, 59)));
			thread.callScript (@radio.weblog.publishStaticArchivePages, {adrdata, minDate, maxDate})}};
			<<thread.callScript (@radio.weblog.publishStaticHomePage, {adrdata, true, false})
	
	add ("<form method=\"POST\">"); indentlevel++;
	if flArchivePage {
		add ("<input type=\"hidden\" name=\"d\" value=\"" + dateArg + "\">")};
	add ("<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\">"); indentlevel++;
	bundle { //archive pages
		if adrdata^.prefs.flArchiveSection { //PBS 03/01/01: new pref, default off, for displaying the archive section
			separator ("Weblog archive pages...", "weblogArchivePages"); //PBS 02/24/01: help link
			
			add ("<tr>"); indentlevel++;
			add ("<td align=\"left\" colspan=\"2\">"); indentlevel++;
			
			add ("<table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">"); indentlevel++;
			add ("<tr>");
			
			add ("<td>You can view and edit old posts using the calendar.<br>Click on a day in the calendar to view posts for that day.</td>");
			add ("<td rowspan=\"4\" align=\"center\" style=\"padding-left:30\">" + radio.weblog.drawCalendar (adrdata, d) + "</td>");
			add ("</tr>");
			
			<<add ("<td valign=\"bottom\"><table cellpadding=\"5\" cellspacing=\"0\" border=\"0\">")
			add ("<tr><td style=\"padding-bottom:10\">Click the Publish Entire Archive button to publish the entire archive. Click the Publish This Month button to publish the archive pages for " + date.monthToString (date.month (d)) + ", " + date.year (d) + ".</td></tr>");
			add ("<tr><td><input type=\"submit\" value=\"Publish Entire Archive\" name=\"publishArchive\"></td></tr>");
			add ("<tr><td><input type=\"submit\" value=\"Publish This Month\" name=\"publishThisMonth\"></td></tr>");
			<<add ("</table></td>")
			
			add ("</tr></table>"); indentlevel--;
			
			add ("</td>"); indentlevel--;
			add ("</tr>"); indentlevel--}};
	add ("</table>"); indentlevel--;
	add ("</form>"); indentlevel--;
	
	return (htmltext)}



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.