Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.adminSite.website.renewLicense
on renewLicense () { <<Changes <<9/17/03; 6:00:50 PM by JES <<Created. Source for the renew license page in the Frontier Admin site. local (pta = html.getpagetableaddress ()); local (htmltext = "", indentlevel = 0); on add (s) { htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r\n"}; local (errorMessage = "", flError = false); if pta^.method == "POST" { local (code = string.trimWhiteSpace (string.upper (pta^.postArgs.renewalCode))); if code == "" { //error flError = true; errorMessage = "Can't renew your license because no renewal code was entered."}; if not flError { on isValidRenewalCode (code) { try { local (server = "superhonker.userland.com"); local (port = 80); local (path = "RPC2"); local (method = "digitalRiver.renewLicense"); local (params = {string.upper (user.prefs.serialNumber), code} ); local (retval = betty.rpc.client (server, port, method, @params, rpcPath:path)); local (whenExpires = date (0 - number (base64.decode (retval))) ); userland.trialVersion.whenLicenseExpires = whenExpires; return (true)} else { //error errorMessage = tryerror; return (false)}}; if isValidRenewalCode (code) { //validate with the server mainResponder.redirect ("http://" + pta^.host + pta^.uri + "?confirm=true"); return ("")} else { flError = true; errorMessage = "Can't renew your license because an error occurred: " + errorMessage}}}; local (args); new (tableType, @args); webserver.parseArgs (pta^.searchArgs, @args); if defined (args.confirm) { //thank you page pta^.title = "Thank You"; add ("<p style=\"padding-top:15px;\">From all of us at UserLand, thank you for renewing your license!</p>"); add ("<p>Your license will now expire on " + date.shortString (userland.trialVersion.whenLicenseExpires) + "."); add ("<p>Click the Continue button to return to the Frontier Admin site.</p>"); add ("<p style=\"padding-top:15px;\"><form method=\"GET\" action=\"/\">"); add ("<input type=\"submit\" value=\"Continue\">"); add ("</form></p>")} else { //enter renewal code page pta^.title = "Renew Frontier License"; bundle { //descriptive text add ("<p>To renew your Frontier license, enter the renewal activation code that was sent to you in email when you purchased your renewal into the form below, and click the Submit button.</p>"); add ("<p>If you need to purchase a renewal code, please visit the <a href=\"http://frontier.userland.com/renewLicense?sn=" + user.prefs.serialNumber + "\">store website</a>, obtain a renewal activation code, and then enter it on this page. </p>")}; bundle { //add the form add ("<form method=\"POST\">"); indentlevel++; add ("<table cellspacing=\"10\" cellpadding=\"0\">"); indentlevel++; bundle { //form fields, submit button add ("<tr><td>Renewal code:</td><td><input type=text size=\"35\" name=\"renewalCode\" value=\"\"></td><td><input type=\"submit\" value=\"Submit\"></td></tr>")}; if flError { //show the error to the user add ("<tr><td> </td><td colspan=\"2\"><font color=\"red\">" + errorMessage + "</font></td></tr>")}; add ("</table>"); indentlevel--; add ("</form>"); 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.