Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.shortcuts.editor
on editor () { <<Changes <<9/17/04; 1:53:28 PM by SK <<Bug fix to name the form and allow better compatibility with the WYSIWYG text editor <<10/12/02; 3:06:24 AM by JES <<Localized user interface elements. <<4/7/02; 6:29:22 PM by DW <<Latin-to-Mac stuff. <<4/2/02; 6:59:23 PM by DW <<Created. local (adrdata = radio.weblog.init ()); local (pta = html.getpagetableaddress ()); pta^.editingToolName = adrdata^.prefs.editingToolName; pta^.title = radio.string.getlocalizedstring ("shortcuts.title"); <<scratchpad.params = pta^ local (htmltext = "", indentlevel = 0); on add (s) { htmltext = htmltext + (string.filledstring ("\t", indentlevel) + s + "\r\n");}; local (adrtable = @adrdata^.shortcuts.personal, ctperpage = 25); local (initialname = "", initialvalue = "", buttonname = "shortcuts.newButton", nameitembeingedited = ""); on delatinize (s) { if system.environment.isMac { return (string.latinToMac (s))} else { return (s)}}; if pta^.method == "POST" { local (args = pta^.radioresponder.postargs); <<scratchpad.args = args; edit (@scratchpad.args) if defined (args.deleteShortcuts) { local (adr); delete (@args.deleteShortcuts); for adr in @args { delete (@adrtable^.[string.urldecode (delatinize (nameof (adr^)))])}} else { local (flchanged = false); if system.environment.isMac { //convert from Latin to Mac args.initialName = string.latinToMac (args.initialName); args.shortcutName = string.latinToMac (args.shortcutName); args.itemtext = string.latinToMac (args.itemtext)}; if args.shortcutName != args.initialName { if args.initialName != "" { if defined (adrtable^.[args.initialName]) { delete (@adrtable^.[args.initialName]); flchanged = true}}}; if args.shortcutName != "" { adrtable^.[args.shortcutName] = args.itemtext; //args.shortcutValue flchanged = true}; if flchanged { radio.shortcuts.merge ()}}}; if pta^.method == "GET" { if defined (pta^.radioresponder.getargs.itemToEdit) { initialname = pta^.radioresponder.getargs.itemToEdit; initialvalue = delatinize (adrtable^.[initialname]); buttonname = "shortcuts.editButton"; nameitembeingedited = initialname}}; bundle { //add intro, helplink local (helplink = radio.userInterface.helpLink ("The Shortcuts command")); add ("<p>" + radio.string.getlocalizedstring ("shortcuts.intro") + " " + helplink + "</p>")}; bundle { //add new shortcut form <<add ("<form method=\"POST\">"); indentlevel++ add (html.editor.formStart ("itemtext", pta:pta, name:"editPostForm")); indentlevel++; add ("<input type=\"hidden\" name=\"initialName\" value=\"" + initialname + "\">"); add ("<table cellspacing=\"0\" cellpadding=\"5\">"); indentlevel++; add ("<tr><td>" + radio.string.getLocalizedString ("shortcuts.namePrompt") + "</td><td><input name=\"shortcutName\" size=\"60\" value=\"" + initialname + "\"></td></tr>"); <<add ("<tr><td valign=\"top\">Value:</td><td><textarea name=\"shortcutValue\" rows=\"7\" cols=\"55\">" + initialvalue + "</textarea></td></tr>") add ("<tr><td valign=\"top\">" + radio.string.getLocalizedString ("shortcuts.valuePrompt") + "</td><td width=\"550\">" + radio.userInterface.editorbox (radio.html.translateToEntities (initialvalue), ctcols:40) + "</td></tr>"); add ("<tr><td> </td><td valign=\"top\"><input type=\"submit\" value=\"" + radio.string.getlocalizedstring (buttonname) + "\"></td></tr>"); add ("</table>"); indentlevel--; add ("</form>"); indentlevel--}; bundle { //list the existing shortcuts add ("<p>" + radio.string.getlocalizedstring ("shortcuts.shortcutListIntro") + "</p>"); if sizeof (adrtable^) > 0 { local (editbuttonimg = radio.images.systemImageRef ("icons/editbutton", flFileUrl:pta^.radioResponder.flSameMachine)); local (ctpages); bundle { //set ctpages ctpages = sizeof (adrtable^) / ctperpage; if sizeof (adrtable^) > (ctpages * ctperpage) { ctpages++}}; local (pagenum); bundle { //set pagenum pagenum = 1; try {pagenum = number (pta^.radioResponder.getArgs.page)}; if pagenum < 1 { pagenum = 1}}; local (pagenumstring = ""); bundle { //set pagenumstring if ctpages > 1 { local (s = "<b>Pages:</b> ", i); for i = 1 to ctpages { if i == pagenum { s = s + "<b>" + i + "</b> "} else { s = s + "<a href=\"?page=" + i + "\">" + i + "</a> "}}; pagenumstring = s}}; add ("<p>" + pagenumstring + "</p>"); local (i); add ("<form method=\"POST\">"); indentlevel++; add ("<table cellspacing=\"0\" cellpadding=\"0\"><tr bgcolor=\"" + radio.data.htmlColors.framecolor + "\"><td>"); indentlevel++; add ("<table cellpadding=\"5\" cellspacing=\"1\" border=\"0\">"); indentlevel++; bundle { //add column headers add ("<tr bgcolor=\"#" + gainsboro + "\"><td> </td><td><b>" + radio.string.getLocalizedString ("shortcuts.whatYouType") + "</b></td><td><b>" + radio.string.getLocalizedString ("shortcuts.whatYouGet") + string.filledstring (" ", 65) + "</b></td><td> </td></tr>")}; local (ixlast = (pagenum * ctperpage)); if ixlast > sizeof (adrtable^) { ixlast = sizeof (adrtable^)}; local (ixfirst = ((pagenum - 1) * ctperpage) + 1); if ixfirst < 1 { ixfirst = 1}; local (adritem, name, checkbox, urlencodedname); for i = ixfirst to ixlast { adritem = @adrtable^ [i]; name = nameof (adritem^); urlencodedname = string.urlencode (name); if name == nameitembeingedited { add ("<tr bgcolor=\"#" + radio.data.htmlColors.highlightColor + "\">"); indentlevel++} else { add ("<tr bgcolor=\"#" + radio.data.htmlColors.cellBgColor + "\">"); indentlevel++}; bundle { //set checkbox checkbox = "<input type=\"checkbox\" name=\"" + urlencodedname + "\" value=xxx>"}; editurl = "?itemToEdit=" + urlencodedname + "&page=" + pagenum + "&cacheConfuser=" + random (1, 32767); add ("<td valign=\"top\">" + checkbox + "</td><td valign=\"top\" nowrap>\"" + name + "\" </td><td valign=\"top\">" + adritem^ + " </td><td valign=\"top\"><a href=\"" + editurl + "\">" + editbuttonimg + "</a></td>"); add ("</tr>"); indentlevel--}; add ("</table>"); indentlevel--; add ("</td></tr></table>"); indentlevel--; add ("<br><input type=\"submit\" name=\"deleteShortcuts\" value=\"" + radio.string.getlocalizedstring ("shortcuts.deleteButton") + "\">"); add ("</form>"); indentlevel--} else { add ("<p><i>" + radio.string.getlocalizedstring ("shortcuts.personalTableIsEmpty") + "</i></p>")}}; return (htmltext)} <<bundle //test code <<html.setpagetableaddress (@scratchpad.params) <<editor ()
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.