2.5 (2002.10.08)

Localization: the MT interface can be available in multiple languages, on a per-author setting.

Integrated Jay Allen's mt-search (Thanks, Jay!). We've made the following changes from version 1.31b:
Rewrote ``new comments search'' to make it more scalable (using recently_commented_on functionality)

Added a search log through the Activity Log.

Added search request throttling, to help against denial of service attacks.

Merged mt-search.cfg directives into mt.cfg.

Customized default search templates to use MT stylesheets.

Including Template Modules using <MTInclude> tags now works, though you should be careful if you have more than one blog in the system. See the documentation for more details.

Added an IncludeBlogs config setting and form field to allow for setting a list of blogs to include in the search (as an alternative to excluding a list of blogs). IncludeBlogs overrides ExcludeBlogs.

Changed AltTemplateN directives to just AltTemplate. You can now set an infinite number of alternate templates.

Renamed TemplateDir setting to SearchTemplatePath to avoid confusion with the TemplatePath setting.

Reworked as an MT::App subclass.

Added ability to ping blo.gs and other services.

Made default templates more accessible: added summary to calendar table; changed month name to a <caption> tag; changed day names to <th> headers and added abbreviations; blog title in banner is now linked back to main page; now use real header tags, eg <h1>; now use relative font sizes, eg small; use <label> on comment form elements. Thanks to Mark Pilgrim's 30 Days to a More Accessible Weblog.

Image thumbnails can now be created using the NetPBM tools, if your system has those. Look at the ImageDriver and NetPBMPath settings in mt.cfg. The default is still to use ImageMagick.

Added TrackBack auto-discovery, which can automatically find TrackBack ping URLs based on permalinks in entry bodies. These entries can then be pinged without any extra effort. Inspired in part by the pingback specification.

Added a new stylesheet as the new default style for new blogs.

Added a Keywords field to the new/edit entry screen, for storing search keywords/metadata, along with a <$MTEntryKeywords$> tag.

Fixed RSS 1.0 template so that we're now using Dublin Core tags instead of RSS 0.9x extensions. Thanks to many concerned parties. :)

Fixed a bug in the MySQL implementation with recently_commented_on when using MySQL 3.23.45 (or earlier?). Thanks to Adam Kalsey for the fix.

TrackBack pings should now be sent using POST instead of GET.

Added encode_xml="1" to the <$MTEntryLink$> tags in the default RSS templates (to encode ampersands, among other things).

Update pings (eg weblogs.com, blo.gs, MT, etc) are now sent only when an entry is either new (and published), or was previously a draft, and is now published.

Send entry title in subject of notification messages.

Added two new date formatting tags, %x and %X. The former displays the language-sensitive date, and the latter the language-sensitive time.

Improved the default settings for TemplatePath, ImportPath, PluginPath, and SearchTemplatePath, so that they are now based on the detected directory where MT is run from, rather than just ./foo (off of the current working directory).

Added <MTBlogs>, a container tag to list all of the blogs in the system.

Fixed thumbnail and HTML popup filenames when the uploaded image filename contains multiple . (periods). (Ask Bjørn Hansen)

<$MTCategory*$> tags can now be used in category archive file templates.

MT::Util::encode_xml now encodes apostrophes for XML. (Timothy Appnel)

All container tags in MT::Template::Context now propagate conditions properly. (Brad Choate)

Added sprintf global tag attribute. Thanks to Brad Choate for the patch.

Increased height of main entry text window if there is no extended entry.

Changed RDF so that TrackBack ping URL is now in trackback:ping. Should be backwards-compatible.

