Monday, November 08, 2010 at 12:04 AM.

system.verbs.builtins.mainResponder.controlPanel.newSite

<<Updated for 6.2 -- now uses the createSiteForm macro in Manila. It's the exact same form that appears on the top-level hosting site.
	<<07/11/00; 6:23:42 PM by PBS
manilaSuite.init (); //PBS 07/11/00: make sure hosting prefs are set up
local (pta = html.getPageTableAddress ());
pta^.title = "Create a New Site";
pta^.activeUrls = false;
return (manilaSuite.hosting.createSiteForm ())
<<Old code:
	<<local (flPost = false)
	<<if string.lower (pta^.method) == "post"
		<<flPost = true
	<<
	<<if not defined (config.manila)
		<<new (tableType, @config.manila)
	<<if not defined (config.manila.sites)
		<<new (tableType, @config.manila.sites)
	<<if not defined (config.manila.prefs)
		<<new (tableType, @config.manila.prefs)
	<<if not defined (config.manila.prefs.baseUrl)
		<<config.manila.prefs.baseUrl = "http://" + tcp.myDottedId () + "/"
	<<local (baseUrl = config.manila.prefs.baseUrl)
	<<
	<<pta^.title = "Create a New Site"
	<<
	<<local (htmlText = "")
	<<
	<<on add (s)
		<<htmlText = htmlText + s
	<<
	<<on createForm (siteName="", name="", email="", password="", errorMessage="")
		<<local (formText = string (pta^.tools^.defaultForm))
		<<formText = string.replaceAll (formText, "[baseUrl]", string.replace (baseUrl, "://", ":\\//"))
		<<formText = string.replaceAll (formText, "[siteName]", siteName)
		<<formText = string.replaceAll (formText, "[sysopName]", name)
		<<formText = string.replaceAll (formText, "[sysopEmail]", email)
		<<formText = string.replaceAll (formText, "[sysopPassword]", password)
		<<
		<<if errorMessage != ""
			<<errorMessage = "<font color=\"red\">" + errorMessage + "</font><p>"
		<<formText = string.replace (formText, "[errormessage]", errorMessage)
		<<return (formText)
	<<
	<<if flPost
		<<local (siteName = pta^.postArgs.siteName)
		<<local (sysopName = pta^.postArgs.sysopName)
		<<local (sysopEmail = pta^.postArgs.sysopEmailAddress)
		<<local (sysopPassword = pta^.postArgs.sysopPassword)
		<<local (confirmSysopPassword = pta^.postArgs.confirmSysopPassword)
		<<
		<<if sysopPassword != confirmSysopPassword
			<<htmlText = htmlText + createForm (siteName, sysopName, sysopEmail, "", "Can't create a new site because the password and confirmation password did not match.")
		<<else
			<<Make sure another site with this same name doesn't exist.
			<<local (flExists = false)
			<<if defined (config.manila.sites.[siteName])
				<<flExists = true
			<<local (wwwFolder = Frontier.getSubFolder ("www"))
			<<local (f = wwwFolder + siteName + "ManilaWebsite.root")
			<<if file.exists (f)
				<<flExists = true
			<<
			<<if flExists
				<<local (errorMessage = "A site with the name \"" + siteName + "\" already exists. Please choose another name.<p>")
				<<add (createForm (siteName, sysopName, sysopEmail, sysopPassword, errorMessage))
			<<else //create the site
				<<local (membershipGroupName = siteName + "Members")
				<<local (discussionGroupName = siteName + "Discuss")
				<<local (siteUrl)
				<<local (partsList = string.urlSplit (baseUrl))
				<<local (serverName = partsList [2])
				<<serverName = string.nthField (serverName, ':', 1)
				<<local (path = partsList [3])
				<<local (port = user.inetd.config.http.port)
				<<if port != 80
					<<serverName = serverName + ":" + port
				<<siteUrl = "http://" + serverName + "/" + partsList [3]
				<<siteUrl = string.popTrailing (siteUrl, '/')
				<<siteUrl = siteUrl + "/"
				<<siteUrl = siteUrl + siteName + "/"
				<<flAddToDomains = false
				<<flAddToUserDatabases = true
				<<local (siteInfoTable)
				<<siteInfoTable = manilaSuite.clone (siteName + "ManilaWebsite", membershipGroupName, discussionGroupName, sysopEmail, sysopPassword, sysopName, siteUrl, flAddToDomains, flAddToUserDatabases)
				<<mainResponder.redirect (siteUrl)
	<<else //create the default form
		<<htmlText = htmlText + createForm ()
	<<
	<<return (htmlText)



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.