Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.html.viewPasswords
on viewPasswords (pta = nil) { if pta == nil { pta = html.getPageTableAddress ()}; local (htmltext = "", indentlevel = 0, passwordName = "", action = "", buttonText = "Add", flEdit = false, errorString = ""); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"}; on helpLink (section) { return (radio.userInterface.helpLink ("passwords#" + section))}; local (adrdata = @user.radio.prefs.passwords); if defined (pta^.searchArgs) { action = "?" + pta^.searchArgs; //preserve searchArgs local (args); new (tableType, @args); webserver.parseArgs (pta^.searchArgs, @args); if defined (args.command) { case args.command { "editPassword" { if defined (args.passwordName) { if defined (adrdata^.[args.passwordName]) { passwordName = string.urlDecode (args.passwordName); buttonText = "Submit"; flEdit = true}}}}}}; if pta^.method == "POST" { //handle deleting or adding passwords local (adrargs = @pta^.radioResponder.postArgs); <<scratchpad.args = adrargs^; edit (@scratchpad.args) if defined (adrargs^.createPassword) { passwordName = adrargs^.passwordName; local (adrpassword = @adrdata^.[passwordName]); if defined (adrargs^.originalPassword) { //the user is updating an existing password flEdit = true; if defined (adrpassword^) { if adrargs^.originalPassword == adrpassword^ { if sizeOf (adrargs^.password) > 3 { if adrargs^.password == adrargs^.repeatPassword { adrpassword^ = adrargs^.password} else { errorString = "Can't edit the password, '" + passwordName + "', because the new password doesn't match the repeat password."}} else { errorString = "Can't set the new password because it is not at least four characters long."}} else { errorString = "Can't edit the password, '" + passwordName + "', because the original password you entered is incorrect."}} else { errorString = "Can't edit the password, '" + passwordName + "', because no password with that name exists."}} else { //the user is creating a new password if sizeOf (adrargs^.password) > 3 { if adrargs^.password == adrargs^.repeatPassword { adrpassword^ = adrargs^.password} else { errorString = "Can't create the password, '" + passwordName + "', because the password doesn't match the repeat password."}} else { errorString = "Can't create the password because it is not at least four characters long."}}}}; add ("<form method=\"POST\" action=\"" + action + "\">"); indentlevel++; bundle { //add the password entry form add ("To create a new password, type the name of the password, and the password itself into the form below.<p>"); add ("<blockquote>"); indentlevel++; add ("<table>"); indentlevel++; if errorString != "" { add ("<tr><td colspan=\"3\"><font color=\"red\">" + errorString + "</font><br> </td></tr>")}; add ("<tr>"); indentlevel++; add ("<td align=\"right\">" + "Password name:</td>"); add ("<td valign=\"top\"><input type=\"text\" name=\"passwordName\" size=\"35\" maxlength=\"255\" value=\"" + passwordName + "\"></td>"); add ("<td><input type=\"submit\" name=\"createPassword\" value=\"" + buttonText + "\"></td>"); add ("</tr>"); indentlevel--; if flEdit { add ("<tr>"); indentlevel++; add ("<td align=\"right\">" + "Original password:</td>"); add ("<td valign=\"top\"><input type=\"password\" name=\"originalPassword\" size=\"12\" maxlength=\"255\" value=\"\"></td>"); add ("</tr>"); indentlevel--}; add ("<tr>"); indentlevel++; if flEdit { add ("<td align=\"right\">" + "New password:</td>")} else { add ("<td align=\"right\">" + "Password:</td>")}; add ("<td valign=\"top\" colspan=\"2\"><input type=\"password\" name=\"password\" size=\"12\" maxlength=\"255\" value=\"\"></td>"); add ("</tr>"); indentlevel--; add ("<tr>"); indentlevel++; add ("<td align=\"right\">" + "Repeat:</td>"); add ("<td valign=\"top\"><input type=\"password\" name=\"repeatPassword\" size=\"12\" maxlength=\"255\" value=\"\"></td>"); add ("<td colspan=\"3\" align=\"right\">" + helpLink ("addPassword") + "</td>"); add ("</tr>"); indentlevel--; add ("</table>"); indentlevel--; add ("</blockquote>"); indentlevel--}; bundle { //add the text at the top of the page add ("The following table lists your passwords by name. To delete a password, check the box to its left, and then click on the Delete button. You can edit a password by clicking its Edit button. " + helpLink ("passwordList") + "<p>")}; add ("<blockquote>"); indentlevel++; add ("<table><tr>"); indentlevel++; add ("<td>"); indentlevel++; bundle { //add passwords table add ("<table cellspacing=\"0\" cellpadding=\"0\"><tr bgcolor=\"" + radio.data.htmlColors.framecolor + "\"><td>"); indentlevel++; add ("<table border=\"0\" cellspacing=\"1\" cellpadding=\"5\">"); indentlevel++; local (adr, ct = 0); for adr in adrdata { local (name = nameOf (adr^)); add ("<tr bgcolor=\"" + radio.data.htmlColors.cellbgcolor + "\">"); indentlevel++; bundle { //add checkbox local (name = nameof (adr^)); local (checkboxval = "\"xxx\""); if false { checkboxval = checkboxval + " checked"}; add ("<td valign=\"top\"><input type=\"checkbox\" name=\"" + name + "\" value=" + checkboxval + "></td>"); add ("<td valign=\"top\" nowrap>" + name + "</td>"); add ("<td valign=\"top\" title=\"Click to edit this password.\"><a href=\"?command=editPassword&passwordName=" + name + "\">" + radio.images.systemImageRef ("icons/editButton") + "</a></td>")}; add ("</tr>"); indentlevel--}; add ("</table>"); indentlevel--; add ("</td></tr></table>"); indentlevel--}; add ("</td>"); indentlevel--; add ("<td valign=\"top\"> <input type=\"submit\" name=\"delete\" value=\"Delete\"></td>"); add ("</tr></table>"); indentlevel--; add ("</blockquote>"); indentlevel--; add ("</form>"); indentlevel--; return (htmltext)} <<bundle //debugging <<viewPasswords (@scratchpad.paramTable)
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.