From 362f86dd6887647a7e876c0c6b6786a266a596dc Mon Sep 17 00:00:00 2001 From: Guy Sartorelli <36352093+GuySartorelli@users.noreply.github.com> Date: Wed, 14 Jun 2023 13:46:41 +1200 Subject: [PATCH 1/2] DOC Quote all yaml service definitions (#285) Strings starting with a `%` must be explicitly quoted in YAML. --- .../01_Templates/03_Requirements.md | 4 ++-- en/02_Developer_Guides/05_Extending/05_Injector.md | 8 ++++---- en/02_Developer_Guides/05_Extending/06_Aspects.md | 12 ++++++------ .../09_Security/03_Authentication.md | 8 ++++---- .../09_Security/05_Rate_Limiting.md | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/en/02_Developer_Guides/01_Templates/03_Requirements.md b/en/02_Developer_Guides/01_Templates/03_Requirements.md index 00f536aa9..4ec329c5d 100644 --- a/en/02_Developer_Guides/01_Templates/03_Requirements.md +++ b/en/02_Developer_Guides/01_Templates/03_Requirements.md @@ -275,7 +275,7 @@ SilverStripe\Core\Injector\Injector: SilverStripe\Assets\Storage\GeneratedAssetHandler.custom-generated-assets: class: SilverStripe\Assets\Flysystem\GeneratedAssets properties: - Filesystem: %$League\Flysystem\Filesystem.custom-filesystem + Filesystem: '%$League\Flysystem\Filesystem.custom-filesystem' # Assign this generator to the requirements builder SilverStripe\View\Requirements_Backend: properties: @@ -370,7 +370,7 @@ SilverStripe\Core\Injector\Injector: SilverStripe\View\Requirements_Backend: properties: MinifyCombinedFiles: true - Minifier: %$MyProject\MyMinifier + Minifier: '%$MyProject\MyMinifier' ``` [alert] diff --git a/en/02_Developer_Guides/05_Extending/05_Injector.md b/en/02_Developer_Guides/05_Extending/05_Injector.md index 975773cd7..c2b71475e 100644 --- a/en/02_Developer_Guides/05_Extending/05_Injector.md +++ b/en/02_Developer_Guides/05_Extending/05_Injector.md @@ -316,12 +316,12 @@ name: MyController --- App\MyController: dependencies: - permissions: %$App\PermissionService + permissions: '%$App\PermissionService' SilverStripe\Core\Injector\Injector: App\PermissionService: class: App\RestrictivePermissionService properties: - database: %$App\MySQLDatabase + database: '%$App\MySQLDatabase' App\MySQLDatabase: constructor: 0: 'dbusername' @@ -432,7 +432,7 @@ SilverStripe\Core\Injector\Injector: class: App\JSONServiceImplementor properties: Serialiser: App\JSONSerialiser - App\GZIPJSONProvider: %$App\JSONServiceDefinition + App\GZIPJSONProvider: '%$App\JSONServiceDefinition' ``` `Injector::inst()->get(GZIPJSONProvider::class)` will then be an instance of `App\JSONServiceImplementor` with the injected @@ -448,7 +448,7 @@ SilverStripe\Core\Injector\Injector: App\Connector: properties: AsString: true - App\ServiceConnector: %$Connector + App\ServiceConnector: '%$Connector' ``` Both `App\Connector` and `App\ServiceConnector` will have the `AsString` property set to true, but the resulting diff --git a/en/02_Developer_Guides/05_Extending/06_Aspects.md b/en/02_Developer_Guides/05_Extending/06_Aspects.md index 37f165084..7cb28f59c 100644 --- a/en/02_Developer_Guides/05_Extending/06_Aspects.md +++ b/en/02_Developer_Guides/05_Extending/06_Aspects.md @@ -106,7 +106,7 @@ Next, this should be bound into an instance of the `Aspect` class SilverStripe\Core\Injector\Injector: MySQLWriteDbAspect: properties: - writeDb: %$WriteMySQLDatabase + writeDb: '%$WriteMySQLDatabase' ``` Next, we need to define the database connection that will be used for all non-write queries @@ -135,10 +135,10 @@ SilverStripe\Core\Injector\Injector: MySQLDatabase: class: AopProxyService properties: - proxied: %$ReadMySQLDatabase + proxied: '%$ReadMySQLDatabase' beforeCall: query: - - %$MySQLWriteDbAspect + - '%$MySQLWriteDbAspect' ``` The two important parts here are in the `properties` declared for the object. @@ -163,7 +163,7 @@ SilverStripe\Core\Injector\Injector: database: read_database MySQLWriteDbAspect: properties: - writeDb: %$WriteMySQLDatabase + writeDb: '%$WriteMySQLDatabase' WriteMySQLDatabase: class: MySQLDatabase constructor: @@ -175,10 +175,10 @@ SilverStripe\Core\Injector\Injector: MySQLDatabase: class: AopProxyService properties: - proxied: %$ReadMySQLDatabase + proxied: '%$ReadMySQLDatabase' beforeCall: query: - - %$MySQLWriteDbAspect + - '%$MySQLWriteDbAspect' ``` ## Changing what a method returns diff --git a/en/02_Developer_Guides/09_Security/03_Authentication.md b/en/02_Developer_Guides/09_Security/03_Authentication.md index 269326a18..c0ef9b78b 100644 --- a/en/02_Developer_Guides/09_Security/03_Authentication.md +++ b/en/02_Developer_Guides/09_Security/03_Authentication.md @@ -71,7 +71,7 @@ SilverStripe\Core\Injector\Injector: SilverStripe\Security\Security: properties: Authenticators: - myauthenticator: %$MyVendor\MyProject\Authenticator\MyAuthenticator + myauthenticator: '%$MyVendor\MyProject\Authenticator\MyAuthenticator' ``` If there is no authenticator registered, `Authenticator` will try to fall back on the default provided authenticator (`default`), which can be changed using the following config, replacing the MemberAuthenticator with your authenticator: ```yaml @@ -84,7 +84,7 @@ SilverStripe\Core\Injector\Injector: SilverStripe\Security\Security: properties: Authenticators: - default: %$MyVendor\MyProject\Authenticator\MyAuthenticator + default: '%$MyVendor\MyProject\Authenticator\MyAuthenticator' ``` By default, the `SilverStripe\Security\MemberAuthenticator\MemberAuthenticator` is seen as the default authenticator until it's explicitly set in the config. @@ -136,12 +136,12 @@ SilverStripe\Core\Injector\Injector: properties: LDAPSettings: - URL: https://my-ldap-location.com - CascadeInTo: %$SilverStripe\Security\MemberAuthenticator\SessionAuthenticationHandler + CascadeInTo: '%$SilverStripe\Security\MemberAuthenticator\SessionAuthenticationHandler' SilverStripe\Security\AuthenticationHandler: class: SilverStripe\Security\RequestAuthenticationHandler properties: Handlers: - ldap: %$MyProject\LDAP\Authenticator\LDAPAuthenticator + ldap: '%$MyProject\LDAP\Authenticator\LDAPAuthenticator' ``` CascadeInTo is used to defer login or logout actions to other authenticators, after the first one has been logged in. In the example of LDAP authenticator, this is useful to check e.g. the validity of the Session (is the user still logged in?) and if not, or it's LDAP login period has expired, only then validate against the external service again, limiting the amount of requests to the external service. diff --git a/en/02_Developer_Guides/09_Security/05_Rate_Limiting.md b/en/02_Developer_Guides/09_Security/05_Rate_Limiting.md index 85e4dc82d..50eb92134 100644 --- a/en/02_Developer_Guides/09_Security/05_Rate_Limiting.md +++ b/en/02_Developer_Guides/09_Security/05_Rate_Limiting.md @@ -53,7 +53,7 @@ Or if you want to apply your middleware to a specific route: SilverStripe\Control\Director: rules: special/section: - Controller: %$MyRateLimitedController + Controller: '%$MyRateLimitedController' ``` ## Applying rate limiting across an entire application From 657246c472ee0bc9f39561dd2443db526bd0cfed Mon Sep 17 00:00:00 2001 From: Steve Boyd Date: Wed, 5 Jul 2023 17:17:16 +1200 Subject: [PATCH 2/2] DOC CMS 4 Supported modules --- .../06_Supported_Modules.md | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 en/06_Project_Governance/06_Supported_Modules.md diff --git a/en/06_Project_Governance/06_Supported_Modules.md b/en/06_Project_Governance/06_Supported_Modules.md new file mode 100644 index 000000000..4d98650ad --- /dev/null +++ b/en/06_Project_Governance/06_Supported_Modules.md @@ -0,0 +1,142 @@ +--- +title: Supported modules +description: Modules which are commercially supported by Silverstripe +--- + +# Commercially supported modules + +Silverstripe CMS ships modules that receive commercial support. Commercially supported modules receive regular updates to work with the latest Silverstripe CMS release. Their APIs conform to [semantic versioning](https://semver.org/). They are covered by: +- our [security release process](/contributing/managing_security_issues) and +- our [major release policy](major_release_policy). + +These modules will be supported for the lifetime of Silverstripe CMS 4 in the provided major versions. + +## Core Silverstripe CMS modules + +These modules provide the core Silverstripe CMS experience. Most Silverstripe CMS projects should install all of them. + +Core Module | Supported major release line +-- | -- +[silverstripe/admin](https://packagist.org/packages/silverstripe/admin) | 1 +[silverstripe/asset-admin](https://packagist.org/packages/silverstripe/asset-admin) | 1 +[silverstripe/assets](https://packagist.org/packages/silverstripe/assets) | 1 +[silverstripe/cms](https://packagist.org/packages/silverstripe/cms) | 4 +[silverstripe/config](https://packagist.org/packages/silverstripe/config) | 1 +[silverstripe/campaign-admin](https://packagist.org/packages/silverstripe/campaign-admin) | 1 +[silverstripe/errorpage](https://packagist.org/packages/silverstripe/errorpage) | 1 +[silverstripe/framework](https://packagist.org/packages/silverstripe/framework) | 4 +[silverstripe/graphql](https://packagist.org/packages/silverstripe/graphql) | 4 +[silverstripe/installer](https://packagist.org/packages/silverstripe/installer) | 4 +[silverstripe/login-forms](https://packagist.org/packages/silverstripe/login-forms) | 4 +[silverstripe/mimevalidator](https://packagist.org/packages/silverstripe/mimevalidator) | 2 +[silverstripe/recipe-cms](https://packagist.org/packages/silverstripe/recipe-cms) | 4 +[silverstripe/recipe-core](https://packagist.org/packages/silverstripe/recipe-core) | 4 +[silverstripe/recipe-plugin](https://packagist.org/packages/silverstripe/recipe-plugin) | 1 +[silverstripe/reports](https://packagist.org/packages/silverstripe/reports) | 4 +[silverstripe/session-manager](https://packagist.org/packages/silverstripe/session-manager) | 1 +[silverstripe/siteconfig](https://packagist.org/packages/silverstripe/siteconfig) | 4 +[silverstripe/vendor-plugin](https://packagist.org/packages/silverstripe/vendor-plugin) | 1 +[silverstripe/versioned](https://packagist.org/packages/silverstripe/versioned) | 1 +[silverstripe/versioned-admin](https://packagist.org/packages/silverstripe/versioned-admin) | 1 + +## Other supported modules + +These modules extend the core Silverstripe CMS functionality. Silverstripe CMS projects can pick and choose which of these modules to install based on their needs. + +Supported PHP Module | Supported versions +-- | -- +[bringyourownideas/silverstripe-composer-update-checker](https://packagist.org/packages/bringyourownideas/silverstripe-composer-update-checker) | 3 +[bringyourownideas/silverstripe-composer-security-checker](https://packagist.org/packages/bringyourownideas/silverstripe-composer-security-checker) | 2 +[bringyourownideas/silverstripe-maintenance](https://packagist.org/packages/bringyourownideas/silverstripe-maintenance) | 2 +[colymba/gridfield-bulk-editing-tools](https://packagist.org/packages/colymba/gridfield-bulk-editing-tools) | 3 +[cwp/agency-extensions](https://packagist.org/packages/cwp/agency-extensions) | 2 +[cwp/cwp](https://packagist.org/packages/cwp/cwp) | 2 +[cwp/cwp-core](https://packagist.org/packages/cwp/cwp-core) | 2 +[cwp/cwp-pdfexport](https://packagist.org/packages/cwp/cwp-pdfexport) | 1 +[cwp/cwp-search](https://packagist.org/packages/cwp/cwp-search) | 1 +[cwp/starter-theme](https://packagist.org/packages/cwp/starter-theme) | 3 +[cwp/watea-theme](https://packagist.org/packages/cwp/watea-theme) | 3 +[dnadesign/silverstripe-elemental](https://packagist.org/packages/dnadesign/silverstripe-elemental) | 4 +[dnadesign/silverstripe-elemental-subsites](https://packagist.org/packages/dnadesign/silverstripe-elemental-subsites) | 2 +[dnadesign/silverstripe-elemental-userforms](https://packagist.org/packages/dnadesign/silverstripe-elemental-userforms) | 3 +[hafriedlander/phockito](https://packagist.org/packages/hafriedlander/phockito) | 1 +[hafriedlander/silverstripe-phockito](https://packagist.org/packages/hafriedlander/silverstripe-phockito) | 1 +[lekoala/silverstripe-debugbar](https://packagist.org/packages/lekoala/silverstripe-debugbar) | 2 +[silverstripe-themes/simple](https://packagist.org/packages/silverstripe-themes/simple) | 3 +[silverstripe/akismet](https://packagist.org/packages/silverstripe/akismet) | 4 +[silverstripe/auditor](https://packagist.org/packages/silverstripe/auditor) | 2 +[silverstripe/behat-extension](https://packagist.org/packages/silverstripe/behat-extension) | 4 +[silverstripe/blog](https://packagist.org/packages/silverstripe/blog) | 3 +[silverstripe/ckan-registry](https://packagist.org/packages/silverstripe/ckan-registry) | 1 +[silverstripe/comment-notifications](https://packagist.org/packages/silverstripe/comment-notifications) | 2 +[silverstripe/comments](https://packagist.org/packages/silverstripe/comments) | 3 +[silverstripe/contentreview](https://packagist.org/packages/silverstripe/contentreview) | 4 +[silverstripe/content-widget ](https://packagist.org/packages/silverstripe/content-widget) | 2 +[silverstripe/crontask](https://packagist.org/packages/silverstripe/crontask) | 2 +[silverstripe/documentconverter](https://packagist.org/packages/silverstripe/documentconverter) | 2 +[silverstripe/elemental-bannerblock](https://packagist.org/packages/silverstripe/elemental-bannerblock) | 2 +[silverstripe/elemental-fileblock](https://packagist.org/packages/silverstripe/elemental-fileblock) | 2 +[silverstripe/environmentcheck](https://packagist.org/packages/silverstripe/environmentcheck) | 2 +[silverstripe/externallinks](https://packagist.org/packages/silverstripe/externallinks) | 2 +[silverstripe/fulltextsearch](https://packagist.org/packages/silverstripe/fulltextsearch) | 3 +[silverstripe/graphql-devtools](https://packagist.org/packages/silverstripe/graphql-devtools) | 1 +[silverstripe/gridfieldqueuedexport](https://packagist.org/packages/silverstripe/gridfieldqueuedexport) | 2 +[silverstripe/html5](https://packagist.org/packages/silverstripe/html5) | 2 +[silverstripe/hybridsessions](https://packagist.org/packages/silverstripe/hybridsessions) | 2 +[silverstripe/iframe](https://packagist.org/packages/silverstripe/iframe) | 2 +[silverstripe/ldap](https://packagist.org/packages/silverstripe/ldap) | 1 +[silverstripe/lumberjack](https://packagist.org/packages/silverstripe/lumberjack) | 2 +[silverstripe/mfa](https://packagist.org/packages/silverstripe/mfa) | 4 +[silverstripe/postgresql](https://packagist.org/packages/silverstripe/postgresql) | 2 +[silverstripe/realme](https://packagist.org/packages/silverstripe/realme) | 4 +[silverstripe/recipe-authoring-tools](https://packagist.org/packages/silverstripe/recipe-authoring-tools) | 1 +[silverstripe/recipe-blog](https://packagist.org/packages/silverstripe/recipe-blog) | 1 +[silverstripe/recipe-ccl](https://packagist.org/packages/silverstripe/recipe-ccl) | 2 +[silverstripe/recipe-collaboration](https://packagist.org/packages/silverstripe/recipe-collaboration) | 1 +[silverstripe/recipe-content-blocks](https://packagist.org/packages/silverstripe/recipe-content-blocks) | 2 +[silverstripe/recipe-form-building](https://packagist.org/packages/silverstripe/recipe-form-building) | 1 +[silverstripe/recipe-reporting-tools](https://packagist.org/packages/silverstripe/recipe-reporting-tools) | 1 +[silverstripe/recipe-services](https://packagist.org/packages/silverstripe/recipe-services) | 1 +[silverstripe/recipe-solr-search](https://packagist.org/packages/silverstripe/recipe-solr-search) | 2 +[silverstripe/registry](https://packagist.org/packages/silverstripe/registry) | 2 +[silverstripe/restfulserver](https://packagist.org/packages/silverstripe/restfulserver) | 2 +[silverstripe/securityreport](https://packagist.org/packages/silverstripe/securityreport) | 2 +[silverstripe/security-extensions](https://packagist.org/packages/silverstripe/security-extensions) | 4 +[silverstripe/segment-field](https://packagist.org/packages/silverstripe/segment-field) | 2 +[silverstripe/sharedraftcontent](https://packagist.org/packages/silverstripe/sharedraftcontent) | 2 +[silverstripe/sitewidecontent-report](https://packagist.org/packages/silverstripe/sitewidecontent-report) | 3 +[silverstripe/spamprotection](https://packagist.org/packages/silverstripe/spamprotection) | 3 +[silverstripe/spellcheck](https://packagist.org/packages/silverstripe/spellcheck) | 2 +[silverstripe/sqlite3](https://packagist.org/packages/silverstripe/sqlite3) | 2 +[silverstripe/sspak](https://packagist.org/packages/silverstripe/sspak) | +[silverstripe/staticpublishqueue](https://packagist.org/packages/silverstripe/staticpublishqueue) | 5 +[silverstripe/subsites](https://packagist.org/packages/silverstripe/subsites) | 2 +[silverstripe/tagfield](https://packagist.org/packages/silverstripe/tagfield) | 2 +[silverstripe/taxonomy](https://packagist.org/packages/silverstripe/taxonomy) | 2 +[silverstripe/textextraction](https://packagist.org/packages/silverstripe/textextraction) | 3 +[silverstripe/totp-authenticator](https://packagist.org/packages/silverstripe/totp-authenticator) | 4 +[silverstripe/userforms](https://packagist.org/packages/silverstripe/userforms) | 5 +[silverstripe/versionfeed](https://packagist.org/packages/silverstripe/versionfeed) | 2 +[silverstripe/webauthn-authenticator](https://packagist.org/packages/silverstripe/webauthn-authenticator) | 4 +[silverstripe/widgets](https://packagist.org/packages/silverstripe/widgets) | 2 +[symbiote/silverstripe-advancedworkflow](https://packagist.org/packages/symbiote/silverstripe-advancedworkflow) | 5 +[symbiote/silverstripe-gridfieldextensions](https://packagist.org/packages/symbiote/silverstripe-gridfieldextensions) | 3 +[symbiote/silverstripe-multivaluefield](https://packagist.org/packages/symbiote/silverstripe-multivaluefield) | 5 +[symbiote/silverstripe-queuedjobs](https://packagist.org/packages/symbiote/silverstripe-queuedjobs) | 4 +[tijsverkoyen/akismet](https://packagist.org/packages/tijsverkoyen/akismet) | 1 +[tractorcow/classproxy](https://packagist.org/packages/tractorcow/classproxy) | 1 +[tractorcow/silverstripe-proxy-db ](https://packagist.org/packages/tractorcow/silverstripe-proxy-db ) | 1 +[tractorcow/silverstripe-fluent](https://packagist.org/packages/tractorcow/silverstripe-fluent) | 4 +[undefinedoffset/sortablegridfield](https://packagist.org/packages/undefinedoffset/sortablegridfield) | 2 + +## Supported NPM packages + +The following two NPM packages are also supported because they are required to build the UI of Silverstripe CMS 4: +- [@silverstripe/webpack-config](https://www.npmjs.com/package/@silverstripe/webpack-config) +- [@silverstripe/eslint-config](https://www.npmjs.com/package/@silverstripe/eslint-config) + +## Other modules in the "silverstripe" namespace + +There are other modules hosted under the _silverstripe_ Packagist namespace. These modules are maintained on a best effort basis. They are not guaranteed to go through regular regression testing. Their APIs may be more fluid than supported modules. They maybe more experimental or may not receive the same level of care as supported modules. + +These modules can still be used in Silverstripe CMS projects, but should be considered as community modules. \ No newline at end of file