Monday, November 08, 2010 at 12:05 AM.

on renewLicense () {
		<<12/26/02; 1:10:57 PM by JES
			<<Run the Renew License page.
	local (pta = html.getPageTableAddress ());
	local (htext = "");
	on add (s) {
		htext = htext + (s + "\r");};
	if pta^.method == "POST" { //process a POST
		local (adrargs = @pta^.radioResponder.postArgs);
		if defined (adrargs^.enterRenewalCode) {
			local (domain = "");
			local (code = string.upper (adrargs^.renewalCode));
			try { //contact UserLand, verify the code, and get new expiration date
				bundle { //renew the license
					local (params = {, code}, retval, whenExpires);
					retval = xml.rpc (domain, 80, "digitalRiver.renewLicense", @params, rpcPath:"/RPC2", flShowMessages:false);
					whenExpires = 0 - number (base64.decode (retval)); = whenExpires};
				pta^.title = radio.string.getLocalizedString ("renewLicense.confirmTitle");
				return (radio.string.getLocalizedString ("renewLicense.confirm"))}
			else { //error
				pta^.title = radio.string.getLocalizedString ("renewLicense.itDidntWork");
				local (s = radio.string.getLocalizedString ("renewLicense.error"));
				local (error = tryerror);
				if error contains domain { //pop off the rpc part of the message
					local (ix = string.patternMatch (":", error));
					error = string.delete (error, 1, ix)};
				return (string.replace (s, "<%errorMessage%>", error))}}};
	bundle { //add the form text
		pta^.title = radio.string.getLocalizedString ("renewLicense.title");
		local (s = radio.string.getLocalizedString ("renewLicense.text"));
		add (string.replace (s, "<%serialNumber%>", string.padWithZeros (, 7)))};
	return (htext)}

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.