Monday, April 04, 2011 at 1:06 AM.
river2Suite.static.afterScan
on afterScan () { <<Changes <<4/1/11; 7:43:39 PM by DW <<If no files were rebuilt, no need to log it. :-) <<3/27/11; 1:46:15 PM by DW <<New pref adrdata^.prefs.static.flBuildMainUser determines if the static pages for the "main" user gets built. In the next rev of River2 this user is virtually non-existent (maybe totally) so I defaulted this to false. <<3/27/11; 11:37:17 AM by DW <<Get time readings. <<2/8/11; 8:58:56 AM by DW <<Respect flBeautifulIsIndex. <<2/4/11; 4:53:31 PM by DW <<Build beautiful rivers. <<12/5/10; 4:44:28 PM by DW <<Build the JSON versions of the news flow. <<11/17/10; 2:47:50 PM by DW <<Log the static builds. <<11/7/10; 4:23:21 PM by DW <<Call river2Suite.static.bindReadingListToUser before building static pages for each user. This way a reading list can be associated with a user, and completely determine the feeds the user follows. Makes managing lots of static pages from one River2 server possible just using the outliner to subscribe and unsubscribe. <<5/4/10; 10:26:17 AM by DW <<Build index.opml and index.js. <<5/4/10; 5:47:21 AM by DW <<Build the JavaScript include for each user if the feature is enabled. <<4/27/10; 10:13:51 AM by DW <<Save the OPML file for each user who has the feature enabled. <<3/26/10; 8:27:37 AM by DW <<Render a static page for each user who has the feature enabled. <<3/17/10; 8:22:15 PM by DW <<Created. local (adrdata = river2suite.init (), startticks = clock.ticks (), ctfiles = 0, fldebug = false); on addtimingnote (s) { //debugging code if fldebug { local (tc = clock.ticks (), secs = string.formatDouble (double (tc - lastticks) / 60, 2)); op.insert (s + " -- " + secs + " secs.", insertdir); insertdir = down; lastticks = clock.ticks ()}}; if fldebug { local (adrtimingoutline = @scratchpad.timingoutline, lastticks = clock.ticks (), insertdir = right); new (outlinetype, adrtimingoutline); target.set (adrtimingoutline); edit (adrtimingoutline); op.setlinetext (string.popfilefromaddress (this))}; if adrdata^.prefs.static.flBuildMainUser { //3/27/11 by DW if not adrdata^.prefs.beautifulRiver.flBeautifulIsIndex { river2Suite.static.buildOnePage (@river2Website.index); ctfiles++; addtimingnote ("Built plain home page")}; river2Suite.static.buildOpml (nil); ctfiles++; addtimingnote ("Main OPML"); //build index.opml -- 5/4/10 by DW river2Suite.static.buildJavaScriptInclude (nil); ctfiles++; addtimingnote ("Main JavaScript include"); river2Suite.static.buildJsonNews (nil); ctfiles++; addtimingnote ("Main JSON news"); river2Suite.static.buildBeautifulRiver (nil); ctfiles++; addtimingnote ("Main beautiful river")}; //2/4/11 by DW local (updates = adrdata^.stats.updatedFeeds); //3/27/11 by DW new (tabletype, @adrdata^.stats.updatedFeeds); for adruser in @adrdata^.users { river2suite.inituser (adruser); river2Suite.static.bindReadingListToUser (adruser); //11/7/10 by DW if adruser^.prefs.static.enabled { if river2Suite.static.userNeedsBuild (adruser, @updates) { //3/27/11 by DW local (username = nameof (adruser^)); if not adruser^.prefs.beautifulRiver.flBeautifulIsIndex { river2Suite.static.buildOnePage (@river2Website.index, adruser); ctfiles++; addtimingnote (username + " plain home page")}; river2Suite.static.buildOpml (adruser); ctfiles++; addtimingnote (username + " OPML"); //4/27/10 by DW if adruser^.prefs.static.flBuildJavaScriptInclude { river2Suite.static.buildJavaScriptInclude (adruser); ctfiles++; addtimingnote (username + " JavaScript include")}; //5/4/10 by DW river2Suite.static.buildJsonNews (adruser); ctfiles++; addtimingnote (username + " JSON news"); //5/4/10 by DW river2Suite.static.buildBeautifulRiver (adruser); ctfiles++; addtimingnote (username + " beautiful river")}}}; //2/4/11 by DW if ctfiles > 0 { //4/1/11 by DW log2.add (river2Info.name, "Static", "Built " + ctfiles + " static files.", startticks)}}; bundle { //test code afterScan ()}
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.