Skip to content

Releases: textpattern/textpattern

v4.9.0-beta.1

12 Aug 12:21
Compare
Choose a tag to compare
v4.9.0-beta.1 Pre-release
Pre-release

First beta release of Textpattern 4.9.0 (beta.1)

  • Feature release with support for PHP 8.4.0+, new functionality, security enhancements, general improvements and bug fixes.
  • Changed: Minimum system requirements increased to PHP 5.6 (PHP 8.2+ recommended).
  • Changed: Minimum system requirements increased to MySQL 5.5 (MySQL 8.0+ recommended).
  • Changed: Removed 'noopener' from target="_blank" links (now default behaviour in all supported browsers) (thanks, phiw13).
  • Changed: Removed 'aria-label' attributes where 'title' already exists.
  • Changed: Deprecate <txp:search_result_count />. Use <txp:items_count /> instead.
  • Fixed: Improved support for images with EXIF orientation metadata (thanks, jools-r).
  • Fixed: Avoid directory traversal when uploading plugins (thanks, bg1).
  • Fixed: Compiled plugins upload on PHP 5.
  • Fixed: Windows-generated zip plugins installable on Linux.
  • Fixed: Restored empty 'height' and 'width' attributes behaviour of <txp:image />.
  • Fixed: Self-closing tag output for html5 doctype to silence validator (thanks, jools-r).
  • Fixed: Ignore search in individual article mode.
  • Fixed: Take rfc2616 mail headers setting into account for separator.
  • Fixed: Sandboxed article/body/excerpt preview (thanks, grozdniyandy).
  • Added: Support for PHP 8.2, PHP 8.3.1+ and PHP 8.4.0+.
  • Added: SVG image support (thanks, osadl and jools-r).
  • Added: Option to define a Content Security Policy header for the Textpattern admin-side via config.php.
  • Added: PHPMailer for third-party SMTP delivery. See Admin>Preferences>Mail.
  • Added: Multi-edit for changing author language.
  • Added: Plugins can be uploaded from a URL by dragging to upload textarea.
  • Added: Compiled plugins can be uploaded via Browse... feature.
  • Added: Compatible plugin upgrades directly from the Plugins panel.
  • Added: Create and install new plugins directly from the Plugins panel.
  • Added: Plugin multi-edit option: revert to last installed code content.
  • Added: All plugin metadata exposed in the Plugin Edit panel.
  • Added: Plugin (zip-only) export feature.
  • Added: Support for aggregate window functions in compatible MySQL versions.
  • Added: Trailing slash URL preference.
  • Added: File download header preference.
  • Added: In-use asset counters to the Users panel.
  • Added: 'filter' attribute to <txp:section_list /> and <txp:if_section />.
  • Added: 'level' attribute to <txp:if_category />.
  • Added: Activity indicator for long upload processes.
  • Added: metaWeblog.newMediaObject for image upload over the MovableType API (thanks, Melonking906).
  • Added: Global 'offset' can be set by URL parameters.
  • Added: 'lang' attribute to <txp:page_url />.
  • Added: <txp:if_items_count /> tag.
  • Added: Reload language packs from disk.
  • Added: Shift+Space shortcut for 'Tab' indent in textareas.
  • Added: Input length tooltip when appropriate.
  • Added: <txp:date /> tag.
  • Added: Global 'variable' attribute.
  • Added: 'alias' attribute to <txp:evaluate />.
  • Added: 'parent' attribute to <txp:category />.
  • Changed: Plugins of all types trigger verify step (with improved security).
  • Changed: File Edit panel has the ability to rename and delete files, and change the download counter value (thanks, adi).
  • Changed: Image Edit panel has the ability to delete images.
  • Changed: In-use languages can not be deleted.
  • Changed: Image tags can take HTML attributes.
  • Changed: Less collision-prone custom fields name processing.
  • Changed: Do not generate empty syndication feeds for feedless sections.
  • Changed: Allow PHP scripting options off by default, and Diagnostics warning.
  • Changed: Introduce primary keys for all database tables, replacing some old indexes.
  • Changed: Category & section description field sizes increased to 1023.
  • Changed: <txp:header /> tag requires 'form' privilege.
  • Changed: Section-aware default search.
  • Changed: Extend character set that can be used in tag/attribute names.
  • Developer: Introduce UI class library for building interface components.
  • Developer: Tag registration is now mandatory.
  • Developer: Some of the lesser-used tags are loaded on demand from their class to save memory. Plugins must call them via processTags() function.
  • Developer: Add safe_exists() function to database layer.
  • Developer: Move $thisversion and $txp_is_dev to constants.php.
  • Developer: 'Visitor logs' panel is now bound to the new 'lore' event name (was: 'log') to prevent conflicts with privacy filters.
  • Developer: File upload callbacks (file_uploaded and files_uploaded pre+post).
  • Developer: Activation emails can be skipped via hidden notify="skip" field.
  • Vendors: DOMPurify 3.0.6.
  • Vendors: jQuery 3.7.1.
  • Vendors: jQuery UI 1.13.3.
  • Vendors: PHPMailer 6.9.1.
  • Vendors: PrismJS 1.29.0.
  • Vendors: Textile 4.1.1. (thanks, gocom).
  • Vendors: UglifyJS 3.19.0.

v4.8.8

24 Jan 13:42
Compare
Choose a tag to compare
  • 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 and sort attributes.
  • Added: url_title attribute to <txp:article[_custom] />.
  • Added: range attribute to <txp:article_image />.
  • Added: date and time 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 /> with children >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() and is_file() to file_exists().
  • Developer: Added plugin lifecycle events upgraded and downgraded.
  • Developer: Export new article IDs on duplicate.
  • PrismJS 1.26.0.

v4.8.8-beta.1

01 Jan 14:03
Compare
Choose a tag to compare
v4.8.8-beta.1 Pre-release
Pre-release

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 and sort attributes.
  • Added: url_title attribute to <txp:article[_custom] />.
  • Added: range attribute to <txp:article_image />.
  • Added: date and time 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 /> with children >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() and is_file() to file_exists().
  • Developer: Added plugin lifecycle events upgraded and downgraded.
  • Developer: Export new article IDs on duplicate.
  • PrismJS 1.24.1.

Final cut of Textpattern 4.8.8 expected 2022 Q1.

v4.8.7

30 May 15:47
Compare
Choose a tag to compare

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

28 May 21:43
Compare
Choose a tag to compare

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 global escape 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 and step=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 and user>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 and diag_ui>level for custom plugin steps and functionality.

v4.8.5

29 Mar 22:55
Compare
Choose a tag to compare

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

29 Nov 15:51
Compare
Choose a tag to compare

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

13 Sep 14:00
Compare
Choose a tag to compare

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

29 Jul 21:26
Compare
Choose a tag to compare

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 performs AND. Use match="Category" for previous OR 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 affect safe_create() calls, when used in tandem with dbcharset.

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() and extract().
  • Developer: getIfElse() function returns 'else' part of <txp:if_yield else />, and may be used as an EvalElse() replacement.

v4.8.1

31 May 01:50
Compare
Choose a tag to compare

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.