Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.utilities.publishAllWeblogPages
<<11/16/01; 1:23:56 AM by JES
<<This script publishes all of your weblog pages, all of your category pages, and all of your category archive pages. It also publishes your weblog and category rss files.
<<Changes
<<11/17/01; 12:36:00 AM by JES
<<Fixed a bug that Lawrence found which caused category archive pages not to be published properly.
if not dialog.confirm ("Publish all of your weblog and category pages?") {
return (false)};
local (adrblog = radio.weblog.init ());
local (catsTable); new (tableType, @catsTable);
for i = 1 to sizeOf (adrblog^.categories) { //create a date-list for each category, set flDirty for each category
local (adrcat = @adrblog^.categories[i]);
local (catname = nameOf (adrcat^));
catsTable.[catName] = {};
adrcat^.flDirty = true};
local (datelist = {});
local (day, month, year, hour, minute, second);
local (adrpost);
for adrpost in @adrblog^.posts { //loop over posts, and determine which archive and category-archive days need to be published
date.get (adrpost^.when, @day, @month, @year, @hour, @minute, @second);
local (d = date.set (day, month, year, 0, 0, 0));
if not (datelist contains d) {
datelist = datelist + d};
if defined (adrpost^.categories) {
for i = 1 to sizeOf (adrpost^.categories) {
if adrpost^.categories[i] {
local (catname = nameOf (adrpost^.categories[i]));
if defined (catsTable.[catname]) { //the category still exists
catsTable.[catname] = catsTable.[catname] + d}}}}};
bundle { //publish the weblog home page
radio.weblog.publish (adrblog)};
bundle { //publish the weblog RSS
radio.weblog.publishRss (adrblog)};
bundle { //publish the weblog archive pages
local (d);
for d in datelist {
radio.weblog.publish (adrblog, d:d)}};
bundle { //publish all of the category index pages
for i = 1 to sizeOf (adrblog^.categories) {
radio.weblog.publish (adrblog, nameOf (adrblog^.categories[i]))}};
bundle { //publish all of the category archive pages
local (adrcatdates);
for adrcatdates in @catsTable {
local (catname = nameOf (adrcatdates^));
local (d);
for d in adrcatdates^ {
radio.weblog.publish (adrblog, catname, d)}}};
dialog.notify ("Your weblog and category pages have been published.")
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.