Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.html.createTheme
<<Changes
<<6/21/02; 2:32:21 PM by JES
<<Added a help link, which links to the How to create a Theme page.
<<12/31/01; 3:01:25 AM by JES
<<Created. Render a page that allows the user to turn their site into a Theme.
local (htmltext, indentlevel=0);
on add (s) {
htmltext = htmltext + string.filledstring ("\t", indentlevel) + s + "\r"};
local (pta = html.getPageTableAddress ());
pta^.title = radio.string.getLocalizedString ("createTheme.title");
local (adrblog = radio.weblog.init ());
local (confirmMessage = "");
if pta^.method == "POST" {
local (adrargs = @pta^.radioResponder.postArgs);
<<scratchpad.args = adrargs^; edit (@scratchpad.args)
if defined (adrargs^.createTheme) { //create the theme file, and save it in the Themes folder
local (name = adrargs^.themeName);
local (author = adrargs^.author);
local (authorEmail = adrargs^.authorEmail);
local (description = adrargs^.description);
local (siteUrl = radio.weblog.getUrl ());
if defined (adrargs^.siteUrl) {
siteUrl = adrargs^.siteUrl};
local (theme);
radio.theme.create.main (@theme, name, author:author, authorEmail:authorEmail, description:description, siteurl:siteUrl);
local (f = radio.theme.getThemeFilePath (name));
radio.theme.exportThemeFile (f, @theme);
local (t); new (tableType, @t);
t.name = name;
confirmMessage = radio.string.getlocalizedstring ("createTheme.themeCreatedConfirm", @t)}};
bundle { //render the Create Theme form
local (helplink = radio.userInterface.helpLink ("How to create a Theme"));
bundle { //description
add ("<p>" + radio.string.getlocalizedstring ("createTheme.description") + " " + helplink + "</p>")};
bundle { //confirmation message
if sizeOf (confirmMessage) > 0 {
add ("<font color=\"navy\">" + confirmMessage + "</font><br><br>")}};
bundle { //the form
add ("<form method=\"POST\">");
add ("<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\">");
bundle { //name field
add ("<tr><td>" + radio.string.getlocalizedstring ("createTheme.themeNamePrompt") + "</td>");
add ("<td><input type=\"text\" name=\"themeName\" size=\"50\" maxlength=\"50\" value=\"" + adrblog^.prefs.title + "\"></td></tr>")};
bundle { //author field
add ("<tr><td>" + radio.string.getlocalizedstring ("createTheme.authorPrompt") + "</td>");
add ("<td><input type=\"text\" name=\"author\" size=\"50\" maxlength=\"50\" value=\"" + user.prefs.name + "\"></td></tr>")};
bundle { //author email field
add ("<tr><td>" + radio.string.getlocalizedstring ("createTheme.authorEmailPrompt") + "</td>");
add ("<td><input type=\"text\" name=\"authorEmail\" size=\"50\" maxlength=\"50\" value=\"" + user.prefs.mailAddress + "\"></td></tr>")};
bundle { //if you're a system editor, you also get a siteUrl field
if user.radio.prefs.flSystemEditor {
add ("<tr><td>" + radio.string.getlocalizedstring ("createTheme.siteUrlPrompt") + "</td>");
add ("<td><input type=\"text\" name=\"siteUrl\" size=\"50\" maxlength=\"255\" value=\"" + radio.weblog.getUrl () + "\"></td></tr>")}};
bundle { //description textarea
add ("<tr><td>" + radio.string.getlocalizedstring ("createTheme.descriptionPrompt") + "</td>");
add ("<td><textarea name=\"description\" cols=\"50\" rows=\"5\"></textarea></td></tr>")};
bundle { //create theme button
add ("<tr><td> </td><td style=\"padding-top:14px\"><input type=\"submit\" name=\"createTheme\" value=\"" + radio.string.getlocalizedstring ("createTheme.createThemeButton") + "\"></td></tr>")};
add ("</table>");
add ("</form>")}};
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.