Added AdminCGIPath setting to use if mt.cgi URI is different than public URI (eg if you're using https).

<$MTBlogEntryCount$> no longer includes entries marked Draft. (Brad Choate)

Added MT->version_number for just the numeric portion of the version.

Changed TrackBack ping URLs to use path info for TrackBack ID instead of query string. This allows using POST requests.

Tags can now be used with XMLish / (forward slash) at the end, which allows using a tag both as a container and as a variable tag. Multiline attributes are also possible. Thanks to Brad Choate for the patch.

Search and replace (within MT) can now search in keywords.

Set default date formatting language to English if not set.

Added optional language attribute to <$MT*Date$> tags, allowing you to override your per-blog language date formatting setting. (Justin Hall)

Added entry title to comment and TrackBack ping notification messages.

Added <MTPingsSent> container to list the TrackBack pings sent from a particular entry.

Added <$MTBlogSitePath$>, the Local Site Path from blog config.

Fixed bug with OR in part of category name when using boolean with <MTEntries category="Foo OR Bar">.

Container tags can now be nested within container tags of the same name (eg <MTEntries> inside another <MTEntries>) without using a template module. Thanks to Brad Choate for the patch.

Default PingTimeout setting is now 15 seconds instead of 10.

Added checkbox in bookmarklet TrackBack item when there is just one TB-enabled entry. Thanks to Phil Ringnalda.

Fixed bug with half timezones and MySQL by changing blog_server_offset column to a float.

Improved security when deleting objects--now we perform the ``has-permissions?'' check not only before displaying the option to delete in the UI, but also before deleting the actual object in the system.

Fixed CGIMaxUpload example in mt.cfg; the underscore was causing the postmax to be set to 500 bytes, causing spurious Uploaded file too large errors.

Daily, Weekly, and Monthly archives are now rebuilt in segments, N entries at a time, just like individual archives. N is based on a multiplier of the EntriesPerRebuild setting in mt.cfg.

Moved all XML-RPC implementation methods into MT::XMLRPCServer, so that mt-xmlrpc.cgi is just a shell. This allows using the XML-RPC implementation with mod_perl.

Added mt_allow_comments, mt_allow_pings, mt_convert_breaks, mt_text_more, and mt_excerpt extensions to the content struct in metaWeblog.newPost and metaWeblog.editPost, and to the return values in metaWeblog.getPost and metaWeblog.getRecentPosts.

Only show ``5 most recent comments'' and ``5 most recent pings'' if there are any.

Fixed bug with OR/AND booleans and categories: the OR/AND now respects the context in which it was used, and filters the list of entries already in context, rather than always listing all entries that match in the entire blog. Thanks to Ben Hatton and others.

Added CommentScript, TrackbackScript, and SearchScript config variables to make it easier to configure MT for mod_perl or in situations where Perl scripts need .pl extensions.

Documented the words=``N'' attribute to <$MTEntryBody$>.

When rebuilding an index template, the rebuilt screen now has a ``View this page'' link.

List 5 most recent pings on the main menu for a blog.

Now use Resize instead of Scale when scaling images using ImageMagick. Also, remove all profile information from the image. Thanks to Michael S for the patch.

TrackBack pings are now imported and exported like comments.

When exporting, make sure to set date language to English, so that exported AM and PM will be in English.

metaWeblog.newPost and metaWeblog.editPost now accept a dateCreated parameter in the struct in ISO.8601 format to specify the authored-on date. Thanks to Bill Kearney for the reminder.

If an author's password is NULL, mt-db2mysql.cgi now converts it to the empty string before sticking it in MySQL.

mt-check.cgi now displays the version of the module installed.

Attributes hash ref is now localized before being passed in template tag handlers, which means they can modify the list of attributes in a localized scope. Thanks to Brad Choate for the idea.

Template parser now parses attributes with embedded $ characters properly (like <$MTFoo bar="/baz$/"$>). Thanks to Brad Choate for the pointer.

Fixed bug with invalid (empty) ALLOW PINGS values.

Added title="page title" to link created in bookmarklet posting window.

Added validity checking for URLs sent in TrackBack pings.

Only load files in the plugin directory whose extensions are .pl. (staggernation)

Added show_email and show_url to <$MTEntryAuthorLink$> and <$MTCommentAuthorLink$>. These let you control whether the email address or URL is displayed in a particular instance of the tag. (syndromes)

Added the following languages for date formatting:
Japanese (Justin Hall)

Icelandic (Einar Orn Einarsson, Ingvi)

Slovenian (gandalfar)

Czechoslovakian (Johanka)

Danish (henrik hammer berthelsen)

Link from bookmarklet now includes title attribute with title of page. (Todd Dominey)

Fixed postion to position in the default stylesheet. (Doug Feuerbach)

Added a link to the edit-entry screen on the edit-comment screen to edit the entry on which the comment was made.

Fixed bug where author count could include authors who no longer have permissions on the blog.

Added mt.publishPost method to XML-RPC interface to rebuild the files for a particular entry.

Improved detection of MT directory (now detected from Config parameter to MT::new).

Changed TrackBack entry pulldown in bookmarklet to menu-long style. (girlie)

TrackBack RDF data is now enclosed in HTML comment tags. Added comment_wrap attribute to <$MTEntryTrackbackData$> to turn off this wrapping.

Added namespace URLs to the <html> tags in the default templates.

Fixed bug when importing data when using the MySQL version when ``import as me'' is unchecked. (Kristine)

If the path you specify as your DataSource in mt.cfg does not exist, you will now get an error. This should help in figuring out installation problems, perhaps.

Added MT::Template::Context::add_global_filter to add a global tag attribute.

Added NoLocking config option for use on systems using Berkeley DB where flock() and link() are both unimplemented (some Windows systems). Not to be used unless one knows what one is doing. Thanks to dws for the patch.

Added the <MTCommentEntry> tag, a container tag representing the entry on which a comment was posted. So you can use <$MTEntry*$> tags inside of that container referring to the entry.

Fixed dc:identifier and URL sent in TrackBack ping so that they include the numeric ID for the permalink, if the preferred archive type is not individual.

Added the <$MTStaticWebPath$> tag, which displays the value of the StaticWebPath that you've set in mt.cfg.

The comment sort order you've chosen in Blog Config | Preferences is now used to sort the comments used in <MTComments lastn="N">. You can override this with the new sort_order attribute. Thanks to morbus for the patch.

Changed order of tag initialization in MT::Template::Context::init. Now tags created in plugins are set after the defaults, which means you can override the default tags. This should, of course, be done with caution. Thanks to Jay Allen for the reasoning.

Fixed compatibility problem with older versions of DBD::mysql, where the auto-increment column value is returned through $dbh->{insertid}, rather than $dbh->{mysql_insertid}.

Added MT::Template::Context::add_conditional_tag to add a conditional tag. This makes it easy for plugins to add conditional tags.

Fixed bug causing double slashes in <img> code for thumbnails.

2.21 (2002.06.28)

Very important bug fix to MySQL schema: Changed all *_created_on columns to the datetime type instead of the timestamp type. The latter could have very bad effects if used within the MySQL shell (although through MT's libraries it is not a problem). Thanks to shanson for finding this.

The plugin framework can now create container tags (thanks to Adam Kalsey for pointing out that it couldn't before).

Added encode_xml global tag attribute to escape special XML characters.

Changed default RSS templates to use encode_xml=``1'' rather than encode_html=``1'', because the latter will encode characters into undefined XML entities.

Added encoding=``iso-8859-1'' to default RSS templates. This means that users using other encodings will have to change the RSS templates.

Made bind_columns usage compatible with older versions of DBI that expect the attributes hashref as the first arg.

Fixed bug with Allow pings default not being unchecked after pressing save. (Robyn)

Fixed MySQL usage under mod_perl to look in the right spot for the mt-db-pass.cgi file. Thanks to Ask Bjørn Hansen for the patch.

Fixed mt-load.cgi to set email to the empty string, so that it's not NULL.

Changed from using lib->import method back to unshift @INC because the former seemed to be causing problems for some people.