The Mozilla Firebird-Savvy Movable Type Blog Script

Objective

Create a "Post to MT Blog" template that takes advantage of the editing and display functions of Mozilla Firebird 0.7, including:
This template will be created and integrated with the Movable Type system such that is loaded whenever mt.cgi is invoked with the is_bm flag set by compatible Gecko clients.

Template Design

The following passages refer to Figure 1.

The design of the Post pane will be similar to that of the HTML document generated by the MT system currently except optimized for the non-scrolling case. Visual style should be identical to the current post page with white background, MT header etc. Where appropriate, fields should flex to fill available space.

The Select a Blog field should use a cookie to remember the last selected blog and initialize itself to that as the page loads.

To avoid scrolling, each of the Entry Body/Extended Entry/Excerpt segments shall display with mutual exclusivity with respect to the others. When not visible they are shown collapsed. Toggling between the different fields should not disrupt the undo/redo transaction history in any field. If a particular field is not specified by the script parameters, the header for it should not be shown, i.e. it should not be possible to switch to that particular entry field.

When selected, an "Essentials" formatting toolbar is shown to the right of the field title, featuring: Bold, Italic, Underline, Linkify (1), and Image (2). A vertical inverted chevron expands an extended toolbar offering Left/Right/Center align, Ordered/Unordered lists, in/unindent, a Table button (3) and a text color selector.

Key bindings should be set up and mapped to Bold, Italic, Underline when focus is in the edit field.

  1. Linkify presents a small DHTML panel which asks for a URL and (optionally) a title for the link, and if the selection for the current edit field is empty, text to hold between the <A> tags.
  2. Image presents a small DHTML panel which asks for a URL for an image to be inserted, width and height attributes, and alternate text.
  3. Table presents a small DHTML panel which asks for a row and column count for a table to be inserted.
Figure 1, Post to MT Blog panel:
 
----------------------------------------+ +----------
  Page-in-Page                          | |
 ---------------------------------------+ |
  ( + Add Page )          ( Hold page ) | |
 ---------------------------------------+ |
 +--------------------------------------+ |
 | Movable Type                         | |
 +--------------------------------------+ | 
 | Select a blog:     Post Status:      | |
 | [ my blog    :^]   [ Publish    :^]  | |
 |--------------------------------------| |
 | Title:                               | |
 | [                                 ]  | |
 |                                      | |
 | Primary Category:                    | |
 | [ Select                        :^]  | |
 |                                      | |
 | [x] Allow Comments                   | |
 | [ ] Convert Line Breaks              | | 
 | [ ] Allow Pings                      | |
 |                                      | |
 | ==================================== | |
 | (*) Entry Body  (B)(I)(U) (L)(Im)(v) | |
 | --------------------------------/  | | |
 |  (lt|rt|ctr) (ol|ul) (->|<-) (tb)  | | |
 | -----------------------------------+ | |
 | | Just today, I was riding down,   | | |
 | |                                  | | |
 | |                                  | | |
 | |                                  | | |
 | +----------------------------------+ | |
 | ==================================== | |
 | (+) Extended Entry                   | |
 | ==================================== | |
 | (+) Excerpt                          | |
 | ==================================== | |
 |                                      | |
 | Keywords: [                       ]  | |
 |                                      | |
 |                  ( Post ) ( Cancel ) | |
 |                                      | |
 +--------------------------------------+ |
                                          +----------

Important Notes

The goal is to integrate this as a special template without disrupting the mt.cgi?is_bm=1 handling when loaded in non-Firebird non-Gecko clients. The Movable Type system should detect the user agent and send an appropriate response (HTML or XUL) using the correct template. This ensures that users who use this upgraded MT capability can always post to their blog using any client they might have available (e.g. Mozilla Firebird from home, IE at work).

 

 

  ©2003 Ben Goodger. Last Updated 06/06/2003.