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.