Monday, November 08, 2010 at 12:02 AM.
system.verbs.builtins.betty.macros.handleForm
<<http://www.scripting.com/frontier5/betty/apps/remoteAdmin.html
local (htmltext = "");
on add (s) {
htmltext = htmltext + s};
local (adrparent = parentOf (html.data.adrpagetable^.adrobject^));
local (adrdata = @adrparent^.["#data"]);
if not defined (adrdata^) {
new (tableType, adrdata)};
adrdata^.params = html.data.adrpagetable^;
local (adrdoctree = @adrdata^.doctree);
if html.data.adrpagetable^.method == "POST" {
local (request = html.data.adrpagetable^.requestBody);
local (i, ctfields = string.countFields (request, '&'), s);
for i = 1 to ctfields {
s = string.nthField (request, '&', i); //something like 2=UserLand+Software
try {
local (ixdoctree = number (string.nthField (s, '=', 1)));
local (valdoctree = string.urlDecode (string.nthField (s, '=', 2)));
valdoctree = string.replaceAll (valdoctree, "\"", "");
valdoctree = string.replaceAll (valdoctree, "<", "");
valdoctree = string.replaceAll (valdoctree, ">", "");
valdoctree = string.replaceAll (valdoctree, "{", "");
valdoctree = string.replaceAll (valdoctree, "}", "");
adrdoctree^ [ixdoctree].adr^ = valdoctree}
else {
add ("<b>" + tryError + "</b>")}}};
bundle { //build the forms
on oneForm (adritem, itemnum) {
add ("\t");
add ("<!-- " + adrItem^.adr + " -->");
add ("<b>" + adritem^.prompt + "</b><br>");
add ("<input name=\"" + itemnum + "\" value=\"" + adrItem^.adr^ + "\" size=30>");
add ("<p>\r")};
local (i, ct = sizeof (adrdoctree^));
add ("<form method=\"POST\" action=\"form.wsf\">\r");
for i = 1 to ct {
oneForm (@adrdoctree^ [i], i)};
add ("\t<input type=submit value=\"Submit\">\r");
add ("\t</form>\r")};
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.