Merge branch '4.2' into 4

This commit is contained in:
Daniel Hensby 2018-07-30 11:07:15 +01:00
commit d0598c02c5
No known key found for this signature in database
GPG Key ID: D8DEBC4C8E7BC8B9
11 changed files with 604 additions and 32 deletions

View File

@ -8,7 +8,7 @@ summary: Set the correct HTTP cache headers for your responses.
By default, SilverStripe sends headers which signal to HTTP caches
that the response should be not considered cacheable.
HTTP caches can either be intermediary caches (e.g. CDNs and proxies), or clients (e.g. browsers).
The cache headers sent are `Cache-Control: no-store, no-cache, must-revalidate`;
The cache headers sent are `Cache-Control: no-cache, must-revalidate`;
HTTP caching can be a great way to speed up your website, but needs to be properly applied.
Getting it wrong can accidentally expose draft pages or other protected content.
@ -59,8 +59,8 @@ Does not set `private` directive, use `privateCache()` if this is explicitly req
Simple way to set cache control header to a cacheable state.
Use this method over `publicCache()` if you are unsure about caching details.
Removes `no-store` and `no-cache` directives; other directives will remain in place.
Use alongside `setMaxAge()` to indicate caching.
Removes the `no-store` directive unless a `max-age` is set; other directives will remain in place.
Use alongside `setMaxAge()` to activate caching.
Does not set `public` directive. Usually, `setMaxAge()` is sufficient. Use `publicCache()` if this is explicitly required
([details](https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching#public_vs_private))
@ -184,24 +184,13 @@ class PageController extends ContentController
}
```
## Defaults
By default, PHP adds caching headers that make the page appear purely dynamic. This isn't usually appropriate for most
sites, even ones that are updated reasonably frequently. SilverStripe overrides the default settings with the following
headers:
* The `Last-Modified` date is set to be most recent modification date of any database record queried in the generation
of the page.
* The `Expiry` date is set by taking the age of the page and adding that to the current time.
* `Cache-Control` is set to `max-age=86400, must-revalidate`
* Since a visitor cookie is set, the site won't be cached by proxies.
* Ajax requests are never cached.
## Max Age
The cache age determines the lifetime of your cache, in seconds.
It only takes effect if you instruct the cache control
that your response is cacheable in the first place (via `enableCache()` or via modifying the `HTTP.cache_control` defaults).
that your response is cacheable in the first place
(via `enableCache()`, `publicCache()` or `privateCache()`),
or via modifying the `HTTP.cache_control` defaults).
```php
use SilverStripe\Control\Middleware\HTTPCacheControlMiddleware;
@ -209,7 +198,8 @@ HTTPCacheControlMiddleware::singleton()
->setMaxAge(60)
```
Note that `setMaxAge(0)` is NOT sufficient to disable caching in all cases.
Note that `setMaxAge(0)` is NOT sufficient to disable caching in all cases,
use `disableCache()` instead.
### Last Modified
@ -228,7 +218,7 @@ when calculating a cache key, usually in addition to the full URL.
By default, SilverStripe will output a `Vary` header with the following content:
```
Vary: X-Requested-With, X-Forwarded-Protocol
Vary: X-Forwarded-Protocol
```
To change the value of the `Vary` header, you can change this value by specifying the header in configuration.
@ -237,3 +227,6 @@ To change the value of the `Vary` header, you can change this value by specifyin
SilverStripe\Control\HTTP:
vary: ""
```
Note that if you use `Director::is_ajax()` on cached pages
then you should add `X-Requested-With` to the vary header.

View File

@ -363,6 +363,9 @@ class PageController extends ContentController
Note this is different from `Vary: Accept-Encoding`,
which is important for compression (e.g. gzip), and usually added by
other layers such as Apache's mod_gzip.
* Removed `Vary: X-Requested-With` since it's only applicable when varying
content based on the client context, mostly for returning different XHR responses
as determined through `Director::is_ajax()`.
* No longer sets `Last-Modified` date in HTTP response headers in `DataObject::__construct()`.
Uses `ETag` calculation based on response body which is more accurate,
and resilient against partial and object caching which can produce stale `Last-Modified` values.
@ -373,4 +376,197 @@ class PageController extends ContentController
* Deprecated `HTTP.disable_http_cache`. Use `HTTPCacheControlMiddleware.defaultState` and `defaultForcingLevel` instead
* Deprecated `HTTP::register_modification_date()`. Use `HTTPCacheControlMiddleware::registerModificationDate()` instead
* Deprecated `HTTP::register_modification_timestamp()`. Use `HTTPCacheControlMiddleware::registerModificationDate()` instead
* Deprecated `HTTP::register_etag()`. Use `HTTPCacheControlMiddleware::ETagMiddleware()` instead
* Deprecated `HTTP::register_etag()`. Use `HTTPCacheControlMiddleware::ETagMiddleware()` instead<!--- Changes below this line will be automatically regenerated -->
## Change Log
### Security
* 2018-04-23 [d42bd6e](https://github.com/silverstripe/silverstripe-assets/commit/d42bd6ec3e1d15d48074de04bcabfd90ce0cbdc9) File.allowed_extensions can have values removed via YAML configuration (Robbie Averill) - See [ss-2018-014](https://www.silverstripe.org/download/security-releases/ss-2018-014)
* 2018-04-23 [30e2d9c](https://github.com/silverstripe/silverstripe-framework/commit/30e2d9c4df0e8d431bdf41446c7dc4d5e74ad507) Allow forced redirects to HTTPS for responses with basic authentication (Robbie Averill) - See [ss-2018-009](https://www.silverstripe.org/download/security-releases/ss-2018-009)
* 2018-04-10 [0b7e665](https://github.com/silverstripe/silverstripe-asset-admin/commit/0b7e665266c08fb0262af15096c0eaa2ce872a00) Enable oembed to be disabled serverside (Damian Mooyman) - See [ss-2018-003](https://www.silverstripe.org/download/security-releases/ss-2018-003)
* 2018-04-10 [7c2886d](https://github.com/silverstripe/silverstripe-framework/commit/7c2886d87cd8dc01181b69f5252a7012137668f9) Update docs for oembed (Damian Mooyman) - See [ss-2018-003](https://www.silverstripe.org/download/security-releases/ss-2018-003)
* 2018-04-09 [326b1ff](https://github.com/silverstripe/silverstripe-asset-admin/commit/326b1ffa3976d8be30de3f8cfc0e7a55c14764aa) Implement stronger oembed white/blacklist (Damian Mooyman) - See [ss-2018-002](https://www.silverstripe.org/download/security-releases/ss-2018-002)
### API Changes
* 2018-06-15 [53dded8](https://github.com/silverstripe/silverstripe-framework/commit/53dded8cff678c6fee4163f91ceac12b6c960a77) Remove @internal from new 4.2 methods (Damian Mooyman)
* 2018-06-12 [ec956a6](https://github.com/silverstripe/silverstripe-framework/commit/ec956a682dce2876322a3bc7c169a8eccec558ec) Moving tests to use transactions (Daniel Hensby)
* 2018-04-16 [b1e8db1](https://github.com/silverstripe/silverstripe-versioned/commit/b1e8db1848c410abfd917d2b7104221d5004b66c) Implement rollbackRecursive() / rollbackSingle() (Damian Mooyman)
* 2018-04-16 [c8b3593](https://github.com/silverstripe/silverstripe-framework/commit/c8b3593090d7543df59c33f1323b9b188e663efd) Form::makeReadonly() returns self (Damian Mooyman)
* 2018-04-06 [6c616f5](https://github.com/silverstripe/silverstripe-cms/commit/6c616f5f7a4d2611e7a8f2cbb66360079c3edb6b) Implement polymorphic sitetree link tracking (#2123) (Damian Mooyman)
* 2018-03-22 [7351caf](https://github.com/silverstripe/silverstripe-framework/commit/7351caf48702558d20a93bd83fdc4c36d4be50c3) Allow non-DataExtension Extensions to decorate dataobject (Damian Mooyman)
* 2018-03-21 [257ff69](https://github.com/silverstripe/silverstripe-framework/commit/257ff69e321e08af743de019ae338a291cb62615) Implement many_many through polymorphic (from only) (#7928) (Damian Mooyman)
* 2018-03-21 [32dcc4d](https://github.com/silverstripe/silverstripe-versioned/commit/32dcc4d34fa3490dfa4b1dd877448673176ca236) add withVersionedMode() to safely isolate reading mode modifications (Damian Mooyman)
* 2018-03-20 [87afe84](https://github.com/silverstripe/silverstripe-graphql/commit/87afe84e86d40ba4e9ebd0c37ea52e806650ba59) Customise type names and operation names (#143) (Aaron Carlino)
* 2018-03-05 [3a1c813](https://github.com/silverstripe/silverstripe-framework/commit/3a1c813b288090853942296d52f12157ae83c946) Add getContentCSS() / setContentCSS() to allow per-config customisation of content_css (Damian Mooyman)
* 2018-02-21 [ced2ba1](https://github.com/silverstripe/silverstripe-framework/commit/ced2ba1f64015c92dfeea6b473cf3f1999e449c6) Move CSV writing/reading to league/csv library (Daniel Hensby)
* 2018-02-07 [860fa2a](https://github.com/silverstripe/silverstripe-framework/commit/860fa2a05a8d55d97a9508858215502e94c24810) Add excludeAny() and tests for complicated excludes/filters (#7838) (Andrew Aitken-Fincham)
### Features and Enhancements
* 2018-06-18 [95bcac7](https://github.com/silverstripe/silverstripe-framework/commit/95bcac796a3bcb65e7d9fc55e0af0b9d17407938) Ensure test DB is flushed on either DDL or transaction-disabled tests (Damian Mooyman)
* 2018-06-13 [a88257e](https://github.com/silverstripe/silverstripe-framework/commit/a88257efac1a222607d413c070ab4bd7dc20df3d) Add version to HTTPRequest and create raw string representation (Daniel Hensby)
* 2018-05-21 [865ebb3](https://github.com/silverstripe/silverstripe-framework/commit/865ebb3398a692d9f39b4f64ff86054ccc291177) Improve upgrading experience. (#8025) (Damian Mooyman)
* 2018-05-20 [1d34d19](https://github.com/silverstripe/silverstripe-admin/commit/1d34d198f8ed661a987c8a10ee24c568e4528e39) Make FormAlert injectable (Robbie Averill)
* 2018-05-17 [e3237f9](https://github.com/silverstripe/silverstripe-cms/commit/e3237f9638d72d49e1e192738e00eacac2308c69) Add revert mutation and refactor injector transformations (#2158) (Robbie Averill)
* 2018-05-17 [8ffa9dd](https://github.com/silverstripe/silverstripe-admin/commit/8ffa9dda6aa53da4f701cf61b32c64b3318053aa) Make Preview component injectable (#505) (Robbie Averill)
* 2018-05-11 [1a57c7c](https://github.com/silverstripe/silverstripe-framework/commit/1a57c7c1d0623fdc1b5a2ba2428306dfaf618bb0) Add getJoinTable to MMTL (Daniel Hensby)
* 2018-05-02 [660e8bd](https://github.com/silverstripe/silverstripe-graphql/commit/660e8bde0e4b80ef770672436ae1c05262c61665) static caching of schema types, as well as dynamic endpoint (Aaron Carlino)
* 2018-05-01 [aae318e](https://github.com/silverstripe/silverstripe-admin/commit/aae318efd7a87b6ebcd57ab0d251095721651400) Register fieldHolder HOCs with injector (Dylan Wagstaff)
* 2018-04-27 [e0b4d50](https://github.com/silverstripe/silverstripe-admin/commit/e0b4d506a1eea6daa8b66f037f2a140b8f76eb1a) Add Loading indicator component, implement into FormBuilderLoader (#490) (Robbie Averill)
* 2018-04-26 [0494be7](https://github.com/silverstripe/silverstripe-admin/commit/0494be71d8f35c7c45e76e4b0110e6a8f948769a) Ensure that popover has correct container assigned (Damian Mooyman)
* 2018-04-23 [1b24bf6](https://github.com/silverstripe/silverstripe-graphql/commit/1b24bf635949fac871ba6180b83986505c0e01db) Consolidate type / operation name generation (#151) (Damian Mooyman)
* 2018-04-23 [f50438e](https://github.com/silverstripe/silverstripe-versioned/commit/f50438e448209372f1f19c4d0c566182758c4a35) Ensure that default caches are segmented based on versioned state (Damian Mooyman)
* 2018-04-19 [7c3980a](https://github.com/silverstripe/silverstripe-graphql/commit/7c3980a1c8dd10f24aabddcc770c102d13a32089) Refactor for more consistent use of union and inheritance types (#150) (Aaron Carlino)
* 2018-04-11 [4ddee82](https://github.com/silverstripe/silverstripe-admin/commit/4ddee82ccd989963581d7bd8168f7d0899571096) Allow Preview class names to be overridden, and add i18n to messages (Robbie Averill)
* 2018-04-11 [c4f8af5](https://github.com/silverstripe/silverstripe-cms/commit/c4f8af543cd362dfc54d477cac956f7418747e50) Add AbsoluteLink to history viewer page GraphQL query (#2142) (Robbie Averill)
* 2018-04-10 [0fa15f4](https://github.com/silverstripe/silverstripe-versioned/commit/0fa15f45e8c19f0c2c560597bdff1a61d93c6660) Ensure invalid stage values are throws as exceptions (Damian Mooyman)
* 2018-04-09 [19e45a9](https://github.com/silverstripe/silverstripe-asset-admin/commit/19e45a9b966490be55b79c2667e2e18c16c3e0e6) Open modal default upload folder (#763) (Maxime Rainville)
* 2018-04-04 [2c266c2](https://github.com/silverstripe/silverstripe-versioned/commit/2c266c220918c93fd45ad7ecb23d153bb529821e) Allow cleanupVersionedOrphans to be disabled (Damian Mooyman)
* 2018-04-03 [47bcac9](https://github.com/silverstripe/silverstripe-framework/commit/47bcac930df8bde71ffeb9144ac07d429ea9ee87) Add config var to skip confirm logout (#7977) (Andrew Aitken-Fincham)
* 2018-04-02 [14af3b8](https://github.com/silverstripe/silverstripe-admin/commit/14af3b851906c04211f1a72de27e0a939e1b3656) Add --inverted modifier for Badge component with pattern library examples (Robbie Averill)
* 2018-03-21 [d88415b](https://github.com/silverstripe/silverstripe-versioned/commit/d88415b57d3042935eb4e08f46e51a6b0d9b802b) Decorate TestSession with stage params (Damian Mooyman)
* 2018-03-21 [26402f3](https://github.com/silverstripe/silverstripe-framework/commit/26402f3bb52b2effa4218ada4b06ce9199216190) Enable request handlers to be extended (Damian Mooyman)
* 2018-03-21 [9a6d18a](https://github.com/silverstripe/silverstripe-admin/commit/9a6d18a8e456ca45d050d6b5306f4aa2a9e66ad1) Set default reading mode in admin (disables stage=Stage rewrite links) (Damian Mooyman)
* 2018-03-14 [f51ea4d](https://github.com/silverstripe/silverstripe-admin/commit/f51ea4d4209958b5dd0809eb8f96351cbd5c713f) use scss variable than hard-coded color (#460) (Chris Joe)
* 2018-03-12 [8294ab3](https://github.com/silverstripe/silverstripe-admin/commit/8294ab3cea88ec44f7aebdd658f1b2dbecbf3686) Allow badge-pill class to be modified in Badge component (Robbie Averill)
* 2018-03-12 [79db975](https://github.com/silverstripe/silverstripe-asset-admin/commit/79db975a190c0178699164d63d1fd92bbd6cf9f0) add status badge to uploadfield item (Christopher Joe)
* 2018-03-12 [c92e5fe](https://github.com/silverstripe/silverstripe-versioned/commit/c92e5fef0e422b54bff9fcf453b7346a2a1e0186) Ensure that publishSingle() updates local version (Damian Mooyman)
* 2018-03-08 [5db03d0](https://github.com/silverstripe/silverstripe-versioned/commit/5db03d06fb88face772af77c93a21978d25ab2c4) Add isLiveVersion and isLatestDraftVersion to Versioned and GraphQL DataObject scaffolding (Robbie Averill)
* 2018-03-05 [1a82f03](https://github.com/silverstripe/silverstripe-cms/commit/1a82f0364ad33e18145d4f7e7729c7c0fdce4413) Add page GraphQL query HOC for history viewer component (Robbie Averill)
* 2018-03-05 [083308f](https://github.com/silverstripe/silverstripe-admin/commit/083308fa699dcc8298b3a80ee60b0d1ff63ed034) Update table border colour to lighter grey (Robbie Averill)
* 2018-02-28 [4d424dd](https://github.com/silverstripe/silverstripe-framework/commit/4d424dd3407542641300f6064db0952ddc9acb48) get_by_id: alternate signature to allow MyDataObject::get_by_id($id) (Damian Mooyman)
* 2018-02-28 [5735bee](https://github.com/silverstripe/silverstripe-cms/commit/5735beeb90f97127ae7cb42cecd031b8f168cdf3) Upgrade to Bootstrap 4.0.0-stable and change to reactstrap 5.0.0-beta (#2101) (Luke Edwards)
* 2018-02-28 [62eb29e](https://github.com/silverstripe/silverstripe-campaign-admin/commit/62eb29e5c461af2279bb007c2d18759945124c76) Upgrade to Bootstrap 4.0.0-stable and change to reactstrap 5.0.0-beta (#88) (Luke Edwards)
* 2018-02-27 [f181ba3](https://github.com/silverstripe/silverstripe-asset-admin/commit/f181ba32f750ae2b6bf33f87c632fd3f4419ad93) Upgrade to Bootstrap 4.0.0-stable and change to reactstrap 5.0.0-beta (#737) (Luke Edwards)
* 2018-02-27 [8094c26](https://github.com/silverstripe/silverstripe-admin/commit/8094c2673049c359fd8c061b58191b0886b7a391) Decouple preview from campaign admin (Damian Mooyman)
* 2018-02-27 [5825958](https://github.com/silverstripe/silverstripe-admin/commit/5825958eafe63e6cf1ab88d7940ae1afe7865499) Upgrade to Bootstrap 4.0.0-stable and change to reactstrap 5.0.0-beta (#441) (Luke Edwards)
* 2018-02-27 [9474deb](https://github.com/silverstripe/silverstripe-asset-admin/commit/9474debfd256e3d0401cc8a0a4080f2b09bdf795) Add bulk insert feature for UploadField (Christopher Joe)
* 2018-02-26 [85dae1b](https://github.com/silverstripe/silverstripe-asset-admin/commit/85dae1bbde06e01c8bb19b38eb7e4a3d750f3610) Add warning when unpublishing owned files (#739) (Aaron Carlino)
* 2018-02-26 [c4e705a](https://github.com/silverstripe/silverstripe-campaign-admin/commit/c4e705a7fe117e4d6042c435ea368a2db48ed866) removed max width for content in intro screen (Christopher Joe)
* 2018-02-25 [1202807](https://github.com/silverstripe/silverstripe-admin/commit/12028073f48273179ea12adbbaf84f3db25c0fc7) Add warning for unpublishing owned records #444 (Aaron Carlino)
* 2018-02-25 [fe9f729](https://github.com/silverstripe/silverstripe-versioned/commit/fe9f72950534e669676ca50d9ad781c00aa5148c) Add warning when unpublishing owned records (#122) (Aaron Carlino)
* 2018-02-17 [a214368](https://github.com/silverstripe/silverstripe-framework/commit/a2143680e8ae819d3e9404aba636eb6cb168c319) Add record count to dev/build output. (Sam Minnee)
* 2018-02-15 [de0b76d](https://github.com/silverstripe/silverstripe-framework/commit/de0b76dff6f4519cbe788c6e778b60e589f50b02) Fall back to SSViewer::get_themes when using themeResourceLoaders (Andrew Aitken-Fincham)
* 2018-02-12 [00ff3ba](https://github.com/silverstripe/silverstripe-framework/commit/00ff3ba4b22df024a8fe98c47fb76a70739498fd) Make dropdownFieldThreshold configurable on DBForeignKey (#7789) (Andrew Aitken-Fincham)
* 2018-02-09 [0151449](https://github.com/silverstripe/silverstripe-cms/commit/01514490fe4ef1ea99d4e528e752afa3df0c3575) remove File extension for backlink tracking in favour of UsedOnTable form field (Christopher Joe)
* 2018-02-08 [5f0a7cc](https://github.com/silverstripe/silverstripe-asset-admin/commit/5f0a7ccce69a6a7d9c354709654a463405c1ff0d) add a Usage tab showing owners of files (Christopher Joe)
* 2018-02-08 [c370e3c](https://github.com/silverstripe/silverstripe-admin/commit/c370e3cfdf3171f3b7f2042d0ded5af3619eb5f2) Add a used-on table component for recorded ownerships (Christopher Joe)
* 2018-02-07 [dd82820](https://github.com/silverstripe/silverstripe-framework/commit/dd8282024232eb849693e68320e0f0b6bb02bab5) Allow GridFieldConfig::addComponents to accept an array (#7844) (Robbie Averill)
* 2018-02-07 [b084fe8](https://github.com/silverstripe/silverstripe-cms/commit/b084fe817779b7abd74583c5ddb93f6f7a53d48d) Convert page history notice to use Bootstrap 4 info alert (Robbie Averill)
* 2017-11-30 [9103816](https://github.com/silverstripe/silverstripe-framework/commit/9103816333e790a9b7cd84994e00e0941e34de39) Add php 7.2 support (Daniel Hensby)
* 2017-09-26 [2c121e8](https://github.com/silverstripe/silverstripe-framework/commit/2c121e8a07297baa89c0bedad086b1a62de2ba0a) approach (Daniel Hensby)
### Bugfixes
* 2018-07-20 [78adff9](https://github.com/silverstripe/silverstripe-errorpage/commit/78adff9a99c8778953f891e24f5f818335cea359) Build Static error page from live URL (Maxime Rainville)
* 2018-07-18 [74b655d](https://github.com/silverstripe/silverstripe-framework/commit/74b655d3fcb28db877d839c75f2f3f98b41448cd) tests on unset session data (Ingo Schommer)
* 2018-07-18 [76ac846](https://github.com/silverstripe/silverstripe-framework/commit/76ac8465de768ab08c904e0e8c6075a9f4ceb56b) Lazy session state (fixes #8267) (Ingo Schommer)
* 2018-07-14 [e37b3b9](https://github.com/silverstripe/silverstripe-framework/commit/e37b3b95f4e02eaa8bccd8acc30cdc001d7239c5) updateValidatePassword calls need to be masked from backtraces (Daniel Hensby)
* 2018-07-05 [cebed77](https://github.com/silverstripe/silverstripe-framework/commit/cebed776ab93e8adfbb437dc0b1448ced9f71215) If theres a max-age set remove no-cache and no-store (Daniel Hensby)
* 2018-07-05 [2b1c55b](https://github.com/silverstripe/silverstripe-framework/commit/2b1c55bc4e57d43490973452c8cc773a1a24c8ee) Allow setNoCache(false) to remove no-cache directive (Daniel Hensby)
* 2018-07-05 [842b39e](https://github.com/silverstripe/silverstripe-framework/commit/842b39e9884aefb91866cbcb4943f6aeae586d8b) Add must-revalidate to default state so its common on all our core states (Daniel Hensby)
* 2018-07-05 [997730a](https://github.com/silverstripe/silverstripe-framework/commit/997730aa7f507289da843974a386d0340842c14a) Allow cache control changes to affect default state (Daniel Hensby)
* 2018-07-04 [bde3121](https://github.com/silverstripe/silverstripe-framework/commit/bde3121a33c893eca3bdf2ffff349d1bf15a3e06) Remove X-Requested-With from default Vary header (Sam Minnee)
* 2018-06-26 [6e1c7c2](https://github.com/silverstripe/silverstripe-framework/commit/6e1c7c2781fe8c30806f628038471faba072bb51) remove personal information from password reset confirmation screen (Daniel Hensby)
* 2018-06-21 [793aafa](https://github.com/silverstripe/silverstripe-framework/commit/793aafae917aa190e711ae5c7a18ed59c2812634) Transaction depth should error if not implemented by child classes (Daniel Hensby)
* 2018-06-18 [c77042a](https://github.com/silverstripe/silverstripe-framework/commit/c77042aa8b5ba70f4c9dc6924d2ccccf3d5588a5) linting. (Maxime Rainville)
* 2018-06-18 [b78a89a](https://github.com/silverstripe/silverstripe-framework/commit/b78a89a76cd1c4596a159b8a5043517407de89bc) Default cache state should be `no-cache` (Daniel Hensby)
* 2018-06-18 [225e61d](https://github.com/silverstripe/silverstripe-framework/commit/225e61dc67f5ab550d41c42fa8c80b50b71db5b1) FIx manual resetDBSchema() calls breaking the database (Damian Mooyman)
* 2018-06-18 [11e0a3d](https://github.com/silverstripe/silverstripe-framework/commit/11e0a3de43d7e05b7df63d52b0238e58baff3c2a) Ensure that build includes extra classes (Damian Mooyman)
* 2018-06-15 [3fa2c05](https://github.com/silverstripe/silverstripe-framework/commit/3fa2c056d71a3286ce83017d7cafc180cee076c2) Don't reload form session data using FormField::setSubmittedValue (#8056) (Maxime Rainville)
* 2018-06-15 [74ef975](https://github.com/silverstripe/silverstripe-assets/commit/74ef975459a7f4779c2f4a91c9e277be0ffd81e0) mark legacy migration test as skipped temporarily (Damian Mooyman)
* 2018-06-15 [e70e46e](https://github.com/silverstripe/silverstripe-graphql/commit/e70e46e21628e17f56f542e910379cc2713dfe8c) Fix missing .graphql file category (Damian Mooyman)
* 2018-06-15 [8f7893f](https://github.com/silverstripe/silverstripe-versioned/commit/8f7893fe9af856a712952a8e992a79a24fade84b) Fix unit tests for 4.2 core regressions (Damian Mooyman)
* 2018-06-14 [d52c4dd](https://github.com/silverstripe/silverstripe-framework/commit/d52c4dd602929db5b37cf33261b41c0d3d2098bc) Make regression in #7839 safer (Damian Mooyman)
* 2018-06-14 [acc8d48](https://github.com/silverstripe/silverstripe-framework/commit/acc8d48b11890ec8a4f725e8e330ea56950a43d6) SapphireTest can load relative fixtures in subfolders, switch "needs db" priority check order (Robbie Averill)
* 2018-06-13 [9274692](https://github.com/silverstripe/silverstripe-framework/commit/92746924159e9667429d0fa5ee8c7d5ed34ea514) core tests (Damian Mooyman)
* 2018-06-13 [59ba208](https://github.com/silverstripe/silverstripe-framework/commit/59ba208df010e6a26afeed8c650a5b705ea9361b) HTTPTest (Damian Mooyman)
* 2018-06-13 [6f32762](https://github.com/silverstripe/silverstripe-framework/commit/6f32762268941ba42ad2a129c67172e51cb1a4d3) unit tests (Damian Mooyman)
* 2018-06-13 [aa1ba0e](https://github.com/silverstripe/silverstripe-framework/commit/aa1ba0ef90109fe084a8d736ed4ca08b32a4f40b) inverted condition (Damian Mooyman)
* 2018-06-12 [befd81d](https://github.com/silverstripe/silverstripe-framework/commit/befd81d0c238125b8b82dc8af69b58a1e639a6c4) Bug with forms being cached (Daniel Hensby)
* 2018-06-12 [7c87591](https://github.com/silverstripe/silverstripe-framework/commit/7c875918c7bc48d615b24bc959f659afbad7883b) make sure we create ETags from the body, not the request (Daniel Hensby)
* 2018-06-10 [d842225](https://github.com/silverstripe/silverstripe-framework/commit/d842225df6df2eef1dd6ebd592120ffa5b344c11) Codesniffer style violations with comments (Robbie Averill)
* 2018-06-09 [4e6f45c](https://github.com/silverstripe/silverstripe-framework/commit/4e6f45c2ea4cb3d2349a97a231edaa023f2af219) updateCMSFields example (Juan Molina)
* 2018-06-06 [31ad3cd](https://github.com/silverstripe/silverstripe-framework/commit/31ad3cdaab9623230ce6bdad4e53f6a9a6c9baba) Allow buttons to opt out of display (#8113) (Aaron Carlino)
* 2018-06-05 [bf07ba3](https://github.com/silverstripe/silverstripe-framework/commit/bf07ba30f4b11e1ddc26be50b0366d281bcd4967) Make error messages available to extensions (Jonathon Menz)
* 2018-06-01 [a9e2af6](https://github.com/silverstripe/silverstripe-installer/commit/a9e2af6863c2b32cddf417e43a228a743b3fade7) Remove incorrect classmap for Page and PageController (Robbie Averill)
* 2018-05-31 [4b3e76a](https://github.com/silverstripe/silverstripe-framework/commit/4b3e76a976a11703f2d269d225874269ac2e37a3) missing braces (Aaron Carlino)
* 2018-05-30 [d1af098](https://github.com/silverstripe/silverstripe-versioned/commit/d1af098796dd647023adbde53d5752f14744fd9c) linting (Aaron Carlino)
* 2018-05-16 [396ac65](https://github.com/silverstripe/silverstripe-asset-admin/commit/396ac65106ce1c98e24a43fc11ded2fa54af9455) es per flameohr (Aaron Carlino)
* 2018-05-15 [11c85c6](https://github.com/silverstripe/silverstripe-asset-admin/commit/11c85c63ee8792e443511f2f6582a586bf30ab60) Infinite render loop due to unchecked setState, incorrect binding of handleDrop() (Aaron Carlino)
* 2018-05-10 [e22d1ec](https://github.com/silverstripe/silverstripe-asset-admin/commit/e22d1ec1769e0673f6e7e076c20db506c08a69ec) behat test (Aaron Carlino)
* 2018-05-10 [1993454](https://github.com/silverstripe/silverstripe-asset-admin/commit/19934542d901339625c5b2da5a82d94a4ccbae17) broken delete close editor (Aaron Carlino)
* 2018-05-10 [553ab92](https://github.com/silverstripe/silverstripe-asset-admin/commit/553ab92b85df7fc679294adb32b58aad47c85340) checkbox select behat step (Aaron Carlino)
* 2018-04-30 [abb1011](https://github.com/silverstripe/silverstripe-admin/commit/abb10117a5ea9fa9b8b6322da5ae8f9288d68a38) Expose Badge in injector registrations (Robbie Averill)
* 2018-04-30 [1d3e838](https://github.com/silverstripe/silverstripe-framework/commit/1d3e83838d22744ed51e50469d38c2a0559e893c) phpdoc for relation method (namespace) (JorisDebonnet)
* 2018-04-20 [3f5c3ec](https://github.com/silverstripe/silverstripe-versioned/commit/3f5c3ec9a2be7788cf4f204dff859977860a7104) Fix graphql regressions (Damian Mooyman)
* 2018-04-19 [9727052](https://github.com/silverstripe/silverstripe-versioned/commit/97270527aba45cdf598179fd985dfa112bdb4a1c) Ensure that nested rollbacks don't reset root version (Damian Mooyman)
* 2018-04-18 [4585b0b](https://github.com/silverstripe/silverstripe-framework/commit/4585b0b3828e3574f62aed71e07505a42cbd6893) a broken link to the versioning page. (Maxime Rainville)
* 2018-04-18 [a71b821](https://github.com/silverstripe/silverstripe-asset-admin/commit/a71b8219ba22939adfffccd1cb437b2f47910104) behat test (Damian Mooyman)
* 2018-04-17 [57b006c](https://github.com/silverstripe/silverstripe-campaign-admin/commit/57b006cf2eafdfe2427a914ff4a337327c0550c3) Re-implement flexbox classes for preview window (Robbie Averill)
* 2018-04-16 [0d40b54](https://github.com/silverstripe/silverstripe-cms/commit/0d40b54537664a09dd232ba5fb44cb0cf24f7c82) FIx rollback button from not working (Damian Mooyman)
* 2018-04-16 [02d7989](https://github.com/silverstripe/silverstripe-admin/commit/02d79897edff9f6a17a2657d82b4347bf2d6821d) Ensure FormBuilder loading indicator has a minimum height of the image (Robbie Averill)
* 2018-04-14 [dfa0915](https://github.com/silverstripe/silverstripe-admin/commit/dfa0915e858aec6d643c188aab2df000ba4f1e11) Make 'id' a required prop (Raissa North)
* 2018-04-12 [d21e03d](https://github.com/silverstripe/silverstripe-framework/commit/d21e03d4ed6d8c1c2f60caec183c9301a493afd6) branch alias (Damian Mooyman)
* 2018-04-11 [51173a7](https://github.com/silverstripe/silverstripe-siteconfig/commit/51173a727c016fcfc3d528577bf747324a133ba9) Fixture the 'app' dir instead of mysite in unit tests (Robbie Averill)
* 2018-04-11 [5da708d](https://github.com/silverstripe/silverstripe-cms/commit/5da708d223723f91ffe47672846a3967c52a5326) Fixture the 'app' dir instead of mysite in unit tests (Robbie Averill)
* 2018-04-11 [1041b65](https://github.com/silverstripe/silverstripe-admin/commit/1041b6542ee8ad09714d79b9b6dbdd676735f06e) Add loading indicator for FormBuilderLoader (#481) (Luke Edwards)
* 2018-04-10 [80e0f4d](https://github.com/silverstripe/silverstripe-asset-admin/commit/80e0f4db26e93241ee4a95bfde1c823abe3a5202) File modified indicator missing and draft indicator incorrect style (Luke Edwards)
* 2018-04-09 [79e4f9c](https://github.com/silverstripe/silverstripe-admin/commit/79e4f9cbed4ae230d322ed0fbe1f25f11bed856f) Don't add redundant href="#" to tabs (Damian Mooyman)
* 2018-04-09 [f569785](https://github.com/silverstripe/silverstripe-admin/commit/f56978577b96c525796e3577a9a2eecef32e0a6d) gridfield style issues with negative margins (#474) (Luke Edwards)
* 2018-04-06 [be8287f](https://github.com/silverstripe/silverstripe-framework/commit/be8287fef87244f98b0cbdfd89933bd1ec6754f6) Prevent failover / extensions interfering with composite field properties (#7988) (Damian Mooyman)
* 2018-04-05 [e15a5af](https://github.com/silverstripe/silverstripe-campaign-admin/commit/e15a5afed389a8081d66be96b3511dc64a6721c8) Fix gridfield being cut off on sides (Luke Edwards)
* 2018-04-04 [85f4e65](https://github.com/silverstripe/silverstripe-versioned/commit/85f4e65f8f5ca4eb509837473cbca60f974176d6) Ensure extra fields have correct casting (Damian Mooyman)
* 2018-04-04 [b127422](https://github.com/silverstripe/silverstripe-assets/commit/b1274224d9aeea7d9e14e55d9aaf52aa9f17f26d) linting (Aaron Carlino)
* 2018-04-04 [50ad0ad](https://github.com/silverstripe/silverstripe-asset-admin/commit/50ad0ad15b548d0f23aa41d5bc29972ed9ebeeb8) Fix double popup for unpublish and incorrect confirm (#758) (Damian Mooyman)
* 2018-03-29 [ccbbcd4](https://github.com/silverstripe/silverstripe-framework/commit/ccbbcd45a223ffaba4ab33a4fce0375952c20c1d) Fixed bug in config merging priorities so that config values set by extensions are now least important instead of most important (Daniel Hensby)
* 2018-03-28 [878dc1f](https://github.com/silverstripe/silverstripe-framework/commit/878dc1f86dadbaf501298511177517360ded980e) Change inverse polymorphic inference to silent-empty instead of explicit error (Damian Mooyman)
* 2018-03-27 [484e0a7](https://github.com/silverstripe/silverstripe-versioned/commit/484e0a7f90cb00e77ca32f30554471a8a3dc4461) Ensure polymorphic ownership works (Damian Mooyman)
* 2018-03-27 [9cb974c](https://github.com/silverstripe/silverstripe-framework/commit/9cb974c61925fe3bb1283c179a421e3e97ccdd4b) several mistakes in example code (Aaron Carlino)
* 2018-03-27 [ec37e67](https://github.com/silverstripe/silverstripe-versioned/commit/ec37e6796068f725366310192c63949c1cf366a7) Don't crash on polymorphic ownership (Damian Mooyman)
* 2018-03-27 [e35971b](https://github.com/silverstripe/silverstripe-assets/commit/e35971b32f92452398e092c459ffbd71b329c83c) revert to live (Damian Mooyman)
* 2018-03-22 [436d473](https://github.com/silverstripe/silverstripe-versioned/commit/436d4734d056c5c43a2a08e3bc9a23fb793926e1) Fix regression in canViewVersioned (Damian Mooyman)
* 2018-03-21 [ba94e02](https://github.com/silverstripe/silverstripe-framework/commit/ba94e020e7deadd5deb9b4c6744f72bec37453b3) FunctionalTest not setting persistent versioned mode (Damian Mooyman)
* 2018-03-20 [e277f19](https://github.com/silverstripe/silverstripe-graphql/commit/e277f198d6aba0a9929ba79f5bfb198495d59c6e) merge regressions (Damian Mooyman)
* 2018-03-15 [8568259](https://github.com/silverstripe/silverstripe-admin/commit/8568259061e5bb5f7523b82521355f7e1802e812) id for scaffolded objects (Christopher Joe)
* 2018-03-15 [b2e2a6b](https://github.com/silverstripe/silverstripe-admin/commit/b2e2a6b5133d526c8ac9e54beec264118b2b56a5) bugs with execution (Christopher Joe)
* 2018-03-15 [61ce477](https://github.com/silverstripe/silverstripe-framework/commit/61ce4771f91367cbb4b8a1bf61e2af51964714df) ing HTMLEditorField API documentation (3Dgoo)
* 2018-03-14 [23af7ea](https://github.com/silverstripe/silverstripe-versioned/commit/23af7ea302a654ec21114fef8ccc4eb0eb09b355) Ensure consistent strict equality checks in version numbers (Robbie Averill)
* 2018-03-14 [97f22cb](https://github.com/silverstripe/silverstripe-framework/commit/97f22cbaa5d683cca2f65370a9b827314317436d) ing FormAction API documentation (3Dgoo)
* 2018-03-13 [b06bcc2](https://github.com/silverstripe/silverstripe-versioned/commit/b06bcc24fded9e4718b4c8b182df5d3ed7eb1047) Fix regressions from testing cms unit tests (Damian Mooyman)
* 2018-03-13 [e3e5edb](https://github.com/silverstripe/silverstripe-admin/commit/e3e5edbf4856cbc2eb71a89b600a8542aeba5b34) "container" logic for FormBuilder and PopoverField, improves accessibility (#459) (Chris Joe)
* 2018-03-11 [6f18e35](https://github.com/silverstripe/silverstripe-versioned/commit/6f18e3596fa20720e523f9b2e670e1d5a418d920) sorting issue with versioned test (Damian Mooyman)
* 2018-03-09 [9bed12b](https://github.com/silverstripe/silverstripe-versioned/commit/9bed12b8b696ce849e9eaff72a9ff14f8d9688af) Fix issue in latest_version (Damian Mooyman)
* 2018-03-08 [2e43291](https://github.com/silverstripe/silverstripe-versioned/commit/2e432910fb0d161919474491e3d837641a4bce32) Fix archive date erroring if stage omitted (Damian Mooyman)
* 2018-03-08 [3e698c1](https://github.com/silverstripe/silverstripe-versioned/commit/3e698c1bd0690027bd6cd0082a51b3c1d79974e1) remaining tests (Damian Mooyman)
* 2018-03-08 [be0b274](https://github.com/silverstripe/silverstripe-versioned/commit/be0b2743917a1d064acde3989b3ac89a3a2ae727) testDeleteNestedOwnedWithoutRepublishingOwner (Damian Mooyman)
* 2018-03-08 [0be2a9d](https://github.com/silverstripe/silverstripe-versioned/commit/0be2a9dae588ecee332f9c183ae8bc8a92e5b53b) Fix WasDraft not being written (Damian Mooyman)
* 2018-03-08 [35cff90](https://github.com/silverstripe/silverstripe-versioned/commit/35cff907607cc02def1f53e9a238b99d39ba471b) missing date for deleted _Versioned rows (Damian Mooyman)
* 2018-03-08 [3454600](https://github.com/silverstripe/silverstripe-versioned/commit/3454600ea499741591324bf072876f982d8ae62c) archive / unpublish / delete creating deleted row (Damian Mooyman)
* 2018-03-08 [e839d10](https://github.com/silverstripe/silverstripe-asset-admin/commit/e839d100bd02d7c12c9529a517bbea2a386d802e) responsive modals (#744) (Chris Joe)
* 2018-03-08 [38fbb92](https://github.com/silverstripe/silverstripe-admin/commit/38fbb92decdc4fbbe4c55e6647c68e852ae4a2ac) responsive modals (#457) (Chris Joe)
* 2018-03-07 [ff78a3b](https://github.com/silverstripe/silverstripe-versioned/commit/ff78a3bffc30a6fbc5ee2684718188e817eab506) up testDeleteOwnedWithoutRepublishingOwner (Damian Mooyman)
* 2018-03-07 [640c8f7](https://github.com/silverstripe/silverstripe-versioned/commit/640c8f7b3f56aa958ae462f4195bdd7121c37e97) postgres issue (Damian Mooyman)
* 2018-03-06 [4f8a10d](https://github.com/silverstripe/silverstripe-versioned/commit/4f8a10dd3132f5b2126ee8f888ab504c8aaefd22) invalid joins (Damian Mooyman)
* 2018-03-06 [75168cf](https://github.com/silverstripe/silverstripe-asset-admin/commit/75168cf2fa0fcf1ffc649e67b8ee3c87a675b3ed) multi-select shouldn't show insert button on form (Christopher Joe)
* 2018-03-06 [67fa8e9](https://github.com/silverstripe/silverstripe-admin/commit/67fa8e923ac4a3c5ef457597402c96c21dcd65b1) aligns Form actions container with the rest of the "bottom bars" (Christopher Joe)
* 2018-03-06 [36b6b30](https://github.com/silverstripe/silverstripe-asset-admin/commit/36b6b3025119875110ffb4719591026f78cd123f) up progress indicators (Damian Mooyman)
* 2018-03-05 [c209aff](https://github.com/silverstripe/silverstripe-asset-admin/commit/c209afff96343899c38cc07ba788f9c0deb7fa93) Consolidate queued and read files for Gallery (Christopher Joe)
* 2018-03-01 [49a3970](https://github.com/silverstripe/silverstripe-versioned/commit/49a3970c8722236bf51c0bded8c20d32b2fc4d9a) Resolve Published version field to Versioned_Version::Published() correctly (#125) (Robbie Averill)
* 2018-03-01 [6523d7a](https://github.com/silverstripe/silverstripe-framework/commit/6523d7a6eb3905d5e3cf24120d33232e1eb5d789) ing HTMLEditorField API documentation (3Dgoo)
* 2018-03-01 [c96b6dc](https://github.com/silverstripe/silverstripe-asset-admin/commit/c96b6dceecfa1846990cd14b8cf6250a7879ca02) aesthetic annoyance where deselect+select code will make the bulk actions animate unnecessarily (Christopher Joe)
* 2018-03-01 [222eec8](https://github.com/silverstripe/silverstripe-versioned/commit/222eec81944ebcd2e3a7ad302f8ef8ff65f5e344) Add missing published state filter (Robbie Averill)
* 2018-02-27 [c755f77](https://github.com/silverstripe/silverstripe-framework/commit/c755f77288bcbd5e6777f94d8499264446b456f0) indentation (Aaron Carlino)
* 2018-02-27 [6274ccc](https://github.com/silverstripe/silverstripe-campaign-admin/commit/6274ccce2ee3d66fb361a6335295d3a3eb2dbfe9) behat failure (Aaron Carlino)
* 2018-02-27 [7677c68](https://github.com/silverstripe/silverstripe-admin/commit/7677c68b6b354910c1964f833a0df765daa4e346) Remove max-width from form-fields and items (#446) (Chris Joe)
* 2018-02-27 [efe5c0f](https://github.com/silverstripe/silverstripe-admin/commit/efe5c0f3d251286b27c73ededc68305230c10184) fileSchema abolishing actions from previous props (Christopher Joe)
* 2018-02-21 [0647dee](https://github.com/silverstripe/silverstripe-cms/commit/0647dee8f0e09a23046c1a556e6acb7f6185bf08) travis (Daniel Hensby)
* 2018-02-14 [d019f88](https://github.com/silverstripe/silverstripe-admin/commit/d019f8875aa1e7f42035529ee6de450a20bd1bec) php field to fallback to the form's record and added logic to handle no record available (or not saved) (Christopher Joe)
* 2018-02-13 [42fd4d6](https://github.com/silverstripe/silverstripe-admin/commit/42fd4d6218102042d26607c968c2a773ea093751) Fix display logic for password fields (Damian Mooyman)
* 2018-02-12 [6570599](https://github.com/silverstripe/silverstripe-framework/commit/6570599aa931224e65797d13b74714c44180a9e4) Fix incorrect display logic on password field (Damian Mooyman)
* 2018-02-07 [b5f68eb](https://github.com/silverstripe/silverstripe-cms/commit/b5f68ebed2e7dda145a5eff55b67402f03d6f88f) warning appearing when button is disabled for rollback (Christopher Joe)
* 2018-02-07 [1983200](https://github.com/silverstripe/silverstripe-framework/commit/19832000a53dc57cbd2029502d9064816e0508b1) Fix installer checking wrong location for files (Damian Mooyman)
* 2018-02-02 [1d17f40](https://github.com/silverstripe/silverstripe-graphql/commit/1d17f40f4a587598fb01351df7cd181efb7b05a3) travis builds (Christopher Joe)
* 2017-12-01 [74a3ba5](https://github.com/silverstripe/silverstripe-framework/commit/74a3ba54ae3f02158ba81622bd9933ae3e98c665) count size of $relations (Daniel Hensby)

View File

@ -84,6 +84,7 @@ en:
RelationSearch: 'Relation search'
ResetFilter: Reset
SilverStripe\Forms\GridField\GridFieldDeleteAction:
DELETE_DESCRIPTION: Delete
Delete: Delete
DeletePermissionsFailure: 'No delete permissions'
EditPermissionsFailure: 'No permission to unlink record'
@ -95,7 +96,7 @@ en:
DeletePermissionsFailure: 'No delete permissions'
Deleted: 'Deleted {type} {name}'
Save: Save
SilverStripe\Forms\GridField\GridFieldEditButton:
SilverStripe\Forms\GridField\GridFieldEditButton_ss:
EDIT: Edit
SilverStripe\Forms\GridField\GridFieldViewButton:
VIEW: View
@ -151,8 +152,6 @@ en:
other: '{count} years'
SilverStripe\ORM\FieldType\DBEnum:
ANY: Any
SilverStripe\ORM\FieldType\DBForeignKey:
DROPDOWN_THRESHOLD_FALLBACK_MESSAGE: 'Too many related objects; fallback field in use'
SilverStripe\ORM\Hierarchy:
LIMITED_TITLE: 'Too many children ({count})'
SilverStripe\ORM\Hierarchy\Hierarchy:

View File

@ -84,6 +84,7 @@ fr:
RelationSearch: 'Rechercher relations'
ResetFilter: Réinitialiser
SilverStripe\Forms\GridField\GridFieldDeleteAction:
DELETE_DESCRIPTION: Supprimer
Delete: Supprimer
DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer'
EditPermissionsFailure: 'Pas de permissions pour délier l''enregistrement'
@ -95,6 +96,8 @@ fr:
DeletePermissionsFailure: 'Vous navez pas les autorisations pour supprimer'
Deleted: '{type} {name} supprimés'
Save: Enregistrer
SilverStripe\Forms\GridField\GridFieldEditButton_ss:
EDIT: Éditer
SilverStripe\Forms\GridField\GridFieldGroupDeleteAction:
UnlinkSelfFailure: 'Impossible de retirer votre propre profil de ce groupe, vous perdriez vos droits d''administration'
SilverStripe\Forms\GridField\GridFieldPaginator:

View File

@ -1,7 +1,37 @@
pl:
SilverStripe\Admin\LeftAndMain:
VersionUnknown: Nieznany
SilverStripe\AssetAdmin\Forms\UploadField:
Dimensions: Rozmiar
EDIT: Edytuj
EDITINFO: 'Edytuj plik'
REMOVE: Usuń
SilverStripe\Control\ChangePasswordEmail_ss:
CHANGEPASSWORDFOREMAIL: 'Hasło do konta o adresie e-mail {email} zostało zmienione. Jeśli nie zmieniłeś swojego hasła, zmień hasło, korzystając z poniższego linku'
CHANGEPASSWORDTEXT1: 'Zmieniłeś hasło na'
CHANGEPASSWORDTEXT3: 'Zmień hasło'
HELLO: 'Witaj,'
SilverStripe\Control\Email\ForgotPasswordEmail_ss:
HELLO: 'Witaj,'
TEXT1: 'Oto twój'
TEXT2: 'link zmiany hasła'
TEXT3: dla
SilverStripe\Control\RequestProcessor:
INVALID_REQUEST: 'Nieprawidłowe żądanie'
REQUEST_ABORTED: 'Żądanie zostało przerwane'
SilverStripe\Core\Manifest\VersionProvider:
VERSIONUNKNOWN: Nieznany
SilverStripe\Forms\CheckboxField:
NOANSWER: Nie
YESANSWER: Tak
SilverStripe\Forms\CheckboxSetField_ss:
NOOPTIONSAVAILABLE: 'Brak dostępnych opcji'
SilverStripe\Forms\ConfirmedPasswordField:
ATLEAST: 'Hasła muszą mieć przynajmniej {min} znaków.'
BETWEEN: 'Hasła muszą mieć długość pomiędzy {min} a {max} znaków.'
CURRENT_PASSWORD_ERROR: 'Podane hasło jest nieprawidłowe'
CURRENT_PASSWORD_MISSING: 'Musisz podać swoje aktualne hasło.'
LOGGED_IN_ERROR: 'Musisz być zalogowany aby zmienić hasło'
MAXIMUM: 'Hasła mogą mieć co najwyżej {max} znaków.'
SHOWONCLICKTITLE: 'Zmiana Hasła'
SilverStripe\Forms\CurrencyField:
@ -10,23 +40,38 @@ pl:
VALIDDATEFORMAT2: 'Proszę wprowadź prawidłowy format daty ({format})'
VALIDDATEMAXDATE: 'Twoja data musi być wcześniejsza lub taka sama, jak maksymalna dozwolona data ({date})'
VALIDDATEMINDATE: 'Twoja data musi być późniejsza lub taka sama, jak minimalna dozwolona data ({date})'
SilverStripe\Forms\DatetimeField:
VALIDDATEMAXDATETIME: 'Twoja data musi być wcześniejsza lub taka sama, jak maksymalna dozwolona data ({date})'
VALIDDATETIMEFORMAT: 'Proszę wprowadź prawidłowy format czasu ({format})'
VALIDDATETIMEMINDATE: 'Twoja data musi być późniejsza lub taka sama, jak minimalna dozwolona data ({date})'
SilverStripe\Forms\DropdownField:
CHOOSE: (wybierz)
CHOOSE_MODEL: '(Wybierz {name})'
SOURCE_VALIDATION: 'Wybierz wartość z podanej listy. {value} nie jest poprawną opcją'
SilverStripe\Forms\EmailField:
VALIDATION: 'Proszę podaj adres e-mail'
SilverStripe\Forms\FileUploadReceiver:
FIELDNOTSET: 'Nie znaleziono informacji o pliku'
SilverStripe\Forms\Form:
BAD_METHOD: 'Ten formularz wymaga {metody} przesłania'
CSRF_EXPIRED_MESSAGE: 'Twoja sesja wygasła. Prześlij ponownie formularz.'
CSRF_FAILED_MESSAGE: 'Wygląda na to, że wystąpił błąd techniczny. Kliknij przycisk wstecz, następnie odśwież przeglądarkę aby wczytać stronę ponownie.'
VALIDATIONPASSWORDSDONTMATCH: 'Hasła nie są takie same'
VALIDATIONPASSWORDSNOTEMPTY: 'Hasło nie może być puste'
VALIDATIONSTRONGPASSWORD: 'Hasła muszą mieć przynajmniej jedną cyfrę oraz jeden znak alfanumeryczny.'
VALIDATOR: Walidator
VALIDCURRENCY: 'Proszę podaj prawidłową walutę'
SilverStripe\Forms\FormField:
EXAMPLE: 'na przykład {format}'
NONE: brak
SilverStripe\Forms\FormScaffolder:
TABMAIN: Główny
SilverStripe\Forms\GridField\GridField:
Add: 'Dodaj {name}'
CSVEXPORT: 'Eksportuj do CSV'
CSVIMPORT: 'Import z CSV'
Filter: Filtr
FilterBy: 'Filtruj wg'
FilterBy: 'Filtruj wg '
Find: Wyszukaj
LinkExisting: 'Linkuj istniejący'
NewRecord: 'Nowy {type}'
@ -39,6 +84,7 @@ pl:
RelationSearch: 'Wyszukiwanie powiązań'
ResetFilter: Resetuj
SilverStripe\Forms\GridField\GridFieldDeleteAction:
DELETE_DESCRIPTION: Usuń
Delete: Usuń
DeletePermissionsFailure: 'Brak uprawnień do usuwania'
EditPermissionsFailure: 'Nie masz uprawnień, aby odłączyć rekord'
@ -50,55 +96,147 @@ pl:
DeletePermissionsFailure: 'Brak uprawnień do usuwania'
Deleted: 'Usunięto {type} {name}'
Save: Zapisz
SilverStripe\Forms\GridField\GridFieldEditButton_ss:
EDIT: Edytuj
SilverStripe\Forms\GridField\GridFieldGroupDeleteAction:
UnlinkSelfFailure: 'Nie możesz usunąć siebie z tej grupy, stracone zostałby prawa administratora'
SilverStripe\Forms\GridField\GridFieldPaginator:
OF: z
Page: Strona
View: Widok
SilverStripe\Forms\MoneyField:
FIELDLABELAMOUNT: Ilość
FIELDLABELCURRENCY: waluta
INVALID_CURRENCY: 'Waluta {currency} nie znajduje się na liście dozwolonych walut'
SilverStripe\Forms\MultiSelectField:
SOURCE_VALIDATION: 'Wybierz wartości z podanej listy. Podano niepoprawną opcję {value}'
SilverStripe\Forms\NullableField:
IsNullLabel: 'Jest Pusty'
SilverStripe\Forms\NumericField:
VALIDATION: '''{value}'' nie jest liczbą, to pole przyjmuje tylko liczby'
SilverStripe\Forms\TimeField:
VALIDATEFORMAT: 'Proszę wprowadź prawidłowy format czasu ({format})'
SilverStripe\ORM\DataObject:
PLURALNAME: 'Obiekty danych'
PLURALS:
one: 'Obiekt danych'
few: 'Obiektów danych'
many: 'Obiektów danych'
other: 'Obiektów danych {count}'
SINGULARNAME: 'Obiekt danych'
SilverStripe\ORM\FieldType\DBBoolean:
ANY: Jakikolwiek
NOANSWER: Nie
YESANSWER: Tak
SilverStripe\ORM\FieldType\DBDate:
DAYS_SHORT_PLURALS:
one: '{count} dzień'
few: '{count} dni'
many: '{count} dni'
other: '{count} dni'
HOURS_SHORT_PLURALS:
one: '{count} godzina'
few: '{count} godzin'
many: '{count} godzin'
other: '{count} godzin'
LessThanMinuteAgo: 'mniej niż minuta'
MINUTES_SHORT_PLURALS:
one: '{count} minuta'
few: '{count} minut'
many: '{count} minut'
other: '{count} minut'
MONTHS_SHORT_PLURALS:
one: '{count} miesiąc'
few: '{count} miesięcy'
many: '{count} miesięcy'
other: '{count} miesięcy'
SECONDS_SHORT_PLURALS:
one: '{count} sekunda'
few: '{count} sekund'
many: '{count} sekund'
other: '{count} sekund'
TIMEDIFFAGO: '{difference} temu'
TIMEDIFFIN: 'w {difference}'
YEARS_SHORT_PLURALS:
one: '{count} rok'
few: '{count} lat'
many: '{count} lat'
other: '{count} lat'
SilverStripe\ORM\FieldType\DBEnum:
ANY: Jakikolwiek
SilverStripe\ORM\Hierarchy:
LIMITED_TITLE: 'Zbyt wiele dzieci ({count})'
SilverStripe\ORM\Hierarchy\Hierarchy:
InfiniteLoopNotAllowed: 'Znaleziono nieskończoną pętlę wewnątrz hierarchii "{type}". Proszę zmień rodzica by to rozwiązać.'
LIMITED_TITLE: 'Zbyt wiele dzieci ({count})'
SilverStripe\ORM\ValidationException:
DEFAULT_ERROR: 'Niepoprawne dane'
SilverStripe\Security\BasicAuth:
ENTERINFO: 'Wprowadź username i hasło'
ERRORNOTADMIN: 'Ten użytkownik nie jest administratorem'
ERRORNOTREC: 'Nie istnieje taki username/hasło'
SilverStripe\Security\CMSMemberLoginForm:
PASSWORDEXPIRED: '<p>Twoje hasło wygasło. <a target="_top" href="{link}">Prosimy wybrać nowe.</a></p>'
SilverStripe\Security\CMSSecurity:
INVALIDUSER: '<p>Niepoprawny użytkownik. <a target="_top" href="{link}">Prosimy o ponownie uwierzytelnienie</a> aby kontynuować.</p>'
LOGIN_MESSAGE: '<p>Twoja sesja wygasła z powodu braku aktywności</p>'
LOGIN_TITLE: 'Wróć do strony, z którym połączenie zostało przerwane, logując się ponownie'
SUCCESS: Sukces
SUCCESSCONTENT: '<p>Zalogowano poprawnie! Jeżeli nie zostaniesz automatycznie przekierowany <a target="_top" href="{link}">kliknij tutaj</a></p>'
SUCCESS_TITLE: 'Zalogowano poprawne'
SilverStripe\Security\DefaultAdminService:
DefaultAdminFirstname: 'Domyślny administrator'
SilverStripe\Security\Group:
AddRole: 'Dodaj rolę dla tej grupy'
Code: 'Kod Grupy'
DefaultGroupTitleAdministrators: Administratorzy
DefaultGroupTitleContentAuthors: 'Autor treści'
Description: Opis
GROUPNAME: 'Nazwa Grupy'
GroupReminder: 'Jeśli wybierzesz nadrzędną grupę, obecna grupa otrzyma wszystkie jej role'
HierarchyPermsError: 'Nie można przyporządkować uprzywilejowanej grupy "{group}" (wymagane uprawnienie ADMIN)'
Locked: 'Zablokowana?'
MEMBERS: Użytkownicy
NEWGROUP: 'Nowa grupa'
NoRoles: 'Nie znaleziono ról'
PERMISSIONS: Uprawnienia
PLURALNAME: Grupy
PLURALS:
one: Grupa
few: Grup
many: Grup
other: '{count} grup'
Parent: 'Grupa nadrzędna'
ROLES: Role
ROLESDESCRIPTION: 'Role są wstępnie zdefiniowanymi zestawami uprawnień i można je przypisać do grup.<br />TW razie potrzeby są one dziedziczone z grup nadrzędnych.'
RolesAddEditLink: 'Zarządzaj rolami'
SINGULARNAME: Grupa
Sort: 'Kolejność Sortowania'
has_many_Permissions: Zezwolenia
many_many_Members: Użytkownicy
SilverStripe\Security\LoginAttempt:
Email: 'Adres e-mail'
EmailHashed: 'Adres e-mail (hashed)'
IP: 'Adres IP'
PLURALNAME: 'Próby logowania'
PLURALS:
one: 'Próba logowania'
few: 'Prób logowania'
many: 'Próby logowania {count}'
other: 'Próby logowania {count}'
SINGULARNAME: 'Próba logowania'
Status: Status
SilverStripe\Security\Member:
ADDGROUP: 'Dodaj grupę'
BUTTONCHANGEPASSWORD: 'Zmień hasło'
BUTTONLOGIN: Zaloguj
BUTTONLOGINOTHER: 'Zaloguj jako ktoś inny'
BUTTONLOGOUT: 'Wyloguj się'
BUTTONLOSTPASSWORD: 'Zgubiłem hasło'
CONFIRMNEWPASSWORD: 'Potwierdź nowe hasło'
CONFIRMPASSWORD: 'Potwierdź hasło'
CURRENT_PASSWORD: 'Aktualne hasło'
EDIT_PASSWORD: 'Nowe hasło'
EMAIL: E-mail
EMPTYNEWPASSWORD: 'Nowe hasło nie może być puste, spróbuj ponownie.'
ENTEREMAIL: 'Wpisz adres e-mail aby otrzymać link do zmiany hasła.'
@ -108,12 +246,23 @@ pl:
ERRORWRONGCRED: 'Podane dane są niepoprawne. Proszę spróbować ponownie.'
FIRSTNAME: Imię
INTERFACELANG: 'Język interfejsu'
KEEPMESIGNEDIN: 'Zapamiętaj mnie'
LOGGEDINAS: 'Zostałeś zalogowany jako {name}.'
NEWPASSWORD: 'Nowe hasło'
PASSWORD: Hasło
PASSWORDEXPIRED: 'Twoje hasło wygasło. Prosimy ustawić nowe.'
PLURALNAME: Użytkownicy
PLURALS:
one: Użytkownik
few: '{count} użytkowników'
many: '{count} użytkowników'
other: '{count} użytkowników'
REMEMBERME: 'Pamiętaj mnie następnym razem? (przez {count} dni na tym urządzeniu)'
SINGULARNAME: Użytkownik
SUBJECTPASSWORDCHANGED: 'Twoje hasło zostało zmienione'
SUBJECTPASSWORDRESET: 'Twój link do zmiany hasła'
SURNAME: Nazwisko
VALIDATIONADMINLOSTACCESS: 'Nie można usunąć wszystkich grup administracyjnych z Twojego profilu'
ValidationIdentifierFailed: 'Nie można nadpisać istniejącego użytkownika #{id} o identycznym identyfikatorze ({name} = {value})'
WELCOMEBACK: 'Witaj ponownie, {firstname}'
YOUROLDPASSWORD: 'Twoje stare hasło'
@ -122,15 +271,42 @@ pl:
db_LockedOutUntil: 'Zablokowany do'
db_Password: Hasło
db_PasswordExpiry: 'Data wygaśnięcia hasła'
SilverStripe\Security\MemberAuthenticator\CMSMemberLoginForm:
AUTHENTICATORNAME: 'Formularz logowania użytkownika CMS'
BUTTONFORGOTPASSWORD: 'Zapomniałeś hasła?'
BUTTONLOGIN: 'Zaloguj mnie spowrotem'
BUTTONLOGOUT: 'Wyloguj się'
SilverStripe\Security\MemberAuthenticator\MemberAuthenticator:
ERRORWRONGCRED: 'Podane dane są niepoprawne. Proszę spróbować ponownie.'
NoPassword: 'Hasło nie zostało skonfigurowane dla tego użytkownika.'
SilverStripe\Security\MemberAuthenticator\MemberLoginForm:
AUTHENTICATORNAME: 'E-mail i hasło'
SilverStripe\Security\MemberPassword:
PLURALNAME: 'Hasła użytkownika'
PLURALS:
one: 'Hasło użytkownika'
few: 'Haseł użytkownika'
many: 'Haseł użytkownika'
other: '{count} haseł użytkownika '
SINGULARNAME: 'Hasło użytkownika'
SilverStripe\Security\PasswordValidator:
LOWCHARSTRENGTH: 'Proszę zwiększyć siłę hasła, dodając niektóre z następujących znaków: % s'
PREVPASSWORD: 'Użyłeś już tego hasła wcześniej, proszę wybrać nowe'
TOOSHORT: 'Hasło jest za krótkie, proszę podać {minimum} znaków lub więcej'
SilverStripe\Security\Permission:
AdminGroup: Administrator
CMS_ACCESS_CATEGORY: 'Dostęp do CMS''a'
CONTENT_CATEGORY: 'Uprawnienie edycji treści'
FULLADMINRIGHTS: 'Pełne prawa administracyjne'
FULLADMINRIGHTS_HELP: 'Zatwierdza i nadpisuje wszystkie istniejące uprawnienia'
PERMISSIONS_CATEGORY: 'Uprawnienia ról i dostępu'
PLURALNAME: Uprawnienia
PLURALS:
one: Uprawnienie
few: Uprawnień
many: Uprawnień
other: '{count} uprawnień'
SINGULARNAME: Uprawnienie
UserPermissionsIntro: 'Przydzielenie grup temu użytkownikowi spowoduje zmianę jego uprawnień. Odwołaj się do sekcji Grupy aby dowiedzieć się więcej o uprawnieniach grupowych.'
SilverStripe\Security\PermissionCheckboxSetField:
AssignedTo: 'przypisany do "{title}"'
@ -139,17 +315,41 @@ pl:
FromRoleOnGroup: 'odziedziczone z roli "{roletitle}" w grupie "{grouptitle}"'
SilverStripe\Security\PermissionRole:
OnlyAdminCanApply: 'Tylko administrator może to zastosować'
PLURALNAME: Role
PLURALS:
one: Rola
few: ról
many: ról
other: '{count} ról'
SINGULARNAME: Rola
Title: Tytuł
SilverStripe\Security\PermissionRoleCode:
PLURALNAME: 'Kod roli uprawnienia'
PLURALS:
one: 'Kod roli uprawnienia'
few: 'Kodów ról uprawnień'
many: 'Kodów ról uprawnień'
other: '{count} kodów ról uprawnień'
PermsError: 'Nie można przyporządkować uprzywilejowanego uprawnienia "{code}" (wymagane uprawnienie ADMIN)'
SINGULARNAME: 'Kod roli uprawnienia'
SilverStripe\Security\RememberLoginHash:
PLURALNAME: 'Hasła logowania'
PLURALS:
one: 'Hasło logowania'
few: 'Haseł logowania'
many: 'Haseł logowania'
other: '{count} haseł logowania'
SINGULARNAME: 'Hasło logowania'
SilverStripe\Security\Security:
ALREADYLOGGEDIN: 'Nie masz dostępu do tej strony. Jeśli posiadasz inne konto, które umożliwi Ci dostęp do tej strony, możesz się zalogować poniżej'
BUTTONSEND: 'Wyślij mi link do zresetowania hasła'
CHANGEPASSWORDBELOW: 'Możesz zmienić swoje hasło poniżej'
CHANGEPASSWORDHEADER: 'Zmień swoje hasło'
CONFIRMLOGOUT: 'Kliknij przycisk poniżej, aby potwierdzić, że chcesz się wylogować.'
ENTERNEWPASSWORD: 'Proszę wprowadż nowe hasło'
ERRORPASSWORDPERMISSION: 'Musisz być zalogowany aby zmienić hasło'
LOGIN: Logowanie
LOGOUT: 'Wyloguj się'
LOSTPASSWORDHEADER: 'Nie pamiętam hasła'
NOTEPAGESECURED: 'Ta strona jest zabezpieczona. Wpisz swoje dane a my wyślemy Ci potwierdzenie niebawem'
NOTERESETLINKINVALID: '<p>Link resetujący hasło wygasł lub jest nieprawidłowy.</p><p>Możesz poprosić o nowy <a href="{link1}">tutaj</a> lub zmień swoje hasło po <a href="{link2}">zalogowaniu się</a>.</p>'

View File

@ -993,6 +993,9 @@ class Director implements TemplateGlobalProvider
* Checks if the current HTTP-Request is an "Ajax-Request" by checking for a custom header set by
* jQuery or whether a manually set request-parameter 'ajax' is present.
*
* Note that if you plan to use this to alter your HTTP response on a cached page,
* you should add X-Requested-With to the Vary header.
*
* @param HTTPRequest $request
* @return bool
*/

View File

@ -71,6 +71,7 @@ class HTTP
/**
* List of names to add to the Cache-Control header.
*
* @deprecated 4.2..5.0 Handled by HTTPCacheControlMiddleware instead
* @see HTTPCacheControlMiddleware::__construct()
* @config
* @var array Keys are cache control names, values are boolean flags
@ -80,7 +81,7 @@ class HTTP
/**
* Vary string; A comma separated list of var header names
*
* @deprecated 4.2..5.0 Handled by HTTPCacheMiddleware instead
* @deprecated 4.2..5.0 Handled by HTTPCacheControlMiddleware instead
* @config
* @var string|null
*/
@ -473,6 +474,7 @@ class HTTP
* Ensure that all deprecated HTTP cache settings are respected
*
* @deprecated 4.2..5.0 Use HTTPCacheControlMiddleware instead
* @throws \LogicException
* @param HTTPRequest $request
* @param HTTPResponse $response
*/
@ -509,6 +511,37 @@ class HTTP
$cacheControlMiddleware->addVary($configVary);
}
// Pass cache_control to middleware
$configCacheControl = $config->get('cache_control');
if ($configCacheControl) {
Deprecation::notice('5.0', 'Use HTTPCacheControlMiddleware API instead');
$supportedDirectives = ['max-age', 'no-cache', 'no-store', 'must-revalidate'];
if ($foundUnsupported = array_diff(array_keys($configCacheControl), $supportedDirectives)) {
throw new \LogicException(
'Found unsupported legacy directives in HTTP.cache_control: ' .
implode(', ', $foundUnsupported) .
'. Please use HTTPCacheControlMiddleware API instead'
);
}
if (isset($configCacheControl['max-age'])) {
$cacheControlMiddleware->setMaxAge($configCacheControl['max-age']);
}
if (isset($configCacheControl['no-cache'])) {
$cacheControlMiddleware->setNoCache((bool)$configCacheControl['no-cache']);
}
if (isset($configCacheControl['no-store'])) {
$cacheControlMiddleware->setNoStore((bool)$configCacheControl['no-store']);
}
if (isset($configCacheControl['must-revalidate'])) {
$cacheControlMiddleware->setMustRevalidate((bool)$configCacheControl['must-revalidate']);
}
}
// Set modification date
if (self::$modification_date) {
Deprecation::notice('5.0', 'Use HTTPCacheControlMiddleware::registerModificationDate() instead');

View File

@ -136,7 +136,6 @@ class HTTPCacheControlMiddleware implements HTTPMiddleware, Resettable
* @var array
*/
private static $defaultVary = [
"X-Requested-With" => true,
"X-Forwarded-Protocol" => true,
];
@ -507,7 +506,8 @@ class HTTPCacheControlMiddleware implements HTTPMiddleware, Resettable
/**
* Specifies the maximum amount of time (seconds) a resource will be considered fresh.
* This directive is relative to the time of the request.
* Affects all non-disabled states. Use setStateDirective() instead to set for a single state.
* Affects all non-disabled states. Use enableCache(), publicCache() or
* setStateDirective() instead to set the max age for a single state.
*
* @param int $age
* @return $this
@ -560,6 +560,7 @@ class HTTPCacheControlMiddleware implements HTTPMiddleware, Resettable
/**
* Simple way to set cache control header to a cacheable state.
* Needs either `setMaxAge()` or the `$maxAge` method argument in order to activate caching.
*
* The resulting cache-control headers will be chosen from the 'enabled' set of directives.
*
@ -568,14 +569,20 @@ class HTTPCacheControlMiddleware implements HTTPMiddleware, Resettable
*
* @see https://docs.silverstripe.org/en/developer_guides/performance/http_cache_headers/
* @param bool $force Force the cache to public even if its unforced private or public
* @param int $maxAge Shortcut for `setMaxAge()`, which is required to actually enable the cache.
* @return $this
*/
public function enableCache($force = false)
public function enableCache($force = false, $maxAge = null)
{
// Only execute this if its forcing level is high enough
if ($this->applyChangeLevel(self::LEVEL_ENABLED, $force)) {
$this->setState(self::STATE_ENABLED);
}
if (!is_null($maxAge)) {
$this->setMaxAge($maxAge);
}
return $this;
}
@ -627,20 +634,27 @@ class HTTPCacheControlMiddleware implements HTTPMiddleware, Resettable
/**
* Advanced way to set cache control header to a cacheable state.
* Indicates that the response may be cached by any cache. (eg: CDNs, Proxies, Web browsers)
* Indicates that the response may be cached by any cache. (eg: CDNs, Proxies, Web browsers).
* Needs either `setMaxAge()` or the `$maxAge` method argument in order to activate caching.
*
* The resulting cache-control headers will be chosen from the 'private' set of directives.
*
* @see https://docs.silverstripe.org/en/developer_guides/performance/http_cache_headers/
* @param bool $force Force the cache to public even if it's private, unless it's been forced private
* @param int $maxAge Shortcut for `setMaxAge()`, which is required to actually enable the cache.
* @return $this
*/
public function publicCache($force = false)
public function publicCache($force = false, $maxAge = null)
{
// Only execute this if its forcing level is high enough
if ($this->applyChangeLevel(self::LEVEL_PUBLIC, $force)) {
$this->setState(self::STATE_PUBLIC);
}
if (!is_null($maxAge)) {
$this->setMaxAge($maxAge);
}
return $this;
}

View File

@ -6,8 +6,6 @@ use BadMethodCallException;
use Exception;
use InvalidArgumentException;
use LogicException;
use SilverStripe\Control\HTTP;
use SilverStripe\Control\Middleware\HTTPCacheControlMiddleware;
use SilverStripe\Core\ClassInfo;
use SilverStripe\Core\Config\Config;
use SilverStripe\Core\Injector\Injector;

View File

@ -9,6 +9,7 @@ use SilverStripe\Control\HTTPRequest;
use SilverStripe\Control\HTTPResponse;
use SilverStripe\Control\Middleware\HTTPCacheControlMiddleware;
use SilverStripe\Control\Session;
use SilverStripe\Core\Config\Config;
use SilverStripe\Dev\FunctionalTest;
/**
@ -112,6 +113,79 @@ class HTTPTest extends FunctionalTest
$this->assertEmpty($v);
}
public function testDeprecatedVaryHandling()
{
/** @var Config */
Config::modify()->set(
HTTP::class,
'vary',
'X-Foo'
);
$response = new HTTPResponse('', 200);
$this->addCacheHeaders($response);
$header = $response->getHeader('Vary');
$this->assertContains('X-Foo', $header);
}
public function testDeprecatedCacheControlHandling()
{
HTTPCacheControlMiddleware::singleton()->publicCache();
/** @var Config */
Config::modify()->set(
HTTP::class,
'cache_control',
[
'no-store' => true,
'no-cache' => true,
]
);
$response = new HTTPResponse('', 200);
$this->addCacheHeaders($response);
$header = $response->getHeader('Cache-Control');
$this->assertContains('no-store', $header);
$this->assertContains('no-cache', $header);
}
public function testDeprecatedCacheControlHandlingOnMaxAge()
{
HTTPCacheControlMiddleware::singleton()->publicCache();
/** @var Config */
Config::modify()->set(
HTTP::class,
'cache_control',
[
// Needs to be separate from no-cache and no-store,
// since that would unset max-age
'max-age' => 99,
]
);
$response = new HTTPResponse('', 200);
$this->addCacheHeaders($response);
$header = $response->getHeader('Cache-Control');
$this->assertContains('max-age=99', $header);
}
/**
* @expectedException \LogicException
* @expectedExceptionMessageRegExp /Found unsupported legacy directives in HTTP\.cache_control: unknown/
*/
public function testDeprecatedCacheControlHandlingThrowsWithUnknownDirectives()
{
/** @var Config */
Config::modify()->set(
HTTP::class,
'cache_control',
[
'no-store' => true,
'unknown' => true,
]
);
$response = new HTTPResponse('', 200);
$this->addCacheHeaders($response);
}
/**
* Tests {@link HTTP::getLinksIn()}
*/

View File

@ -68,6 +68,65 @@ class HTTPCacheControlMiddlewareTest extends SapphireTest
}
}
public function testEnableCacheWithMaxAge()
{
$maxAge = 300;
$cc = HTTPCacheControlMiddleware::singleton();
$cc->enableCache(false, $maxAge);
$response = new HTTPResponse();
$cc->applyToResponse($response);
$this->assertContains('max-age=300', $response->getHeader('cache-control'));
$this->assertNotContains('no-cache', $response->getHeader('cache-control'));
$this->assertNotContains('no-store', $response->getHeader('cache-control'));
}
public function testEnableCacheWithMaxAgeAppliesWhenLevelDoesNot()
{
$maxAge = 300;
$cc = HTTPCacheControlMiddleware::singleton();
$cc->privateCache(true);
$cc->enableCache(false, $maxAge);
$response = new HTTPResponse();
$cc->applyToResponse($response);
$this->assertContains('max-age=300', $response->getHeader('cache-control'));
}
public function testPublicCacheWithMaxAge()
{
$maxAge = 300;
$cc = HTTPCacheControlMiddleware::singleton();
$cc->publicCache(false, $maxAge);
$response = new HTTPResponse();
$cc->applyToResponse($response);
$this->assertContains('max-age=300', $response->getHeader('cache-control'));
// STATE_PUBLIC doesn't contain no-cache or no-store headers to begin with,
// so can't test their removal effectively
$this->assertNotContains('no-cache', $response->getHeader('cache-control'));
}
public function testPublicCacheWithMaxAgeAppliesWhenLevelDoesNot()
{
$maxAge = 300;
$cc = HTTPCacheControlMiddleware::singleton();
$cc->privateCache(true);
$cc->publicCache(false, $maxAge);
$response = new HTTPResponse();
$cc->applyToResponse($response);
$this->assertContains('max-age=300', $response->getHeader('cache-control'));
}
/**
* @dataProvider provideCacheStates
*/