Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.upstream.builtinDrivers.xmlStorageSystem.configPage
on configPage (adrfolder, adrspec) { <<Changes <<10/23/01; 1:45:35 AM by JES <<Changed <account> to <usernum>. Don't register with the server here. You must be registered already. local (pta = html.getPageTableAddress ()); pta^.title = "Upstream Settings"; local (htmltext = ""); on add (s) { htmltext = htmltext + s + "\r"}; local (adrdata = @temp.radio.upstreamSettingsForm); //temp storage for the prefs browser new (tableType, adrdata); bundle { //cleanup items in the pageTable for the prefs browser if pta^.method == "POST" { local (adrargs = @pta^.radioResponder.postArgs); if defined (adrargs^.command) { case adrargs^.command { "postUpstreamSettings" { //clean up custom items in the post args delete (@adrargs^.command); table.rename (@adrargs^.passwordName, "temp.radio.upstreamSettingsForm.passwordName"); table.rename (@adrargs^.rpcProtocol, "temp.radio.upstreamSettingsForm.protocol")}; "upstreamSettings" { pta^.method = "GET"}}}}}; //tell the prefs browser not to treat this as a POST if adrspec == nil { //get default settings if defined (user.radio.prefs.usernum) { adrdata^.usernum = user.radio.prefs.usernum} else { //empty string adrdata^.usernum = ""}; adrdata^.name = user.prefs.name; adrdata^.passwordName = nameOf (user.radio.prefs.passwords[1]); local (adrdefaults = @xmlStorageSystem.data); adrdata^.server = adrdefaults^.server; adrdata^.port = adrdefaults^.port; adrdata^.protocol = adrdefaults^.protocol; adrdata^.rpcPath = adrdefaults^.rpcPath; adrdata^.soapAction = adrdefaults^.soapAction} else { //get settings from the cached spec if defined (adrdata^.usernum) { adrdata^.usernum = usernum} else { //Grandfather in old element names, if present. Otherwise default to user.radio.prefs.usernum, or the empty string. if defined (adrdata^.account) { adrdata^.usernum = adrspec^.account} else { if defined (adrdata^.email) { //support the older #upsteram.xml spec adrdata^.usernum = adrspec^.email} else { if defined (user.radio.prefs.usernum) { adrdata^.usernum = user.radio.prefs.usernum} else { adrdata^.usernum = ""}}}}; adrdata^.name = adrspec^.name; adrdata^.passwordName = adrspec^.passwordName; adrdata^.server = adrspec^.server; adrdata^.port = adrspec^.port; adrdata^.protocol = adrspec^.protocol; if defined (adrspec^.xmlRpcPath) { //legacy support for old xmlRpcPath element adrdata^.rpcPath = adrspec^.xmlRpcPath}; if defined (adrspec^.rpcPath) { adrdata^.rpcPath = adrspec^.rpcPath}; adrdata^.soapAction = adrspec^.soapAction}; local (folder = nameOf (adrfolder^), folderlink); bundle { //build folderlink local (parentfolder = file.folderfrompath (user.radio.prefs.wwwfolder)); local (foldername = string.replaceall (string.delete (folder, 1, sizeof (parentfolder)), file.getpathchar (), "/")); local (folderpath = string.replaceall (string.delete (folder, 1, sizeof (user.radio.prefs.wwwfolder)), file.getpathchar (), "/")); folderpath = string.replaceAll (folderpath, file.getPathChar (), "/"); folderlink = "<a href=\"/" + folderpath + "?folderView=1\">" + foldername + "</a>"}; htmltext = string.replace (radio.prefs.browser ("prefsWizardUpstreamXss.opml"), "[[folder]]", folderlink); if pta^.method == "POST" { //handle a post of the prefs form local (adrargs = @pta^.radioResponder.postArgs); bundle { //write out the #upstream.xml file local (f = folder + radio.data.fileNames.upstreamFileName); local (adrdriver = parentOf (this^)); with adrdata^ { adrdriver^.saveUpstreamSpec (f, usernum, name, passwordName, protocol, server, port, rpcPath, soapAction)}}; <<bundle //register with the server <<with adrdata^ <<local (greeting) <<try //trap errors <<local (spec = adrspec^) <<spec.fldebug = false <<if xmlStorageSystem.register (account, user.radio.prefs.passwords.[passwordname], name, @greeting, @spec) <<htmltext = "<p><font color=\"darkblue\">The server said: " + greeting + "</font></p>\r" + htmltext <<bundle //invalidate the cache for all files in this folder <<local (adr) <<for adr in @user.radio.settings.files <<local (name = nameOf (adr^)) <<if name beginsWith folder <<adr^.modified = date (0) <<adr^.upstream.url = "" <<adr^.upstream.whenLastUploaded = date (0) <<else //the server reported an error <<htmltext = "<p><font color=\"red\">The server reported an error: " + greeting + "</font></p>\r" + htmltext <<else //show the error to the user <<htmltext = "<p><font color=\"red\">Error connecting to the server: " + tryError + "</font></p>\r" + htmltext delete (adrdata)}; //delete temporary storage 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.