Changes in 4.8.4 (29 Nov 2020) * Maintenance release including support for PHP 8.0 and bug fixes. * Fixed: Write panel JS error when override forms were switched off (thanks, GugUser). * Fixed: Default publishing section is not updated on section delete/rename. * Added: 'fields' attribute to . * Added: Tags syntax extension to allow for custom processing order. * Added: Additional public-side language strings, primarily for themes. * Added: Latest translations. Thank you to all translators for your hard work. * Changed: Override forms can be of any type, not just article. See prefs. * Changed: Admin-side theme name references are appended with the theme version number. * Changed: Improved keyboard focus within responsive tables (to allow scrolling via arrow keys). * PrismJS 1.22.0. Changes in 4.8.3 (13 Sep 2020) * Fixed: A bug in 4.8.2 that can break some legacy plugins (thanks, Yiannis). * Fixed: Correctly label 'Allow commenter images in comments' pref. * Fixed: Reload private prefs on preferences save (thanks, phiw13). * Fixed: More notifications on list panels if there were no assets recorded. * Fixed: Improved upgrade path for Textpattern prior to version 4.5.0. * Added: 'loading' attribute for , and tags. * Added: Instantly refresh admin theme on change. * Added: Latest translations. Thank you to all translators for your hard work. * Changed: Theme styles are now optional. * PrismJS 1.21.0. Changes in 4.8.2 (29 Jul 2020) * Fixed: 'else' container returning 1 instead of contents (thanks, Vienuolis). * Fixed: Sanitize custom field labels on Write panel (thanks, luuthehienhbit). * Fixed: Date tags return -1 in some server setups (thanks, the blue dragon). * Fixed: Notification on list panels if there were no assets recorded. * Fixed: Incorrect search label for 'name' on Links panel. * Fixed: Override forms on Write panel stay in step with live Theme/Section (thanks, cara-tm). * Fixed: Plugins loaded from cache show correct Textpack menu labels instead of untranslated strings. * Added: 'size' attribute to tag to filter by aspect ratio. * Added: valueless 'replace' attribute filters out duplicates. * Added: Language selector on login and User Edit panels (if >1 installed). * Added: Support for table_collation variable in config.php to affect safe_create() calls, when used in tandem with dbcharset. * Changed: Matching categories in now performs AND. Use match="Category" for previous OR behaviour. * Changed: Category links in breadcrumb permlink mode. * Changed: 'searchall="0"' attribute filters by section. * Changed: When logging in, chosen login language is used as admin language. * Changed: Password reset/welcome/activation and comment notification emails sent in author language. * Changed: Multi-edit only active when checkboxes are selected. * Changed: Comments made by logged-in authors don't go through moderation. * Fixed: Multi-edit rearmed correctly after async saves on Forms panel. * Fixed: Update language list when deleting/switching to prevent stale entries. * Fixed: Language errors when using article preview (thanks, Destry and jakob). * Fixed: Date/time format when switching front-end language. * Fixed: Removed TRADITIONAL sql_mode for a smoother upgrade (thanks, Adi). * Fixed: Plugin panel uses the tempdir pref correctly. * Fixed: Image/thumb uploaders default to image types (thanks, Adi). * Fixed: Plugin auto-TOC strips out heading markup (thanks, Adi). * Developer: New 'pre' pretext callback. * Developer: Plugins can alter $pretext. * Developer: getIfElse() function returns 'else' part of , and may be used as an EvalElse() replacement. * Developer: Add ability to filter strings in Lang->getPack() and extract(). Changes in 4.8.1 (31 May 2020) * Changed: Improved pophelp for update check status on Diagnostics panel. * Changed: Tag builder includes new 4.8.x attributes where possible. * Changed: Lazy load images within Images list on supported browsers. * Changed: Support in shortcodes. * Changed: Improved handling of yyyy/mm/dd article permlinks. Single-digit months and days permitted, and /section/yyyy/mm/dd will limit articles to the given section. * Changed: Multi-assign pageless (live) sections. * Changed: Dedicated '*' option when altering theme/page/style to leave assets as they are. * Changed: Use noopener on target="_blank" links. * Changed: Optimised language loading. * Added: Latest translations. Thank you to all translators for your hard work. * Added: 'showalways' attribute for tag. * Added: Support for InnoDB database engine. * Fixed: Development and live assets are kept in sync when renamed. * Fixed: When setting development assets/themes, link to both live and dev assets even if they share a name. * Fixed: Default value of permlink_format on new installs. Thanks, cara-tm. * Fixed: Multi-site index.php correctly included in multi-site css.php. * Fixed: JavaScript console warning on Hive theme login screens. Thanks, cara-tm. * Fixed: Optional parameters come first in function definitions. * Fixed: Fall back on partial language identifier if code is not found. * Fixed: Strings loaded from plugin cache no longer break those already loaded. Thanks, David. * Fixed: RPC errors when altering content from remote editors. * jQuery 3.5.1. * PrismJS 1.20.0. * jQuery File Upload 10.29.0. Changes in 4.8.0 (25 Feb 2020) * Changed: Minimum system requirements increased to PHP 5.5. * Changed: and tags support pagination ranges. * Changed: Author's real name is available in . * Changed: Refined scope of root .htaccess, and restricted directory listing in /files/ and /textpattern/ with their respective .htaccess. * Changed: Non-searchable sections can be omitted from output with valueless 'exclude' attribute. * Changed: Consistent Edit step search behaviour on Plugins and Links panels. * Changed: Text/HTML tabs now in popup dialog, with optional live preview. * Changed: Tag parser tweaks for secondpass handler. * Changed: Plugins cached and loaded from disk to avoid eval(). * Changed: Custom fields support from/to filtering. * Changed: removes empty items from lists. * Changed: Scroll to top on list panels during navigation. * Changed: Random generator supports random_bytes and doesn't throw errors. * Changed: Improved performance of syndication feed handling for sections. * Changed: Check for updates throttle reduced to 1hr from 24hrs. * Added: Global public theme switcher. * Added: Dedicated live/dev theme switching. * Added: Support for PHP 7.4. * Added: tag for checking server, URL, POST and cookie variables. * Added: tag for enhanced pagination schemes. * Added: 'item' attribute to tag. * Added: 'title' attribute to image tags. * Added: 'class' attribute to comment form tags. * Added: 'match' and 'separator' attributes to tag. * Added: 'month' and 'time' attributes to and tags. * Added: 'pg', 'total' and 'limit' attributes to and tags. * Added: Support for id ranges in some tags and admin fields. * Added: Support for HTTP status 451 (Unavailable For Legal Reasons). * Added: Support for native PHP password hashing. * Added: Dark Mode support in Hive admin theme. * Added: Pageless sections for content snippets and creative article flows. * Added: Per-section article link format override. * Added: 'breadcrumb/title' article link format. * Added: 'section/category/title' article link format. * Added: Links have an editable publish time and date. * Added: Category searching to a specified depth. * Added: Custom field aliases and URL filters via valueless attributes. * Added: Global 'evaluate', 'replace' and 'yield' attributes. Evaluate can execute contained content in arbitrary order. * Added: Ability to trim lists when using valueless 'trim' attribute. * Added: Link to phpinfo() in Diagnostics panel. * Added: Configuration file generated during setup can be downloaded. * Added: Support for Bengali language translation. * Added: Support for Khmer language translation. * Added: Support for Norwegian Nynorsk language translation. * Added: Support for Welsh language translation. * Added: Latest translations. Thanks to all Crowdin translators for their work. * Added: Hive and Classic admin themes now support 3 column layouts. * Added: Option to disable auto-expanding text areas in Hive admin themes via config.php file. See Hive theme's README.txt file for instructions. * Added: Warning to admin panels if JavaScript is unavailable. * Added: Support for SSL MySQL connections in config.php. * Removed: Obsolete 'No widowed words' preference setting. If this feature is needed it can be implemented directly with tag. * Removed: Some deprecated functions from long ago. * Fixed: index.php correctly included in css.php. * Fixed: 3 undefined routing-related indexes. * Fixed: Article preview (txpreview) is not cached. * Fixed: 'sort' attribute respects 'categories' attribute instead of requiring sort="" override. * Fixed: only uses default link without form/container. * Fixed: Use locale on admin side. * Fixed: Localization of pre-flight diagnostic upgrade messages. * Fixed: Undefined variable warnings thrown via compact(). * Fixed: Password handling when using MySQL 8+. * Fixed: nbsp on French opening quote broke Textile in some cases. * Fixed: Incorrect acronym tag in welcome article. * Accessibility: Improved indication of required form fields. * Accessibility: Honour 'prefers-reduced-motion' in official themes. * Accessibility: Target WCAG 2.0 AAA contrast levels in official themes. * Accessibility: Improved ARIA experience. * Accessibility: Improved keyboard-only access experience. * Developer: Plugins can be uploaded with .php and .zip extensions. * Developer: Upload order and file totals sent when batch uploading files. * Developer: Some txplib_misc.php functions moved to txplib_admin.php. * Developer: PHP magic_quotes_gpc, magic_quotes_runtime, safe_mode and register_globals support removed. * Developer: Title accessible to plugins in Atom/RSS. * Developer: Merge headers on demand. * Developer: Tags can be registered with custom attributes/parameters. * Developer: Multiple forms can be fetched at once. * Developer: txp.article > neighbour.criteria callback on Write panel. * Developer: Please register plugin tags or they will not work in future. * Performance optimizations via cacheing and preloading frequent content. * Textile 3.7.6. See https://github.com/textile/php-textile/releases/tag/v3.7.6 for full list of changes in this release (thanks, gocom). * jQuery 3.4.1. * PrismJS 1.19.0. * jQuery File Upload 10.8.0. Changes in 4.7.3 (25 Feb 2019) * Maintenance release with enhancements and bug fixes. * Fixed: 'Export to disk' checkbox state inconsistencies for new assets. * Fixed: Logout issue in Classic admin theme. * Fixed: A bug when PHP 'mbstring' extension is disabled. * Fixed: Prevent Alt+S from triggering save (thanks, o10154016). * Fixed: Language .ini files trump old .txt files. * Changed: Permit falling back on pophelp in 'lang' database table. * Changed: 'Show password' on Users panel displays both passwords. * Added: values are available in external forms too. * Added: Indicator for GD Graphics Library WebP support in Diagnostics panel. * Added: Latest translations. * Added: Complete Italian inline help translation. Many thanks to Giampiero Mellea for all their work. * Developer: Introduce L10n/Lang->languageList() to get language tuples. * Textile 3.7.1. See https://github.com/textile/php-textile/releases/tag/v3.7.1 for full list of changes in this release (thanks, gocom). Changes in 4.7.2 (20 Dec 2018) * Maintenance release with enhancements and bug fixes. * Fixed: A bug with tags in 'month' URL mode. * Fixed: A bug with tag. * Fixed: will always respect its 'form' attribute setting, if set. * Fixed: A bug with the global 'not' attribute. * Fixed: Multibyte characters are correctly obfuscated by . * Fixed: Salutation text within emails not displaying correctly. * Fixed: 'problem_connecting_update_server' language string grouping corrected. * Fixed: Unparsed 'must_reassign_assets' and 'cannot_assign_assets_to_deletee' strings. * Changed: can be used as a container tag, and also accepts 'aria_label' and 'placeholder' attributes. * Changed: More robust search routes within default public-side theme. * Changed: Improved upgrade route where MySQL NO_ZERO_DATE is set. * Changed: Enhanced password manager compatibility on login and user details pages. * Changed: Extended fallback to 'C' locale in some situations. * Changed: Partially translated inline help files use fallback language (by default: English) where localized help items are not present. * Changed: Hive admin theme login panel now displays link to public site. * Changed: Simplified Classic admin theme login panel layout. * Changed: Fine-grained development theme preview. * Changed: More customizable Atom/RSS feeds via 'atom_head', 'rss_head' and 'feed_filter' callbacks. * Changed: Deleting an article deletes any associated comments. * Changed: Forms, Pages and Styles accept pre-4.7 names for editing, but must be sanitized prior to saving. * Changed: Some emoji are preserved in automatically-generated article URL titles. * Changed: Article text blocks starting with a Textpattern tag are not Textile'd. * Changed: File data is available on 'file_download' callback. * Changed: Article lists can be split by 'breakby' form value. * Changed: Expanded Schema.org media items within default public-side theme. * Added: Latest translations. * Added: Czech inline help translation. Many thanks to Miloš Berka for all their work. * Added: French inline help translation. Many thanks to Lowel for all their work. * Added: Partial Italian inline help translation. Thanks Giampiero Mellea. * Added: Global 'trim' and 'default' attributes. * Added: Global 'wrapform' attribute. * Added: Global 'escape="ordinal|spell|url"' attribute values. * Added: 'aria_label' and 'placeholder' attributes on comment input fields. * Added: 'breakform' attribute to tag. * Added: 'test' attribute to tag. * Added: 'context' attribute to , , and tags. * Added: 'context' and 'format' attributes to tag. * Added: 'add', 'reset', 'separator' and 'output' attributes to tag. * Added: Custom form media (MIME) types, served as 'flat' files if needed. * Added: Option to export form/page/style to disk on save. * Added: Custom functions can be registered for use in tag. * Textile 3.7. See https://github.com/textile/php-textile/releases/tag/v3.7.0 for full list of changes in this release (thanks, gocom). * jQuery File Upload 9.28.0. Changes in 4.7.1 (26 Jun 2018) * Maintenance release with bug fixes. * Fixed: and correctly parse their content. * Fixed: with 'listform' attribute returns correct value. * Fixed: Textpack correctly updates timestamp where web server and database server reside in different timezones. * Fixed: Fallback to 'C' locale in some situations. * Fixed: Section page/style selectors are correctly populated. * Fixed: Articles without a URL-only title have a valid permlink across all link formats. * Changed: Additional code optimization for PHP 5.4 and later. * Changed: Improved language string coverage in setup process. * Changed: Extended use of Textpattern 4.7.*-native tags in Four Point Seven theme. * Changed: Additional database-related information included in Diagnostics. * Added: Latest translations. * PrismJS 1.15.0. * jQuery File Upload 9.22.0. Changes in 4.7.0 (15 May 2018) * In memory of Dean Cameron Allen, creator of Textpattern CMS. * Changed: Minimum system requirements increased to PHP 5.4.0. * Textpattern instances older than version 4.2.0 (released 17 Sep 2009) should upgrade to version 4.2.0 before upgrading to version 4.7.0. * Added: Support for website themes, markup stored within the database (accessed via the Themes panel) and available as flat file templates for easier version control, portability and installation (many many thanks, NicolasGraph). * Added: Support for installation on Nginx web servers (thanks, makss). * Added: Support for automated installation from CLI (thanks, makss). * Added: Filipino language translation (thanks, Joseph Buarao). * Added: Tagalog language translation (thanks, Kurt Lem Zamora). * Added: User-selectable column list options in tables replaces 'Show more detail' checkboxes. Settings remembered per device. * Added: Valueless attributes. * Added: Optional short-tags. * Added: Ability to use Forms as tags via or tags. * Added: Tag global attributes: 'breakby', 'breakclass', 'class', 'escape', 'html_id', 'not' and 'wraptag'. * Added: tag can count pages. * Added: tag. * Added: tag allows optional setting of HTML headers on page output. * Added: tag. * Added: XML and JSON file support. Completely overhauled setup procedure to centralize and verify/delete preferences on upgrade. Table structure and preferences defined in files for easier maintenance (thanks, makss). * Added: Per-user admin panel language preference (decoupled from site language preference). * Added: All users can administer their own key biographical info. * Added: Ability to copy an article without enforced save. * Added: Button to swap width and height values on image edit thumbnail generator. * Added: Ctrl+S/Cmd+S keyboard shortcuts for Submit, Publish and Save buttons on any admin panel. * Added: Multiple Files and Images upload with progress meter. * Added: Section searches by description. * Added: Visual indicator that a subset of search fields are in use. * Added: One-pass comment searches by parent article (thanks, makss). * Added: Diagnostics can optionally suppress sensitive path data. * Added: 'Expire now' checkbox on Write panel. * Added: Automatic table of contents generation for well-structured plugin help text. * Added: JSON-LD and Open Graph metadata scaffold included with default theme. * Removed: Involuntary Personally Identifiable Information within comments (IP address) and logs (IP address/host) no longer collected - for GDPR compliance. * Removed: Any pre-existing IP addresses stored in comments database table are deleted upon upgrade to 4.7.0 (and not stored in future) - for GDPR compliance. * Changed: Comments 'Remember me?' option is now an opt-in instead of opt-out, setting stored in localStorage instead of as a cookie - for GDPR compliance. * Changed: Revised multi-site installation routine and symbolic linking (thanks, jools-r). * Changed: Most panels perform saves/searches/pagination without page refreshes (Ajax). * Changed: Last used Page/Form/Stylesheet remembered. * Changed: Forms can recursively (up to 15 levels deep) call themselves. * Changed: can be used as a container tag, and accepts 'type' attribute. * Changed: Enhanced sort and status handling. * Changed: Enhanced 'exclude', 'expired', 'month' and 'time' attributes. * Changed: can output nested lists. * Changed: accepts 'parent' attribute. * Changed: tag accepts 'id' and 'name' attributes. * Changed: and are more consistent. * Changed: Reinstate tag and add 'break', 'class' and 'wraptag' attributes. * Changed: Deprecated and tags, use and , respectively, instead. * Changed: and tags accept 'rel' attribute. * Changed: tag supports user-defined attributes, coupled with . * Changed: tag SEO - site name renders after page name, default separator changed from ': ' to ' | ', page numbers added. * Changed: tag can return more URL paths via 'type' attribute. * Changed: tag accepts 'type' attribute to return admin-side URL. * Changed: Deprecated the 'poplink' attribute on tag. * Changed: tag accepts 'name' and 'default' attributes. * Changed: Pagination tags (like and ) can be placed before tag. * Changed: Image Edit panel available to all users - read-only to some (thanks, phiw13). * Changed: Textfilter options and help topics moved inline with their textareas. Write panel 'sidehelp' twisty and article>sidehelp callback removed. * Changed: Categories moved from Sort & Display subpanel to their own twisty. Override Form (if used) moved to 'Sort and display' subpanel. 'Advanced' twisty and its callback removed. * Changed: Languages are updated automatically on upgrade. * Changed: Further improvements to RTL language support. * Changed: Language translations included in core instead of legacy RPC server. * Changed: Diagnostics and tag trace reports always rendered in English (for easier international support enquiries). Text strings moved to 'mode.ini'. * Changed: Use local inline help files instead of legacy RPC server. Help topics rendered in dialogs instead of new window (thanks, makss). * Changed: Use JSON file to check for new releases/pre-releases instead of legacy RPC server (thanks, makss). * Changed: Cleanup of panels/UI elements shown based on specific user roles. * Changed: Plugin Textpacks stored in database and installed on demand. * Changed: Plugins have persistent data column available for custom storage. * Changed: Clearer plugin list on Diagnostics panel. * Changed: Article posted/modified info and ID moved below Title field. * Changed: Enable HTTP 226 responses (thanks, da2x). * Changed: Make Preferences panel and subpanels fully printable (thanks, phiw13). * Changed: Panel states stored only client-side (localStorage). * Changed: pluggable_ui() behaves more intelligently when chaining. * Changed: Pagination steps are more grid friendly: 12/24/48/96 items. * Changed: More locale-aware date handling in safe_strftime(). * Changed: Deprecated support for uploading .swf files via Images panel (support will be removed entirely in a future version). * Changed: Extensive admin theme image optimizations. * Changed: Admin theme accessibility improvements. * Changed: Admin theme layout improvements on small devices. * Changed: Pagination and search added to Plugins panel. * Changed: Plugin preview page syntax highlighting and layout improvements. Also show Textpack string additions preview (if applicable). * Changed: Removed 'Create ...' links from Pages/Forms/Styles panels when viewing a new, unsaved Page/Form/Style (thanks, adi). * Changed: Categories can no longer reassign the parent of a child element to its children. Avoids infinite tree loops. * Changed: Article preview includes debug info. * Changed: 'wraptag' attribute can prepend/append content using special '<+>' syntax. * Developer: 'ahu' constant as multi-site-compatible URL to admin side. Plugin authors please use ahu in place of hu.'textpattern'. * Fixed: Multi-site setup overhauled: Correct setup and install messages, diagnostics information, login URL in user-invite email, login cookie accessible to public and admin URLs (thanks, jools-r). * Fixed: SQL injection in 'qty' attribute (thanks Manuel Garcia Cárdenas). * Fixed: Keyboard navigation on select list popups. * Fixed: Only update database version string if using release version. * Fixed: Support for other MySQL client versions (thanks, CeBe). * Fixed: URL handling for /title and /year/month/day/title (thanks, planeth44). * Fixed: Panel layout improvements across all privilege levels. * Fixed: Per-user preferences exposed to all users (thanks, gaekwad). * Removed: zxcvbn password strength meter. * Textile 3.6. * jQuery 3.3.1. * PrismJS 1.14.0. * PHPass 0.5. * jQuery File Upload 9.21.0. Changes in 4.6.2 (21 Oct 2016) * Maintenance release with bug fixes. * Fixed: More complete SQL trace on non-row-based queries. * Fixed: Update process for filesystem-only releases. * Fixed: Normalize link text in some tag builder tags (thanks, makss). * Fixed: Incorrect focus ring styling. * Fixed: Define Trace in RPC (thanks, Retrax/makss). * Added: Better cross-browser support for input type=color (thanks, NicolasGraph). * Added: Support for printing of admin panels. * Added: Additional Latvian setup translations. Changes in 4.6.1 (05 Oct 2016) * Maintenance release with bug fixes. * Added: A modern interpretation of the 'Classic' admin theme. * Added: More complete SQL trace (thanks, makss). * Fixed: New articles only marked modified after modification (thanks, gaekwad). * Fixed: Silently fail if old files cannot be deleted. * Fixed: Conditional tags now trigger correctly (thanks, craigerskine). * Fixed: Missing sql_now_* preferences (thanks, makss). * Fixed: Save preference pane states on keyboard focus too (thanks, phiw13). * Fixed: Avoid setLocale errors if locale unavailable in lang tag attributes (thanks, brachycera). * Fixed: 'Change author' multi-edit only available to users with sufficient rights (thanks, makss). * Fixed: Relative URLs in feeds (thanks, hidalgo). * Changed: Made better use of available screen estate for presentation panel code textareas (thanks, phiw13). * Changed: Tightened up vertical layout on Forms panel. * Changed: Put an upper limit on preference group widths for better readability (thanks, phiw13). * Changed: CONTRIBUTING.textile info has been consolidated into main README.txt file. * jQuery UI 1.12.1. * zxcvbn 4.4.0. Changes in 4.6.0 (10 Sep 2016) * Textile v3.5. * Improved RTL language support. * Improved admin side UI. * Requires PHP 5.3.3 or newer. Compatible with PHP 7.0 and MySQL 5.7 (thanks Ruud van Melick). * New tags: , , and . * No more plaintext passwords sent: password reset requests are handled directly on the server. * One-week validity for new account activation requests by default. Configurable in config.php (see ACTIVATION_EXPIRY_HOURS). * Ninety-minute validity for password reset requests by default. Configurable in config.php (see RESET_EXPIRY_MINUTES). * Stronger password hashes and strength meter implemented (zxcvbn). * Performance increases due to cache-friendly public side database queries, parser improvements and reduction of admin-side queries (thanks Ruud van Melick and etc). * Added: Support for adding other markup languages (for example, Markdown) via plugins. * Added: Default article publishing status preference. * Added: Support for custom CSS and JavaScript files in admin themes, for advanced users. * Removed: Import panel - the blog import options were obsolete (thanks Ruud van Melick). * Removed: Commenter IP ban feature - this method of banning is unreliable and becoming obsolete (thanks Ruud van Melick). * Removed: Modernizr - unnecessary due to Internet Explorer 11 being the minimum Internet Explorer browser requirement. * Changed: The /textpattern/theme/ directory has been renamed to /textpattern/admin-themes/ for stronger differentiation between this and the public-side /themes/ directory planned for Textpattern 4.7. Additionally prevents breakage of preferences panel caused by old, incompatible themes residing in the previously titled admin theme directory during upgrade. * Changed: accepts 'exclude' attribute to exclude articles by a comma-separated id list. * Changed: accepts 'escape' and 'format' attributes. * Changed: accepts 'html_id', 'limit' and 'offset' attributes. * Changed: : Deprecated 'isize', 'msgcols', 'msgrows', 'msgstyle', 'previewlabel', 'submitlabel', 'rememberlabel', and 'forgetlabel' attributes . * Changed: , , and can be used as container tags. * Changed: accepts 'size' attribute. * Changed: accepts 'cols' and 'rows' attributes. Removed capability to apply an immediate style to the element. * Changed: accepts 'size' attribute. * Changed: accepts 'label' attribute. * Changed: accepts 'rememberlabel' and 'forgetlabel' attributes. * Changed: accepts 'label' attribute. * Changed: accepts 'size' attribute. * Changed: accepts 'id' and 'name' attributes. * Changed: accepts 'escape' and 'format' attributes. * Changed: accepts 'escape', 'format' and 'separator' attributes. * Changed: can be used as a container tag. * Changed: accepts 'offset' attribute. * Changed: accepts 'html_id', 'limit' and 'offset' attributes. * Changed: Deprecated tag. Use instead. * Changed: Deprecated tag. * Changed: Deprecated 'breakclass' attribute for and . * Changed: Removed Form (article) Preview facility. * Changed: Removed empty 'About' section from new installs. * Changed: Tag builder has been reworked as a dialog window. * Changed: Increased 'page' and 'css' sizes in txp_section table. * Changed: 'Prevent widowed words in article titles' preference defaults to 'No' in new installs. * Changed: 'Include email in Atom feeds' preference defaults to 'No' in new installs. * Changed: Detailed debug trace log. * Changed: Default charset is now utf8mb4: supports a wider range of characters, including emoji. * Changed: Removed built-in Gzip compression of RSS feed and Atom feed. * Developer: getNextPref() now returns array members 'next' and 'prev' with article data, no longer returns array members 'next_id', 'next_title', 'next_utitle', 'next_posted', 'prev_id', 'prev_title', 'prev_utitle', 'prev_posted' * Developer: getNeighbour() returns 'false' if no matching neighbour article exists. * Developer: Uses 'mysqli' extension for database access, lose dependency on 'mysql' extension. * Developer: Uses the TXP 'now()' function instead of the SQL 'NOW()' function to create cache-friendly, faster SELECT queries. * Developer: Added jQuery UI library to admin side. * Developer: Added Prism code highlighting for and
 to admin
  side. The following languages are supported (when specified via classnames on
  the  tag, i.e. using 'class="language-xxx"): 'language-markup',
  'language-css', 'language-clike', 'language-javascript', 'language-json',
  'language-php', 'language-markdown', 'language-textile'. Optional line numbers
  are also supported when code highlighting, by adding an additional classname
  of 'line-numbers' to the parent 
 tag.
* Developer: Added DocBlock documentation comments throughout the source code.
* Developer: Adherence to PSR coding standards where possible.
* Developer: Function signature for wrapRegion() changed: 7th parameter 'ARIA
  role' dropped, as it shouldn't be stated for semantic tags such as 'section'.
* Developer: Refactored 'Validator', 'Constraint', and 'theme' classes into the
  'Textpattern' namespace; deprecated their 'txplib_validator' and
  'txplib_theme' implementations.
* Developer: Changed name of pref 'permalink_title_format' to 'permlink_format'.
* jQuery 1.12.4.
* jQuery UI 1.12.0.

Changes in 4.5.7 (20 Sep 2014)

* Maintenance release with bug fixes.
* Textile v2.4.3 resolves PHP 5.5 compatibility issues.
* Updated default site theme and libraries.
* Setup now remembers settings. No more 'form resubmission' browser warnings
  when going back through the wizard.
* Allow pre_publish_script in multi-site installations.
* Email address validation uses PHP's filter_var(), which permits addresses such
  as @[127.0.0.1].
* Fixed: , , , and
   tags for certain combinations with .
* Fixed: SQL statement escaping in set_pref().
* Fixed: Situations where set_pref() could corrupt the preference table if the
  string name contained '%' or '_' characters.
* Fixed: Save comment emails of any valid length properly.
* Fixed: Visitor logs support IPv6.
* Fixed: Articles can be assigned to sections with names longer than 64
  characters.
* Fixed: Setup script more robust, and compatible with MySQL 5.6.
* Fixed: Warnings when writing image thumbnails.
* Fixed: Files no longer trash author names, and empty files can no longer be
  created.
* Fixed: Percent encoding of spaces in site URL.
* Security: IXR fixes to prevent XML quadratic blowup attack.
* Security: Prevent variable injection during setup and plugin preview step.

Changes in 4.5.6

* Skipped due to broken update path for SVN users.

Changes in 4.5.5 (04 Oct 2013)

* Maintenance release with bug fixes, no security implications.
* Fixed: Compatibility issues with PHP 5.5 in  and setup routines.
* Fixed: Category table's parent-child associations break and the table malforms
  on name updates, if two different category types share same category name.
* Fixed: Image caption isn't escaped.
* Fixed: Admin-side JavaScript dies on Safari 5 (or any browser that doesn't
  allow re-defining keywords or constructs as variables).
* jQuery 1.8.3.

Changes in 4.5.4 (05 Dec 2012)

* Corrects a packaging error in the 4.5.3 archives.

Changes in 4.5.3 (04 Dec 2012)

* Maintenance release with bug fixes, no security implications.
* Fix , , , and
   tags for certain combinations with .
* Escape new page name in the 'Pages' panel.
* Developer: Render valid HTML in fInput() for input types 'file' and 'image'.
* Developer: In http_accept_format(), discard MIME formats with a quality factor
  below 0.1.

Changes in 4.5.2 (10 Oct 2012)

* Maintenance release with bug fixes, no security implications.
* Fix , , , and
   tags for setups with web server and database server in
  different time zones.
* Avoid "undefined variable" error while bulk-editing form types.
* Developer: Use actual callback instead of hard-coded function to render
  'View' link. Pass reference to partials meta data into partial callbacks as
  $rs['partials_meta'].
* Developer: Escape '