Customization

tmda-cgi is easily customized by modifying the theme. Unless you wish to make radical changes, you should not need to modify the Python code.

Begin by making a copy of the Blue directory under display/themes and select this new theme with the theme picker in tmda-cgi. You can now begin to make changes to your theme and view your changes as you work.

Here is a fairly brief summary of things to keep in mind while working on your theme. If you need more help, please see the Commercial Support page for contact information.

Directories
Embedded Variables
Theme Form Variables
Using button_maker

Directories

buttons Images used as navigation buttons. Feel free to modify these.
button_templates Buttons without text. If you modify these, you will need to use the button_maker program to add the text back onto the buttons.
dyn_buttons Blank buttons with added text. Don't modify these. Modify the blank buttons and use button_maker to add the text back onto them.
flowchart Reserved for future use.
template HTML templates. You can modify the .html files, but if an .ht of the same name exists, I recommend you modify that instead and use make to rebuild the .html.
./*.gif
./*.png
Miscellaneous images used on the template pages. Feel free to modify these.
styles.css Stylesheet for template pages. Feel free to modify this.
theme.ini Theme configuration. Feel free to modify this.
subtopics.p Generated by running make in template directory. Do not modify.

Embedded Variables

tmda-cgi expands the embedded variables it finds on the template pages. These variables appear in three different formats:

  • Standard Python expansion variables, such as %(Sender)s. These variables are replaced with actual data when tmda-cgi is run.

  • Embedded variables, such as <-- var: Grey="#91A2BD" -->. tmda-cgi reads in these variables and uses the value given. The quotes are mandatory and may not be substituted with single ticks.

  • Special blocks, marked with a <-- var: Row --> at the beginning and either a <-- /var --> or <-- /var (Row) --> at the end. These blocks are repeated or removed depending on the content tmda-cgi needs to display.

All variable names are case-sensative.

Theme Form Variables

The theme customization page can accept a wide variety of fields, all without modification of the Python code. This is done by "announcing" what form fields (and potential values) to expect by way of an embedded variable called FormVars.

FormVars must be assigned a comma separated list of variables. Each variable must be in the following format:

<Section>:<Option>[:<Value>:...]

The [:<Value>:...] list should be used if the variable will be configured with a pull-down list or series of radio buttons. Each item listed should be a punctuation-stripped version of value it can return. Text inputs do not require any values to be listed.

Each variable listed in FormVars should correspond to a <input> tag on the form. The fields should be named according to <Section><Option> (no ":").

Drop-down fields should use <option> tags as follows:

<option %(<Section><Option><Value>Selected)s value="<Value>"><Text></option>

Radio buttons should use <input> tags as follows:

<input type="radio" name="<Section><Option>" value="<Value>"
   %(<Section><Option><Value>Checked)s>

Using button_maker

button_maker is an <Ack! Spit! Puke!> Perl program* that comes with tmda-cgi and applies text to blank button templates. The code is called automatically when make detects a change in links.h.

However, make is not set to automatically rebuild all .html files when links.h is changed. If you change the menu structure, run make remake instead to make sure that all .html files are updated.

Before running button_maker, you will need to make sure the following programs have been installed on your server:

* Yes, I realize that there is now a Python API for ImageMagick (PythonMagic). It was in its infancy when I created button_maker and was not yet working for the *nix platforms.