Do not add links to news, events, FAQs or newsletters to the sitemap if the target page has not been published (see #5520).
Include the local configuration file twice, once before and once after the module configuration files are parsed (see #5490). This will make settings like the debug or safe mode work properly.
Correctly set the RSS feed self-reference (see #5478).
Remove ­
and
from RSS and Atom feeds (see #5473).
Do not remove the grid column margin on mobile devices (see #5475).
Store the relative path to the installation in the pathconfig.php
(see #5339).
Correctly send the comment moderation mails (see #5443).
Correctly create the user home directory upon registration (see #5437).
Made the .htaccess
files Apache 2.4 ready (see #5032).
Also truncate opened files in File::truncate()
(see #5459).
Added the "allowTransparency" attribute to the mediabox script (see #5077).
The submit button label was not shown in the FormSubmit
widget (see #5434).
Show invisible elements in the back end preview (see #5449).
Allow to create forward pages without a specific target (see #5453).
Updated the TinyMCE typolinks plugin (see #5329).
Correctly initialize the user's pagemounts (see #5454).
Support loading static JavaScripts in the config.php
files (see #4890).
Show all articles if the article list module is in the same column (see #5373).
Do not show mail_
templates from theme folders (see #5379).
Consider only published events when finding the calendar boundaries and only render the previous and next links if there are events (see #5426).
Do not override the header and footer height in the layout builder (see #5368).
Correctly reset fallback, default and "do not copy" fields (see #5252).
Removed the pixel unit from the video width and height attributes (see #5383).
Correctly load the language files (see #5384).
Correctly split the words when adding to the search index (see #5363).
If an eagerly loaded relation does not exist, return null
instead of an empty
model in Model::getRelated()
(see #5356).
Throw an exception if the file system and the database are out of sync and show a meaningful error message (see #5101).
Return an associative array in Model_Collection::fetchEach()
if the requested
field is not id
(see #5134).
Make eagerly loaded "pageTree" fields mandatory again (see #4866).
Do not use forward pages as upper page in the book navigation (see #5074).
Correctly show the "empty news list" note (see #5304).
Correctly sort values by an external order field (see #5322).
Define the login status constants in the back end (see #4099, #5279).
Make sure the drag'n'drop hints do not overlay the field labels (see #5338).
Apply the color picker to single fields as well (see #5240).
Correctly close the SimpleModal overlay with the escape key (see #5297).
Update TinyMCE to version 3.5.8 (see #5273).
Correctly check for nested arrays in Widget::isValidOption()
(see #5328).
Preserve the order of multi source fields when exporting a theme (see #5237).
Also check whether the target exists when creating new folders (see #5260).
Load the core autoload.php
files first (see #5261).
Support null
as column default value in the DCA (see #5252).
Added the $blnDoNotCreate
option to the Files
class, which makes the class
write to a temporary file first and then move it to its destination in one
atomic operation. This fixes some cache issues (see #5307).
Handle @
blocks when importing style sheets (see #5250).
Show the newsletter list even if there is no jumpTo page configured in the channel and show the enclosures in the newsletter reader (see #5233).
Added an option to load model relations uncached (see #5248, #5102). Also fixed
the array_merge()
order so the default options can be overriden.
Updated SimplePie to version 1.3.1 (see #5207).
Updated SwiftMailer to version 4.3.0 (see #5263).
The jQuery accordion script did not work with minified markup (see #5245).
Removed the "spaceToUnderscore" option from all alias fields (see #5266).
The media content element now supports .ogg files (see #5282).
Do not rewrite requests for .mp3, .mp4, .webm or .ogv files (see #5258, #5284).
Correctly determin the last run of the command scheduler (see #5278).
Make the jQuery accordion behave like the MooTools version (see #5251).
Added support for more advanced media queries (see #5236).
Added the missing UserGroupModel
class (see #5218).
Handle the case that glob()
returns false
(see #5226).
The table sorter did not work if jQuery and MooTools were active (see #5228).
Copy all content elements if pages are duplicated with childs (see #5241).
Added lazy template loading for newsletter mail templates.
Do not separate a style sheet with a font-face selector if the definition is invisible or the media type of the style sheet is "all" (see #5216).
Looking for theme templates broke the install routine (see #5210).
Correctly handle empty newsletter channel selections.
Throw an error if FileTree or PageTree widgets are left blank although they are marked as mandatory in the DCA (see #5131).
Modules and Hybrids included via content element were shown even if the content element was invisible or not published (see #5203).
Do not try to limit the template selection to a particular theme but show all available themes instead (see #5095).
Correctly build the comments subscription confirmation URL (see #5201).
Update the database if a file is being uploaded in the front end (see #5137).
Do not send a 404 header if an enclosure is requested and cannot be find by a module; there might be another module which can (see #5178).
Consider the save_callback
of the password field in tl_user
when a back end
user is forced to change his password (see #5138).
Random images now open in the lightbox if configured (see #5191).
Find e-mail addresse like a@b.com
in String::encodeEmail()
(see #5175).
Make sure there is a minimal MooTools core version for the command scheduler (see #5195).
Made Model::getPk()
and Model::getTable()
static (see #5128).
Do not move resources in the file manager if the targets exist. Otherwise the database might get out of sync with the file system (see #5145).
Convert automatically generated article alias names if the page uses folder URL style alias names (see #5168).
The newsletter system did not yet handle file ID attachments (see #5118).
The gallery and downloads element now support using the user's home directory again (see #5113).
Added an option to load models uncached (see #5102).
Added support for CURRENT_DATE
, CURRENT_TIME
and CURRENT_TIMESTAMP
to the
database installer (see #5089).
Store the whole database row in Calendar::addEvent()
so e.g. RSS feeds with
the event text instead of just the teaser are being rendered (see #5085).
Purge the internal cache after a module has been (de)activated (see #5016).
Do not cache the system/cron/cron.txt
file (see #5105).
Do not create content elements for news and events which redirect to articles, pages or external URLs during the version 3 update (see #5117).
Handle incorrectly closed indexer comments (see #5119).
The table content element did not assign the correct CSS class names when there was only one row and one column (see #5140).
Consider the dynamic ptable when copying/deleting content elements (see #5041).
Scan templates in the autoload creator even if there are no classes (see #5158).
Corrected the main column margin when using the layout builder in combination with the responsive grid (see #5170).
Consider the sorting order of external style sheets (see #5038).
The numeric file mounts of a user were overridden by the real paths (see #5083).
Exclude the undo module from the list of allowable back end modules (see #5056).
Validator::isAlias()
did not support Unicode characters (see #5033).
Group the search results by their parent IDs when searching the extended tree view, e.g. the article tree (see #5051).
Correctly generate the debug bar markup on XHTML pages (see #5031).
Handle radial gradients when importing style sheets (see #4640).
More abstract and effective algorithm to determin the number of files in the "purge data" maintenance module (see #5028).
Fixed two wrong class paths (see #5027).
Correctly add event images to the templates (see #5002).
Replaced the automatic copyright notice with a meta generator tag.
Do not strip tags from passwords (see #4977).
Correctly show the number of returned rows in the debug bar (see #4981).
Correctly add the RSS feed base URLs (see #4994).
Fixed an issue in the mediaelement.js MooTools adapter (see #4917).
Correctly assing the classes "first" and "last" in the (mini) calendar if the week does not start on Sunday (see #4970).
Correctly handle URL parameters appended to the empty domain (see #4972).
Updated all vendor scripts and assets to their latest version (see #4966).
Handle existing folders during a theme import (see #4952).
Show an error message instead of an exception if a template cannot be imported in the install tool (see #4961).
Readded the "active" class to the custom navigation module (see #4963).
Always convert file IDs to paths when exporting themes (see #4952).
Mark active forward pages with "forward" instead of "active" (see #4822).
Updated jQuery UI to version 1.9.1 (see #4953).
Remove HTML tags when overriding the page title (see #4955).
Correctly route pages if the language is not added to the URL and there are multiple results or folder URL aliases (see #4872).
Do not cache pages if the request contains a token (see #4702).
Make the original element passed to a Hybrid
object available (see #4556).
Show an error message instead of throwing an Exception if the file system and the database are out of sync (see #4438).
Removed the deprecated workarounds for storing .xml files in the root directory.
Since the autogenerated .xml files now reside in the share/
subfolder, .xml
files in the root directory will not be touched by Automator::purgeXmlFiles()
.
Make sure the install tool and – after the version 3 update – the back end remain accessible if the Contao 3 files are just added to an existing Contao 2 installation (which is not recommended) (see #4907).
Prevent deleting referenced content elements using "edit multiple" (see #4898).
Removed some left-over ENT_COMPAT
constants (see #4889).
The too simple folder hash algorithm caused issues with the file synchronization and was replaced with a more sophisticated one (see #4934).
Updated mediaelement.js to version 2.9.5 (see #4917).
If folder URLs are enabled in the back end settings, generate folder URL aliases in the site structure (see #4933).
Readded the default value for textareas to the form generator (see #4932).
Readded the option to limit the file tree to a certain path (see #4926).
Added a hint that selected files can be dragged to re-order them (see #4838).
Correctly add news and event images as RSS feed enclosures (see #4928).
Correctly scale videos (see #4896).
Readd a language to the meta editor drop-down if it is deleted (see #4716).
Add the static JavaScript file before the non-static ones (see #4890).
Correctly check permissions to toggle the visibility of content elements now that they can be used everywhere (see #4894).
Added an accessible jQuery accordion variant (see #4900).
Correctly link to FAQs via insert tag (see #4905).
Correctly handle wildcards in the page and file picker (see #4910).
Correctly handle the case that a front end module is included in a page layout more than once (see #4849).
Correctly detect the language fragment in the error 404 page (see #4669).
Correctly check for the version 2.9 update in the install tool (see #4920).
Automatically adjust the CSS framework if the layout builder and the responsive grid are combined (see #4824).
Pass the cache status to all recursive replaceInsertTags()
calls (see #4402).
Updated jQuery to version 1.8.2 and jQuery UI to version 1.8.24 (see #4848).
The autoload creator now correctly reads files (see #4876).
Encode single quotes in JavaScript calls (see #4889).
Do not add a content element to news or events without text (see #4882).
Fixed the automatic page alias generator (see #4880).
Correctly handle small class files in the autoload creator (see #4876).
The Email class now correctly embeds all kind of images (see #4562).
Consider the dynamic parent table when deleting child records (see #4867).
Correctly detect the namespace in the autoload creator and support custom configurations per path (see #4776).
Do not regenerate the autoload.php
files when generating the IDE compatibility
file (see #4810).
Model class names which cannot be build from the corresponding table name can
now be registered in the $GLOBALS['TL_MODELS']
array (see #4796).
Removed the back end context menu, because it was buggy in IE and did not work at all on touch-based devices (see #4459).
Do not set a right boundary for the calendar navigation if there are events with unlimited recurrences (see #4862).
Gradient angles are now converted from the new syntax to the legacy syntax for the prefixed versions (see #4569). This also means that from now on you have to use the new syntax, e.g. "to bottom" instead of "top" and "180deg" instead of "270deg" to generate a top to bottom gradient.
Show the hint arrows in all "imageSize" fields by default (see #4326).
Updated TCPDF to version 5.9.192 and fixed some CHMOD settings (see #4819).
Added the classes "first" and "last" to the breadcrumb menu to be more in line with the other navigation templates (see #4833).
Correctly link to articles and FAQs when using insert tags (see #4835).
Do not add the file picker to the list of referer addresses (see #4855).
The CAPTCHA form field now supports the "placeholder" attribute (see #4865).
Correctly add enclosures to RSS/Atom feeds (see #4853).
Handle numeric IDs in the "image" insert tag (see #4805).
If folder URLs are disabled in the back end settings, the "generate alias" job (edit multiple) will generate simple aliases (see #4846).
Correctly handle replacements when uploading files (see #4818).
Only limit getTemplateGroup()
to a theme in the articles module (see #4808).
Decode Punycode domains when used via insert tag (see #4753).
Correctly handle open tags in String::substrHtml()
(see #4773).
Correctly handle units when importing style sheets (see #4721).
Manually merge the legacy database.sql
definitions (see #4766).
Skip news archives and calendars without a jumpTo page when creating RSS feeds (see #4784).
Index the content of the download(s) element (see #4755).
The mediabox plugin did not play Vimeo videos (see #4770).
Comments can now be sorted descending again (see #4782).
Readded the news list "skip items" feature (see #4783).
Use the Validator
class to validate date and time formats (see #4762).
Do not add invalid "float" commands to images (see #4758).
Fixed the CHANGELOG parser in the back end (see #4190).
Fixed the SyntaxHighlighter "html-script" option (see #4748).
Do not offer to drop all tables when installing an extension (see #4622).
Consider the domain, language and publication settings when searching for a folder-style alias (see #4652).
Ignore case when entering an extension name in the extension installer of the repository manager (see #4689).
Consider the language of a forward target when setting up a forward page or
using a {{link}}
insert tag (see #4706).
Allow to import other white-space values than nowrap
(see #4519).
Show the teaser text in the full view if a news item or event does not have a text, so linking and commenting is possible (see #4630).
The style sheet importer now handles background gradients (see #4640).
Update jQuery to version 1.8.1 (see #4678).
Correctly determine in the install tool whether it is a fresh installation or the version 3 update is required (see #4676). Also, scan the files directory if an administrator account is created during the installation.
If an article is selected, do not hide articles in other columns (see #4740).
Support uppercase TLDs when validating e-mail addresses (see #4738).
Do not show the tool tips if the title is empty (see #4672).
Show the back button when editing multiple elements in parent view (see #4709).
Changed the Controller::replaceInsertTags()
logic so non-cacheable tags are
preserved by default (see #4712).
Correctly link new items and events to articles (see #4728).
Output the dynamic HEAD tags before the static ones (see #4700).
Do not cache the page if the file
parameter is set (see #4702).
Renamed the public module folders to "assets" (see #4667).
You can now exempt folders from the files synchronisation (see #4522). Exempt folders will also be hidden in the TinyMCE popup file select menu.
The newsletter subscription modules now work again (see #4660).
Add the static files URL to images added in the rich text editor.
Add the SyntaxHighlighter scripts at the page bottom.
Do not add the jQuery/MooTools scripts as separate scripts.
The new file structure only allows for two static URLs pointing to the upload
folder (TL_FILES_URL
) and the assets folder (TL_ASSETS_URL
) (see #4638). The
old constants will remain available for reasons of backwards compatibility.
Clone the Model and not the Collection when copying files (see #4628).
The "custom navigation" and "quick link" modules did not show if there was only a single page (see #4616).