Not a developer? Go to


Movable Type 4.3 Release Notes

This version of Movable Type was released July 29, 2009.

Entry Pagination via MT-Search

An oft-requested feature has been added to the app. We’ve made a variety of new querystring parameters available to mt-search.cgi to provide dynamic pagination for all archive types and from the index. In order to allow for the usage of index or archive templates, we’ve created a new template tag, BuildTemplateId, which provides the template ID for the template you’re editing.

We’re working on putting together a proper guide for this with sample template code, but here are the new parameters: author (takes an ID), category (takes an ID or label), templateid (takes an ID), page (can be used in place of offset), archivetype (takes one of the 14 archive types, listed here), year (format is YYYY), month (format is MM) or day (format is DD). When used with date-based archives, year/month/day corresponds with the start date of the archive.

Cloning a Blog Without Content

We’ve added the ability to clone a blog without including the entries/pages, comments, trackbacks and categories (or any combination thereof). You can also edit the blog name, URL or site root during the clonging process.

Attribute "namespace" doesn’t work in mt:Actions

Passed the "namespace" attribute in addons/Community.pack/lib/MT/Community/ to allow for custom namespaces on user profile pages.

Fix Memory Leaks and Move to JSON Serialization in

Fixed several memory leaks in and added two new serialization methods (the default stays the same). The two new ones use JSON and Storable formats, but both have caveats. While the Storable format has performance improvements, it does not work with dynamic publishing. The JSON based format does not support scalar or circular references and cannot support multiple references to the same object. We hope to evolve the JSON serialization as the JSON spec changes.

Pagination for comments

Comments can now be paginated with the addition of a dynamic API request from mt-comments.cgi. The default and community template sets have been updated to use comment pagination by default, while the other template sets now include the new System Template.

Asset Management: Manage assets in an entry (AssetAgent)

There is a new asset manager in the sidebar of the entry edit screen. It will list all assets that are associated with the entry. You can associate assets with an entry without including the asset in the entry body. You can also remove asset associations without removing the link to the asset from the entry body. 100892, 100893, 101548

  • When inserting an asset into an entry, whether using the asset manager on the side or the insert asset/image buttons in the RTE, no <form> tag is wrapped around the asset.
  • When an asset is inserted into the image, the asset information is added to the sidebar and it’s asset id is added to the hidden <input> element “includeassetids”.
  • When the entry is saved/published, MT uses this information to associate the asset ID to the entry via MT::ObjectAsset.
  • Since custom fields still use <form> tags for their assets, I did not completely remove the code which wraps these tags around stuff in MT::Asset.

Asset Management: Reconsider infrastructure: reference of assets in entry bodies (paths coded)

We have (finally) removed the form tag that surrounds image assets in the entry body. Hallelujah.

Community: Investigate commenting and sessions across domains on the same MT instance

The default setting for SingleCommunity is now ‘1’. This means that cookies will now work across all blogs on your installation (excluding cross-domain). If you have been using your Movable Type install to run each blog as a separate community, you should add ‘SingleCommunity 0’ to your mt-config.cgi file.

Create Dashboard Stats TTL directive and allow users to turn stats off

We have added two new config directives for controlling the dashboard stats. We have added StatsCacheTTL, which is set in minutes and determines how long before the cached statistics expire (default is 15), and StatsCachePublishing, which determines if stats are published at all. It can be set to ‘Off’ and ‘OnLoad’, with OnLoad being the current behavior as well as the default.

Allow Republish from Object Listing or Search Results

You can now publish entries, templates or comments from the internal search result listings.

Summary Object Framework

The Summary Object framework allows MT’s core codebase and plugins to store arbitrary summary and dependent information in the database, replacing expensive calculation queries with fast primary-key lookups against summary tables. The framework includes a flexible mechanism for invalidating summary objects when the objects on which they depend are modified, and a queued worker class for asynchronously regenerating invalidated summaries.

Log template editing events in the Activity Log

When a template is saved, this action is now sent to the Activity Log. This feature is useful for finding out who made a particular change.

Send Blog Setting Changes to the Activity Log

When changes are made to blog settings, an entry is added to the activity log.

Assets doesn’t recognize BMP, TIFF as image formats

Assets now recognized BMP and TIFF as image formats, which should also fix a common issue seen when importing Wordpress content. (Thanks Su!)

SetVarTemplate attributes no longer localized, now affect global vars

SetVarTemplate is now properly localized so you can pass in variables and the data is not set permanently, only outputted with the provided values. (Thanks Jay!)

Make include_blogs="all" work in all contexts

Fixed a bug where IncludeBlogs="all" did not work when used in mt-search.cgi querystring.

Template tags: mt:Authors should take an ID

You can now limit mt:Authors with an ‘id’ (for user ID) or ‘username’ modifier.

Create a tool in system settings to send a test email

Added the ability to test sending from inside the app on the Global general settings page.

Expose settings within app (DebugMode)

You can now set DebugMode from the Global general settings page.

New Config Directive to turn on DBI RaiseError

We have made the Date::ObjectDriver RaiseError flag available as a config directive and are setting it to 0 by default. This provides more accurate descriptions of database errors than were previously provided.

Expose settings within app (PerformanceLogging)

You can now set the PerformanceLogging, PerformanceLoggingPath and PerformanceLoggingThreshold config directives from the Global general settings page.

Allow mt:else with mt:Assets

The mt:Else tag now works in mt:Assets blocks. (Thanks Byrne!)

