Releases: textpattern/textpattern
Releases · textpattern/textpattern
v4.8.8
- Maintenance release with support for PHP 8.1, security enhancements, general improvements and bug fixes.
- Security: Fix reported cross-site scripting issue relating to article preview CSRF token (many thanks, Paul Ritchie at Pentest Limited).
- Fixed: More robust numeric searches.
- Fixed: Improved query efficiency of category operations.
- Fixed: Required parameters after optional in tag builder (thanks, @phiw13).
- Fixed: Admin-side pagination when sorting by non-unique values.
- Added: PHP 8.1 support.
- Added: Natural search mode.
- Added: Random form selection.
- Added: Support for AVIF image format, on PHP 8.1 or higher.
- Added: Global
limit
,offset
andsort
attributes. - Added:
url_title
attribute to<txp:article[_custom] />
. - Added:
range
attribute to<txp:article_image />
. - Added:
date
andtime
attributes to<txp:if_expired />
. - Added:
calendar
attribute to<txp:posted />
and similar tags. - Added: Substring extraction via
escape
attribute. - Added:
<txp:items_count />
tag. - Added: Expanded conditional
match
attribute with comparison operators. - Added:
UTC
is now a permitted time zone. - Added: Custom date formats.
- Changed:
<txp:category_list />
withchildren
>1 attribute behaviour. - Changed: Global
escape
attribute operates at the items level in lists. - Changed: Multi-site plugins directory defaults to
site/admin/plugins
. - Accessibility: Additional
aria-label
attributes for some internal links. - Internal: Removed
FOUND_ROWS()
which is deprecated in MySQL 8.0.17. - Internal: Prefer
is_readable()
andis_file()
tofile_exists()
. - Developer: Added plugin lifecycle events
upgraded
anddowngraded
. - Developer: Export new article IDs on duplicate.
- PrismJS 1.26.0.
v4.8.8-beta.1
First beta release of Textpattern 4.8.8 (aka Textpattern 4.8.8-beta.1
).
- Maintenance release with support for PHP 8.1, security enhancements, general
improvements and bug fixes. - Security: to be advised (many thanks, Paul Ritchie at Pentest Limited).
- Fixed: More robust numeric searches.
- Fixed: Improved query efficiency of category operations.
- Fixed: Required parameters after optional in tag builder (thanks, phiw13).
- Fixed: Admin-side pagination when sorting by non-unique values.
- Added: Natural search mode.
- Added: Random form selection.
- Added: Support for AVIF image format, on PHP 8.1 or higher.
- Added: Global
limit
,offset
andsort
attributes. - Added:
url_title
attribute to<txp:article[_custom] />
. - Added:
range
attribute to<txp:article_image />
. - Added:
date
andtime
attributes to<txp:if_expired />
. - Added:
calendar
attribute to<txp:posted />
and similar tags. - Added: Substring extraction via
escape
attribute. - Added:
<txp:items_count />
tag. - Added: Expanded conditional 'match' attribute with comparison operators.
- Added:
UTC
is now a permitted time zone. - Added: Custom date formats.
- Changed:
<txp:category_list />
withchildren
>1 attribute behaviour. - Changed: Global
escape
attribute operates at the items level in lists. - Accessibility: Additional
aria-label
attributes for some internal links. - Internal: Removed
FOUND_ROWS()
which is deprecated in MySQL 8.0.17. - Internal: Prefer
is_readable()
andis_file()
tofile_exists()
. - Developer: Added plugin lifecycle events
upgraded
anddowngraded
. - Developer: Export new article IDs on duplicate.
- PrismJS 1.24.1.
Final cut of Textpattern 4.8.8 expected 2022 Q1.
v4.8.7
High priority maintenance release to address functionality and setup issues discovered after 4.8.6 release.
- Fixed: Users panel throws error due to missing DB prefix (thanks, prbt2016).
- Removed: Database user
GRANT
check during initial setup, which broke some installations. - Changed: Context check priority in tags.
v4.8.6
DO NOT USE IN PRODUCTION - issues discovered after release, use 4.8.7 instead.
Textpattern CMS maintenance release including improvements for PHP 8.0, bug fixes and minor tweaks.
Headlines
- Fixed regression in override form usage in lists (thanks, Christian Rapp).
- Fixed undefined $article warning when accessing non-existent articles.
- Fixed error with <txp:output_form /> tag on empty forms (thanks, Adi).
- Fixed low-privilege users can save immediately after duplicating articles.
- Latest text translations. Thank you to all our translators.
- Option to create database during setup.
- Permission (grants) verification during setup.
Tag modifications
- Articles can be filtered by keywords more easily.
- Added:
id
attribute to<txp:if_different />
tag. - Added:
db
option to the globalescape
attribute. <txp:variable trim>
trims its own output (thanks, cara-tm).<txp:link_to_next/prev>
can return URL or container.<txp:page_url>
and<txp:if_request>
tags are more flexible.- Boost power of txp:article(_custom) grouping by date.
- Deprecate
<txp:search_result_date />
. Use<txp:posted />
instead. - Remove deprecated break attribute from search_result_excerpt tag.
Back-end tweaks
- 'Assign sections' from Themes panel only selects its own sections.
- No Edit options in Write panel without appropriate privileges.
- No disabled update buttons on Languages panel (thanks, phiw13).
- Search improved when handling numbers. Comparators can also be used for numeric searches.
Developer goodies
- Permit
step=false
to hook into explicit empty step callbacks andstep=null
to indicate 'any step'. - Permit
$pre
to be any text. Opens up arbitrary callback grouping. - New
articles>multi_edit.$method
callback on Articles list panel. - User panel callbacks:
user>fields
anduser>from
to manipulate the query
user>controls
to affect the button area
user_ui>list.row
(pluggable_ui) for adding table data
user>steps
for plugins to register custom panel-level functionality - Diagnostics panel callbacks
diag>steps
anddiag_ui>level
for custom plugin steps and functionality.
v4.8.5
Textpattern CMS maintenance release including improvements for PHP 8.0 and bug fixes.
PHP compatibility
- Fixed: Database connection issue for new installations on PHP 8.0.
- Fixed: libxml_disable_entity_loader() deprecation warning on PHP 8.0.
- Fixed: Undefined array key/offset warnings on PHP 8.0.
- Fixed: System temp directory notice on PHP 8.0.
User interface & user experience
- Fixed: Custom field ordering on Write panel.
- Fixed: Diagnostics panel strings no longer have 'Help' appended, and the textarea is rendered fully in English to aid support requests.
- Fixed: RSS/Atom feeds display correct titles (thanks, jrmartin).
Tags and attributes
- Added: <txp:image_info type="mime" />.
- Added: More aggregators in <txp:article /> fields attribute.
- Added: Global break, replace and trim attributes.
- Added: breakby and breakform attributes for all content types.
- Added: Import attributes in <txp:php /> as PHP variables.
- Added: root attribute of <txp:page_url /> to create relative URLs.
- Changed: <txp:header /> attributes are unset by default. Ensure any name attributes are set before updating to avoid issues with custom headers.
- Changed: <txp:article_custom /> can paginate content using pageby attribute.
- Changed: <txp:images /> outputs full-size images if thumbs don't exist and <txp:images thumbnail="0" /> displays full-size images as expected.
- Changed: txp:images accepts <txp:else />.
- Changed: txp:variable default attribute can be used during assignment (thanks, cara-tm).
Images
- Added: Support for WebP image format, on PHP 7.1 or higher.
Language support, translations and internationalisation
- Added: Latest text translations. Thank you to all our translators.
- Added: Support for Fulah language translation.
- Added: Locale for en, and improved locale fallbacks.
- Changed: Better i18n handling for 'ago'.
Other stuff
- Fixed: Draft/hidden/pending articles output 404 Not Found status as they should.
- Added: SSL version verification on Diagnostics panel during update checks.
- Changed: Expose secondpass Advanced pref for testing.
- Changed: Plugin load warning includes version number.
- Changed: Comments off by default on new installations.
- Changed: If allowed, <txp:php /> is processed in forms even in article body.
- Changed: Copy Editors are allowed to use <txp:php /> (they were able to do it in forms anyway).
Developer
- Fixed: Form processing on 'pretext_end' callback.
- Developer: New pre-pretext_end callback.
- Developer: New txp.image>types callback.
v4.8.4
Textpattern CMS maintenance release 4.8.4.
Compatibility
- Support for PHP 8.0
User interface (UI) and user experience (UX)
- 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: Additional public-side language strings, primarily for themes.
- 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).
Tags
- Added: Tags syntax extension to allow for custom processing order.
- Added: ‘fields’ attribute to .
Internationalisation (i18n)
- Added: Latest translations. Thank you to all translators for your hard work.
Libraries and other internals
- PrismJS 1.22.0.
v4.8.3
Textpattern CMS maintenance release 4.8.3. Changes:
Plugins
- Fixed: A bug in 4.8.2 that can break some legacy plugins (thanks, Yiannis).
User interface (UI) and user experience (UX)
- Fixed: Improved upgrade path for Textpattern prior to version 4.5.0.
- 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.
- Added: Instantly refresh admin theme on change.
Themes
- Changed: Theme styles are now optional.
Tags
- Added: ‘loading’ attribute for <txp:article_image />, <txp:image /> and <txp:thumbnail /> tags.
Internationalisation (i18n)
- Added: Latest translations. Thank you to all translators for your hard work.
Libraries and other internals
- PrismJS 1.21.0.
v4.8.2
Textpattern CMS maintenance release 4.8.2. Changes:
Tags
- Fixed:
<txp:if_yield>
'else' container returning 1 instead of contents (thanks, Vienuolis). - Changed: Matching categories in
<txp:article_custom>
now performsAND
. Usematch="Category"
for previousOR
behaviour. - Changed: '
searchall="0"
' attribute filters by section. - Added: valueless 'replace' attribute filters out duplicates.
- Added: '
size
' attribute to<txp:images>
tag to filter by aspect ratio.
UI and UX
- Fixed: Multi-edit rearmed correctly after async saves on Forms panel.
- Fixed: Sanitize custom field labels on Write panel (thanks, luuthehienhbit).
- 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: Image/thumb uploaders default to image types (thanks, Adi).
- Changed: Comments made by logged-in authors don't go through moderation.
- Changed: Category links in breadcrumb permlink mode.
- Changed: Multi-edit only active when checkboxes are selected.
Language support & i18n
- 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.
- 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.
- Added: Language selector on login and User Edit panels (if >1 installed).
- Added: Latest translations. Thank you to all translators for your hard work.
Database and server-related internals
- Fixed: Date tags return -1 in some server setups (thanks, the blue dragon).
- Fixed: Removed
TRADITIONAL
sql_mode
for a smoother upgrade (thanks, Adi). - Fixed: Plugin panel uses the tempdir pref correctly.
- Added: Support for table_collation variable in
config.php
to affectsafe_create()
calls, when used in tandem withdbcharset
.
Plugins
- Fixed: Plugins loaded from cache show correct Textpack menu labels instead of untranslated strings.
- Fixed: Plugin auto-TOC strips out heading markup (thanks, Adi).
- Developer: New 'pre' pretext callback.
- Developer: Plugins can alter
$pretext
. - Developer: Add ability to filter strings in
Lang->getPack()
andextract()
. - Developer:
getIfElse()
function returns 'else' part of<txp:if_yield else />
, and may be used as anEvalElse()
replacement.
v4.8.1
Textpattern CMS maintenance release 4.8.1
UI and UX
- 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.
Themes
- Changed: Dedicated '*' option when altering theme/page/style to leave assets as they are.
- 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.
Scaffolding
- Changed: Multi-assign pageless (live) sections.
- 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: Use
noopener
on target="_blank" links. - Fixed: Default value of permlink_format on new installs. Thanks, cara-tm.
- Fixed: Multi-site index.php correctly included in multi-site css.php.
Tags
- Changed: Support
<txp:else />
in shortcodes. - Added:
showalways
attribute for<txp:pages />
tag.
Language support
- Added: Latest translations. Thank you to all translators for your hard work.
Libraries and internal workings
- Changed: Optimised language loading.
- Added: Support for InnoDB database engine.
- Fixed: RPC errors when altering content from remote editors.
- 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.
- jQuery 3.5.1.
- PrismJS 1.20.0.
- jQuery File Upload 10.29.0.
v4.8.0
Textpattern CMS 4.8.0
- Changed: Minimum system requirements increased to PHP 5.5.
- Changed:
<txp:newer />
and<txp:older />
tags support pagination ranges. - Changed: Author's real name is available in
<txp:page_url>
. - 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
<txp:section_list>
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:
<txp:evaluate />
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:
<txp:if_request />
tag for checking server, URL, POST and cookie variables. - Added:
<txp:pages />
tag for enhanced pagination schemes. - Added: 'item' attribute to
<txp:yield />
tag. - Added: 'title' attribute to image tags.
- Added: 'class' attribute to comment form tags.
- Added: 'match' and 'separator' attributes to
<txp:if_variable />
tag. - Added: 'month' and 'time' attributes to
<txp:file_download_list />
and<txp:linklist>
tags. - Added: 'pg', 'total' and 'limit' attributes to
<txp:newer />
and<txp:older />
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
<txp:title />
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:
<txp:category_list>
'sort' attribute respects 'categories' attribute instead of requiringsort=""
override. - Fixed:
<txp:recent_articles>
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.