Skip to content

Commit

Permalink
DOC Modules loosing commercial support
Browse files Browse the repository at this point in the history
  • Loading branch information
emteknetnz committed Nov 27, 2024
1 parent 9e14add commit 6ecc999
Show file tree
Hide file tree
Showing 8 changed files with 82 additions and 62 deletions.
19 changes: 1 addition & 18 deletions en/00_Getting_Started/05_Recipes.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,6 @@ summary: What Recipes are, and how they are used in Silverstripe CMS
icon: clipboard
---

# Adding features to your project with recipes

To achieve more complex use cases in Silverstripe CMS, you may need to combine many modules and add extra configuration to integrate these together. Silverstripe CMS Recipes streamline this process for common use cases.

## What are Silverstripe CMS recipes?

Recipes are used to implement common broad feature sets by shipping a collection of modules along with the relevant integration logic. They allow developers to quickly get started while retaining the ability to customise their integration to their specific needs.
Expand All @@ -23,19 +19,6 @@ Silverstripe CMS is powered by a system of components in the form of Composer pa

By design, modules tend to be small and serve a specific function. You may need to combine many modules to achieve a wider goal.

For example, the [`silverstripe/blog`](https://github.com/silverstripe/silverstripe-blog) module by itself simply allows you to create blog posts. It does not include all the features you could want in a blog, like a comment system to display related content.

The [`silverstripe/recipe-blog`](https://github.com/silverstripe/recipe-blog) recipe installs `silverstripe/blog` module, but also:

- [`silverstripe/comments`](https://github.com/silverstripe/silverstripe-comments) and [`silverstripe/comment-notifications`](https://github.com/silverstripe/comment-notifications) to allow the management of comments on blog post
- [`silverstripe/spamprotection`](https://github.com/silverstripe/silverstripe-spamprotection) to provide basic SPAM protection on comments.

## Finding recipes for Silverstripe CMS

The Silverstripe CMS project maintains a number of recipes. Some third parties also maintain recipes.

[Search Packagist for all packages with the `silverstripe-recipe`](https://packagist.org/?query=silverstripe&type=silverstripe-recipe) type to find recipes you can install on your Silverstripe CMS project.

## Releasing supported recipes

When we announce a new release of Silverstripe CMS and publish a changelog for it, we refer to a new set of *recipe* versions, which include new versions of some or all of their associated modules. The easiest way to keep up to date with new Silverstripe CMS releases is to depend on one of the core recipes:
Expand All @@ -46,7 +29,7 @@ When we announce a new release of Silverstripe CMS and publish a changelog for i
the admin UI and CMS features. We recommend specifying this recipe in your dependencies.
- [`silverstripe/installer`](https://packagist.org/packages/silverstripe/installer): Includes `recipe-cms`, and adds a
default theme for the front-end of your site. We recommend creating new projects based on this recipe (
via `composer create-project silverstripe/installer myproject ^5`).
via `composer create-project silverstripe/installer myproject ^6`).

When determining whether you are running the latest version of Silverstripe CMS, it is easier to refer to the Recipe
version than the individual Module versions, which may not align with Recipe versions. You can use Packagist to find
Expand Down
7 changes: 3 additions & 4 deletions en/02_Developer_Guides/00_Model/10_Versioning.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,15 @@ Images and other files are tracked as versioned objects. If a file is referenced

This behavior works both for versioned and unversioned objects.

### Grouping versioned `DataObject` records into a `ChangeSet` (aka campaigns)
### Grouping versioned `DataObject` records into a `ChangeSet`

Sometimes, multiple pages or records may be related in organic ways that cannot be properly expressed through an ownership relation. There's still value in being able to publish those as a block.

For example, your editors may be about to launch a new contest through their website. They've drafted a page to promote the contest, another page with the rules and conditions, a registration page for users to sign up, some promotional images, new sponsor records, etc. All this content needs to become visible simultaneously.

Changes to many objects can be grouped together using the [`ChangeSet`](api:SilverStripe\Versioning\ChangeSet) object. In the CMS, editors can manage `ChangeSet`s through the "Campaign" section (if the `silverstripe/campaign-admin` module is installed). By grouping a series of content changes together as a cohesive unit, content editors can bulk publish an entire body of content all at once, which affords them much more power and control over interdependent content types.
Changes to many objects can be grouped together using the [`ChangeSet`](api:SilverStripe\Versioning\ChangeSet) object. By grouping a series of content changes together as a cohesive unit, content editors can bulk publish an entire body of content all at once, which affords them much more power and control over interdependent content types.

Records can be added to a changeset in the CMS by using the "Add to campaign" button
that is available on the edit forms of all pages and files. Programmatically, this is done by creating a `ChangeSet` object and invoking its [`addObject(DataObject $record)`](api:SilverStripe\Versioning\ChangeSet::addObject()) method.
Programmatically, this is done by creating a `ChangeSet` object and invoking its [`addObject(DataObject $record)`](api:SilverStripe\Versioning\ChangeSet::addObject()) method.

> [!NOTE]
> DataObjects can be added to more than one ChangeSet.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,13 @@ The easiest way to access the pattern library is to view it online. The pattern

If you're developing a new React component, running the pattern library locally is a good way to interact with it.

The pattern library is built from the `silverstripe/admin` module, but it also requires `silverstripe/asset-admin`, `silversrtipe/cms` and `silverstripe/campaign-admin`.
The pattern library is built from the `silverstripe/admin` module, but it also requires `silverstripe/asset-admin`, and `silversrtipe/cms`.

To run the pattern library locally, you'll need a Silverstripe CMS project based on `silverstripe/recipe-cms` and `yarn` installed locally. The pattern library requires the JS source files so you'll need to use the `--prefer-source` flag when installing your dependencies with Composer.

```bash
composer install --prefer-source
(cd vendor/silverstripe/asset-admin && yarn install)
(cd vendor/silverstripe/campaign-admin && yarn install)
(cd vendor/silverstripe/cms && yarn install)
cd vendor/silverstripe/admin && yarn install && yarn pattern-lib
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ The Admin interface is bundled within the Silverstripe CMS but is most commonly
module. The main class for displaying the interface is a specialized [Controller](api:SilverStripe\Control\Controller) called [LeftAndMain](api:SilverStripe\Admin\LeftAndMain), named
as it is designed around a left hand navigation and a main edit form.

The user interface logic has a combination of jQuery and [jQuery.entwine](./jquery_entwine/) with with [ReactJS](https://react.dev/). Some admin sections (`AssetAdmin` and `CampaignAdmin`) are powered purely with react components, while others have a combination of both react components and jQuery logic.
The user interface logic has a combination of jQuery and [jQuery.entwine](./jquery_entwine/) with with [ReactJS](https://react.dev/). Some admin sections, such as `AssetAdmin`, are powered purely with react components, while others have a combination of both react components and jQuery logic.

[CHILDREN]

Expand Down
75 changes: 75 additions & 0 deletions en/08_Changelogs/6.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ title: 6.0.0 (unreleased)

## Overview

- [Change to commercially supported modules](#changes-to-support)
- [Modules loosing commercial support](#modules-loosing-support)
- [Campaign admin removed from the CMS](#campaign-admin-removed)
- [Features and enhancements](#features-and-enhancements)
- [Validation added to DBFields](#dbfield-validation)
- [Changes to `sake`, `BuildTask`, CLI interaction in general](#cli-changes)
Expand Down Expand Up @@ -40,6 +43,58 @@ title: 6.0.0 (unreleased)
- [`getSchemaDataDefaults()` now includes attributes](#formfield-schema-data)
- [Full list of removed and changed API (by module, alphabetically)](#api-removed-and-changed)

## Change to commercially supported modules {#changes-to-support}

Some Silverstripe CMS modules are commercially supported. Silverstripe commits to looking after those modules for the duration of the Silverstripe CMS 6 lifecycle.

Review the list of [Commercially Supported Modules for Silverstripe CMS 6](https://docs.silverstripe.org/en/6/project_governance/supported_modules/).

### Modules loosing commercial support {#modules-loosing-support}

With the release of Silverstripe CMS 6.0.0, the following modules will no longer be commercially supported:

|Module|Status|
|[bringyourownideas/silverstripe-composer-update-checker](https://github.com/bringyourownideas/silverstripe-composer-update-checker)|Dropped|
|[bringyourownideas/silverstripe-maintenance](https://github.com/bringyourownideas/silverstripe-maintenance)|Dropped|
|[cwp/agency-extensions](https://github.com/silverstripe/cwp-agency-extensions)|Dropped|
|[cwp/starter-theme](https://github.com/silverstripe/cwp-starter-theme)|Dropped|
|[cwp/watea-theme](https://github.com/silverstripe/cwp-watea-theme)|Dropped|
|[silverstripe/recipe-authoring-tools](https://github.com/silverstripe/silverstripe-recipe-authoring-tools)|Dropped|
|[silverstripe/recipe-blog](https://github.com/silverstripe/silverstripe-recipe-blog)|Dropped|
|[silverstripe/recipe-collaboration](https://github.com/silverstripe/silverstripe-recipe-collaboration)|Dropped|
|[silverstripe/recipe-content-blocks](https://github.com/silverstripe/silverstripe-recipe-content-blocks)|Dropped|
|[silverstripe/recipe-form-building](https://github.com/silverstripe/silverstripe-recipe-form-building)|Dropped|
|[silverstripe/recipe-reporting-tools](https://github.com/silverstripe/silverstripe-recipe-reporting-tools)|Dropped|
|[silverstripe/recipe-services](https://github.com/silverstripe/silverstripe-recipe-services)|Dropped|
|[silverstripe/campaign-admin](https://github.com/silverstripe/silverstripe-campaign-admin)|Dropped|
|[silverstripe/auditor](https://github.com/silverstripe/silverstripe-auditor)|Dropped|
|[silverstripe/blog](https://github.com/silverstripe/silverstripe-blog)|CMS 6 compatible without commercial support|
|[silverstripe/contentreview](https://github.com/silverstripe/silverstripe-contentreview)|Dropped|
|[silverstripe/crontask](https://github.com/silverstripe/silverstripe-crontask)|CMS 6 compatible without commercial support|
|[silverstripe/documentconverter](https://github.com/silverstripe/silverstripe-documentconverter)|Dropped|
|[silverstripe/elemental-bannerblock](https://github.com/silverstripe/silverstripe-elemental-bannerblock)|Dropped|
|[silverstripe/elemental-fileblock](https://github.com/silverstripe/silverstripe-elemental-fileblock)|Dropped|
|[silverstripe/environmentcheck](https://github.com/silverstripe/silverstripe-environmentcheck)|Dropped|
|[silverstripe/externallinks](https://github.com/silverstripe/silverstripe-externallinks)|Combined into [silverstripe/reports](https://github.com/silverstripe/silverstripe-reports)|
|[silverstripe/iframe](https://github.com/silverstripe/silverstripe-iframe)|Dropped|
|[silverstripe/ldap](https://github.com/silverstripe/silverstripe-ldap)|Dropped|
|[silverstripe/registry](https://github.com/silverstripe/silverstripe-registry)|Dropped|
|[silverstripe/restfulserver](https://github.com/silverstripe/silverstripe-restfulserver)|Dropped|
|[silverstripe/security-report](https://github.com/silverstripe/silverstripe-security-report)|Combined into [silverstripe/reports](https://github.com/silverstripe/silverstripe-reports)|
|[silverstripe/sitewidecontent-report](https://github.com/silverstripe/silverstripe-sitewidecontent-report)|Combined into [silverstripe/reports](https://github.com/silverstripe/silverstripe-reports)|
|[silverstripe/subsites](https://github.com/silverstripe/silverstripe-subsites)|CMS 6 compatible without commercial support|
|[silverstripe/versionfeed](https://github.com/silverstripe/silverstripe-versionfeed)|Dropped|
|[silverstripe/webauthn-authenticator](https://github.com/silverstripe/silverstripe-webauthn-authenticator)|Dropped|
|[symbiote/silverstripe-multivaluefield](https://github.com/symbiote/silverstripe-multivaluefield)|Dropped|

The code in `silverstripe/externallinks`, `silverstripe/security-report`, and `silverstripe/sitewidecontent-report` has been copied into `silverstripe/reports` and will be maintained there going forward. The namespaces for classes in those modules has been updated to `SilverStripe\Reports`. Note that any code that related to `silverstripe/subsite` or `silverstripe/contentreview` integration has been removed.

CMS 6 compatible versions of `silverstripe/blog` and `silverstripe/subsites` have been released with CMS 6.0.0, but they are not commercially supported.

### Campaign admin removed from the CMS {#campaign-admin-removed}

The `silverstripe/campaign-admin` was a core module that provided a way to publish multiple related records at the same time, but it was very rarely used in practice. It has been removed from the default CMS installation and has had its commercial support removed. Its integration support has been removed from `silverstripe/cms`, `silverstripe/admin`, and `silverstripe/asset-admin`, all of which provided "Add to campaign" UX functionality. This means that it will not be possible to get any sort of campaign admin functionality in CMS 6 even if using a forked version of `silverstripe/campaign-admin`.

## Features and enhancements

### Validation added to `DBField`s {#dbfield-validation}
Expand Down Expand Up @@ -791,6 +846,26 @@ Note that the change from `ViewableData` to `ModelData` specifically was made to
|`SilverStripe\View\ViewableData_Customised`|[`SilverStripe\Model\ModelDataCustomised`](api:SilverStripe\Model\ModelDataCustomised)|
|`SilverStripe\View\ViewableData_Debugger`|[`SilverStripe\Model\ModelDataDebugger`](api:SilverStripe\Model\ModelDataDebugger)|

The following classes have been changed when code was move to the `silverstripe/reports` module from some of the modules that lost commercial support:
|Old FQCN|New FQCN|
|---|---|
|`SilverStripe\SecurityReport\Forms\GridFieldExportReportButton`|[`SilverStripe\Reports\SecurityReport\Forms\GridFieldExportReportButton`](api:SilverStripe\Reports\SecurityReport\Forms\GridFieldExportReportButton)|
|`SilverStripe\SecurityReport\Forms\GridFieldPrintReportButton`|[`SilverStripe\Reports\SecurityReport\Forms\GridFieldPrintReportButton`](api:SilverStripe\Reports\SecurityReport\Forms\GridFieldPrintReportButton)|
|`SilverStripe\SecurityReport\MemberReportExtension`|[`SilverStripe\Reports\SecurityReport\MemberReportExtension`](api:SilverStripe\Reports\SecurityReport\MemberReportExtension)|
|`SilverStripe\SecurityReport\UserSecurityReport`|[`SilverStripe\Reports\SecurityReport\UserSecurityReport`](api:SilverStripe\Reports\SecurityReport\UserSecurityReport)|
|`SilverStripe\SiteWideContentReport\Form\GridFieldBasicContentReport`|[`SilverStripe\Reports\SiteWideContentReport\Form\GridFieldBasicContentReport`](api:SilverStripe\Reports\SiteWideContentReport\Form\GridFieldBasicContentReport)|
|`SilverStripe\SiteWideContentReport\Model\SitewideContentTaxonomy`|[`SilverStripe\Reports\SiteWideContentReport\Model\SitewideContentTaxonomy`](api:SilverStripe\Reports\SiteWideContentReport\Model\SitewideContentTaxonomy)|
|`SilverStripe\SiteWideContentReport\SitewideContentReport`|[`SilverStripe\Reports\SiteWideContentReport\SitewideContentReport`](api:SilverStripe\Reports\SiteWideContentReport\SitewideContentReport)|
|`SilverStripe\ExternalLinks\Controllers\CMSExternalLinksController`|[`SilverStripe\Reports\ExternalLinks\Controllers\CMSExternalLinksController`](api:SilverStripe\Reports\ExternalLinks\Controllers\CMSExternalLinksController)|
|`SilverStripe\ExternalLinks\Jobs\CheckExternalLinksJob`|[`SilverStripe\Reports\ExternalLinks\Jobs\CheckExternalLinksJob`](api:SilverStripe\Reports\ExternalLinks\Jobs\CheckExternalLinksJob)|
|`SilverStripe\ExternalLinks\Model\BrokenExternalLink`|[`SilverStripe\Reports\ExternalLinks\Model\BrokenExternalLink`](api:SilverStripe\Reports\ExternalLinks\Model\BrokenExternalLink)|
|`SilverStripe\ExternalLinks\Model\BrokenExternalPageTrack`|[`SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrack`](api:SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrack)|
|`SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatus`|[`SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrackStatus`](api:SilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrackStatus)|
|`SilverStripe\ExternalLinks\BrokenExternalLinksReport`|[`SilverStripe\Reports\ExternalLinks\Reports\BrokenExternalLinksReport`](api:SilverStripe\Reports\ExternalLinks\Reports\BrokenExternalLinksReport)|
|`SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask`|[`SilverStripe\Reports\ExternalLinks\Tasks\CheckExternalLinksTask`](api:SilverStripe\Reports\ExternalLinks\Tasks\CheckExternalLinksTask)|
|`SilverStripe\ExternalLinks\Tasks\CurlLinkChecker`|[`SilverStripe\Reports\ExternalLinks\Tasks\CurlLinkChecker`](api:SilverStripe\Reports\ExternalLinks\Tasks\CurlLinkChecker)|
|`SilverStripe\ExternalLinks\Tasks\LinkChecker`|[`SilverStripe\Reports\ExternalLinks\Tasks\LinkChecker`](api:SilverStripe\Reports\ExternalLinks\Tasks\LinkChecker)|

### GraphQL removed from the CMS {#graphql-removed}

> [!NOTE]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ via `yarn lint` (see [Build Tooling](/contributing/build_tooling)).
(e.g. Button, Accordion). Presentation of these components should not rely on
the markup context they're embedded in.
- The `client/src/containers` folder should contain use-case dependent styles only
(e.g. CampaignAdmin). Styles in here should be kept at a minimum.
(e.g. AssetAdmin). Styles in here should be kept at a minimum.
- The file name of styles nested within components and containers should inherit their
respective folder name for easy reference.
For example, a `components/FormAction` component has styles named `FormAction.scss`).
Expand Down
4 changes: 0 additions & 4 deletions en/10_Contributing/09_Release_Process.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,6 @@ reviewing the release milestone on GitHub. Releases will be
announced on the ["releases" forum category](https://forum.silverstripe.org/c/releases).
Significant releases will also be published via the [`silverstripe.org` blog](https://silverstripe.org/blog).

You can also keep track of new releases through the CMS UI
by installing the [maintenance module](https://github.com/bringyourownideas/silverstripe-maintenance),
or using the [composer outdated](https://getcomposer.org/doc/03-cli.md#outdated) command in your project.

Additionally, you can [keep track of issues](issues_and_bugs#identifying-issues) (both open and closed)
across all modules involved in a recipe release.

Expand Down
Loading

0 comments on commit 6ecc999

Please sign in to comment.