Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.prefs.special.passwords
on passwords () {
<<Changes
<<1/8/02; 8:42:24 PM by JES
<<Commented out some debugging code.
<<12/4/01; 1:51:37 PM by DW
<<Changed the title of the first column to Password Name per Susan Kitchens' suggestion.
<<Add checkboxes to allow deletion of passwords.
local (pta = html.getpagetableaddress ());
<<scratchpad.radioparams = pta^.radioresponder
local (errorstrings = {});
if pta^.method == "POST" {
bundle { //first process the checkboxes
local (keepers, i, adr, name);
new (tabletype, @keepers);
for i = sizeof (pta^.radioresponder.postargs) downto 1 {
adr = @pta^.radioresponder.postargs [i];
if nameof (adr^) beginswith "cb/" {
name = string.delete (nameof (adr^), 1, 3);
keepers.[name] = user.radio.prefs.passwords.[name];
delete (adr)}};
user.radio.prefs.passwords = keepers};
bundle { //set the passwords for those that match
local (adr, name, adrpassword);
for adr in @pta^.radioresponder.postargs {
name = nameof (adr^);
adrpassword = @user.radio.prefs.passwords.[name];
if not (name contains ".") {
local (adrrepeat = @pta^.radioresponder.postargs.[name + ".repeat"]);
if adr^ == adrrepeat^ { //they match
if defined (adrpassword^) {
adrpassword^ = binary (adr^);
errorstrings = errorstrings + {""}}}
else {
if defined (adrpassword^) {
errorstrings = errorstrings + {"<font color=\"red\">Sorry, they don't match.</font>"}}}}}}};
local (htmltext = "", indentlevel = 0);
on add (s) {
htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"};
add ("<table cellspacing=\"0\" cellpadding=\"5\">"); indentlevel++;
add ("<tr><td> </td><td><b>Password Name</b> </td><td><b>Value</b></td><td><b>Repeat</b></td></tr>");
local (adr, input1, inputrepeat, ix = 1, es, checkbox);
for adr in @user.radio.prefs.passwords {
checkbox = "<input type=\"checkbox\" name=\"cb/" + nameof (adr^) + "\" value=xxx checked>";
input1 = "<input type=\"password\" name=\"" + nameof (adr^) + "\" size=\"20\" maxlength=\"100\" value=\"" + string (adr^) + "\">";
inputrepeat = "<input type=\"password\" name=\"" + nameof (adr^) + ".repeat\" size=\"20\" maxlength=\"100\" value=\"" + string (adr^) + "\">";
if ix <= sizeof (errorstrings) {
es = errorstrings [ix++]}
else {
es = ""};
add ("<tr><td>" + checkbox + "</td><td>" + nameof (adr^) + ": </td><td>" + input1 + "</td><td>" + inputrepeat + "</td><td>" + es + "</td></tr>")};
add ("</table>"); indentlevel--;
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.