Monday, November 08, 2010 at 12:02 AM.
system.verbs.apps.WebStar.root.loadSite
on loadSite (folder) { local (fldbverbs = false, rootf); if fldbverbs { rootf = "macintosh hd:apps:webstar:webstar.root"; db.open (rootf, false)}; local (server = webstar.id, ctfiles = 0); on getOdbName (s) { return (string.replaceAll (s, ".", "$"))}; on newTable (tablepath) { if fldbverbs { db.newTable (rootf, tablepath)} else { webstar.root.newTable (server, tablepath)}}; on isDefined (path) { if fldbverbs { db.defined (rootf, path)} else { webstar.root.defined (server, tablepath)}}; on newObject (pagepath, value, mimetype) { rollBeachball (); if fldbverbs { msg (pagepath); db.newTable (rootf, pagepath); db.setValue (rootf, pagepath + ".data", value); db.setValue (rootf, pagepath + ".mime", mimetype)} else { webstar.root.newObject (server, pagepath, value, mimetype)}}; on save () { msg ("Saving..."); if fldbverbs { db.save ()} else { webstar.root.save (server)}; msg ("")}; on loadFolder (folder, parentpath) { local (tablename = getOdbName (file.fileFromPath (folder) - ":")); local (tablepath = parentpath + tablename); newTable (tablepath); local (f); fileloop (f in folder) { if file.isFolder (f) { loadFolder (f, tablepath + ".")} else { local (fname = file.fileFromPath (f)); local (suffix); bundle { <<figure out what the file's suffix is suffix = "." + string.nthfield (fname, '.', string.countfields (fname, '.'))}; local (ct = sizeof (suffix)); local (pagename = string.delete (fname, sizeof (fname) - ct + 1, ct)); pagename = getOdbName (pagename); local (pagepath = tablepath + "." + pagename); msg (pagepath); local (s = string (file.readWholeFile (f))); local (mime = "text/html"); case string.lower (suffix) { ".txt"; ".text"; ".html" { mime = "text/html"}; ".gif" { mime = "image/gif"}; ".hqx" { mime = "application/mac-binhex40"}; ".jpeg"; ".jpg" { mime = "image/jpeg"}; ".pict" { mime = "image/pict"}; ".au" { mime = "audio/basic"}; ".aiff" { mime = "audio/x-aiff"}; ".xbm" { mime = "image/x-xbm"}; ".mov" { mime = "video/quicktime"}; ".mpeg" { mime = "video/mpeg"}; ".word" { mime = "application/msword"}; ".xl" { mime = "application/excel"}; ".sit" { mime = "application/x-stuffit"}; ".pdf" { mime = "application/pdf"}}; <<if isDefined (pagepath) <<finder.reveal (f) <<scriptError ("This file would replace a page that's already in the odb. Please rename the file or delete it from the website folder.") newObject (pagepath, s, mime); ctfiles++}}}; loadFolder (folder, "odb."); save (); if fldbverbs { db.close (rootf)}; return (ctfiles)}; bundle { <<test code <<file.filteredcopy ("Internal:Apps:WebStar:frontier:", "Jaz Disk 1:frontier:", @msg) <<loadsite ("Macintosh HD:Apps:WebStar:frontier:") loadsite ("Internal:Apps:WebStar:docserver:")}
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.