Monday, November 08, 2010 at 12:06 AM.
system.verbs.builtins.userland.createDefaultSite
on createDefaultSite (siteName="createASiteManilaWebsite", password=nil, serverName=nil, displaySiteName=nil, tagline=nil, theme=nil, path="/", flHostingSite=false) { <<Changes <<8/21/02; 2:28:49 PM by JES <<Create a default Manila site. There may be more than one. Cribbed from userland.createDefaultIspSite. <<Return true if it gets created, return false if it already exists and thus doesn't get created. <<This is a wrapper for manilaSuite.clone. It's called from userland.finishInstall. if flHostingSite { //set up ISP prefs in config.root if not defined (config.manila.hosting) { new (tableType, @config.manila.hosting)}; if not defined (config.manila.hosting.sites) { new (tableType, @config.manila.hosting.sites)}; if not defined (config.manila.hosting.sites.default) { new (tableType, @config.manila.hosting.sites.default)}; config.manila.hosting.sites.default.baseDomain = serverName; config.manila.hosting.sites.default.canonicalSiteName = siteName; if not defined (config.manila.hosting.sites.default.flEditorsOnlyCreateSites) { config.manila.hosting.sites.default.flEditorsOnlyCreateSites = false}; if not defined (config.manila.hosting.sites.default.flSubSites) { config.manila.hosting.sites.default.flSubSites = true}}; if not defined (config.manila.prefs.hostingGdbName) { config.manila.prefs.hostingGdbName = "manilaWebsites.root"}; local (gdbName = config.manila.prefs.hostingGdbName); local (gdbPath = Frontier.getSubFolder ("www") + gdbName); if not (defined ([gdbPath])) { //is it already open? if file.exists (gdbPath) { fileMenu.open (gdbPath, true)} //it does, open it else { fileMenu.new (gdbPath); window.hide (@[gdbPath])}}; <<fileMenu.save (gdbPath) bundle { //add hosting gdb to user.databases local (adrTable = @user.databases.[gdbName]); if not defined (adrtable^) { new (tableType, adrTable)}; if not defined (adrTable^.f) { adrTable^.f = gdbPath}; if not defined (adrTable^.openOnStartup) { adrTable^.openOnStartup = true}; if not defined (adrTable^.runStartupScript) { adrTable^.runStartupScript = false}; if not defined (adrTable^.supportsIndexing) { adrTable^.supportsIndexing = true}; if not defined (adrTable^.supportsSubscribe) { adrTable^.supportsSubscribe = false}}; if file.exists (Frontier.getSubFolder ("www") + siteName + ".root") { //does the site already exist in a separate file? return (false)}; //the file exists local (dgName = siteName + "Discuss"); local (groupName = siteName + "Members"); local (sysopName = user.prefs.name); local (sysopEmail = user.prefs.mailAddress); local (sysopPassword); if password == nil { //create a new password local (i); for i = 1 to 12 { sysopPassword = sysopPassword + char (random ('A', 'Z'))}} else { sysopPassword = password}; if serverName == nil { //figure out the server name serverName = tcp.dns.getMyDomainName (); if not (serverName contains ".") { serverName = tcp.myDottedId ()}}; if not (path beginsWith "/") { path = "/" + path}; if not (path endsWith "/") { path = path + "/"}; local (siteUrl = "http://" + serverName + path); if theme == nil { //default to ISP2 theme theme = "ISP2"}; local (siteInfo); siteInfo = manilaSuite.clone (siteName, groupName, dgName, sysopEmail, sysopPassword, sysopName, siteUrl, false, true, true, gdbName, siteName, theme, false); delete (@siteInfo.adrSite^.["#navigator"].structure); bundle { //tag line, siteName, dg access local (adrSite = siteInfo.adrSite); if displaySiteName == nil { displaySiteName = siteName}; if tagline == nil { tagline = ""}; wp.newTextObject (tagline, @adrSite^.["#newsSite"].tagLine); adrSite^.["#newsSite"].siteName = displaySiteName; if flHostingSite { try {delete (@adrSite^.discuss.edit.["#members"])}; adrSite^.discuss.["#members"] = adrSite^.["#prefs"].defaultMembershipGroup}}; bundle { //set up the domain for this site mainResponder.siteTree.addSiteToTree ("default", path, siteInfo.adrSite, true, true)}; 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.