Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.macros.previousDayLink
on previousDayLink (linetext="Previous", flAlwaysLinkToPrevDay=false) { <<Changes <<8/7/02; 2:05:00 PM by LL <<Created. Generate a link to the previous day's archive page, if any. local (adrblog = radio.weblog.init (), adrPost, catname=""); local (d, year, month, day, minute, second, maxdate); if defined (categoryName) { catname = categoryName}; if flArchivePage { year = string.nthField (archiveDate, "/", 1); month = string.nthField (archiveDate, "/", 2); day = string.nthField (archiveDate, "/", 3); maxdate = date.set (day, month, year, 0, 0, 0)} else { //home page local (ctposts = sizeOf (adrblog^.posts)); local (maxdays = adrblog^.prefs.ctDaysToDisplay -1 ); local (i, ctdays = 0, lastday = -1, itemstext = "", lastitemdate, adrpost); for i = sizeOf (adrblog^.posts) downto 1 { adrpost = @adrblog^.posts [i]; bundle { //only include if in category, if catname was specified if catname != nil { if radio.weblog.isPostInCategory (adrpost, catname) { continue}}}; bundle { //if rendering the home page, or a non-category archive page, skip posts with flNotOnHomePage == true if catname == nil { if defined (adrpost^.flNotOnHomePage) { if adrpost^.flNotOnHomePage { continue}}}}; bundle { //check date rollover if flAlwaysLinkToPrevDay { break}; local (day, month, year, hour, minute, second); date.get (adrpost^.when, @day, @month, @year, @hour, @minute, @second); if lastday == -1 { //first time through loop lastday = day} else { if day != lastday { ctdays++; if ctdays == maxdays { break}; lastday = day}}}}; local (theDay, theMonth, theYear, theHour, theMinute, theSecond); date.get (adrpost^.when, @theDay, @theMonth, @theYear, @theHour, @theMinute, @theSecond); maxdate = date.set (theDay, theMonth, theYear, 0, 0, 0)}; if catname == nil { //check that the post is included on the home page loop { radio.weblog.getLastPostBeforeDate (adrblog, maxdate, adrAdrPost:@adrpost); if (adrpost == nil) or (adrpost^.flNotOnHomePage == false) { break} else { local (theDay, theMonth, theYear, theHour, theMinute, theSecond); date.get (adrpost^.when, @theDay, @theMonth, @theYear, @theHour, @theMinute, @theSecond); maxdate = date.set (theDay, theMonth, theYear, 0, 0, 0)}}} else { radio.weblog.getLastPostBeforeDate (adrblog, maxdate, adrAdrPost:@adrpost, catname:catname)}; if adrPost != nil { //only return a link if we actually have a post local (url); if radio.weblog.getUrlForPost (adrpost, @url, catname) { url = string.nthField (url, "#", 1); return ("<a href=\"" + url + "\" title=\"Click to view the previous archive page.\">" + linetext + "</a>")}}; return (linetext)}
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.