Support specification of build_type for template set archive maps

You can now define the "build_type" for an archive template in the config.yaml file for custom template sets. (Thanks Jay!)

motion.js utilizes deprecated syntax which breaks under jquery 1.3

Fixed a selector in the jQuery of the Motion template  set that was incompatible with jQuery 1.3x. (Thanks Byrne!)

Unable to use template tags of custom fields for archve paths

Fixed a bug where custom field template tags could not be used in archive paths.

Blogs where you didn’t have any permissions are displayed in the blog list when you choose which blog to export entries from

Users now only see blogs they have permission to change in the list of clonable blogs.

Off by 1 error in mt:Authors lastn

Fixed a bug where using lastn with mt:Authors always returned one more result than requested (Thanks Byrne!)

Typo in Serialize vs. Serializer

Fixed a typo in the

Apply Mark Carey’s patch to avoid false upgrade notices

Fixed a bug that occasionally caused false upgrade notices. (Thanks Mark!)

MT::Entry is overzealous about updating when new comments are added

MT:Entry now only updates a comment count when it would change. Previously, it would update anytime a comment associated with that entry was saved.

Fatal rebuild error caused by any template tag filter specified via a config.yaml file

Fixed a bug where a fatal error would occur whenever you defined a template tag filter in the config.yaml file. (Thanks Jay!)

any_type attribute of mt:Authors doesn’t work as expected

Fixed a bug with he any_type filter for mt:Authors, so it now properly returns all users, regardless of their role.

Cloner plugin should not be included in distro

The Cloner functionality was moved to the core, so the plugin is no longer included in the application.

Recommend Dates Don’t Respect Blog Timezone in User’s Actionstream

Fixed a bug where the dates for recommended entries in a user’s actionstream did not respect the blog’s timezone, causing it to filter improperly.

Restrict "favorites" blog selection dialogue in CMS

When adding an additional blog to your list of favorites in the dropdown, you can now only select blogs that you have access to. This keeps people from potentially having to page through hundreds of blogs they can’t access.

MT::Blog::clonewithchildren() doesn’t actually clone() children

The MT::Blog::clonewithchildren operation now clones each of the individual objects (e.g. MT::Template, MT::Association, etc.) that make up the blog.

Entries with comments in the last 7 days

Fixed a bug affecting the ‘Entries with comments in the last 7 days’ quickfilter on the entry listings screen. The app would throw an error when DBIRaiseError is set to 1. Changing the sort method fixed this problem.

Patch to allow non-superuser editing in systemwide Comments listing

Non-superusers can now view the global list of all comments that they can access.

Increase commenter email column length

Increased the allowed length of a commenter’s email to account for very long authentication emails used in Facebook authentication.

mt:Entries ‘category’ attribute broken under dynamic publishing

Fixed bug where logical operators for category filtering in mt:Entries would not work in dynamic publishing.

LaunchBackgroundTasks 1 doesn’t work for MT-4.261

We have fixed the bug that was causing LaunchBackground tasks to fail.

Manage assets dies when image type and class conflict

Image asset types (JPEG, PNG and GIF) are now determined based on file compression instead of file extension. This prevents publishing errors when Image::Magick is used to resize improperly labeled images.

sort_order doesn’t work for mt:Comments with lastn in static publishing

When applying a lastn to mt:Comments in the context of an entry, it would always use the 50 most recent comments, even if sort_order was set to ‘ascrend’. mt:Comments will now sort first and filter second.

Improve ease of use and styles for search pagination

Improved styling of search pagination in the Community template set when there are dozens of pages.

Add XML::Parser to mt-check

mt-check.cgi now looks for the optional perl module XML::Parser.

MTEntryTags retrieves tags assigned to an asset with the same ID under dynamic publishing / MySQL

Fixed a bug where a dynamically published template which contains an <mt:EntryTags> template tag retrieves tags for the entry ID in context and also retrieves any tags assigned to an asset which has the same ID number as the entry.

Tag links inside the apps for our packs (e.g. Community) are now being sent to instead of Google.

%-C archive file path specifier does not replace underscores in category basename with dashes

Archive path specifier %-C now produced dashes instead of underscores.

can’t retrieve "mt.supportedMethods" call on Windows Server 2003

Fixed a bug where mt-xmlrpc.cgi gave no response or error using Windows IIS.

Dynamically published weblog pages display "Page not found" error

Fixed an error where viewing a dynamically published weblog page results in a "Page not found" error being displayed if the template which publishes the page has a templateidentifier field value of "NULL" in the mttemplate table in the Movable Type database.

Custom fields template tags cause "You used an ‘[CF Tag Name]’ tag outside of the context of the correct content;" error

Fixed an issue where using a custom field tag occasionally produced an error when previewing or publishing.

Known Issues

  • Comment Pagination will not work when using MS-SQL and setting DBIRaiseError to 1 (Bug ID: 101428)
  • A bug was introduced no later than MT 4.0 where the registry function exhibits unpredictable behavior when called without a parameter. (Bug ID: 101429)


The full changelog is available in Trac.


1 Comment

MG on January 13, 2010, 8:15 a.m. Reply

Very minor mention of typos:

  • Clonging a Blog Without Content
  • Within “Asset Management: Manage assets in an entry”, lose the apostrophe in the second bullet item: “it’s asset id…” ‘Its’ is the possessive.

Darn, fairly certain I’ve lost one.

Thanks for the work, looking forwards to upgrading!