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.