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

system.verbs.builtins.radio.macros.recentTitledBlogPosts

on recentTitledBlogPosts (maxposts=25, maxTitleLength=infinity, flIncludeWhen=true, catname="", cellspacing=0) {
	<<Changes
		<<11/11/02; 8:10:24 AM by DW
			<<As far as I know there is no "broder" attribute on an HTML <table> element. Changed it to "border."
		<<8/9/02; 6:45:43 PM by JES
			<<Render the link inside the div instead of rendering the div inside the link. Fixes non-compliant HTML.
		<<3/31/02; 2:23:49 PM by DW
			<<Optional param allows you to control cell spacing in the table. 
		<<3/29/02; 9:55:33 AM by DW
			<<Created. http://radio.userland.com/recentTitledBlogPosts
	local (adrdata = radio.weblog.init (), adrcat);
	if catname != "" { //set adrcat
		adrcat = @adrdata^.categories.[catname]};
	local (htmltext = "", indentlevel = 0);
	on add (s) {
		htmltext = htmltext + (string.filledstring ("\t", indentlevel) + s + "\r\n");};
	add ("<table cellpadding=\"0\" cellspacing=\"" + cellspacing + "\" border=\"0\">"); indentlevel++;
	on getDateString (when) { //customized version of radio.string.getDateString
		local (day, month, year, hour, minute, second);
		date.get (when, @day, @month, @year, @hour, @minute, @second);
		return (month + "/" + day + "/" + string.delete (year, 1, 2))};
	local (i, adrpost, ct = 0);
	for i = sizeof (adrdata^.posts) downto 1 {
		adrpost = @adrdata^.posts [i];
		if defined (adrpost^.title) {
			local (flinclude = true);
			if catname == "" { //generating list for the home page category
				if defined (adrpost^.flNotOnHomePage) {
					flinclude = not adrpost^.flNotOnHomePage}}
			else {
				if not (adrcat^.storylist contains number (nameof (adrpost^))) {
					flinclude = false}};
			if flinclude {
				local (title = adrpost^.title);
				if sizeof (title) > maxTitleLength {
					title = string.mid (title, 1, maxTitleLength) + "..."};
				local (url);
				radio.weblog.getUrlForPost (adrpost, @url, catname, adrdata);
				add ("<tr>"); indentlevel++;
				add ("<td><div class=\"recentPostTitle\"><a href=\"" + url + "\">" + title + "</a></div></td>");
				if flIncludeWhen {
					add ("<td align=\"right\" valign=\"top\"><div class=\"recentPostWhen\"> " + getDateString (adrpost^.when) + "</div></td>")};
				add ("</tr>"); indentlevel--;
				if ++ct > maxposts {
					break}}}};
	add ("</table>"); indentlevel--;
	return (htmltext)}
<<bundle //test code
	<<webbrowser.displaytext (recentTitledBlogPosts ())



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.