Monday, November 08, 2010 at 12:03 AM.
system.verbs.builtins.html.ftpTable
on ftpTable (adrTable, flDialog=true, flDisplayInBrowser=false, adrPageTable=nil, template=nil) { <<Publish an entire table and its subtables. <<When rendering scalable content, call html.ftpTable multiple times, <<each time with a different template parameter. <<(To use the default template, don't pass a template parameter, <<or pass nil.) local (f = "", url = "", siteTableAdr); local (flDisplay = true, pageTable); if adrPageTable == nil { new (tableType, @pageTable); adrPageTable = @pageTable}; html.callFileWriterStartup (adrTable, 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); table.emptyTable (adrPageTable); s = html.buildObject (adr, adrPageTable, template); if flDisplayInBrowser { <<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 (adrTable); html.callFileWriterShutdown (adrTable, adrPageTable); window.msg (""); <<Display in browser. if flDisplayInBrowser { 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 ()}}; <<Show a dialog. if flDialog { speaker.beep (); //4.2.1 dialog.notify ("The \"" + nameOf (adrTable^) + "\" table has been published.")}; //4.2.1 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.