5.2.0-rc1
Overview
- Security considerations
- PHP 8.3 support
- Official support for
silverstripe/linkfield
-
- New ORM features
GridField
components now work with arbitrary dataErrorPage
allowed codes configuration- Versioned status badges for elemental
- Create random passwords for new users
- Buttons to select all files and deselect all files
- Support for validation using
symfony/validator
- New searchable dropdown fields
- New
UrlField
- Create file variants with different extensions
- More nuanced permissions for
/dev/*
routes - Generic typehints
- New exception in React forms
- Other new features
- API changes
- Bug fixes
A full list of module versions included in CMS Recipe 5.2.0-rc1 is provided below. We recommend referencing recipes in your dependencies, rather than individual modules, to simplify version tracking. See Recipes.
Included module versions
Module | Version |
---|---|
bringyourownideas/silverstripe-composer-update-checker | 4.1.0-rc1 |
bringyourownideas/silverstripe-maintenance | 3.1.0-rc1 |
colymba/gridfield-bulk-editing-tools | 4.0.2 |
cwp/agency-extensions | 3.2.0-rc1 |
cwp/starter-theme | 4.1.0-rc1 |
cwp/watea-theme | 4.1.0-rc1 |
dnadesign/silverstripe-elemental | 5.2.0-rc1 |
dnadesign/silverstripe-elemental-userforms | 4.1.1 |
silverstripe-themes/simple | 3.3.1 |
silverstripe/admin | 2.2.0-rc1 |
silverstripe/asset-admin | 2.2.0-rc1 |
silverstripe/assets | 2.2.0-rc1 |
silverstripe/auditor | 3.1.0-rc1 |
silverstripe/blog | 4.2.0-rc1 |
silverstripe/campaign-admin | 2.2.0-rc1 |
silverstripe/cms | 5.2.0-rc1 |
silverstripe/config | 2.1.0 |
silverstripe/contentreview | 5.2.0-rc1 |
silverstripe/crontask | 3.0.3 |
silverstripe/documentconverter | 3.2.0-rc1 |
silverstripe/dynamodb | 5.0.1 |
silverstripe/elemental-bannerblock | 3.2.0-rc1 |
silverstripe/elemental-fileblock | 3.1.0 |
silverstripe/environmentcheck | 3.0.1 |
silverstripe/errorpage | 2.2.0-rc1 |
silverstripe/externallinks | 3.2.0-rc1 |
silverstripe/framework | 5.2.0-rc1 |
silverstripe/graphql | 5.2.0-rc1 |
silverstripe/gridfieldqueuedexport | 3.2.0-rc1 |
silverstripe/hybridsessions | 3.0.3 |
silverstripe/iframe | 3.2.0-rc1 |
silverstripe/installer | 5.2.0-rc1 |
silverstripe/ldap | 2.2.0-rc1 |
silverstripe/linkfield | 4.0.0-rc1 |
silverstripe/login-forms | 5.2.0-rc1 |
silverstripe/lumberjack | 3.1.0-rc1 |
silverstripe/mfa | 5.2.0-rc1 |
silverstripe/mimevalidator | 3.1.0-rc1 |
silverstripe/realme | 5.3.0-rc1 |
silverstripe/recipe-authoring-tools | 2.2.0-rc1 |
silverstripe/recipe-blog | 2.2.0-rc1 |
silverstripe/recipe-cms | 5.2.0-rc1 |
silverstripe/recipe-collaboration | 2.2.0-rc1 |
silverstripe/recipe-content-blocks | 3.2.0-rc1 |
silverstripe/recipe-core | 5.2.0-rc1 |
silverstripe/recipe-form-building | 2.2.0-rc1 |
silverstripe/recipe-kitchen-sink | 5.2.0-rc1 |
silverstripe/recipe-plugin | 2.0.0 |
silverstripe/recipe-reporting-tools | 2.2.0-rc1 |
silverstripe/recipe-services | 2.2.0-rc1 |
silverstripe/registry | 3.2.0-rc1 |
silverstripe/reports | 5.2.0-rc1 |
silverstripe/restfulserver | 3.0.0 |
silverstripe/securityreport | 3.1.0-rc1 |
silverstripe/segment-field | 3.2.0-rc1 |
silverstripe/session-manager | 2.2.0-rc1 |
silverstripe/sharedraftcontent | 3.2.0-rc1 |
silverstripe/siteconfig | 5.2.0-rc1 |
silverstripe/sitewidecontent-report | 4.2.0-rc1 |
silverstripe/spamprotection | 4.2.0-rc1 |
silverstripe/staticpublishqueue | 6.2.0-rc1 |
silverstripe/subsites | 3.2.0-rc1 |
silverstripe/tagfield | 3.2.0-rc1 |
silverstripe/taxonomy | 3.2.0-rc1 |
silverstripe/textextraction | 4.1.0-rc1 |
silverstripe/totp-authenticator | 5.2.0-rc1 |
silverstripe/userforms | 6.2.0-rc1 |
silverstripe/vendor-plugin | 2.0.2 |
silverstripe/versioned | 2.2.0-rc1 |
silverstripe/versioned-admin | 2.2.0-rc1 |
silverstripe/versionfeed | 3.2.0-rc1 |
silverstripe/webauthn-authenticator | 5.2.0-rc1 |
symbiote/silverstripe-advancedworkflow | 6.2.0-rc1 |
symbiote/silverstripe-gridfieldextensions | 4.0.5 |
symbiote/silverstripe-multivaluefield | 6.1.0-rc1 |
symbiote/silverstripe-queuedjobs | 5.1.0-rc1 |
tractorcow/silverstripe-fluent | 7.1.0-rc1 |
Release candidate
This version of Silverstripe CMS is a release candidate for an upcoming stable version, and should not be applied to production websites. We encourage developers to test this version in development / testing environments and report any issues they encounter via GitHub.
Security considerations
Some security fixes that were previously released in the January security release that are mentioned in the Silverstripe CMS security patches January 2024 blog post are listed below.
Review the individual vulnerability disclosure for more detailed descriptions of each security fix. We highly encourage upgrading your project to include the latest security patches.
We have provided a severity rating of the vulnerabilities below based on the CVSS score. Note that the impact of each vulnerability could vary based on the specifics of each project. You can read the severity rating definitions in the Silverstripe CMS release process.
-
CVE-2023-49783 - No permission checks for editing or deleting records with CSV import form Severity: Medium
- If you implement a custom subclass of
BulkLoader
or you're using aBulkLoader
directly in your code, there may be additional actions you need to take to secure your project.
- If you implement a custom subclass of
- CVE-2023-48714 - Record titles for restricted records can be viewed if exposed by GridFieldAddExistingAutocompleter Severity: Medium
- CVE-2023-44401 - View permissions are bypassed for paginated lists of ORM data in GraphQL queries Severity: Medium
PHP 8.3 support
This release includes official support for PHP 8.3 for all supported modules. There were only very minor code changes required to add this support, so your upgrades should be fairly straightforward in that regard.
Check out the PHP 8.3 release announcement to see what's new and what's changed.
Official support for silverstripe/linkfield
silverstripe/linkfield
4.0.0-rc1 has been released and will become a commercially supported module.
That means it will be covered by our minor release policy, our major release policy, and our security release process.
This module provides a Link
model and two new form fields: LinkField
and MultiLinkField
. The intention of the module is to provide a clear and consistent approach to managing links in the CMS.
This release of the module includes a bunch of features that were missing from earlier versions including:
- Support for
has_many
relations - Versioned support
- Validation
- The ability to declare which link types are allowed per field
- Improved UI including better keyboard navigation.
silverstripe/linkfield
4.0.0 requires silverstripe/framework
5.2.0 or higher due to its reliance on some new API.
You can install it as soon as you update your project.
composer require silverstripe/linkfield
We're still working on the migration guides and some migration tasks for this module. You may want to keep an eye on the following issues:
- Upgrade from
silverstripe/linkfield
v2 or v3 - Migrate from
sheadawson/silverstripe-linkable
- Migrate from
gorriecoe/silverstripe-link
Once the above have all been resolved, you can use that documentation and copy the relevant BuildTask
code into your projects if you need it. These will be included in silverstripe/linkfield
directly in the next minor release.
Check out the linkfield documentation for more information about this module.
Features and enhancements
New ORM features
This release comes jampacked with new ORM features, granting you access to some new abstractions for more powerful and efficient queries.
Manipulating eager loaded relation queries
Filtering or sorting an EagerLoadedList
(i.e. after the eager loading query has been executed) is done in PHP rather than in the database. That's a lot less powerful and significantly slower than performing those manipulations on DataList
before executing the query. For example, you can't filter or sort EagerLoadedList
by fields on relations using dot notation (e.g. sort('MySubRelation.Title')
won't work).
To alleviate this problem, we've introduced a new syntax for eager loading relations that lets you directly manipulate the eager loading queries.
The old syntax is still supported, because it can be used in templates for simple scenarios.
In a test setup looping through 100 records each with 100 related records (for a total of 10,000 records per test run), the following performance improvements were observed for different types of relations (early manipulations in the database vs manipulating results in PHP):
has_many
- ~581% faster (0.1080s vs 0.7358s)many_many
- ~612% faster (0.1264s vs 0.9002s)many_many
through - ~327% faster (0.2511s vs 1.0719s)
Usage
You can pass an associative array into the DataList::eagerLoad()
method, with relation chains as the keys and callbacks as the values. The callback accepts a DataList
argument, and must return a DataList
.
use SilverStripe\ORM\DataList;
$teams = Team::get()->eagerLoad([
'Players' => fn (DataList $list) => $list->filter(['Age:GreaterThan' => 18]),
]);
It is very important to remember to return the list from your callback function.
There are a few edge cases to be aware of with this new feature. To learn more, see eager loading.
Multi-relational has_one
relations
Traditionally, if you wanted to have multiple has_many
relations for the same class, you would have to include a separate has_one
relation for each has_many
relation.
This release includes a new has_one
syntax to declare that your has_one
should be allowed to handle multiple reciprocal has_many
relations. The syntax for that is as follows:
namespace App\Model;
use SilverStripe\ORM\DataObject;
use SilverStripe\ORM\DataObjectSchema;
class MyExample extends DataObject
{
// ...
private static array $has_one = [
'MyMultiRelationalRelation' => [
// The class here is the class for the has_one - it must be polymorphic.
'class' => DataObject::class,
// Setting this to true is what defines this has_one relation as multi-relational
DataObjectSchema::HAS_ONE_MULTI_RELATIONAL => true,
],
];
}
Multi-relational has_one
relations must be polymorphic.
Multiple has_many
relations on a single class can point to the above has_one
relation using dot notation, and they will be correctly saved and resolved when you get the relation list.
This new feature means sometimes the value in the associative has_one
configuration array will be an array, rather than just a string for the class name.
If you are relying on fetching this configuration to find the class names of has_one
relations, consider using
DataObject::hasOne()
or DataObjectSchema::hasOneComponent()
instead.
See multi-relational has_one
in the relations docs for more details about this relation type.
UNION
clause
Abstractions for the SQL UNION
clause have been added to SQLSelect
and DataQuery
.
To add a UNION
clause to an SQLSelect
, call the SQLSelect::addUnion()
method and pass in the SQLSelect
query you want to combine using a union.
You can leave the second argument blank for a default union (which is functionally equivalent to a distinct union in MySQL) - or you can pass in one of the SQLSelect::UNION_ALL
or SQLSelect::UNION_DISTINCT
constants for a UNION ALL
or UNION DISTINCT
clause respectively.
use SilverStripe\ORM\Queries\SQLSelect;
$baseQuery = SQLSelect::create()->setFrom($tableName)->addWhere(/*...*/);
$anotherQuery = SQLSelect::create()->setFrom($tableName)->addWhere(/*...*/);
$baseQuery->addUnion($anotherQuery, SQLSelect::UNION_DISTINCT);
To add a UNION
clause to an DataQuery
, call the DataQuery::union()
method and pass in either another DataQuery
or an SQLSelect
query you want to combine using a union. The same constants used for SQLSelect
can be passed in here as well.
use SilverStripe\ORM\DataQuery;
use SilverStripe\ORM\Queries\SQLSelect;
$baseQuery = DataQuery::create(MyClass::class)->where(/*...*/);
$anotherQuery = DataQuery::create(MyClass::class)->where(/*...*/);
$baseQuery->union($anotherQuery, SQLSelect::UNION_ALL);
Common table expressions (CTE aka the WITH
clause)
Abstractions for Common Table Expressions (aka the SQL WITH
clause) have been added to SQLSelect
and DataQuery
.
Common Table Expressions are a powerful tool both for optimising complex queries, and for creating recursive queries. This functionality is abstracted in the SQLSelect::addWith()
and DataQuery::with()
methods.
Older database servers don't support this functionality, and the core implementation is only valid for MySQL and MariaDB. If you're using this functionality in an open source module or a project that you can't guarantee the type and version of database being used, you should wrap the query in a condition checking if CTEs are supported. You can do that by calling DB::get_conn()->supportsCteQueries()
.
Check out the SQL queries and data model and ORM documentation for usage details and examples.
Support for multiple (or no) tables in the FROM
clause
Previously the SQLConditionalExpression
abstraction couldn't handle multiple table names being passed into its FROM
clause. This restriction has been removed, so you can now have queries selecting from multiple tables (without needing joins) so long as your database supports it.
If you were working around that limitation by adding an explicit comma to subsequent tables in the FROM
clause for your queries, you'll need to remove the comma.
You can also now choose to not have a FROM
clause in an SQLSelect
query, which can be useful for setting up simple queries to be used in unit tests.
Better support for custom column selections in DataQuery
When using DataQuery
, it is possible to use collations and other raw SQL field statements as part of the query's SELECT
clause. If these have an alias that matches the name of an existing database column, this normally results in an exception being thrown.
You can choose to allow those conflicts to be resolved via a CASE
statement instead of throwing an exception. In that scenario, if the value in the database column is null, the value for your custom field statement will be used. This is enabled per query by passing true
to the new DataQuery::setAllowCollidingFieldStatements()
method.
$query = new DataQuery(MyClass::class);
$query->selectField('\'my custom title\' AS "Title"');
$query->setAllowCollidingFieldStatements(true);
Other ORM changes
- Abstractions for
RIGHT JOIN
have been added with the newDataList::rightJoin()
,DataQuery::rightJoin()
, andSQLConditionalExpression::addRightJoin()
methods. The signature for these methods is identical to theirLEFT JOIN
andINNER JOIN
counterparts. - Developers can now opt in to including a comment on all ORM database queries indicating where they were executed from. See debugging database queries for details.
GridField
components now work with arbitrary data
It has historically been difficult to use a GridField
to display data that isn't represented by DataObject
records - and even more difficult to edit that data.
We have removed several barriers to using the GridField
to display arbitrary data. Descriptive exceptions will be thrown when specific information cannot be dynamically identified, such as which columns to display and what form fields to use when viewing or editing data. Note that these new exceptions don't break backwards compatibility. Any scenario that will throw an exception now would have already done so - but the old exception wouldn't have had enough information to quickly understand what changes are needed to get a functioning GridField
.
This change applies to all classes in silverstripe/framework
which implement GridFieldComponent
, except for GridFieldAddExistingAutocompleter
and GridFieldLevelup
which both explicitly require the model class for the associated GridField
to be a subclass of DataObject
.
This new capability can be very useful for integrating with third-party services, as it allows you to view and edit data from a web API without needing to synchronise that data with your database.
See using GridField
with arbitrary data for more information.
ErrorPage
allowed codes configuration
By default, all available error codes are present in the "Error code" dropdown in the CMS. This can be overwhelming and there are a few (looking at you, 418) that can
be confusing. To that end, you can now limit the codes in the dropdown with the ErrorPage.allowed_error_codes
configuration array like so:
SilverStripe\ErrorPage\ErrorPage:
allowed_error_codes:
- 400
- 403
- 404
- 500
Alongside this change, we've also added some more HTTP status codes to the list of available error codes. See the source code for ErrorPage::getCodes()
for the full list.
Versioned status badges for elemental
Elemental content blocks now feature versioned status badges which adds a textual indicator of whether the block is in draft or a modified state. This textual label is in addition to the dot icon indicator that was already there. The new label is only provided if the Versioned
extension is used for elemental blocks, which it is by default.
To improve consistency with the rest of the CMS interface, the blue dot icon (which previously indicated an unsaved state) has been removed.
Create random passwords for new users
If a new user is created in the security section of the CMS with an empty password, a strong random password will now be automatically assigned to the user which will not be visible to the person creating the user. The user will need to click the "I've forgotten my password" link in order to receive a password reset email so they can choose a new password.
This is a behavioural change from the change introduced in Silverstripe CMS 5.1.0 where blank passwords were disallowed when creating a new user due to a security concern. The change in 5.1.0 meant the administrator setting up the user could know what the user's password was until the user changed it.
This only applies to users created through the security section of the CMS. Users created programatically with an empty password will not have a random password automatically assigned to them. This is the current behaviour and is often used for non-production purposes such as unit-testing.
Buttons to select all files and deselect all files
The files section of the CMS now has buttons to select and deselect all files and folders currently on the screen, which is useful when you want to perform bulk operations. These buttons show at the bottom of the screen in the bulk actions toolbar. The deselect all button also shows the number of currently selected items. As these buttons are on the bulk actions toolbar they are only visible if at least one item has been selected.
Support for validation using symfony/validator
We've added a new ConstraintValidator
class which provides an abstraction around symfony/validator
, so you can easily validate values against symfony's validation constraints and get a ValidationResult
object with the result.
use SilverStripe\Core\Validation\ConstraintValidator;
/**
* @var \Symfony\Component\Validator\Constraint $constraint
* @var \SilverStripe\ORM\ValidationResult $result
*/
$result = ConstraintValidator::validate($valueToValidate, $constraint);
For example, to test if a URL is valid:
use SilverStripe\Core\Validation\ConstraintValidator;
use Symfony\Component\Validator\Constraints\Url;
$isValid = ConstraintValidator::validate($url, new Url())->isValid();
You can use most of the constraints listed in Symfony's supported constraints documentation, though note that some of them require additional symfony dependencies.
We explicitly don't support validation using constraints that rely on symfony/doctrine
.
New HasOneRelationFieldInterface
for better results with RequiredFields
We've added a new interface HasOneRelationFieldInterface
which is used by the RequiredFields
form validator to identify FormField
classes that represent a has_one
relation. This allows it to more accurately identify when those fields are missing a user-entered value.
If you have a custom FormField
subclass that is exclusively used to represent a has_one
relation, you may want to implement this new interface.
New searchable dropdown fields
We've added a pair of new dropdown form fields which are particularly useful for dropdowns with a large number of options.
SearchableDropdownField
is similar toDropdownField
which allows selecting a single option.SearchableMultiDropdownField
is similar toListboxField
which allows selecting multiple options.
Both of these fields include a setIsLazyLoaded()
method which will load a limited number of options at a time using an AJAX request matching what a user has typed in. There are quite a few options to customise these, including optionally using SearchContext
to power the lazy-loaded search functionality. We encourage you to look at the API documentation for these new classes to see what you can do with them.
Note that these are both powered by react components, and are only intended to be used within the CMS. If you want to use them on the front end of your project you will need to provide your own templates and JavaScript implementation for them.
Auto scaffolding of has_one
relations
SearchableDropdownField
will now be used when automatically scaffolding has_one
relations into forms. Previously DropdownField
was used, and when there were over 100 items NumericField
was used - which was not user friendly.
Previously the DBForeignKey.dropdown_field_threshold
config property was used as the threshold of the number of options to decide when to switch between auto-scaffolding a DropdownField
and a NumericField
. This configuration property is now used as the threshold of the number of options to decide when to start using lazy-loading for the SearchableDropdownField
.
New UrlField
We've added a new UrlField
which is a subclass of TextField
with some additional validation rules (powered by the Url
symfony validation constraint). It will validate that the value entered is a valid absolute URL with a protocol (either http
or https
) and a host.
Create file variants with different extensions
We've added a low-level API which allows the creation of file variants with a different extension than the original file's extension. A file variant is a manipulated version of the original file - for example if you resize an image or convert a file to another format, this will generate a variant (leaving the original file intact).
Some examples of when you might want this are:
- Generating thumbnails for videos, documents, etc
- Converting images to
.webp
for faster page load times - Converting documents to
.pdf
so downloaded documents are more portable
See file manipulation for details about how to use this new API.
More nuanced permissions for /dev/*
routes
Previously, all /dev/*
routes registered with DevelopmentAdmin
(for example /dev/tasks/MyBuildTask
) could only be access by administrator users, and this couldn't be configured.
Now, all of the controllers which handle these routes that come packaged in a core or supported module have a new init_permissions
configuration property (e.g. TaskRunner.init_permissions
). This new configuration can be used to grant non-administrative users access to these routes.
You can also now optionally implement a canView()
method on your BuildTask
implementations to restrict accessed for specific tasks even further. This means you can grant access to some tasks to specific users or groups without granting access to all tasks.
Generic typehints
We've added typehints using PHPStan-style generic types to PHPDocs in many areas of the codebase of supported modules. The primary goal of this is to improve the developer experience by correctly reporting to your IDE what types it should expect, for example when looping through a DataList
. In many cases your IDE will now know what types to expect without needing you to prompt it with @var
annotation comments.
There are some cases where this goal conflicts with having types that are correctly identified by PHPStan itself (or other static analysis tools). For example conditional return types aren't supported as widely in IDEs as generic types themselves are, so we opted to not use conditional return types even when those would result in a more accurate type for static analysis tools.
See Generics By Examples | PHPStan and Generics in PHP using PHP DocComments | DEVSENSE for more information about PHP generic typehints.
While you should see some improvements immediately after updating, there are some changes you can make to your own codebase to best use the new generic type hints.
Generic typehints when returning lists
In your project code, any time you return an instance of SS_List
(such as a DataList
or ArrayList
), you can add a generic typehint to declare what kind of object the returned list contains. This example will hint to the IDE that it returns a DataList
containing CarouselItem
records:
use App\Model\CarouselItem;
use SilverStripe\ORM\DataList;
/**
* @return DataList<CarouselItem>
*/
function getCarouselItems(): DataList
{
return CarouselItem::get();
}
Generic typehints in Extension
subclasses
The generic typing on the Extension
class can be used to tell your IDE what type to expect for the $owner
property and getOwner()
method.
For this to be useful, you need to tell your IDE that your subclass @extends
the Extension
class, and tell it what type the owner should be.
Don't forget to include a use
statement, even if you're not explicitly referencing the type anywhere in your actual code. Your IDE needs the use
statement to resolve the FQCN for the class you're referencing in the typehint.
namespace App\Extension;
use SilverStripe\Core\Extension;
use SilverStripe\SiteConfig\SiteConfig;
/**
* @extends Extension<SiteConfig>
*/
class SiteConfigExtension extends Extension
{
// ...
}
This is also a useful way to indicate to developers at a glance what type(s) the extension is designed to be applied to.
For example you might have an extension that can apply to both the LeftAndMain
and GridFieldDetailForm_ItemRequest
classes, which you can indicate using a union typehint: @extends Extension<LeftAndMain|GridFieldDetailForm_ItemRequest>
.
Generic typehints in ContentController
subclasses
If you use the data()
method or the $dataRecord
property in your page controllers, you may find it useful for your IDE to know specifically what page class that data represents.
For this to work, you need to make sure your base PageController
class has a @template
type to extend.
Any time you use @extends
, the class being extended needs to have a @template
type so that your IDE knows what the type you're passing in is going to be used for.
namespace {
use SilverStripe\CMS\Controllers\ContentController;
/**
* @template T of Page
* @extends ContentController<T>
*/
class PageController extends ContentController
{
// ...
}
}
namespace App\PageType;
use PageController;
/**
* @extends PageController<HomePage>
*/
class HomepageController extends PageController
{
// ...
}
New exception in react forms
FormSchema::getSchema()
now throws a LogicException
if a react component was not found for a field type.
If your project or a module you're using is currently trying to include a field which doesn't have a react component (such as GridField
) into a react-rendered form, it will have been silently failing. The form will have been rendering everything except for the field(s) which have no react component.
This will now fail by throwing an exception, which means your form won't render at all until you remove or replace the field(s).
Other new features
- We've added a new
SiteTree.hide_pagetypes
configuration property. UnlikeSiteTree.hide_ancestor
(which has now been deprecated), this is an array. This allows you to define all page types that should be hidden in a single configuration property in your YAML configuration. - We've added a new
DBText.summary_sentence_separators
configuration property. This is used to split sentences in theDBText::Summary()
method. The default configuration value includes.
,!
, and?
. Previously, only.
was used to split sentences. - You can now upload Braille ASCII file format (
.brf
) files to the CMS without needing to modify the allowed file types. - We've added a new
FilesystemPublisher.disallowed_status_codes
configuration property to thesilverstripe/staticpublishqueue
module, allowing you to avoid caching responses for certain HTTP status codes. See the documentation for more details. - We've added a new
LeftAndMain.extra_requirements_i18n
configuration property which can be used to load i18n JavaScript localisation files into the CMS. - We've added a new
LeftAndMain::jsonSuccess()
method to make it easier to return JSON data in a response from aLeftAndMain
subclass. - The Composer runtime API is now being used in the
VersionProvider
class instead of relying on thecomposer.lock
file.
API changes
silverstripe/framework
The following legacy subclasses of PasswordEncryptor
have been deprecated, and will be removed in a future major release. If you are using one of these password encryptors in your projects, we strongly recommend swapping to one that has not been deprecated (PasswordEncryptor_Blowfish
is the current recommendation, and is the default encryptor for passwords in new installations). Note that changing the password encryptor will also require that all of your members reset their passwords.
PasswordEncryptor_None
PasswordEncryptor_LegacyPHPHash
PasswordEncryptor_MySQLOldPassword
PasswordEncryptor_MySQLPassword
The getThrowExceptionOnBadDataType()
and setThrowExceptionOnBadDataType()
methods have been deprecated in the following classes. These methods are used to allow silent failures which result from poorly configured GridFieldConfig
. In a future major release these methods will be removed and the associated failures will always throw exceptions, prompting developers to correctly set up their configuration in a way that works the way they expect it to.
The following unused API have been deprecated and will be removed in a future major release:
- Configuration property
DataObject.subclass_access
- Public static method
DataObject::disable_subclass_access()
- Public static method
DataObject::enable_subclass_access()
The ViewableData::getIterator()
method has been deprecated and will be removed in a future major release.
silverstripe/cms
The SiteTree.hide_ancestor
configuration property has been deprecated. Use SiteTree.hide_pagetypes
instead.
silverstripe/versioned
The $having
parameter in the Versioned::Versions()
method has been deprecated. This parameter was never used, and has been removed from the method signature.
Bug fixes
- The assets admin section now respects the
Upload_Validator.default_max_file_size
configuration ifAssetAdmin.max_upload_size
has not been explicitly set for your project. Previously, asset admin would ignoreUpload_Validator.default_max_file_size
and just use the PHPupload_max_filesize
ini configuration by default. See file upload limits for more details. - Redirector pages with a link to a missing or unpublished page/file will now return a 404 response. You can revert to the previous behaviour by setting the
RedirectorPageController.missing_redirect_is_404
configuration property tofalse
.
This release includes a number of bug fixes to improve a broad range of areas. Check the change logs for full details of these fixes split by module. Thank you to the community members that helped contribute these fixes as part of the release!
Change log
Security
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
- 2023-12-06 4b1b48704 Allow permission checks in BulkLoader (Guy Sartorelli) - See cve-2023-49783
- 2023-11-29 873b721b6 Don't show or add records the member isn't allowed to (Guy Sartorelli) - See cve-2023-48714
-
silverstripe/admin (2.1.0 -> 2.2.0-rc1)
- 2023-12-06 9b96bbde Opt in to permission checks in bulk loaders (Guy Sartorelli) - See cve-2023-49783
-
silverstripe/graphql (5.1.0 -> 5.2.0-rc1)
- 2023-10-31 8e64567 Ensure canView() checks are run (Steve Boyd) - See cve-2023-44401
Features and enhancements
-
silverstripe/recipe-cms (5.1.0 -> 5.2.0-rc1)
- 2024-01-17 9dbd01e Add generic types (#79) (Guy Sartorelli)
-
silverstripe/assets (2.1.0 -> 2.2.0-rc1)
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
- 2024-03-14 777056d86 fieldList is an array or null (Thomas Portelange)
- 2024-03-12 b031ade73 update some docblock types (#11168) (Thomas Portelange)
- 2024-02-20 528344d1b Allow manipulating eagerloading queries (#11140) (Guy Sartorelli)
- 2024-02-16 a3ce922f1 Allow better subclassing of MoneyField (Dominik Beerbohm)
- 2024-02-16 8664d2c4e Allow all valid true-like ini values (Guy Sartorelli)
- 2024-02-08 5e53dbcdb Add a trace comment for queries in dev mode (#11065) (Guy Sartorelli)
- 2024-02-02 2e4bc9515 Add UrlField (Steve Boyd)
- 2024-02-02 7f7169533 Wire up symfony/validator (#11123) (Guy Sartorelli)
- 2024-01-30 9d335f73d HasOneRelationFieldInterface (Steve Boyd)
- 2024-01-17 357ed7ad7 Add generic types (#11108) (Guy Sartorelli)
- 2023-12-21 2487c4085 Create Requirements::customScriptWithAttributes (#11076) (Finlay Metcalfe)
- 2023-12-18 e66c1aec0 Use SearchableDropdownField for autoscaffolded has_one relationships (Steve Boyd)
- 2023-12-14 23eca53df SearchableDropdownField (Steve Boyd)
- 2023-12-11 c405ed6cf Allow a single has_one to manage multiple reciprocal has_many (#11084) (Guy Sartorelli)
- 2023-11-22 fdb329913 Throw exception when no react component (Steve Boyd)
- 2023-11-14 3d64eac12 Make most GridField components work with arbitrary data (Guy Sartorelli)
- 2023-11-14 5838772b1 Explicitly require DataObject for some gridfield components (Guy Sartorelli)
- 2023-11-13 b1295af28 Provide an easy way to filter arbitrary ViewableData in gridfields (Guy Sartorelli)
- 2023-11-03 b9b891d05 handle sub-urls (Andrew Paxley)
- 2023-11-02 2cb84e90d remove devbuild bypass (Andrew Paxley)
- 2023-11-02 5d4327b23 replace permission checks with canView check on TestDBTask (Andrew Paxley)
- 2023-10-31 78444a44c add DevAdminConfirmationMiddleware (Andrew Paxley)
- 2023-10-19 159112ca8 Generate a random password if a blank password is entered (Steve Boyd)
- 2023-10-03 a0cbebb2d allow stacked messages on FormMessage (Andrew Paxley)
- 2023-10-02 44b170098
Add ORM abstraction for "WITH" clauses (#10943)
(Guy Sartorelli) - 2023-09-27 7d5c62ed5 Add rightJoin method to DataList (#10961) (Guy Sartorelli)
- 2023-09-24 fac335673 Enable allowing collisions for field statements (#10957) (Guy Sartorelli)
- 2023-09-24 bbc0295f8 Add abstraction for sql RIGHT JOIN (#10954) (Guy Sartorelli)
- 2023-09-24 b28749db4 Allow selecting multiple (or no) tables (#10953) (Guy Sartorelli)
- 2023-09-19 b3b1d0761 Deprecate old password encryptors (#10948) (Guy Sartorelli)
- 2023-08-04 76da701b6 Add sql UNION abstraction (Guy Sartorelli)
- 2023-07-12 3244b44a5 add permissions for build tasks (Andrew Paxley)
- 2021-12-04 bf629dfab Split sentences by configurable punctuation for summary (Guy Sartorelli)
-
silverstripe/admin (2.1.0 -> 2.2.0-rc1)
- 2024-03-09 ea554c52 Move spinner to a seperate template so other module can include it (Maxime Rainville)
- 2024-02-26 41f8bd3f Refactor FormBuilderModal and split up the Modal into its own component (#1631) (Maxime Rainville)
- 2024-02-13 6d183e4d
Add extra_requirements_i18n config to LeftAndMain (#1678)
(Guy Sartorelli) - 2024-01-29 73e30a0f Add jsonSuccess() (Steve Boyd)
- 2024-01-25 c16fb0f3 Refactor sslink slightly for easier maintenance (#1661) (Guy Sartorelli)
- 2024-01-24 493909d0 Remove background form description and unclickable fields (#1652) (Sabina Talipova)
- 2024-01-17 75b51fc1 Add generic types (#1648) (Guy Sartorelli)
- 2023-12-13 c63d0136 SearchableDropdownField (Steve Boyd)
-
silverstripe/asset-admin (2.1.0 -> 2.2.0-rc1)
- 2024-01-18 badbc4fd Add generic types (#1433) (Guy Sartorelli)
- 2024-01-08 a144ac18 Let AssetAdmin default to Upload_Validator default upload limits (#1430) (Guy Sartorelli)
- 2023-12-13 32480e20 Use SearchableMultiDropdownField (Steve Boyd)
- 2023-11-07 b160b1c6 Select all and clear all functionality (Steve Boyd)
-
silverstripe/campaign-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/versioned-admin (2.1.0 -> 2.2.0-rc1)
- 2024-01-18 ad08d76 Add generic types (#319) (Guy Sartorelli)
-
silverstripe/cms (5.1.0 -> 5.2.0-rc1)
-
silverstripe/errorpage (2.1.0 -> 2.2.0-rc1)
-
silverstripe/siteconfig (5.1.0 -> 5.2.0-rc1)
-
silverstripe/versioned (2.1.0 -> 2.2.0-rc1)
-
silverstripe/graphql (5.1.0 -> 5.2.0-rc1)
-
silverstripe/session-manager (2.1.0 -> 2.2.0-rc1)
- 2024-01-18 94c0603 Add generic types (#177) (Guy Sartorelli)
-
silverstripe/login-forms (5.1.0 -> 5.2.0-rc1)
- 2024-01-18 3a820bd Add generic types (#162) (Guy Sartorelli)
-
silverstripe/iframe (3.1.0 -> 3.2.0-rc1)
- 2024-01-23 53008d0 Add generic types (#77) (Guy Sartorelli)
-
silverstripe/tagfield (3.1.0 -> 3.2.0-rc1)
- 2024-01-23 556772b Add generic types (#277) (Guy Sartorelli)
-
silverstripe/taxonomy (3.1.0 -> 3.2.0-rc1)
- 2024-01-23 336d1c7 Add generic types (#102) (Guy Sartorelli)
-
silverstripe/blog (4.1.0 -> 4.2.0-rc1)
- 2024-01-18 3b80922 Add generic types (#739) (Guy Sartorelli)
-
silverstripe/spamprotection (4.1.0 -> 4.2.0-rc1)
- 2024-01-18 77aba75 Add generic types (#108) (Guy Sartorelli)
-
silverstripe/contentreview (5.1.0 -> 5.2.0-rc1)
- 2024-01-18 f04e9fa Add generic types (#220) (Guy Sartorelli)
-
silverstripe/sharedraftcontent (3.1.0 -> 3.2.0-rc1)
- 2024-01-18 b78b1af Add generic types (#222) (Guy Sartorelli)
-
symbiote/silverstripe-advancedworkflow (6.1.0 -> 6.2.0-rc1)
- 2024-01-23 65ec116 Add generic types (#511) (Guy Sartorelli)
-
silverstripe/userforms (6.1.0 -> 6.2.0-rc1)
-
silverstripe/externallinks (3.1.0 -> 3.2.0-rc1)
-
silverstripe/securityreport (3.0.0 -> 3.1.0-rc1)
- 2024-01-18 2e8f342 Add generic types (#72) (Guy Sartorelli)
-
silverstripe/sitewidecontent-report (4.1.0 -> 4.2.0-rc1)
- 2024-01-18 00ca457 Add generic types (#76) (Guy Sartorelli)
-
bringyourownideas/silverstripe-maintenance (3.0.1 -> 3.1.0-rc1)
- 2023-06-14 32cccc9 Update translations (Steve Boyd)
-
bringyourownideas/silverstripe-composer-update-checker (4.0.0 -> 4.1.0-rc1)
- 2023-06-14 3719b52 Update translations (Steve Boyd)
-
silverstripe/versionfeed (3.1.0 -> 3.2.0-rc1)
- 2024-01-18 b7b4ff8 Add generic types (#94) (Guy Sartorelli)
-
dnadesign/silverstripe-elemental (5.1.0 -> 5.2.0-rc1)
-
silverstripe/auditor (3.0.0 -> 3.1.0-rc1)
- 2024-01-18 8c847f5 Add generic types (#67) (Guy Sartorelli)
-
silverstripe/registry (3.1.0 -> 3.2.0-rc1)
- 2024-01-23 a42be22 Add generic types (#90) (Guy Sartorelli)
-
silverstripe/mfa (5.1.0 -> 5.2.0-rc1)
- 2024-01-19 97e6c80 Add generic types (#524) (Guy Sartorelli)
-
silverstripe/gridfieldqueuedexport (3.1.0 -> 3.2.0-rc1)
- 2024-01-18 6fb435f Add generic types (#94) (Guy Sartorelli)
-
silverstripe/ldap (2.1.0 -> 2.2.0-rc1)
- 2024-01-19 894f204 Add generic types (#67) (Guy Sartorelli)
-
silverstripe/textextraction (4.0.0 -> 4.1.0-rc1)
- 2024-01-22 cc43a12 Add generic types (#86) (Guy Sartorelli)
-
silverstripe/realme (5.2.0 -> 5.3.0-rc1)
- 2024-01-18 5971936 Add generic types (#128) (Guy Sartorelli)
-
silverstripe/subsites (3.1.0 -> 3.2.0-rc1)
- 2024-01-23 11a941f Add generic types (#554) (Guy Sartorelli)
-
silverstripe/lumberjack (3.0.2 -> 3.1.0-rc1)
- 2024-01-17 dd5f929 Add generic types (#137) (Guy Sartorelli)
-
silverstripe/staticpublishqueue (6.1.0 -> 6.2.0-rc1)
-
cwp/agency-extensions (3.1.0 -> 3.2.0-rc1)
- 2024-01-22 0dc9d10 Add generic types (#110) (Guy Sartorelli)
-
symbiote/silverstripe-gridfieldextensions (4.0.3 -> 4.0.5)
- 2024-01-23 78fa8ba
Make toast message "Records reordered." localisable (#321)
(Tom Oude Rengerink)
- 2024-01-23 78fa8ba
-
symbiote/silverstripe-queuedjobs (5.0.2 -> 5.1.0-rc1)
- 2024-01-23 9cf0162 Add generic types (#415) (Guy Sartorelli)
-
tractorcow/silverstripe-fluent (7.0.0 -> 7.1.0-rc1)
-
silverstripe/linkfield (3.0.0-beta1 -> 4.0.0-rc1)
- 2024-03-12 967c457 Pre-render the LinkField in entwine (#241) (Maxime Rainville)
- 2024-03-11 1fb149f Use File Title (Steve Boyd)
- 2024-02-20 87e8c17 Avoid potential data disclosure (#233) (Guy Sartorelli)
- 2024-02-15 c75615f More standardisation (#223) (Guy Sartorelli)
- 2024-02-14 3e97f0d Better versioned history (Steve Boyd)
- 2024-02-13 0c0cdaa Globally disallow link types (Steve Boyd)
- 2024-02-13 f3de6ac LinkField Behat tests (#201) (Sabina Talipova)
- 2024-02-13 5d604a7 Icon alignment (Sabina Talipova)
- 2024-02-12 fac2d31 Improve keyboard support (Steve Boyd)
- 2024-02-12 05c7b42 Remove unused code (Guy Sartorelli)
- 2024-02-12 28b833f Standardise naming and improve code quality (Guy Sartorelli)
- 2024-02-12 51acf4f Add strong typing where possible (Guy Sartorelli)
- 2024-02-12 d334cbc Move LeftAndMain requirements into config (Guy Sartorelli)
- 2024-02-12 04ae65c Allow developers to exclude LinkText field (#215) (Guy Sartorelli)
- 2024-02-12 afef74f Refactor link field traits into abstract class (Guy Sartorelli)
- 2024-02-08 4e43d54 Rename and move Title field (Steve Boyd)
- 2024-02-06 0099636 Improved validation (Steve Boyd)
- 2024-01-31 5155f17 Set Published button dirty state when Link is an unpublished state (Steve Boyd)
- 2024-01-29 8fbe94b Standardise API responses (Steve Boyd)
- 2024-01-29 836d665 Improve hover active and focus state styling (Steve Boyd)
- 2024-01-25 4ba8267 Add disabled field state (Steve Boyd)
- 2024-01-24 0c01fcf Hide the open in new window checkbox from phone and email links (Steve Boyd)
- 2024-01-24 9bb3a1a Add Readonly field status (#172) (Sabina Talipova)
- 2024-01-24 e6f7705 Confirm user wishes to delete link (Steve Boyd)
- 2024-01-18 2927d50 Show a cannot create message when types is empty (Steve Boyd)
- 2024-01-17 343c3d2 MutliLinkField sorting (Steve Boyd)
- 2024-01-16 eb88dd0 Join endpoint path segments (Steve Boyd)
- 2024-01-11 6644853 Link type icon (Sabina Talipova)
- 2024-01-11 912816c Add sorting by link type (Sabina Talipova)
- 2024-01-10 09ca349 Show loading component during ajax read requests (Steve Boyd)
- 2024-01-10 9d3a6f0 Gracefully handle AJAX failures (Steve Boyd)
- 2024-01-10 c563394 Show save record first text on unsaved owners (Steve Boyd)
- 2024-01-09 0ea34be Used on table extension (Steve Boyd)
- 2024-01-09 2086a38 Change clear text to delete (Steve Boyd)
- 2023-12-22 279cfb5 Save relations on link creation (Steve Boyd)
- 2023-12-19 ea28fe1 Remove LinkFieldController from cms menu (Steve Boyd)
- 2023-12-14 84824c7 Allowed link types (Sabina Talipova)
- 2023-12-11 ffb1ae0 Add versioning to Link (Steve Boyd)
- 2023-12-05 5e35a84 Add permission methods based on owner (Guy Sartorelli)
- 2023-11-30 1e1083d Default link title for each link type (Sabina Talipova)
- 2023-11-28 1be5f0d Add MultiLinkField for managing many-type relations (Guy Sartorelli)
- 2023-11-28 acb9c84 Refactor LinkField in preparation for MultiLinkField (Guy Sartorelli)
- 2023-11-14 64f5829 Add localization support (#119) (Sabina Talipova)
- 2023-11-06 6035de8 LinkFieldController to handle FormSchema (Steve Boyd)
- 2023-09-26 345c828 Allow projects to define their own subclass templates (Steve Boyd)
- 2023-06-21 d667d94 Query string support. (Mojmir Fendek)
- 2023-06-20 6b69001 New extension points added (JSON field). (Mojmir Fendek)
- 2023-06-14 3478f28 Extension points for link model manipulation. (Mojmir Fendek)
- 2023-06-07 77c7319 Allow form validation. (Mojmir Fendek)
- 2023-06-06 3041730 Insert / edit link button label. (Mojmir Fendek)
- 2023-06-06 d425b33 Allow model-level for customisation. (Mojmir Fendek)
- 2023-06-05 6e8183a Extensibility improvements for link migration task. (Mojmir Fendek)
- 2021-11-11 3e0f699 Empty link title fallbacks to Page. (#37) (Mojmir Fendek)
Bugfixes
-
silverstripe/vendor-plugin (2.0.1 -> 2.0.2)
- 2023-10-10 175505b Method CopyMethod::copy as deprecated (Sabina Talipova)
-
silverstripe/assets (2.1.0 -> 2.2.0-rc1)
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
- 2024-03-20 8aab888d5 Fix link for managing roles (#11178) (Guy Sartorelli)
- 2024-03-01 fcf5e324d Handle non-breakable spaces (Thomas Portelange)
- 2024-02-26 e7bc8ae99 Generate salt if needed (Thomas Portelange)
- 2024-02-14 d33332cb9 Add eagerloaded data to ALL relevant lists (#11139) (Guy Sartorelli)
- 2024-02-12 b56e771ed add missing rawurlencode (#11105) (Thomas Portelange)
- 2024-02-08 e87c72470 Don't assume mysql handle is an object (#11129) (Guy Sartorelli)
- 2024-02-07 1dd81488a fix unknown table (Thomas Portelange)
- 2024-01-24 afd53d1d6 HTMLEditorField::setRows with Elemental (Sabina Talipova)
- 2024-01-11 ff3a6f72d HTMLEditorField::setRows minimal hieght (#10965) (Sabina Talipova)
- 2024-01-09 9bfb731bc Handle polymorphic relationships that use Owner instead of Parent (Steve Boyd)
- 2024-01-08 e456de11b Fix clobbering of the upload size validation (#10059) (Nick)
- 2023-12-19 7dc1a7a12 Correctly mark ConfirmedPasswordField children as required (Guy Sartorelli)
- 2023-12-13 dd3a0dba2 Don't break the page if password recover email fails to send (Guy Sartorelli)
- 2023-12-13 446810bc5 Allow new password to save even if there's an error sending email (Guy Sartorelli)
- 2023-12-04 40b888eaf UnsavedRelationList::last() sometimes returned an ID instead of an item (Loz Calver)
- 2023-12-04 e28af9a5a UnsavedRelationList first/last to return null if list is empty (fixes #11083) (Loz Calver)
- 2023-11-29 6d903848a Don't replace config manifest for nested kernels (#11082) (Guy Sartorelli)
- 2023-11-21 7eab49f85 Ensure environment is checked before enabling deprecations (#11055) (Guy Sartorelli)
- 2023-11-16 05f1d9ab8 Make deprecation enabled check faster (Guy Sartorelli)
- 2023-11-13 4dbbf04ba Add extraEmptyValues to TreedropdownField (Steve Boyd)
- 2023-10-31 d883719c1 ModelAdmin toast elements (Sabina Talipova)
- 2023-09-25 55e42683f Match multi-line JOIN statements (#10960) (Guy Sartorelli)
- 2023-06-12 51fd1d6b7
Handle __TRAIT__ in i18nTextCollector
(Steve Boyd)
-
silverstripe/admin (2.1.0 -> 2.2.0-rc1)
- 2024-03-19 aadc8aa9 Correctly validate emails in WYSIWYG links (#1710) (Guy Sartorelli)
- 2024-03-04 1df1ee77 JS Console errors and warnings (Sabina Talipova)
- 2024-02-26 60563dbd Support nested redux forms (Guy Sartorelli)
- 2024-02-25 7918318d Don't panic if classname isn't set (#1687) (Guy Sartorelli)
- 2024-02-22 129a94a2 Rebuild bundle (Mohamed Alsharaf)
- 2024-02-22 b3e16081 Remove current active tab from session storage after use (Mohamed Alsharaf)
- 2024-02-08 8a3833e8 Set the CSV importer based on the tab, not the model (#1676) (Guy Sartorelli)
- 2024-02-01 725a9a11 Use valid class for model importers (#1670) (Guy Sartorelli)
- 2024-01-25 359a3953 Type error (Sabina Talipova)
- 2024-01-24 925e06f4 Add tinymce link menuitems per editor instance (#1653) (Guy Sartorelli)
- 2024-01-24 799add9e HTMLEditorField::setRows with Elemental (Sabina Talipova)
- 2024-01-23 c06b2f2a Use valid class for model importers (Guy Sartorelli)
- 2024-01-17 79955d24 Elemental no longer allows saving of HTMLEditorField (#1651) (Sabina Talipova)
- 2024-01-11 bc92e1f1 HTMLEditorField::setRows method (#1588) (Sabina Talipova)
- 2024-01-09 4dd2432b Remove unstable prefix from useBlocker (Steve Boyd)
- 2024-01-07 12e97880 Rebuild bundle (Steve Boyd)
- 2023-12-21 d949db14 decode entities in toast message (Thomas Portelange)
- 2023-12-19 0755502d Ensure react-select field menus are always on top (#1637) (Guy Sartorelli)
- 2023-12-15 5d39d877 Set z-index of list (Steve Boyd)
- 2023-12-01 4c53dece Prevents horizontal scrollbar in non-firefox (Lukas Erni)
- 2023-11-08 c862349c Handle extra empty values (Steve Boyd)
- 2023-10-31 22d5471f ModelAdmin toast elements (Sabina Talipova)
- 2023-10-19 d393424b Make CanView/Edit group toggle logic more robust (#1610) (Guy Sartorelli)
-
silverstripe/asset-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/versioned-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/cms (5.1.0 -> 5.2.0-rc1)
- 2024-01-24 dfc42e7c Add tinymce link menuitems per editor instance (#2916) (Guy Sartorelli)
- 2023-12-19 9202ce9a Ensure react-select field menus are always on top (#2910) (Guy Sartorelli)
- 2023-11-19 579986a6 Handle exceptions when using /0 as a URL (#2825) (Will Rossiter)
- 2023-11-07 dd2bd613 Limit Member map to 100 (Steve Boyd)
-
silverstripe/versioned (2.1.0 -> 2.2.0-rc1)
-
silverstripe/graphql (5.1.0 -> 5.2.0-rc1)
-
silverstripe/documentconverter (3.1.0 -> 3.2.0-rc1)
- 2024-03-19 240f576 Don't use deprecated usage of get_class() (#73) (Guy Sartorelli)
-
silverstripe/tagfield (3.1.0 -> 3.2.0-rc1)
-
silverstripe/blog (4.1.0 -> 4.2.0-rc1)
-
silverstripe/spamprotection (4.1.0 -> 4.2.0-rc1)
- 2023-09-10 17106d8 fix: if no spam protector set, fail sliently (Will Rossiter)
-
colymba/gridfield-bulk-editing-tools (4.0.0 -> 4.0.2)
- 2023-11-22 9a8cc37 Remove deprecated convert API for SS5.0 (#260) (Bram de Leeuw)
-
silverstripe/sharedraftcontent (3.1.0 -> 3.2.0-rc1)
- 2023-11-09 e490370 Infinite recursion sanity checks with more helpful error messages (#214) (Nathan J. Brauer)
-
symbiote/silverstripe-advancedworkflow (6.1.0 -> 6.2.0-rc1)
-
silverstripe/sitewidecontent-report (4.1.0 -> 4.2.0-rc1)
- 2024-01-24 e6638ec update defensive check on tags field method (Phillip King)
-
silverstripe/versionfeed (3.1.0 -> 3.2.0-rc1)
-
dnadesign/silverstripe-elemental (5.1.0 -> 5.2.0-rc1)
- 2024-02-26 f571da9 Remove workaround for nested redux form. (Guy Sartorelli)
- 2024-01-30 95c31bd Failed Behat test (Sabina Talipova)
- 2024-01-29 b23847a Behat test for badges (Sabina Talipova)
- 2024-01-18 935e46d Null submit handler for element component (Steve Boyd)
- 2023-12-06 d986b7d Handle empty element formstate (Steve Boyd)
- 2023-09-20 7f1daf8 Element::getPage returning the wrong page (Will Rossiter)
- 2023-09-19 215fadf Fix some bits in the readme (Ed Wilde)
-
silverstripe/auditor (3.0.0 -> 3.1.0-rc1)
-
silverstripe/gridfieldqueuedexport (3.1.0 -> 3.2.0-rc1)
- 2024-01-16 48b454f Undefined Exception on makeDir method (Marco Hermo)
-
cwp/watea-theme (4.0.0 -> 4.1.0-rc1)
- 2023-09-04 8bfba56 Update .nvmrc (Steve Boyd)
-
symbiote/silverstripe-queuedjobs (5.0.2 -> 5.1.0-rc1)
- 2022-10-04 7cdce8f grabMutex job lock query on SQLite (Maxime Rainville)
-
tractorcow/silverstripe-fluent (7.0.0 -> 7.1.0-rc1)
- 2023-08-15 28056e5 fix stylesheet path (Thomas Portelange)
-
silverstripe/linkfield (3.0.0-beta1 -> 4.0.0-rc1)
- 2024-03-19 d0c44eb Remove misleading migration docs and task (#259) (Guy Sartorelli)
- 2024-03-10 e40f251 Remove tabs with only gridfields (Steve Boyd)
- 2024-02-26 1a30c3e Remove workaround for nested redux form. (Guy Sartorelli)
- 2024-02-12 c347b35 Archive record from live table on delete (Steve Boyd)
- 2024-02-07 31d9ffa Do not show delete button when disabled (Steve Boyd)
- 2024-01-31 09f637c Add HasOneRelationFieldInterface to LinkField (Steve Boyd)
- 2024-01-30 790c561 Elemental non-inline editing (Steve Boyd)
- 2024-01-25 da9ce9b Prevent nested asset-admin forms from submitting modal (Steve Boyd)
- 2024-01-19 15f02d3 Defaul link type title and icon for disabled link types (Sabina Talipova)
- 2024-01-15 f7fd63a Don't change scroll position when loading (#171) (Guy Sartorelli)
- 2024-01-11 082657d Console warning about required type (#163) (Sabina Talipova)
- 2024-01-08 bdf0b36 Nicely truncate link title/URL (#153) (Guy Sartorelli)
- 2023-12-04 3c8edfd Don't render links that don't exist (#130) (Guy Sartorelli)
- 2023-08-03 f2fd7bb Revert change that broke file modal (Maxime Rainville)
- 2023-06-20 8533d27 Allow CMS fields customisations via extension to be executed after the default setup. (Mojmir Fendek)
- 2023-06-11 61a27e5 File link URL generation corrected. (Mojmir Fendek)
- 2023-06-06 8df6554 Corrected variable name (typo). (Mojmir Fendek)
- 2023-06-06 f09a385 URL generation fix for internal link. (Mojmir Fendek)
- 2023-06-01 b328570 Fix link migration task. (Mojmir Fendek)
- 2023-05-25 9744bd8 List types can now be disabled via configuration (existing config, missing feature). (Mojmir Fendek)
- 2023-02-15 677ae80 Fix Github actions. (Mojmir Fendek)
- 2022-05-13 1e9c0ec Bump PHP versions. (Mojmir Fendek)
- 2022-05-12 5239704 Fix Composer autoload settings. (Mojmir Fendek)
- 2021-10-21 2eb755e Change link type in via a GridField edit form. (Mojmir Fendek)
Api changes
-
silverstripe/assets (2.1.0 -> 2.2.0-rc1)
- 2021-07-20 595c5a5 allow chaining for Upload_Validator (Will Rossiter)
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
-
silverstripe/cms (5.1.0 -> 5.2.0-rc1)
- 2023-11-02 e826152f Add new SiteTree.hide_pagetypes configuration (Guy Sartorelli)
-
silverstripe/versioned (2.1.0 -> 2.2.0-rc1)
- 2023-11-05 4d38781 Deprecate Versions() having parameter (Steve Boyd)
-
silverstripe/linkfield (3.0.0-beta1 -> 4.0.0-rc1)
- 2023-12-12 7f65d4f Add new Owner relation for handling permissions (#127) (Guy Sartorelli)
Dependencies
-
silverstripe/recipe-kitchen-sink (5.1.0 -> 5.2.0-rc1)
- 2023-09-28 fa436ba Add silverstripe/linkfield (Steve Boyd)
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
-
silverstripe/admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/asset-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/campaign-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/versioned-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/cms (5.1.0 -> 5.2.0-rc1)
-
silverstripe/session-manager (2.1.0 -> 2.2.0-rc1)
-
silverstripe-themes/simple (3.3.0 -> 3.3.1)
- 2023-11-17 d3228db Update jQuery to 3.7.1 (Garion Herman)
-
silverstripe/login-forms (5.1.0 -> 5.2.0-rc1)
-
silverstripe/documentconverter (3.1.0 -> 3.2.0-rc1)
-
silverstripe/tagfield (3.1.0 -> 3.2.0-rc1)
-
silverstripe/taxonomy (3.1.0 -> 3.2.0-rc1)
- 2024-01-08 8a4a0b1 Update deps to specify new auto-scaffolded has-one field (Steve Boyd)
-
silverstripe/blog (4.1.0 -> 4.2.0-rc1)
-
silverstripe/contentreview (5.1.0 -> 5.2.0-rc1)
-
silverstripe/sharedraftcontent (3.1.0 -> 3.2.0-rc1)
-
symbiote/silverstripe-advancedworkflow (6.1.0 -> 6.2.0-rc1)
- 2023-08-31 85e3f97 Update JS dependencies (Steve Boyd)
-
silverstripe/segment-field (3.1.0 -> 3.2.0-rc1)
-
silverstripe/userforms (6.1.0 -> 6.2.0-rc1)
-
silverstripe/externallinks (3.1.0 -> 3.2.0-rc1)
-
silverstripe/sitewidecontent-report (4.1.0 -> 4.2.0-rc1)
-
bringyourownideas/silverstripe-maintenance (3.0.1 -> 3.1.0-rc1)
-
dnadesign/silverstripe-elemental (5.1.0 -> 5.2.0-rc1)
-
silverstripe/elemental-bannerblock (3.1.0 -> 3.2.0-rc1)
-
silverstripe/auditor (3.0.0 -> 3.1.0-rc1)
- 2024-03-19 537dcd3 Use the canonical repository for proxy-db (#49) (Guy Sartorelli)
-
silverstripe/totp-authenticator (5.1.0 -> 5.2.0-rc1)
-
silverstripe/mfa (5.1.0 -> 5.2.0-rc1)
-
silverstripe/gridfieldqueuedexport (3.1.0 -> 3.2.0-rc1)
-
silverstripe/realme (5.2.0 -> 5.3.0-rc1)
-
silverstripe/webauthn-authenticator (5.1.0 -> 5.2.0-rc1)
-
silverstripe/subsites (3.1.0 -> 3.2.0-rc1)
-
silverstripe/lumberjack (3.0.2 -> 3.1.0-rc1)
-
cwp/starter-theme (4.0.0 -> 4.1.0-rc1)
- 2024-01-08 d762ea9 Update JS dependencies (#240) (Guy Sartorelli)
- 2024-01-08 fdf930e Bump @babel/traverse from 7.23.0 to 7.23.7 (dependabot[bot])
- 2023-10-28 6a2dff8 Bump browserify-sign from 4.2.1 to 4.2.2 (dependabot[bot])
- 2023-10-03 5de9fba Update JS dependencies (#233) (github-actions[bot])
- 2023-08-31 b79bcbd Bump minimatch from 3.0.4 to 3.0.8 (dependabot[bot])
- 2023-08-29 0adbddc Bump semver from 5.7.1 to 5.7.2 (dependabot[bot])
- 2023-08-28 2a0d10f Bump url-parse from 1.5.1 to 1.5.10 (dependabot[bot])
- 2023-08-28 2ee7c94 Bump eventsource from 1.0.7 to 1.1.2 (dependabot[bot])
- 2023-08-28 8b3912f Bump follow-redirects from 1.13.0 to 1.15.2 (dependabot[bot])
- 2023-08-28 3bec8aa Bump async from 2.6.3 to 2.6.4 (dependabot[bot])
- 2023-08-28 e8cb249 Bump path-parse from 1.0.6 to 1.0.7 (dependabot[bot])
- 2023-08-28 83b1e25 Bump hosted-git-info from 2.8.5 to 2.8.9 (dependabot[bot])
- 2023-08-28 743463a Bump tar from 4.4.15 to 4.4.19 (dependabot[bot])
- 2023-08-28 f0ef7f0 Bump color-string from 1.5.3 to 1.9.1 (dependabot[bot])
- 2023-08-28 5a84ae2 Bump ajv from 6.10.2 to 6.12.3 (dependabot[bot])
- 2023-08-28 81c5a23 Bump lodash from 4.17.19 to 4.17.21 (dependabot[bot])
- 2023-08-28 167a10f Bump decode-uri-component from 0.2.0 to 0.2.2 (dependabot[bot])
- 2023-08-28 eeee5c7 Bump json5 from 1.0.1 to 1.0.2 (dependabot[bot])
- 2022-12-10 c3c8d4a Bump express from 4.17.1 to 4.18.2 (dependabot[bot])
-
cwp/agency-extensions (3.1.0 -> 3.2.0-rc1)
-
cwp/watea-theme (4.0.0 -> 4.1.0-rc1)
- 2024-01-01 415858c Update JS dependencies (github-actions)
- 2023-10-01 c407d54 Update JS dependencies (github-actions)
- 2023-08-29 902113b build(deps): bump semver from 5.6.0 to 5.7.2 (dependabot[bot])
- 2023-08-28 78c47a5 build(deps): bump dot-prop from 4.2.0 to 4.2.1 (dependabot[bot])
- 2023-08-28 3f0de59 build(deps): bump path-parse from 1.0.6 to 1.0.7 (dependabot[bot])
- 2023-08-28 878cc6a build(deps): bump hosted-git-info from 2.7.1 to 2.8.9 (dependabot[bot])
- 2023-08-28 8781c5a build(deps): bump json5 from 1.0.1 to 1.0.2 (dependabot[bot])
-
symbiote/silverstripe-multivaluefield (6.0.2 -> 6.1.0-rc1)
- 2023-07-11 99564be Update eslint module (#97) (Sabina Talipova)
-
silverstripe/linkfield (3.0.0-beta1 -> 4.0.0-rc1)
- 2024-01-08 bddcb6e Explicitly require framework ^5.2 (Steve Boyd)
Documentation
-
silverstripe/session-manager (2.1.0 -> 2.2.0-rc1)
- 2023-11-05 2305049 Fix link (Steve Boyd)
-
silverstripe/tagfield (3.1.0 -> 3.2.0-rc1)
- 2023-11-20 946d92a Update readme example (Steve Boyd)
-
silverstripe/userforms (6.1.0 -> 6.2.0-rc1)
- 2024-02-01 c893194 Update syntax for callout blocks (#1263) (Guy Sartorelli)
-
dnadesign/silverstripe-elemental (5.1.0 -> 5.2.0-rc1)
- 2023-08-30 fe95f59 fix not needed duplication when restoring a page from archived state (Aljoša Balažic)
-
silverstripe/developer-docs (5.1.0 -> 5.2.0-rc1)
- 2024-03-20 baeeb636 Minor change to changelog regarding PHP 8.3 (#483) (Guy Sartorelli)
- 2024-03-18 7e4e3460 Readability and writing style review of 5.2.0 changelog (Guy Sartorelli)
- 2024-03-18 a5f55891 Add more changes to the changelog (Guy Sartorelli)
- 2024-03-18 6cbc0fa1 Update notes about linkfield migration guides (Guy Sartorelli)
- 2024-03-14 f9a73555 Add PHP8.3 support to the changelog. (#480) (Guy Sartorelli)
- 2024-03-12 ee99a449 change and/or to or (Steve Boyd)
- 2024-03-11 9da6a80d Elemental versioned badge (Steve Boyd)
- 2024-03-11 37710318 Move 5.2.0-beta1 changelog to proper directory (Steve Boyd)
- 2024-03-05 43b0baf1 Update image path (Steve Boyd)
- 2024-03-05 2260d6dd Fix 5.2.0-beta1 changelog (Steve Boyd)
- 2024-03-04 cc5be721 Add composer runtime api mention (#464) (Thomas Portelange)
- 2024-02-29 164b66f1 Refer to release policies to avoid stale information (#462) (Guy Sartorelli)
- 2024-02-28 6bc37ea3 Document LTS support for databases (Guy Sartorelli)
- 2024-02-23 621a9f40 Fix placement of urlfield docs (#460) (Guy Sartorelli)
- 2024-02-20 aa9ef537 Document manipulating eager loading queries (#456) (Guy Sartorelli)
- 2024-02-18 22fd700d Document official support for linkfield (#457) (Guy Sartorelli)
- 2024-02-08 fee67b67 Add new query trace comment to changelog (#404) (Guy Sartorelli)
- 2024-02-02 b8012e86 Document using symfony/validator (#454) (Guy Sartorelli)
- 2024-02-02 e5f5434b Update syntax for callout blocks (#455) (Guy Sartorelli)
- 2024-02-01 e77dd474 Update syntax for callout blocks (#452) (Guy Sartorelli)
- 2024-02-01 c47892db Update syntax for callout blocks (#449) (Guy Sartorelli)
- 2024-01-30 d9735932 Add UrlField (Steve Boyd)
- 2024-01-29 f5a095af CMS JSON API's (Steve Boyd)
- 2024-01-29 9f5ea80e Document PHPDoc as a PHP coding standard (#448) (Guy Sartorelli)
- 2024-01-25 3136033f Add description for type/other label and clarify affects labels (Steve Boyd)
- 2024-01-18 8ec4dfd6 fix minor typo on class name in code sample (Ravindu)
- 2024-01-18 04437708 Document making variants with different file extensions (Guy Sartorelli)
- 2024-01-17 65b1ab1c Refactor docs about file manipulation into its own page (Guy Sartorelli)
- 2024-01-17 81574844 Document deprecated API (#440) (Guy Sartorelli)
- 2024-01-14 9fffd6d8 Document added generic types (Guy Sartorelli)
- 2024-01-08 980c4b95 Document new redirector 404 in changelog (#437) (Guy Sartorelli)
- 2024-01-08 3ad9dce5 Document new config for splitting summary sentences (#428) (Guy Sartorelli)
- 2024-01-08 c3f61e59 Document changes to asset admin file size config (#430) (Guy Sartorelli)
- 2024-01-08 d01a1eb4 Fix spelling issue (#436) (Sabina Talipova)
- 2024-01-07 52c71d71
Update changelog for .brf support
(Ed Wilde) - 2023-12-19 1d517716 Auto scaffolding has_one relations (Steve Boyd)
- 2023-12-18 a0054052 Document lazy loading (Guy Sartorelli)
- 2023-12-14 ea47bc59 Document another exception to catch when dealing with email (#421) (Guy Sartorelli)
- 2023-12-14 e1cc2c28 Add SearchableDropdownField to 5.2.0 changelog (Steve Boyd)
- 2023-12-12 e2c2ff19 Update supported PHP version for CMS 5.2 (Sabina Talipova)
- 2023-12-11 fd9af106 Document multi-reciprocal has_one relations (#417) (Guy Sartorelli)
- 2023-12-11 137bdaa0 Update changelog for security patches (Guy Sartorelli)
- 2023-12-10 3657480d Document gridfield with arbitrary data (Guy Sartorelli)
- 2023-12-10 78e53226 Nested RequestHandlers (Steve Boyd)
- 2023-11-29 1a514d10 Document new staticpublishqueue configuration (#413) (Guy Sartorelli)
- 2023-11-27 7aaf5358 Document using GridField with arbitrary data (Guy Sartorelli)
- 2023-11-26 2dcd339c Update coding conventions (Steve Boyd)
- 2023-11-26 0786b201 Add SortPlugin to the docs (Sabina Talipova)
- 2023-11-23 554e4f0c Include method signatures in public API definition (Guy Sartorelli)
- 2023-11-22 51cba6cc LogicException when no react component (Steve Boyd)
- 2023-11-14 d9893215 Document new dev admin permissions (#399) (Guy Sartorelli)
- 2023-11-07 6f0861b0 Select all and deselect all files (Steve Boyd)
- 2023-11-06 3b59d4e2 Deprecated $having parameter (Steve Boyd)
- 2023-11-02 adb81fb1 prefix (Steve Boyd)
- 2023-11-02 5b23e3e7 Remove references to old Addons website (#389) (Maxime Rainville)
- 2023-11-02 7c7ed947 Document new community roles (Guy Sartorelli)
- 2023-11-02 c04c2e03 Document new hide_pagetypes config (Guy Sartorelli)
- 2023-10-25 951c9c81 Update 01_Code.md (Andrew Paxley)
- 2023-10-25 f708c403 Restructure the contributing docs (#385) (Guy Sartorelli)
- 2023-10-24 3dcdc188 Update maintainer guidelines (#383) (Guy Sartorelli)
- 2023-10-24 8566c1f0 Update contributing code docs (#379) (Guy Sartorelli)
- 2023-10-24 caf0c452
Specify what makes a "core" module different (#384)
(Guy Sartorelli) - 2023-10-24 94aff599 Update triage resources (#382) (Guy Sartorelli)
- 2023-10-24 a6d4f746 Update documentation about documenation (#380) (Guy Sartorelli)
- 2023-10-24 4bdfce04 Update issues/bugs page (#378) (Guy Sartorelli)
- 2023-10-24 71785917 Update translation doc (#381) (Guy Sartorelli)
- 2023-10-19 4e669f12 Create new users with random passwords (Steve Boyd)
- 2023-10-17 36f9313a Update eagerloading docs to explicitly say no relation filter (#376) (Guy Sartorelli)
- 2023-10-17 a9966929 Mention that SS_TRUSTED_PROXY_IPS supports subnets (Johannes Hammersen)
- 2023-10-02 c6525f22 Document ORM changes for CMS 5.2 (#351) (Guy Sartorelli)
- 2023-09-25 ce291746 add errorpage allowed_error_codes to 5.2.0 changelog (Andrew Paxley)
- 2023-09-19 2177d6a9 Document deprecation of old password encryptors (#348) (Guy Sartorelli)
-
silverstripe/linkfield (3.0.0-beta1 -> 4.0.0-rc1)
- 2024-02-25 d820d0b Fix docs links in readme (Guy Sartorelli)
- 2024-02-20 7c11469 Link field User manual (Sabina Talipova)
- 2024-02-18 a79f97d Provide proper developer documentation (#224) (Guy Sartorelli)
- 2024-02-13 2b0eef1 Automatic publishing of linked pages and files (Steve Boyd)
- 2024-02-12 c5f91c4 Update PHPDocs (Guy Sartorelli)
- 2023-12-05 22fcdcc Update PHPDoc for link models (#136) (Guy Sartorelli)
- 2023-12-05 5b86669 Update sentence in README (Steve Boyd)
- 2023-11-29 cc21f8a Update README (Guy Sartorelli)
Translations
-
silverstripe/assets (2.1.0 -> 2.2.0-rc1)
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
- 2024-02-08 c40602957 Update translations (#11130) (Guy Sartorelli)
- 2024-02-07 f952183cd Update translations (#11126) (Guy Sartorelli)
- 2024-02-06 26273bf37 Update translations (#11125) (Guy Sartorelli)
- 2023-11-06 3c98264f8 Update translations (Steve Boyd)
- 2023-11-03 5ff6811b0 Update translations (Steve Boyd)
-
silverstripe/mimevalidator (3.0.0 -> 3.1.0-rc1)
- 2024-02-07 7fd4a96 Update translations (#72) (Guy Sartorelli)
-
silverstripe/admin (2.1.0 -> 2.2.0-rc1)
- 2024-03-06 e2a7f456
Add missing js translation strings to src/en.json file
(Peter Schiffer) - 2024-02-26 09b51af1
Make Search options string translatable in SearchBox.js
(Peter Schiffer) - 2024-02-08 b4f13ed4 Update translations (#1675) (Guy Sartorelli)
- 2024-02-07 29e978be Update translations (#1673) (Guy Sartorelli)
- 2023-11-06 1c78d8f6 Update translations (Steve Boyd)
- 2023-11-05 9463da40 Update translations (Steve Boyd)
- 2024-03-06 e2a7f456
-
silverstripe/asset-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/campaign-admin (2.1.0 -> 2.2.0-rc1)
- 2024-02-07 7d3c679 Update translations (#294) (Guy Sartorelli)
-
silverstripe/versioned-admin (2.1.0 -> 2.2.0-rc1)
-
silverstripe/cms (5.1.0 -> 5.2.0-rc1)
-
silverstripe/errorpage (2.1.0 -> 2.2.0-rc1)
-
silverstripe/reports (5.1.0 -> 5.2.0-rc1)
-
silverstripe/siteconfig (5.1.0 -> 5.2.0-rc1)
-
silverstripe/versioned (2.1.0 -> 2.2.0-rc1)
-
silverstripe/session-manager (2.1.0 -> 2.2.0-rc1)
-
silverstripe/login-forms (5.1.0 -> 5.2.0-rc1)
-
silverstripe/documentconverter (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 1bd09d5 Update translations (#69) (Guy Sartorelli)
-
silverstripe/iframe (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 a8243f3 Update translations (#80) (Guy Sartorelli)
-
silverstripe/taxonomy (3.1.0 -> 3.2.0-rc1)
-
silverstripe/blog (4.1.0 -> 4.2.0-rc1)
- 2024-02-07 95a2808 Update translations (#742) (Guy Sartorelli)
-
silverstripe/spamprotection (4.1.0 -> 4.2.0-rc1)
- 2024-02-07 5badc34 Update translations (#111) (Guy Sartorelli)
-
silverstripe/contentreview (5.1.0 -> 5.2.0-rc1)
- 2024-02-07 bb3eec1 Update translations (#223) (Guy Sartorelli)
-
silverstripe/sharedraftcontent (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 5531318 Update translations (#225) (Guy Sartorelli)
-
symbiote/silverstripe-advancedworkflow (6.1.0 -> 6.2.0-rc1)
-
silverstripe/segment-field (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 8e0e850 Update translations (#98) (Guy Sartorelli)
-
silverstripe/userforms (6.1.0 -> 6.2.0-rc1)
-
silverstripe/externallinks (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 b12e686 Update translations (#120) (Guy Sartorelli)
-
silverstripe/securityreport (3.0.0 -> 3.1.0-rc1)
- 2024-02-07 51c745e Update translations (#75) (Guy Sartorelli)
-
silverstripe/versionfeed (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 8287278 Update translations (#99) (Guy Sartorelli)
-
dnadesign/silverstripe-elemental (5.1.0 -> 5.2.0-rc1)
- 2024-02-07 e1d6370 Update translations (#1144) (Guy Sartorelli)
-
silverstripe/hybridsessions (3.0.2 -> 3.0.3)
- 2024-02-06 402c6e4 Update translations (Guy Sartorelli)
-
silverstripe/registry (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 8209e0d Update translations (#93) (Guy Sartorelli)
-
silverstripe/totp-authenticator (5.1.0 -> 5.2.0-rc1)
- 2024-02-07 bc196b2 Update translations (#145) (Guy Sartorelli)
-
silverstripe/mfa (5.1.0 -> 5.2.0-rc1)
- 2023-11-07 9390a7d Update translations (Steve Boyd)
-
silverstripe/crontask (3.0.2 -> 3.0.3)
- 2024-02-07 1d2db78 Update translations (#86) (Guy Sartorelli)
-
silverstripe/gridfieldqueuedexport (3.1.0 -> 3.2.0-rc1)
- 2024-02-07 299929e Update translations (#98) (Guy Sartorelli)
-
silverstripe/realme (5.2.0 -> 5.3.0-rc1)
-
silverstripe/webauthn-authenticator (5.1.0 -> 5.2.0-rc1)
- 2023-11-07 81e45fe Update translations (Steve Boyd)
-
silverstripe/subsites (3.1.0 -> 3.2.0-rc1)
-
silverstripe/lumberjack (3.0.2 -> 3.1.0-rc1)
- 2024-02-07 cae40f4 Update translations (#140) (Guy Sartorelli)
-
dnadesign/silverstripe-elemental-userforms (4.1.0 -> 4.1.1)
- 2024-02-07 ce60338 Update translations (#88) (Guy Sartorelli)
-
symbiote/silverstripe-gridfieldextensions (4.0.3 -> 4.0.5)
- 2024-02-07 c84d8af Update translations (#381) (Guy Sartorelli)
-
symbiote/silverstripe-queuedjobs (5.0.2 -> 5.1.0-rc1)
- 2024-02-07 892dbba Update translations (#419) (Guy Sartorelli)
Other changes
-
silverstripe/assets (2.1.0 -> 2.2.0-rc1)
- 2023-10-25 63bd612 Add support for braille format files (#574) (Ed Wilde)
-
silverstripe/framework (5.1.0 -> 5.2.0-rc1)
- 2024-03-19 6ede0316b
Revert "Use field editorconfig when sanitising content" (#11180)
(Guy Sartorelli) - 2024-03-04 eb4ef623a check for empty salt (Thomas Portelange)
- 2024-02-27 59177dd31 Delete tests/php/Core/Manifest/fixtures/VersionProviderTest directory (Thomas Portelange)
- 2024-02-27 2921d68a5 Update composer.json (Thomas Portelange)
- 2024-02-26 a06ce0493 use VersionParser instead of comparator (Thomas Portelange)
- 2024-02-26 80e197fe4 make error message more readable (Thomas Portelange)
- 2024-02-26 a1d1e977c use composer/semver (Thomas Portelange)
- 2024-02-26 071333f77 add composer/semver (Thomas Portelange)
- 2024-02-26 68b79e11e missing import (Thomas Portelange)
- 2024-02-26 269692202 update return type (Thomas Portelange)
- 2024-02-26 1cf3dde9f Update src/Core/Manifest/VersionProvider.php (Thomas Portelange)
- 2024-02-26 2b64e98af Update VersionProviderTest.php (Thomas Portelange)
- 2024-02-26 b53148c03 add deprecation, remove class_exists (Thomas Portelange)
- 2024-02-26 2600b2661 add composer-runtime-api (Thomas Portelange)
- 2024-02-26 e649310f7 Update src/Core/Manifest/VersionProvider.php (Thomas Portelange)
- 2024-02-26 a2486c085 Update src/Core/Manifest/VersionProvider.php (Thomas Portelange)
- 2024-02-26 a19671950 Update src/Core/Manifest/VersionProvider.php (Thomas Portelange)
- 2024-02-23 bc0912718 use composer runtime api (Thomas Portelange)
- 2024-02-08 e0107e020 Update src/ORM/DataQuery.php (Thomas Portelange)
- 2024-02-08 2ac68a55a rename var (Thomas Portelange)
- 2023-12-12 b6c646ffb
Also remove the unused $last_idx assignment
(Ed Wilde) - 2023-12-12 81541db89
Remove unused line in findTab()
(Ed Wilde) - 2023-11-09 b9da08a30 Update task-not-found messaging (Andrew Paxley)
- 2023-11-09 c77a77d58 Flip canView logic and combine into taskEnabled check (Andrew Paxley)
- 2023-10-15 e5eb98cc3 Use field editorconfig when sanitising content (Bernie Hamlin)
- 2023-10-11 af536a88d Add support for braille format files (Ed Wilde)
- 2024-03-19 6ede0316b
-
silverstripe/mimevalidator (3.0.0 -> 3.1.0-rc1)
- 2023-10-11 25bfefc Add support for braille format files (Ed Wilde)
-
silverstripe/admin (2.1.0 -> 2.2.0-rc1)
- 2024-02-15 6f468685 rename var (Thomas Portelange)
- 2024-02-14 6bcccbbf use innerText, rename (Thomas Portelange)
- 2024-02-07 4c0247cd
Revert "TLN Update translations (#1673)"
(Steve Boyd) - 2023-10-27 3c969733 Define a minimum width for the logo (Ed Wilde)
- 2023-10-27 050b8b93 Add the new CMS logo locally (Ed Wilde)
- 2023-10-12 7cda7c7e Update Storybook logo to the 5.1 OSS logo (Ed Wilde)
-
silverstripe/asset-admin (2.1.0 -> 2.2.0-rc1)
- 2023-12-12 4fe280ed Update sort param (Vivienne Tubbs)
-
silverstripe/cms (5.1.0 -> 5.2.0-rc1)
-
silverstripe/versioned (2.1.0 -> 2.2.0-rc1)
- 2023-10-30 7eddb6b Apply suggestions from code review (Mojmir Fendek)
- 2023-10-19 f21edce PR fixes. (Mojmir Fendek)
- 2023-10-19 5ed82fe PR fixes. (Mojmir Fendek)
- 2023-10-19 76568ac PR fixes. (Mojmir Fendek)
- 2023-10-18 d6490ce PR fixes. (Mojmir Fendek)
- 2023-10-16 d2efe5a PR fixes. (Mojmir Fendek)
- 2021-04-06 97d1ac6 PR fixes. (Mojmir Fendek)
- 2021-04-06 dd2674f Update src/RecursiveStagesService.php (Mojmir Fendek)
-
silverstripe/graphql (5.1.0 -> 5.2.0-rc1)
- 2023-10-19 addf529 add canInit method and CAN_DEV_GRAPHQL permissions (Andrew Paxley)
-
silverstripe/login-forms (5.1.0 -> 5.2.0-rc1)
- 2023-09-11 b0d6c3e Small typo in README.md (Vinnie)
-
silverstripe/tagfield (3.1.0 -> 3.2.0-rc1)
-
silverstripe/blog (4.1.0 -> 4.2.0-rc1)
-
silverstripe/spamprotection (4.1.0 -> 4.2.0-rc1)
- 2023-09-11 2210891
Revert "fix: if no spam protector set, fail sliently"
(Guy Sartorelli)
- 2023-09-11 2210891
-
colymba/gridfield-bulk-editing-tools (4.0.0 -> 4.0.2)
- 2023-06-01 3006076 SS5 Fix: Replace json2array with json_decode (James Cocker)
-
silverstripe/sharedraftcontent (3.1.0 -> 3.2.0-rc1)
- 2023-10-16 58a795e Fixes internal infinite recursion on Nginx/PHP-FPM environments (Nathan J. Brauer)
-
silverstripe/userforms (6.1.0 -> 6.2.0-rc1)
- 2023-11-12 26a4816 Add extension hook to control file attachments per recipient and field (Michal Kleiner)
-
dnadesign/silverstripe-elemental (5.1.0 -> 5.2.0-rc1)
- 2023-09-21 eeb4546 Revert Github specific markdown to maintain portability (Ed Wilde)
-
silverstripe/developer-docs (5.1.0 -> 5.2.0-rc1)
- 2023-12-14 844f4755 Update 05_Simple_Contact_Form.md (erangaddd)
- 2023-12-06 c516a99b Update 04_Upgrading_project.md (Tim)
- 2023-11-28 deacfc1a Fixed: link to formatting/modifying/casting variables (Patrick Côté)
- 2023-11-02 0033a971 Update a example code comment (Nate Devereux)
- 2023-10-19 3e546176 Apply suggestions from code review (Johannes Hammersen)
-
silverstripe/subsites (3.1.0 -> 3.2.0-rc1)
-
symbiote/silverstripe-gridfieldextensions (4.0.3 -> 4.0.5)
- 2023-03-07 1637e78 Make link color white. (Robin)
-
tractorcow/silverstripe-fluent (7.0.0 -> 7.1.0-rc1)
-
silverstripe/linkfield (3.0.0-beta1 -> 4.0.0-rc1)
- 2023-10-18 653071d Fixing typo of $Link.OpenInew to $Link.OpenInNew (Daniel Hurd)
- 2023-08-30 245cdcc MISC: Docs update. (Mojmir Fendek)
- 2023-07-28 437a915 MISC: File link test. (Mojmir Fendek)
- 2022-10-27 8f1a258 Add PhoneField. Add migration helpers from Linkable (#48) (Chris Penny)
- 2022-06-29 636c679 PHP 8.1: Suppress deprecation notice (Chris Penny)
- 2022-05-13 c1f42f2 Debug. (Mojmir Fendek)
- 2021-11-16 1068b78 Update namespace. Add table_name config to all models (#39) (Chris Penny)