Major Features
- New dead-simple AJAX-powered installation/upgrade process (see screencast demo) which replaces mt-load.cgi and all mt-upgrade* scripts. Also eliminated the upgrade distribution since only the config file would be different.
- Combined
mt.cfg and mt-db-pass.cgi into mt-config.cgi. Shipping as mt-config.cgi-original so as to prevent overwriting when upgrading.
- Introduced the new System Overview section which allows administrators to configure and manage aspects of the system across all weblogs
- Introduced a plugin-based feedback rating framework which scores comments and TrackBacks upon submission on a scale from -10 (least desirable) to 10 (most desirable)
- Introduced the auto-expiring Junk folder which contains all negatively-scored feedback received by the app and deletes it after a time specified in the weblog feedback configuration
- Now shipping with a 3.2-compatible SpamLookup plugin. Stops spammers cold!
- Added TrackBack moderation and editing like comments
- Added comment/TrackBack master switches on both the blog and system level. These allow a user to shut off receipt of these items in one place.
- Major rearrangement of the weblog settings. Humanized options and implemented better grouping.
- Major overhaul of all listing pages. They are now optimized for bulk actions and consistent wherever they appear in the application. Items can be selected by clicking anywhere on the row and contiguous selection is possible with the
shift key. The checkbox in the header bar selects all, none and inverse (with the shift key). Introduced display options for each listing allowing a user to customize their view. New filtering mechanism on all listings
- Major overhaul of the search/replace functionality. One can now search not only entries, but comments, TrackBacks, templates, commenters and activity log. Much safer replace functionality. New context-sensitive search added to nearly every page of the application.
- Introduced the system- and weblog-level plugin management pages allowing a user to enable/disable, configure and get information about all installed plugins. All functionality works with MT 2.x plugins as well!
- Implemented much simpler template code for the individual archive page, especially with regards to comments and TrackBacks. Moved most TypeKey logic to the site javascript.
- Introduced the new MT 3.2 default stylesheet: "Vicksburg".
- Implemented the standard Six Apart HTML structure which enables all MT users to easily share dozens of gorgeous styles created for TypePad and LiveJournal by just switching out the CSS.
- Introduced the TemplateRefresh plugin, bundled with 3.2. which performs backup of single of multiple templates and refresh of those templates from the defaults. This can be triggered from either the template listing screen or the system overview weblogs listing.
- Major overhaul of the commenter listing screen and introduction of the individual commenter record which lists information about each authenticated commenter and all of their comments.
- Added a Trusted state for authenticated commenters which allows a commenter to bypass the junk mechanism. This can also be used on the weblog side to highlight valued contributors and (with a little ingenuity) give them special abilities on the weblog side.
- An entirely new Live User Manual written from scratch by Tim Appnel powered by Movable Type and which includes user comments on every entry. More details here.
- Opened up the Movable Type Knowledge base to all Movable Type users. Previously this was only available for paid licensees.
- Major improvements to the Activity Log including pagination, display options, reverse-chronological sorting and CSV export.
- Revamp of the main MT menu including more links to the places you want to go, weblog sorting by title, date of creation or date of last modifcation
- New multi-category selection widget enabling very easy selection of secondary categories. Also present on the quickpost page.
- New archive file path controls for mapping templates to archive types. Now includes many common archive maps in a simple dropdown and shortcut specifiers for making your own. MT template tags are still supported.
- Introduced the basename field on the edit entry and Quickpost pages which allow users to specify the filename of the individual archive file. This allows for nice filenames that do not depend on the entry title.
- Added dynamic publishing support for PostgreSQL and SQLite databases
- Implemented outbound trackBack control enabling administrators to restrict (by domain or IP) where TrackBacks can be sent and auto-discovery is allowed. Admins can also specify whether or not to TrackBack entries on the same weblog.
- Added itemset widgets (the dropdown on the right side of all listing screens) which contain secondary native actions and can be extended by plugins to provide extra functionality.
- Revamped the template listing screens providing much better information at-a-glance
- Added the
default_templates folder containing all default Movable Type templates added to new weblogs. These templates can be customized to affect the default templates for new weblogs.
- Easy mini-wizard TypeKey authentication setup allows you to easily and quickly enable TypeKey on your blogs.
- Enhanced the "Remember me" checkbox on the comment form to remember not only form details but TypeKey authentication status
- Added new gorgeous color icons which boost your blogging productivity by enabling you to stare at the Movable Type interface for extended periods of time without tiring.
- Added Save & Rebuild functionality to the template editing page
- Implemented System administrator and Blog administrator permissions and removed problematic blog-level "add/edit authors" permission
Developer features
- Introduced easy plugin configuration integrated right into the application doing away with the need for most plugins to write CGIs
- New
MT::Bootstrap module implemented to make it easier to create CGI scripts which work with Movable Type
- Implemented binary data support in PluginData for PostgreSQL allowing those users to use plugins which store PluginData
- PluginData now uses MT::Serialize instead of Storable. PHP can also access PluginData now (although it's read-only)
- Added
pre_run, post_run callbacks to MT::App.
- Now storing a permanent Atom ID for each entry
- Now setting ID attribute on body tags of application screens to
__mode for cool and interesting CSS/Greasemonkey foolin
- Made MT directory discovery more robust (under both UNIX and Windows)
- Plugin
lib directories are sucked into @INC automatically by MT upon plugin directory scanning obviating the need for pesky relative use lib statements
- Enhanced DBM objectdriver to accept both a limit and range/range_incl arguments.
- Upgraded Smarty libraries to Smarty 2.6.9.
- Added MT and MT::App methods for accessing configuration, query parameters and session data.
CMSPostEntrySave is now invoked after saving each entry through poweredit.
- Plugins can now use
AdminCGIPath
- Now handling relative paths in the mt-config.cgi much better by converting them to absolute paths before use (based on mt_dir).
Usability features
- Now building out the entire blog path upon saving if it hasn't already been created and the parent directories are writeable. If it's not writeable, a useful error is presented.
- The weblog site directory is created if it didn't already exist when creating the .htaccess file for dynamic publishing.
- Compiled templates directory (
templates_c) is created with open permissions, when possible.
- All static files are now in mt-static folder in the MT directory which makes installation/upgrade easy for those who need to move their static files out of the cgi-bin.
- Comment form now disappears on published blog (after rebuild of mt-site.js) when comments are turned off on system or blog level.
- Retired Closed status for comments and changed comment status dropdown to a checkbox.
- Eliminated nearly all popup windows in the application
- Added 'show_all' parameter for search/replace, which is useful when you want to see all items in a particular date range.
- Added comment and ping permalink anchor notation in default templates: comment-<id>, ping-<id> for Six Apart style support. Legacy comment/TrackBack permalinks still supported in default templates but deprecated.
- Implemented safeguard against deleting parent categories. Must delete subcategories first.
- Now beautifying published links by stripping index page names (ie, "index.html"). Added optional
with_index attribute to all link tags to preserve the filename.
- Switched to Windows linebreaks in the
mt-config.cgi because they are universally compatible. Notepad fans: Rejoice!
- Now including an "import" folder in the default distribution
- Categories are now shown with hierarchy in the "Assign Multiple Categories..." popup
Performance improvements
- Many, many fixes which improve MT's mod_perl compatibility and performance (Thanks Tweezerman!)
- Removed calendar from the main index template because it's a CPU hog. Code will retire to the documentation.
- Implemented caching for ID-based lookups at ObjectDriver level
- Added caching for plugin config objects.
- Added support for HTML::Template file cache.
Error and exception handling improvements
- Better error messages across entire application (missing config file, quickpost with no weblogs, invalid Site URL, etc)
- Added fatal errors for failure to write to
DataSource directory or failure to lock files.
- Improved reporting of unwritable/uncreatable
templates_c directory when enabling dynamic publishing.
- Now producing a useful error message if the directory containing a SQLite database isn't writeable by the web server.
- Now checking for the minimum required version of the "DBI" module (v1.21). Implemented better handling of DBI module requirement and reporting when it's unavailable.
- No longer allowing ".." in Site URL because it's illegal in URLs
- Template errors are now reported when publishing an entry
- Category-archive tags no longer cause errors in rebuilding when category archives are disabled
- Rebuilds no longer fail silently after saving an entry if a problem exists in your templates (for example, mismatched tags or a missing include module).
Template tag additions/deprecations/changes
- Now shipping with the new Atom 1.0 feed template. No longer shipping with an RSS 1.0 feed template.
- Now allowing disabled
archive_types in ArchiveList which can be used for grouping entries, for instance, by week even if weekly archiving isn't enabled.
- Added
MTIfStatic and MTIfDynamic template tags, for checking which style of publishing is in use and using these to differentially build and display the sidebar content on all archive pages.
- Changed Author Nickname to "Display Name". Added
MTEntryAuthorDisplayname, MTEntryAuthorUsername. MTEntryAuthor and MTEntryNickname are deprecated but aliased to the new tags.
MTSubCategories contained tag now admits top="1" parameter to list all categories, even on a category page.
- Added a template container tag,
IfRequireCommentEmails, which prints its contents if email address is required from commenters.
- Made the monthly archive block conditional now that the archivelist tag can function whether the archive type is enabled or not (archivelinks would still fail though, so the conditional is necessary).
- Removed email address from Atom feed
- Aliased the deprecated
EntryIfCommentsAllowed directly to IfCommentsActive tag to address a disparity between the two.
- Added
MTCommentsHeader/MTCommentsFooter tags
MTIfNonZero and MTIfNonEmpty can now be used to test tags which require attributes. For example:
<$MTSetVar name="myvar" value="1"$>
<MTIfNonZero tag="MTGetVar" name="myvar">
Tag is evaluating properly
</MTIfNonZero>
<MTIfNonEmpty tag="MTGetVar" name="myvar">
Tag is evaluating properly
</MTIfNonEmpty>
Configuration file changes
- The config directive
HelpURL- is now the base URL for the help links in the app as well as documentation. HelpURL will be set by default to point to the User Manual Six Apart website, but of course can be changed to point locally.
- Added
IndexBasename configuration directive for defining the index page basename (see previous feature). Default setting is "index".
- Added an
MTConfigFile tag which is now used in building the mtview.php script.
- Added
WSSETimeout configuration directive to control the Atom WSSE authentication timeout window (default is 120 seconds).
- Added
UpgradeScript, MTAtomScript configuration directives which point to the respective scripts (defaults is mt-upgrade.cgi and mt-atom.cgi respectively).
- Added
WeblogDefaultTemplates configuration directive to specify the location of the default template directory (default is default_templates).
- Added
DBPassword directive as a replacement for mt-db-pass.cgi
- Now forcing database setup upon initialization instead of assuming a default of BerkeleyDB (
./db) because it's the least recommended choice of databases.
- Introduces
IdentitySystem directive which makes it easier to set up alternate TypeKey-compatible auth systems
Internationalization/Localization
- mt-check.cgi is now localized
- Default templates are now localized
- Default language is now localized in the config file
Other miscellaneous features
- Updated Creative Commons license chooser to support local jurisdictions
- Modified nofollow.pl to use the new plugin config panels.
- Updates to import feedback. Displays header/footer. Better handles error conditions (no readable files, etc.)
Security/Accountability features
- Added support for author sessions
- Decoupled Atom token, magic token and user cookie from hashed password. Now storing magic token in author session record.
- XML-RPC/Atom now both use configurable API password
- Added support for CookiePath, CookieDomain config settings so that you can set your mt_user cookie in any path and domain.
- Now logging all "password reset" operations
- Password error messages are now more generic to eliminate the possibility of username enumeration.
- Now requiring both author email and password hint upon author creation and profile editing to ensure that the user can recover their password.
- Now logging the events of creating or deleting a weblog in the Activity log
- User ID is now logged when user is mentioned in any log message to avoid any question of the actual author's identity
General bug fixes
- Fixed a bug where auto-discovery of links to large files (e.g. mp3) could adversely affect MT.
- Fixed a bug which disallowed categories of the same name which have different parents
- Fixed a bug with MTDate (and other perhaps other dates) using utc flag
- Users can now produce files with no file extension by leaving the "File extension for archive files" box null.
- Fixed a bug where database wasn't updated on rebuilds when using linked templates
- Fixed a bug which caused MTCommentEntry to malfunction in dynamic category archives
- Templates with no name were uneditable because of lack of link text. Now prints "(no name)"
- Fixed a problem where MT->version_number would fail if the version was not numeric (as is the case with any beta). Introduced VERSION_ID which holds the full alphanumeric version in addition to VERSION which holds the base numeric version.
- Fixed a bug that caused dynamic publishing to fail after a change in site URL,
MTSubCategories now obeys sort_order attribute on dynamic pages.
- If a category name has no Roman alphabetic characters, it is replaced by a string such as cat-145.
- Dropped all unique constraints within the DBMS to fix a number of discrepencies across platforms.
- The weblog's timezone is now displayed on the weblog's "View Activity Log" screen to clarify the difference between the system activity log which is in GMT.
- Fixed a bug which could produce 404s under dynamic publishing if the Site URL of the blog is changed
- Fixed a bug where an ampersand in the category label would cause a double-underscore in dirification
- Fixed a bug causing double-encoding of ampersands in category labels in power edit mode
- Fixed an issue with some mod_perl setups which would return empty pages in the admin UI
- Fixed a bug which caused TrackBacks to be ignored in import
- Fixed an issue with mod_perl where the weblog name would disappear after saving the general settings page (core config in 3.17)
- Fixed an issue with category editing where TrackBack pings could not be turned off once they were turned on
- Fixed documentation in App.pm to indicate that a relative
AltTemplatePath (like all relative paths in mt-config.cgi) is relative to the the MT config file and not to the tmpl directory.
- Fixed a bug with handling outrageous dates (the year 3000) on authors and entries listings.
- Fixed a bug where
MTDate’s output differs in dynamic and static publishing if a date language have never been specified.
- Fixed a bug that prevented the mt.cfg directive
CommentSessionTimeout affecting the length of the user session.
- Fixed a bug preventing the moving of categories out from under a parent category
- Fixed a bug where comment author link redirects would operate even if a comment was held for moderation leading to potential phishing attacks with the redirect link.
- Fixed a Firefox display bug that prevented hierarchical display of categories in entry screen dropdown
- Fixed a bug where
MTArchiveCount returns empty value in dynamic archive templates
- Fixed a bug for
MTArchiveCount on archive templates when outside of entries tag.
- Fixed a bug where on some versions of IE, after maximizing the QuickPost window, the entry text appeared wider than the window itself, obscuring the scrollbar.
- Fixed a bug where HTML in category labels and entry title was not being escaped
- Fixed a bug in nofollow: "Character class syntax [: :] is reserved for future extensions"
- Fixed a bug where TrackBack autodiscovery would happen on every entry->save operation (e.g. during import)
- Fixed a bug where a dying callback on log->save would lead to infinite recursion
- MTComments with lastn not supported in Dynamic Pages
- Fixed a number of instances where the "Go Back" button in error pages didn't navigate control to previous page
- Template cache in database is now updated on rebuilds when using linked templates
- Fixed a bug preventing use of all
MTCategory* tags in static Category Archive Template
- Entries tag now supports the new category path selection syntax. For example, <MTEntries category="Parent/Child">. If you have spaces, you use square brackets, as in <MTEntries category="[Parent Category]/[Child Category]">
- Dirification of category names such as "Sam & Dave" (space-ampersand-space) is now consistent on dyanmic and static publishing
- Using
show_email="1" for EntryAuthorLink and CommentAuthorLink now works in static templates
- Fixed a bug preventing
CommentSessionTimeout from affecting expiration of session
MTArchiveCount no longer returns an empty value in dynamic archive templates
- Printing of disabled archive list now consistent between static/dynamic publishing
- Fixed a bug in dirify routine which failed if
DefaultLanguage wasn't specified in a case-sensitive manner (e.g. utf-8 vs UTF-8)
<MTComments> with lastn attribute no longer produces an error message on dynamic pages.
<MTComments lastn="2" sort\_order="ascend"> now behaves the same in dynamic and static publishing
- Fixed bugs which caused many
MT*Categories tags behavior to differ between dynamic and static publishing
- Auto-link URLs now works regardless of Allow HTML setting
- Fixed a bug under mod_perl which cause the "Weblog name" field to be blanked out after saving weblog config.
MTEntryIfExtended now evaluates correctly in search templates
- Fixed a bug which caused the wrong version of the Creative Commons license to be provided upon initial selection.