Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.commands.releaseTable
local (adrPageTable = @websites.["#data"]); local (adrSite = parentOf (table.getCursorAddress ()^)); local (flDisplayEachRendering = false); if not defined (adrSite^) { dialog.alert ("Can't publish table because the frontmost window is not contained by a table."); return (false)}; bundle { //prevent #-prefixed tables from being published <<Sun, May 3, 1998 at 6:03:44 PM by PBS on checkTable (adr) { <<Check if this object is or is enclosed by a table whose name begins with # local (nomad = adr); loop { if nomad == nil or nomad == @root { break}; if nameOf (nomad^) beginsWith "#" { return (false)}; nomad = parentOf (nomad^)}; return (true)}; if not checkTable (adrSite) { dialog.alert ("Can't publish \"" + nameOf (adrSite^) + "\" because it does not contain web pages."); return (false)}}; if not dialog.confirm ("Publish all web objects in \"" + nameof (adrSite^) + "\"?") { return (false)}; <<on publishTable (templateName = nil) //PBS 12/6/98: moved code to html.ftpTable <<local (f = "", url = "", siteTableAdr) <<local (flDisplay = true) <<html.callFileWriterStartup (adrSite, adrPageTable) <<on doTable (adrTable) <<local (i, ct = sizeOf (adrTable^), adr) <<for i = 1 to ct <<adr = @adrTable^ [i] <<window.msg (adr) <<if not html.traversalSkip (adr) <<if typeOf (adr^) == tableType <<doTable (adr) <<else <<local (s) <<s = html.buildObject (adr, adrPageTable, templateName) <<If this is the default page for this site, save the path. <<local (default = html.getPref ("defaultFileName", adrPageTable)) <<if string.lower (nameOf (adr^)) == string.lower (default) <<if f != "" and url != "" <<if adr == @adrPageTable^.adrSiteRootTable^.[default] <<f = adrPageTable^.f <<url = adrPageTable^.url <<else <<f = adrPageTable^.f <<url = adrPageTable^.url <<html.ftpText (s, adrPageTable) <<doTable (adrSite) <<html.callFileWriterShutdown (adrSite, adrPageTable) <<window.msg ("") << <<Should this page be displayed in the browser? <<if templateName != nil <<if not flDisplayEachRendering <<flDisplay = false << <<Display in browser. <<if flDisplay <<siteTableAdr = html.getSiteTable (adrPageTable) <<if f == "" or url == "" //didn't find default, get last page rendered <<f = adrPageTable^.f <<url = adrPageTable^.url <<if string.lower (html.getPref ("fileWriter")) == "file" <<webBrowser.openDocument (f) <<else <<webBrowser.openUrl (url) <<if user.webBrowser.bringToFrontOnPreview <<webBrowser.bringToFront () bundle { //are there additional templates that should be used? local (templateList = html.getExtraTemplates (adrSite)); if templateList { <<Get the displayEachRendering pref. flDisplayEachRendering = html.getPagePref ("displayEachRendering", adrSite, adrPageTable); <<Loop through list of templates. local (i); for i = 1 to sizeOf (templateList) { html.ftpTable (adrSite, false, flDisplayEachRendering, adrPageTable, templateList [i])}}}; <<Publish with the default template last. html.ftpTable (adrSite, false, true, adrPageTable); return (true)
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.