Merge branch '4.2' into 4.3

This commit is contained in:
Robbie Averill 2019-02-19 08:39:59 +07:00
commit ed74549c4f
22 changed files with 486 additions and 78 deletions

View File

@ -1368,3 +1368,130 @@ warnings:
'THIRDPARTY_DIR': 'THIRDPARTY_DIR':
message: 'Path constants have been deprecated. Use the Requirements and ModuleResourceLoader APIs' message: 'Path constants have been deprecated. Use the Requirements and ModuleResourceLoader APIs'
url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths' url: 'https://docs.silverstripe.org/en/4/changelogs/4.0.0#module-paths'
visibilities:
'SilverStripe\ORM\DataObject::db':
visibility: private
'SilverStripe\ORM\DataObject::singular_name':
visibility: private
'SilverStripe\ORM\DataObject::plural_name':
visibility: private
'SilverStripe\ORM\DataObject::api_access':
visibility: private
'SilverStripe\ORM\DataObject::default_classname':
visibility: private
'SilverStripe\ORM\DataObject->destroyed':
visibility: public
'SilverStripe\ORM\DataObject->record':
visibility: protected
'SilverStripe\ORM\DataObject->joinRecord':
visibility: protected
'SilverStripe\ORM\DataObject->changed':
visibility: private
'SilverStripe\ORM\DataObject->changeForced':
visibility: private
'SilverStripe\ORM\DataObject->original':
visibility: protected
'SilverStripe\ORM\DataObject->brokenOnDelete':
visibility: protected
'SilverStripe\ORM\DataObject->brokenOnWrite':
visibility: protected
'SilverStripe\ORM\DataObject::validation_enabled':
visibility: private
'SilverStripe\ORM\DataObject::_cache_get_one':
visibility: protected
'SilverStripe\ORM\DataObject::_cache_field_labels':
visibility: protected
'SilverStripe\ORM\DataObject::fixed_fields':
visibility: private
'SilverStripe\ORM\DataObject::table_name':
visibility: private
'SilverStripe\ORM\DataObject->components':
visibility: protected
'SilverStripe\ORM\DataObject->unsavedRelations':
visibility: protected
'SilverStripe\ORM\DataObject::cascade_deletes':
visibility: private
'SilverStripe\ORM\DataObject::cascade_duplicates':
visibility: private
'SilverStripe\ORM\DataObject::sourceQueryParams':
visibility: private
'SilverStripe\ORM\DataObject::subclass_access':
visibility: private
'SilverStripe\ORM\DataObject::casting':
visibility: private
'SilverStripe\ORM\DataObject::create_table_options':
visibility: private
'SilverStripe\ORM\DataObject::indexes':
visibility: private
'SilverStripe\ORM\DataObject::defaults':
visibility: private
'SilverStripe\ORM\DataObject::default_records':
visibility: private
'SilverStripe\ORM\DataObject::has_one':
visibility: private
'SilverStripe\ORM\DataObject::belongs_to':
visibility: private
'SilverStripe\ORM\DataObject::has_many':
visibility: private
'SilverStripe\ORM\DataObject::many_many':
visibility: private
'SilverStripe\ORM\DataObject::many_many_extraFields':
visibility: private
'SilverStripe\ORM\DataObject::belongs_many_many':
visibility: private
'SilverStripe\ORM\DataObject::default_sort':
visibility: private
'SilverStripe\ORM\DataObject::searchable_fields':
visibility: private
'SilverStripe\ORM\DataObject::field_labels':
visibility: private
'SilverStripe\ORM\DataObject::summary_fields':
visibility: private
'SilverStripe\Control\Director::rules':
visibility: private
'SilverStripe\Control\Director::current_page':
visibility: private
'SilverStripe\Control\Director::alternate_base_folder':
visibility: private
'SilverStripe\Control\Director::alternate_public_dir':
visibility: private
'SilverStripe\Control\Director::default_base_url':
visibility: private
'SilverStripe\Forms\GridField\GridFieldPaginator::default_items_per_page':
visibility: private
'SilverStripe\View\SSViewer::themes':
visibility: private
'SilverStripe\View\SSViewer::current_themes':
visibility: protected
'SilverStripe\View\SSViewer::theme':
visibility: private
'SilverStripe\View\SSViewer::theme_enabled':
visibility: private
'SilverStripe\View\SSViewer::global_key':
visibility: private
'SilverStripe\View\SSViewer::source_file_comments':
visibility: private
'SilverStripe\View\SSViewer::rewrite_hash_links':
visibility: private
'SilverStripe\View\SSViewer::current_rewrite_hash_links':
visibility: protected
'SilverStripe\View\SSViewer::rewriteHashlinks':
visibility: protected
'SilverStripe\View\SSViewer::template_cache_flushed':
visibility: private
'SilverStripe\View\SSViewer::cacheblock_cache_flushed':
visibility: private
'SilverStripe\View\SSViewer::topLevel':
visibility: protected
'SilverStripe\View\SSViewer::templates':
visibility: protected
'SilverStripe\View\SSViewer::chosen':
visibility: protected
'SilverStripe\View\SSViewer::subTemplates':
visibility: protected
'SilverStripe\View\SSViewer::includeRequirements':
visibility: protected
'SilverStripe\View\SSViewer::parser':
visibility: protected
'SilverStripe\View\SSViewer::partialCacheStore':
visibility: protected

View File

@ -18,20 +18,17 @@ SilverStripe\Core\Injector\Injector:
factory: SilverStripe\Core\Cache\CacheFactory factory: SilverStripe\Core\Cache\CacheFactory
constructor: constructor:
namespace: "VersionProvider_composerlock" namespace: "VersionProvider_composerlock"
args: disable-container: true
disable-container: true
Psr\SimpleCache\CacheInterface.RateLimiter: Psr\SimpleCache\CacheInterface.RateLimiter:
factory: SilverStripe\Core\Cache\CacheFactory factory: SilverStripe\Core\Cache\CacheFactory
constructor: constructor:
namespace: 'ratelimiter' namespace: 'ratelimiter'
args: disable-container: true
disable-container: true
Psr\SimpleCache\CacheInterface.InheritedPermissions: Psr\SimpleCache\CacheInterface.InheritedPermissions:
factory: SilverStripe\Core\Cache\CacheFactory factory: SilverStripe\Core\Cache\CacheFactory
constructor: constructor:
namespace: "InheritedPermissions" namespace: "InheritedPermissions"
args: disable-container: true
disable-container: true
Psr\SimpleCache\CacheInterface.ThemeResourceLoader: Psr\SimpleCache\CacheInterface.ThemeResourceLoader:
factory: SilverStripe\Core\Cache\CacheFactory factory: SilverStripe\Core\Cache\CacheFactory
constructor: constructor:

View File

@ -2,24 +2,27 @@ title: Lessons
introduction: The lessons take a step by step look at how to build a SilverStripe application. introduction: The lessons take a step by step look at how to build a SilverStripe application.
* [How to set up a local development environment in SilverStripe](https://vimeo.com/108861537) * [How to set up a local development environment in SilverStripe](https://vimeo.com/108861537)
* [Lesson 1: Creating your first theme](http://www.silverstripe.org/learn/lessons/creating-your-first-theme) * [Lesson 1: Creating your first project](https://www.silverstripe.org/learn/lessons/v4/creating-your-first-project)
* [Lesson 2: Migrating static templates into your theme](http://www.silverstripe.org/learn/lessons/migrating-static-templates-into-your-theme) * [Lesson 2: Migrating static templates into your theme](https://www.silverstripe.org/learn/lessons/v4/migrating-static-templates-into-your-theme-1)
* [Lesson 3: Adding dynamic content](http://www.silverstripe.org/learn/lessons/adding-dynamic-content) * [Lesson 3: Adding dynamic content](https://www.silverstripe.org/learn/lessons/v4/adding-dynamic-content-1)
* [Lesson 4: Working with multiple templates](http://www.silverstripe.org/learn/lessons/working-with-multiple-templates) * [Lesson 4: Working with multiple templates](https://www.silverstripe.org/learn/lessons/v4/working-with-multiple-templates-1)
* [Lesson 5: The holder/page pattern](http://www.silverstripe.org/learn/lessons/the-holderpage-pattern) * [Lesson 5: The holder/page pattern](https://www.silverstripe.org/learn/lessons/v4/the-holderpage-pattern-1)
* [Lesson 6: Adding Custom Fields to a Page](http://www.silverstripe.org/learn/lessons/adding-custom-fields-to-a-page) * [Lesson 6: Adding Custom Fields to a Page](https://www.silverstripe.org/learn/lessons/v4/adding-custom-fields-to-a-page-1)
* [Lesson 7: Working with Files and Images](http://www.silverstripe.org/learn/lessons/working-with-files-and-images) * [Lesson 7: Working with Files and Images](https://www.silverstripe.org/learn/lessons/v4/working-with-files-and-images-1)
* [Lesson 8: Introduction to the ORM](http://www.silverstripe.org/learn/lessons/introduction-to-the-orm) * [Lesson 8: Introduction to the ORM](https://www.silverstripe.org/learn/lessons/v4/introduction-to-the-orm-1)
* [Lesson 9: Data Relationships - $has_many](http://www.silverstripe.org/learn/lessons/working-with-data-relationships-has-many) * [Lesson 9: Data Relationships - $has_many](https://www.silverstripe.org/learn/lessons/v4/working-with-data-relationships-has-many-1)
* [Lesson 10: Introduction to the ORM](http://www.silverstripe.org/learn/lessons/working-with-data-relationships-many-many) * [Lesson 10: Data Relationships - $many_many](https://www.silverstripe.org/learn/lessons/v4/working-with-data-relationships-many-many-1)
* [Lesson 11: Introduction to frontend forms](http://www.silverstripe.org/learn/lessons/introduction-to-frontend-forms) * [Lesson 11: Introduction to frontend forms](https://www.silverstripe.org/learn/lessons/v4/introduction-to-frontend-forms-1)
* [Lesson 12: Data Extensions and SiteConfig](http://www.silverstripe.org/learn/lessons/data-extensions-and-siteconfig) * [Lesson 12: Data Extensions and SiteConfig](https://www.silverstripe.org/learn/lessons/v4/data-extensions-and-siteconfig-1)
* [Lesson 13: Introduction to ModelAdmin](http://www.silverstripe.org/learn/lessons/introduction-to-modeladmin) * [Lesson 13: Introduction to ModelAdmin](https://www.silverstripe.org/learn/lessons/v4/introduction-to-modeladmin-1)
* [Lesson 14: Controller Actions/DataObjects as Pages](http://www.silverstripe.org/learn/lessons/controller-actions-dataobjects-as-pages) * [Lesson 14: Controller Actions/DataObjects as Pages](https://www.silverstripe.org/learn/lessons/v4/controller-actions-dataobjects-as-pages-1)
* [Lesson 15: Building a Search Form](http://www.silverstripe.org/learn/lessons/building-a-search-form) * [Lesson 15: Building a Search Form](https://www.silverstripe.org/learn/lessons/v4/building-a-search-form-1)
* [Lesson 16: Lists and Pagination](http://www.silverstripe.org/learn/lessons/lists-and-pagination) * [Lesson 16: Lists and Pagination](https://www.silverstripe.org/learn/lessons/v4/lists-and-pagination-1)
* [Lesson 17: Ajax Behaviour and Viewable Data](http://www.silverstripe.org/learn/lessons/ajax-behaviour-and-viewabledata) * [Lesson 17: Ajax Behaviour and Viewable Data](https://www.silverstripe.org/learn/lessons/v4/ajax-behaviour-and-viewabledata-1)
* [Lesson 18: Dealing with Arbitrary Template Data](http://www.silverstripe.org/learn/lessons/dealing-with-arbitrary-template-data) * [Lesson 18: Dealing with Arbitrary Template Data](https://www.silverstripe.org/learn/lessons/v4/dealing-with-arbitrary-template-data-1)
* [Lesson 19: Creating Filtered Views](https://www.silverstripe.org/learn/lessons/v4/creating-filtered-views-1)
* [Lesson 20: Beyond the ORM: Building Custom SQL](https://www.silverstripe.org/learn/lessons/v4/beyond-the-orm-building-custom-sql-1)
* [Lesson 21: Advanced Environment Configuration](https://www.silverstripe.org/learn/lessons/v4/advanced-environment-configuration-1)
## Help: If you get stuck ## Help: If you get stuck

View File

@ -39,6 +39,13 @@ SilverStripe\Core\Injector\Injector:
namespace: "myCache" namespace: "myCache"
``` ```
<div class="alert" markdown="1">
Please note that if you have the `silverstripe/versioned` module installed (automatically installed by the
`silverstripe/cms` module), caches will automatically be segmented by current “stage”. This ensures that
any content written to the cache in the _draft_ reading mode isnt accidentally exposed in the _live_ reading mode.
Please read the [versioned cache segmentation](#versioned-cache-segmentation) section for more information.
</div>
Cache objects are instantiated through a [CacheFactory](SilverStripe\Core\Cache\CacheFactory), Cache objects are instantiated through a [CacheFactory](SilverStripe\Core\Cache\CacheFactory),
which determines which cache adapter is used (see "Adapters" below for details). which determines which cache adapter is used (see "Adapters" below for details).
This factory allows us you to globally define an adapter for all cache instances. This factory allows us you to globally define an adapter for all cache instances.
@ -209,6 +216,42 @@ SilverStripe\Core\Injector\Injector:
SilverStripe\Core\Cache\CacheFactory: '%$MemcachedCacheFactory' SilverStripe\Core\Cache\CacheFactory: '%$MemcachedCacheFactory'
``` ```
## Versioned cache segmentation
`SilverStripe\Core\Cache\CacheFactory` now maintains separate cache pools for each versioned stage (if you have the
`silverstripe/versioned` module installed). This prevents developers from caching draft data and then
accidentally exposing it on the live stage without potentially required authorisation checks. Unless you
rely on caching across stages, you don't need to change your own code for this change to take effect. Note
that cache keys will be internally rewritten, causing any existing cache items to become invalid when this
change is deployed.
```php
// Before:
$cache = Injector::inst()->get(CacheInterface::class . '.myapp');
Versioned::set_stage(Versioned::DRAFT);
$cache->set('my_key', 'Some draft content. Not for public viewing yet.');
Versioned::set_stage(Versioned::LIVE);
$cache->get('my_key'); // 'Some draft content. Not for public viewing yet'
// After:
$cache = Injector::inst()->get(CacheInterface::class . '.myapp');
Versioned::set_stage(Versioned::DRAFT);
$cache->set('my_key', 'Some draft content. Not for public viewing yet.');
Versioned::set_stage(Versioned::LIVE);
$cache->get('my_key'); // null
```
Data that is not content sensitive can be cached across stages by simply opting out of the segmented cache
with the `disable-container` argument.
```yaml
SilverStripe\Core\Injector\Injector:
Psr\SimpleCache\CacheInterface.myapp:
factory: SilverStripe\Core\Cache\CacheFactory
constructor:
namespace: "MyInsensitiveData"
disable-container: true
```
## Additional Caches ## Additional Caches
Unfortunately not all caches are configurable via cache adapters. Unfortunately not all caches are configurable via cache adapters.

View File

@ -0,0 +1,21 @@
# 3.6.7
<!--- Changes below this line will be automatically regenerated -->
## Change Log
### Security
* 2019-01-10 [c44f06cdf](https://github.com/silverstripe/silverstripe-framework/commit/c44f06cdf10387a987e4efb096ff06b3bb4495ef) Patch SQL Injection vulnerability when arrays are assigned to DataObject Fields (Aaron Carlino) - See [ss-2018-021](https://www.silverstripe.org/download/security-releases/ss-2018-021)
* 2018-09-26 [598edd913](https://github.com/silverstripe/silverstripe-framework/commit/598edd91341f389d7b919ec1201e03d2aba4d284) Add confirmation token to dev/build (Loz Calver) - See [ss-2018-019](https://www.silverstripe.org/download/security-releases/ss-2018-019)
### Bugfixes
* 2019-01-23 [746c0679a](https://github.com/silverstripe/silverstripe-framework/commit/746c0679ad1d6ceac03d2adf167367f0ca2259cd) Injector may instantiate prototypes as if they're singletons (fixes #8567) (Loz Calver)
* 2018-11-15 [86701b8cd](https://github.com/silverstripe/silverstripe-framework/commit/86701b8cd0cd5f8de813a7c9347e7c8055d878f4) Redirect loop with multiple URL tokens (fixes #8607) (Loz Calver)
* 2018-06-04 [41e601a03](https://github.com/silverstripe/silverstripe-framework/commit/41e601a036307065d9ea2ba8862f67be738d402f) Regression from #8009 (Daniel Hensby)
* 2018-05-29 [1cbf27e0f](https://github.com/silverstripe/silverstripe-framework/commit/1cbf27e0f47c3547914b03193d0f5f77c87ff8d5) PHP 5.3 compat for referencing $this in closure, and make method public for same reason (Robbie Averill)
* 2018-04-17 [af3a9f3ec](https://github.com/silverstripe/silverstripe-framework/commit/af3a9f3ec8a5465f841c5aa8ee1faf40c1b76bf4) Duplicating many_many relationships looses the extra fields (fixes #7973) (UndefinedOffset)
* 2018-03-15 [d17d93f7](https://github.com/silverstripe/silverstripe-cms/commit/d17d93f784a6e01f3d396c55adc623d69a90261a) Remove SearchForm results() function from allowed_actions (Steve Dixon)
* 2018-02-16 [86addea1d](https://github.com/silverstripe/silverstripe-framework/commit/86addea1d2a7b2e28ae8115279ae358bcb46648a) Split HTML manipulation to onadd, so elements are not accidentally duplicated (Christopher Joe)
* 2018-02-13 [c767e472d](https://github.com/silverstripe/silverstripe-framework/commit/c767e472dc494408460ef47c27b8d34475da4ac6) DataObject singleton creation (Jonathon Menz)

View File

@ -0,0 +1,16 @@
# 3.7.3
<!--- Changes below this line will be automatically regenerated -->
## Change Log
### Security
* 2019-01-10 [6bf9542d6](https://github.com/silverstripe/silverstripe-framework/commit/6bf9542d664ac7935691c8055505b7ad8ea26e9a) Patch SQL Injection vulnerability when arrays are assigned to DataObject Fields (Maxime Rainville) - See [ss-2018-021](https://www.silverstripe.org/download/security-releases/ss-2018-021)
### Bugfixes
* 2019-01-30 [8e6e70335](https://github.com/silverstripe/silverstripe-framework/commit/8e6e70335895063c6e6cfd99cfcfb50c6f9c2ad9) Block Manifest of the compatibility class Object and lean on model/fieldtypes/compat/autoload.php (UndefinedOffset)
* 2019-01-23 [746c0679a](https://github.com/silverstripe/silverstripe-framework/commit/746c0679ad1d6ceac03d2adf167367f0ca2259cd) Injector may instantiate prototypes as if they're singletons (fixes #8567) (Loz Calver)
* 2019-01-11 [16a837d6a](https://github.com/silverstripe/silverstripe-framework/commit/16a837d6a093115755cd821c63be1e3be088645b) fix [Warning] on count() with PHP &gt;= 7.2 (lerni)
* 2018-11-15 [86701b8cd](https://github.com/silverstripe/silverstripe-framework/commit/86701b8cd0cd5f8de813a7c9347e7c8055d878f4) Redirect loop with multiple URL tokens (fixes #8607) (Loz Calver)

View File

@ -0,0 +1,24 @@
# 4.0.7
<!--- Changes below this line will be automatically regenerated -->
## Change Log
### Security
* 2018-12-18 [95505db7d](https://github.com/silverstripe/silverstripe-framework/commit/95505db7d666a75f249f65cb1af74dca01d39add) Fix potential SQL vulnerability in non-scalar value hyrdation (Maxime Rainville) - See [ss-2018-021](https://www.silverstripe.org/download/security-releases/ss-2018-021)
### Features and Enhancements
* 2018-11-27 [a8f4f23c6](https://github.com/silverstripe/silverstripe-framework/commit/a8f4f23c660474e965b510ba1bb04bf7a145d5b0) Add visibility updates to `upgrade.yml`. (bergice)
### Bugfixes
* 2019-01-31 [cda9eef](https://github.com/silverstripe/silverstripe-assets/commit/cda9eef992b70fd46377be6d4459260d31ea2215) Fix for issue #212 (Joe Madden)
* 2019-01-29 [f918dcd36](https://github.com/silverstripe/silverstripe-framework/commit/f918dcd36a177adb8abee751d27a809f25a0afab) Escape wildcard characters when matching database name in databaseExists (Guy Marriott)
* 2019-01-28 [dc9d1b9cc](https://github.com/silverstripe/silverstripe-framework/commit/dc9d1b9cc0d3b14929fe2675282980a2750fb4cf) GridFieldPrintButton no longer assumes that children of GridField would implement their own print template (Robbie Averill)
* 2019-01-25 [0797ab7](https://github.com/silverstripe/silverstripe-asset-admin/commit/0797ab7762a4a64f2dc89c754a6bb04216b96fe1) Fix GraphQL FolderTypeCreator::resolveChildrenConnection on PostgreSQL (#901) (Serge Latyntcev)
* 2019-01-24 [d530bc2fb](https://github.com/silverstripe/silverstripe-framework/commit/d530bc2fb6c8c290f1f75f39bc4ec898cc326cf1) fix user feedback when jquery could not be loaded (Benedikt Seidl)
* 2019-01-13 [5c3b95ac](https://github.com/silverstripe/silverstripe-cms/commit/5c3b95ac8977f77e7d95d4da6333ca12b5ef465f) Multibyte URL routing (Ingo Schommer)
* 2019-01-11 [2cb49ea](https://github.com/silverstripe/silverstripe-versioned/commit/2cb49ea79d6babb80289f170dc6102c82f5b0d69) [Warning] on count() with PHP &gt;= 7.2 (Lukas)
* 2018-12-12 [0491ca03c](https://github.com/silverstripe/silverstripe-framework/commit/0491ca03cfcbd81690c54cc00f6234675978ef39) prevent death on urls with querystrings & anchors (mikeyc7m)

View File

@ -0,0 +1,18 @@
# 4.1.5
<!--- Changes below this line will be automatically regenerated -->
## Change Log
### Security
* 2018-12-18 [fd90cf6ce](https://github.com/silverstripe/silverstripe-framework/commit/fd90cf6ceb346142eee6ba620599ab36c2d18cbb) Fix potential SQL vulnerability in non-scalar value hyrdation (Maxime Rainville) - See [ss-2018-021](https://www.silverstripe.org/download/security-releases/ss-2018-021)
s
### Bugfixes
* 2019-01-31 [cda9eef](https://github.com/silverstripe/silverstripe-assets/commit/cda9eef992b70fd46377be6d4459260d31ea2215) Fix for issue #212 (Joe Madden)
* 2019-01-25 [0797ab7](https://github.com/silverstripe/silverstripe-asset-admin/commit/0797ab7762a4a64f2dc89c754a6bb04216b96fe1) Fix GraphQL FolderTypeCreator::resolveChildrenConnection on PostgreSQL (#901) (Serge Latyntcev)
* 2019-01-13 [5c3b95ac](https://github.com/silverstripe/silverstripe-cms/commit/5c3b95ac8977f77e7d95d4da6333ca12b5ef465f) Multibyte URL routing (Ingo Schommer)
* 2019-01-11 [2cb49ea](https://github.com/silverstripe/silverstripe-versioned/commit/2cb49ea79d6babb80289f170dc6102c82f5b0d69) [Warning] on count() with PHP &gt;= 7.2 (Lukas)
* 2018-12-18 [3d841a4](https://github.com/silverstripe/silverstripe-installer/commit/3d841a409c43752a8192afea5ebc48327e2ac3d3) / Behat tests (Serge Latyntcev)
* 2018-12-13 [c4a0d5f0](https://github.com/silverstripe/silverstripe-cms/commit/c4a0d5f0831f0f27022905700a0ffb86cc56aceb) Publish button text merge regression (Aaron Carlino)

View File

@ -204,8 +204,7 @@ SilverStripe\Core\Injector\Injector:
factory: SilverStripe\Core\Cache\CacheFactory factory: SilverStripe\Core\Cache\CacheFactory
constructor: constructor:
namespace: "MyInsensitiveData" namespace: "MyInsensitiveData"
args: disable-container: true
disable-container: true
``` ```
### HTTP Cache Header changes ### HTTP Cache Header changes

View File

@ -0,0 +1,24 @@
# 4.2.4
<!--- Changes below this line will be automatically regenerated -->
## Change Log
### Security
* 2018-12-18 [7cc40fe39](https://github.com/silverstripe/silverstripe-framework/commit/7cc40fe392ed907be8fbfc73579b4888840c39e6) Fix potential SQL vulnerability in non-scalar value hyrdation (Maxime Rainville) - See [ss-2018-021](https://www.silverstripe.org/download/security-releases/ss-2018-021)
### Bugfixes
* 2019-01-31 [cda9eef](https://github.com/silverstripe/silverstripe-assets/commit/cda9eef992b70fd46377be6d4459260d31ea2215) Fix for issue #212 (Joe Madden)
* 2019-01-25 [568be8e29](https://github.com/silverstripe/silverstripe-framework/commit/568be8e29b9a6f9205dd28a823ed5294cc95a590) Misconfiguration for versioned cache segmentation (fixes #8754) (Loz Calver)
* 2019-01-25 [0797ab7](https://github.com/silverstripe/silverstripe-asset-admin/commit/0797ab7762a4a64f2dc89c754a6bb04216b96fe1) Fix GraphQL FolderTypeCreator::resolveChildrenConnection on PostgreSQL (#901) (Serge Latyntcev)
* 2019-01-24 [d00c59c38](https://github.com/silverstripe/silverstripe-framework/commit/d00c59c383dee270c9c1753dd8b64b8cd1b15489) Fix tests not loading fixtures and loading themes in CWP recipe kitchen sink (Robbie Averill)
* 2019-01-17 [9ced2347](https://github.com/silverstripe/silverstripe-cms/commit/9ced23473f2f102de5b6d828d093be1102f8d570) Don't convert datalist to arraylist when filtering pages (Damian Mooyman)
* 2019-01-13 [5c3b95ac](https://github.com/silverstripe/silverstripe-cms/commit/5c3b95ac8977f77e7d95d4da6333ca12b5ef465f) Multibyte URL routing (Ingo Schommer)
* 2019-01-11 [2cb49ea](https://github.com/silverstripe/silverstripe-versioned/commit/2cb49ea79d6babb80289f170dc6102c82f5b0d69) [Warning] on count() with PHP &gt;= 7.2 (Lukas)
* 2019-01-10 [34ac22802](https://github.com/silverstripe/silverstripe-framework/commit/34ac228029a4609d993e8604aad16e72bd52ac9c) Fix issue with assertListEquals() ignoring field getters (Damian Mooyman)
* 2019-01-08 [c43f4e0](https://github.com/silverstripe/silverstripe-graphql/commit/c43f4e0708fd86e8078ef3326d963005d626baf4) Ensure queries are sorted before limiting (Damian Mooyman)
* 2018-12-18 [3d841a4](https://github.com/silverstripe/silverstripe-installer/commit/3d841a409c43752a8192afea5ebc48327e2ac3d3) / Behat tests (Serge Latyntcev)
* 2018-12-13 [c4a0d5f0](https://github.com/silverstripe/silverstripe-cms/commit/c4a0d5f0831f0f27022905700a0ffb86cc56aceb) Publish button text merge regression (Aaron Carlino)
* 2018-09-27 [ce3a1ce9](https://github.com/silverstripe/silverstripe-cms/commit/ce3a1ce91307424f643a15f0c292e16b35f35873) Use correct subsites namespace in SiteTree and test classes (Robbie Averill)

View File

@ -84,7 +84,6 @@ da:
RelationSearch: Relationssøgning RelationSearch: Relationssøgning
ResetFilter: Nulstil ResetFilter: Nulstil
SilverStripe\Forms\GridField\GridFieldDeleteAction: SilverStripe\Forms\GridField\GridFieldDeleteAction:
DELETE_DESCRIPTION: Slet
Delete: Slet Delete: Slet
DeletePermissionsFailure: 'Ingen slette rettigheder' DeletePermissionsFailure: 'Ingen slette rettigheder'
EditPermissionsFailure: 'Ingen rettighed til at fjerne emnet' EditPermissionsFailure: 'Ingen rettighed til at fjerne emnet'
@ -96,23 +95,12 @@ da:
DeletePermissionsFailure: 'Ingen slette rettigheder' DeletePermissionsFailure: 'Ingen slette rettigheder'
Deleted: 'Slet {type} {name}' Deleted: 'Slet {type} {name}'
Save: Gem Save: Gem
SilverStripe\Forms\GridField\GridFieldEditButton_ss:
EDIT: Rediger
SilverStripe\Forms\GridField\GridFieldGroupDeleteAction: SilverStripe\Forms\GridField\GridFieldGroupDeleteAction:
UnlinkSelfFailure: 'Kan ikke fjerne dig selv fra denne gruppe, du vil miste administrator rettigheder' UnlinkSelfFailure: 'Kan ikke fjerne dig selv fra denne gruppe, du vil miste administrator rettigheder'
SilverStripe\Forms\GridField\GridFieldPaginator: SilverStripe\Forms\GridField\GridFieldPaginator:
OF: af OF: af
Page: Side Page: Side
View: Vis View: Vis
SilverStripe\Forms\GridField\GridFieldVersionedState:
ADDEDTODRAFTHELP: 'Elementet er endnu ikke udgivet'
ADDEDTODRAFTSHORT: Kladde
ARCHIVEDPAGEHELP: 'Elementet er fjernet fra kladde og udgivet version'
ARCHIVEDPAGESHORT: Arkiveret
MODIFIEDONDRAFTHELP: 'Elementet har ikke udgivne ændringer'
MODIFIEDONDRAFTSHORT: Ændret
ONLIVEONLYSHORT: 'Kun på udgivet version'
ONLIVEONLYSHORTHELP: 'Elementet er udgivet, men er slette fra kladde'
SilverStripe\Forms\MoneyField: SilverStripe\Forms\MoneyField:
FIELDLABELAMOUNT: Beløb FIELDLABELAMOUNT: Beløb
FIELDLABELCURRENCY: Valuta FIELDLABELCURRENCY: Valuta
@ -331,7 +319,4 @@ da:
LOGOUT: 'Log ud' LOGOUT: 'Log ud'
LOSTPASSWORDHEADER: 'Glemt kodeord' LOSTPASSWORDHEADER: 'Glemt kodeord'
NOTEPAGESECURED: 'Denne side er beskyttet. Indtast dine loginoplysninger herunder for at få adgang.' NOTEPAGESECURED: 'Denne side er beskyttet. Indtast dine loginoplysninger herunder for at få adgang.'
NOTERESETLINKINVALID: '<p>Kodeordets nulstillingslink er ugyldigt eller udløbet.</p><p>Du kan anmode om et nyt link <a href="{link1}">her</a> eller skifte dit kodeord efter du er <a href="{link2}">logget ind</a>.</p>'
NOTERESETPASSWORD: 'Indtast din email adresse, så sender vi dig et link som du kan nulstille dit kodeord med' NOTERESETPASSWORD: 'Indtast din email adresse, så sender vi dig et link som du kan nulstille dit kodeord med'
PASSWORDSENTHEADER: 'Link til nulstilling af kodeord er sendt til ''{email}'''
PASSWORDSENTTEXT: 'Tak for det! Et link til at nulstille kodeordet er sendt til ''{email}'', forudsat at en konto eksisterer med denne email adresse.'

View File

@ -1,10 +1,35 @@
de: de:
SilverStripe\Admin\LeftAndMain:
VersionUnknown: unbekannt
SilverStripe\AssetAdmin\Forms\UploadField:
Dimensions: Dimensionen
EDIT: Bearbeiten
EDITINFO: 'Diese Datei bearbeiten'
REMOVE: Entfernen
SilverStripe\Control\ChangePasswordEmail_ss:
CHANGEPASSWORDTEXT1: 'Sie haben Ihr Passwort geändert für'
CHANGEPASSWORDTEXT3: 'Passwort ändern'
HELLO: Hallo
SilverStripe\Control\Email\ForgotPasswordEmail_ss:
HELLO: Hallo
TEXT1: 'Hier ist Ihr'
TEXT2: 'Link zum Zurücksetzen des Passworts'
TEXT3: für
SilverStripe\Control\RequestProcessor:
INVALID_REQUEST: 'Ungültige Anfrage'
REQUEST_ABORTED: 'Anfrage abgebrochen'
SilverStripe\Core\Manifest\VersionProvider:
VERSIONUNKNOWN: Unbekannt
SilverStripe\Forms\CheckboxField: SilverStripe\Forms\CheckboxField:
NOANSWER: Nein NOANSWER: Nein
YESANSWER: Ja YESANSWER: Ja
SilverStripe\Forms\CheckboxSetField_ss:
NOOPTIONSAVAILABLE: 'Keine Optionen verfügbar'
SilverStripe\Forms\ConfirmedPasswordField: SilverStripe\Forms\ConfirmedPasswordField:
ATLEAST: 'Passwörter müssen mindestens {min} Zeichen lang sein.' ATLEAST: 'Passwörter müssen mindestens {min} Zeichen lang sein.'
BETWEEN: 'Passwörter müssen zwischen {min} und {max} Zeichen lang sein.' BETWEEN: 'Passwörter müssen zwischen {min} und {max} Zeichen lang sein.'
CURRENT_PASSWORD_ERROR: 'Das derzeitige Passwort ist nicht richtig.'
CURRENT_PASSWORD_MISSING: 'Bitte geben Sie Ihr derzeitiges Passwort ein.'
LOGGED_IN_ERROR: 'Sie müssen eingeloggt sein, um Ihr Passwort ändern zu können!' LOGGED_IN_ERROR: 'Sie müssen eingeloggt sein, um Ihr Passwort ändern zu können!'
MAXIMUM: 'Passwörter dürfen maximal {max} Zeichen lang sein.' MAXIMUM: 'Passwörter dürfen maximal {max} Zeichen lang sein.'
SHOWONCLICKTITLE: 'Passwort ändern' SHOWONCLICKTITLE: 'Passwort ändern'
@ -14,12 +39,18 @@ de:
VALIDDATEFORMAT2: 'Bitte geben sie das Datum im korrekten Format ein ({format})' VALIDDATEFORMAT2: 'Bitte geben sie das Datum im korrekten Format ein ({format})'
VALIDDATEMAXDATE: 'Ihr Datum muss vor dem erlaubtem Datum ({date}) liegen oder gleich sein' VALIDDATEMAXDATE: 'Ihr Datum muss vor dem erlaubtem Datum ({date}) liegen oder gleich sein'
VALIDDATEMINDATE: 'Ihr Datum muss nach dem erlaubtem Datum ({date}) liegen oder gleich sein' VALIDDATEMINDATE: 'Ihr Datum muss nach dem erlaubtem Datum ({date}) liegen oder gleich sein'
SilverStripe\Forms\DatetimeField:
VALIDDATEMAXDATETIME: 'Ihr Datum muss vor dem erlaubtem Datum ({datetime}) liegen oder gleich sein'
VALIDDATETIMEFORMAT: 'Bitte geben Sie ein gültiges Datums- und Zeitformat ein ({format})'
VALIDDATETIMEMINDATE: 'Ihr Datum muss nach dem erlaubtem Datum ({datetime}) liegen oder gleich sein'
SilverStripe\Forms\DropdownField: SilverStripe\Forms\DropdownField:
CHOOSE: (Auswahl) CHOOSE: (Auswahl)
CHOOSE_MODEL: '({name} auswählen)' CHOOSE_MODEL: '({name} auswählen)'
SOURCE_VALIDATION: 'Bitte wählen Sie aus der Liste. {value} ist kein gültiger Wert' SOURCE_VALIDATION: 'Bitte wählen Sie aus der Liste. {value} ist kein gültiger Wert'
SilverStripe\Forms\EmailField: SilverStripe\Forms\EmailField:
VALIDATION: 'Bitte geben Sie eine E-Mail-Adresse ein' VALIDATION: 'Bitte geben Sie eine E-Mail-Adresse ein'
SilverStripe\Forms\FileUploadReceiver:
FIELDNOTSET: 'Dateiinformation nicht gefunden'
SilverStripe\Forms\Form: SilverStripe\Forms\Form:
CSRF_EXPIRED_MESSAGE: 'Ihre Sitzung ist abgelaufen. Bitte schicken Sie das Formular erneut ab.' CSRF_EXPIRED_MESSAGE: 'Ihre Sitzung ist abgelaufen. Bitte schicken Sie das Formular erneut ab.'
CSRF_FAILED_MESSAGE: 'Es gab ein technisches Problem. Bitte versuchen Sie es erneut, nachdem sie die vorherige Seite neu geladen haben.' CSRF_FAILED_MESSAGE: 'Es gab ein technisches Problem. Bitte versuchen Sie es erneut, nachdem sie die vorherige Seite neu geladen haben.'
@ -29,10 +60,14 @@ de:
VALIDATOR: Prüfer VALIDATOR: Prüfer
VALIDCURRENCY: 'Bitte geben Sie einen korrekten Betrag ein' VALIDCURRENCY: 'Bitte geben Sie einen korrekten Betrag ein'
SilverStripe\Forms\FormField: SilverStripe\Forms\FormField:
EXAMPLE: 'z.B. {format}'
NONE: keine NONE: keine
SilverStripe\Forms\FormScaffolder:
TABMAIN: Hauptteil
SilverStripe\Forms\GridField\GridField: SilverStripe\Forms\GridField\GridField:
Add: '{name} hinzufügen' Add: '{name} hinzufügen'
CSVEXPORT: 'Als CSV-Datei exportieren' CSVEXPORT: 'Als CSV-Datei exportieren'
CSVIMPORT: 'CSV importieren'
Filter: Filter Filter: Filter
FilterBy: 'Filtern nach' FilterBy: 'Filtern nach'
Find: Suchen Find: Suchen
@ -58,9 +93,18 @@ de:
DeletePermissionsFailure: 'Keine Berechtigungen zum löschen' DeletePermissionsFailure: 'Keine Berechtigungen zum löschen'
Deleted: 'Gelöscht {type} {name}' Deleted: 'Gelöscht {type} {name}'
Save: Speichern Save: Speichern
SilverStripe\Forms\GridField\GridFieldEditButton:
EDIT: Bearbeiten
SilverStripe\Forms\GridField\GridFieldPaginator:
OF: von
Page: Seite
View: Anzeigen
SilverStripe\Forms\MoneyField: SilverStripe\Forms\MoneyField:
FIELDLABELAMOUNT: Betrag FIELDLABELAMOUNT: Betrag
FIELDLABELCURRENCY: Währung FIELDLABELCURRENCY: Währung
INVALID_CURRENCY: 'Währung {currency} ist nicht in der Liste der erlaubten Währungen'
SilverStripe\Forms\MultiSelectField:
SOURCE_VALIDATION: 'Bitte wählen Sie aus der Liste. {value} ist ungültig.'
SilverStripe\Forms\NullableField: SilverStripe\Forms\NullableField:
IsNullLabel: 'ist NULL' IsNullLabel: 'ist NULL'
SilverStripe\Forms\NumericField: SilverStripe\Forms\NumericField:
@ -69,19 +113,45 @@ de:
VALIDATEFORMAT: 'Bitte geben Sie die Uhrzeit im korrekten Format ein ({format})' VALIDATEFORMAT: 'Bitte geben Sie die Uhrzeit im korrekten Format ein ({format})'
SilverStripe\ORM\DataObject: SilverStripe\ORM\DataObject:
PLURALNAME: DatenObjekte PLURALNAME: DatenObjekte
PLURALS:
one: 'Ein DatenObjekt'
other: '{count} DatenObjekte'
SINGULARNAME: DatenObjekt SINGULARNAME: DatenObjekt
SilverStripe\ORM\FieldType\DBBoolean: SilverStripe\ORM\FieldType\DBBoolean:
ANY: alle ANY: alle
NOANSWER: Nein NOANSWER: Nein
YESANSWER: Ja YESANSWER: Ja
SilverStripe\ORM\FieldType\DBDate: SilverStripe\ORM\FieldType\DBDate:
DAYS_SHORT_PLURALS:
one: '{count} Tag'
other: '{count} Tage'
HOURS_SHORT_PLURALS:
one: '{count} Stunde'
other: '{count} Stunden'
LessThanMinuteAgo: 'weniger als eine Minute' LessThanMinuteAgo: 'weniger als eine Minute'
MINUTES_SHORT_PLURALS:
one: '{count} Minute'
other: '{count} Minuten'
MONTHS_SHORT_PLURALS:
one: '{count} Monat'
other: '{count} Monate'
SECONDS_SHORT_PLURALS:
one: '{count} Sekunde'
other: '{count} Sekunden'
TIMEDIFFAGO: 'vor {difference}' TIMEDIFFAGO: 'vor {difference}'
TIMEDIFFIN: 'in {difference}' TIMEDIFFIN: 'in {difference}'
YEARS_SHORT_PLURALS:
one: '{count} Jahr'
other: '{count} Jahre'
SilverStripe\ORM\FieldType\DBEnum: SilverStripe\ORM\FieldType\DBEnum:
ANY: alle ANY: alle
SilverStripe\ORM\Hierarchy:
LIMITED_TITLE: 'Zu viele Kindelemente ({count})'
SilverStripe\ORM\Hierarchy\Hierarchy: SilverStripe\ORM\Hierarchy\Hierarchy:
InfiniteLoopNotAllowed: 'Es wurde eine Endlosschleife innerhalb der "{type}"-Hierarchie gefunden. Bitte ändern Sie die übergeordnete Seite, um den Fehler zu beheben' InfiniteLoopNotAllowed: 'Es wurde eine Endlosschleife innerhalb der "{type}"-Hierarchie gefunden. Bitte ändern Sie die übergeordnete Seite, um den Fehler zu beheben'
LIMITED_TITLE: 'Zu viele Kindelemente ({count})'
SilverStripe\ORM\ValidationException:
DEFAULT_ERROR: Validierungsfehler
SilverStripe\Security\BasicAuth: SilverStripe\Security\BasicAuth:
ENTERINFO: 'Bitte geben Sie einen Nutzernamen und ein Passwort ein' ENTERINFO: 'Bitte geben Sie einen Nutzernamen und ein Passwort ein'
ERRORNOTADMIN: 'Dieser Nutzer ist kein Administrator' ERRORNOTADMIN: 'Dieser Nutzer ist kein Administrator'
@ -90,28 +160,46 @@ de:
PASSWORDEXPIRED: '<p>Ihr Passwort ist abgelaufen. <a target="_top" href="{link}">Bitte wählen Sie ein neues Passwort.</a></p>' PASSWORDEXPIRED: '<p>Ihr Passwort ist abgelaufen. <a target="_top" href="{link}">Bitte wählen Sie ein neues Passwort.</a></p>'
SilverStripe\Security\CMSSecurity: SilverStripe\Security\CMSSecurity:
INVALIDUSER: '<p>Ungültiger Benutzer. <a target="_top" href="{link}">Bitte melden Sie sich hier an</a> um fortzufahren.</p>' INVALIDUSER: '<p>Ungültiger Benutzer. <a target="_top" href="{link}">Bitte melden Sie sich hier an</a> um fortzufahren.</p>'
LOGIN_MESSAGE: '<p>Ihre Sitzung ist wegen Inaktivität abgelaufen.</p>'
SUCCESS: Erfolg SUCCESS: Erfolg
SUCCESSCONTENT: '<p>Login erfolgreich. Falls Sie nicht automatisch weitergeleitet werden, bitte <a target="_top" href="{link}">hier klicken</a></p>' SUCCESSCONTENT: '<p>Login erfolgreich. Falls Sie nicht automatisch weitergeleitet werden, bitte <a target="_top" href="{link}">hier klicken</a></p>'
SUCCESS_TITLE: 'Login erfolgreich'
SilverStripe\Security\DefaultAdminService:
DefaultAdminFirstname: Standardadmin
SilverStripe\Security\Group: SilverStripe\Security\Group:
AddRole: 'Rolle zur Gruppe hinzufügen' AddRole: 'Rolle zur Gruppe hinzufügen'
Code: 'Gruppen Code' Code: 'Gruppen Code'
DefaultGroupTitleAdministrators: Administratoren DefaultGroupTitleAdministrators: Administratoren
DefaultGroupTitleContentAuthors: Inhaltsautoren DefaultGroupTitleContentAuthors: Inhaltsautoren
Description: Beschreibung Description: Beschreibung
GROUPNAME: Gruppenname
GroupReminder: 'Diese Gruppe übernimmt automatisch die Rollen der Elterngruppe' GroupReminder: 'Diese Gruppe übernimmt automatisch die Rollen der Elterngruppe'
HierarchyPermsError: 'Kann Berechtigungen der Eltern-Gruppe "{group}" nicht hinzufügen (erfordert Administratorrechte)' HierarchyPermsError: 'Kann Berechtigungen der Eltern-Gruppe "{group}" nicht hinzufügen (erfordert Administratorrechte)'
Locked: 'Gesperrt?' Locked: 'Gesperrt?'
MEMBERS: Mitglieder
NEWGROUP: 'Neue Gruppe'
NoRoles: 'Keine Rollen gefunden' NoRoles: 'Keine Rollen gefunden'
PERMISSIONS: Berechtigungen
PLURALNAME: Gruppen PLURALNAME: Gruppen
PLURALS:
one: 'Eine Gruppe'
other: '{count} Gruppen'
Parent: Elterngruppe Parent: Elterngruppe
ROLES: Rollen
ROLESDESCRIPTION: 'Hier können Sie der Gruppe Rollen zuweisen.<br />Rollen sind logische Gruppierungen von Berechtigungen.'
RolesAddEditLink: 'Rollen hinzufügen/editieren' RolesAddEditLink: 'Rollen hinzufügen/editieren'
SINGULARNAME: Gruppe SINGULARNAME: Gruppe
Sort: Sortierreihenfolge Sort: Sortierreihenfolge
has_many_Permissions: Berechtigungen has_many_Permissions: Berechtigungen
many_many_Members: Mitglieder many_many_Members: Mitglieder
SilverStripe\Security\LoginAttempt: SilverStripe\Security\LoginAttempt:
Email: E-Mail-Adresse
EmailHashed: 'E-Mail-Adresse (gehashed)'
IP: IP-Adresse IP: IP-Adresse
PLURALNAME: Loginversuche PLURALNAME: Loginversuche
PLURALS:
one: 'Ein Loginversuch'
other: '{count} Loginversuche'
SINGULARNAME: Loginversuch SINGULARNAME: Loginversuch
Status: Status Status: Status
SilverStripe\Security\Member: SilverStripe\Security\Member:
@ -119,6 +207,7 @@ de:
BUTTONCHANGEPASSWORD: 'Passwort ändern' BUTTONCHANGEPASSWORD: 'Passwort ändern'
BUTTONLOGIN: Einloggen BUTTONLOGIN: Einloggen
BUTTONLOGINOTHER: 'Als jemand anderes einloggen' BUTTONLOGINOTHER: 'Als jemand anderes einloggen'
BUTTONLOGOUT: Abmelden
BUTTONLOSTPASSWORD: 'Ich habe mein Passwort vergessen' BUTTONLOSTPASSWORD: 'Ich habe mein Passwort vergessen'
CONFIRMNEWPASSWORD: 'Neues Passwort bestätigen' CONFIRMNEWPASSWORD: 'Neues Passwort bestätigen'
CONFIRMPASSWORD: 'Passwort bestätigen' CONFIRMPASSWORD: 'Passwort bestätigen'
@ -139,6 +228,10 @@ de:
PASSWORD: Passwort PASSWORD: Passwort
PASSWORDEXPIRED: 'Ihr Passwort ist abgelaufen. Bitte wählen Sie ein neues Passwort.' PASSWORDEXPIRED: 'Ihr Passwort ist abgelaufen. Bitte wählen Sie ein neues Passwort.'
PLURALNAME: Benutzer PLURALNAME: Benutzer
PLURALS:
one: 'Ein Mitglied'
other: '{count} Mitglieder'
REMEMBERME: 'Für das nächste Mal merken? (für {count} Tage auf diesem Gerät)'
SINGULARNAME: Benutzer SINGULARNAME: Benutzer
SUBJECTPASSWORDCHANGED: 'Ihr Passwort wurde geändert' SUBJECTPASSWORDCHANGED: 'Ihr Passwort wurde geändert'
SUBJECTPASSWORDRESET: 'Ihr Link zur Passwortrücksetzung' SUBJECTPASSWORDRESET: 'Ihr Link zur Passwortrücksetzung'
@ -151,8 +244,21 @@ de:
db_LockedOutUntil: 'Gesperrt bis' db_LockedOutUntil: 'Gesperrt bis'
db_Password: Passwort db_Password: Passwort
db_PasswordExpiry: 'Ablaufdatum des Passworts' db_PasswordExpiry: 'Ablaufdatum des Passworts'
SilverStripe\Security\MemberAuthenticator\CMSMemberLoginForm:
AUTHENTICATORNAME: 'CMS Benutzer Login Formular'
BUTTONFORGOTPASSWORD: 'Passwort vergessen'
BUTTONLOGIN: 'Wieder einloggen'
BUTTONLOGOUT: Abmelden
SilverStripe\Security\MemberAuthenticator\MemberAuthenticator:
ERRORWRONGCRED: 'Ihre Eingaben scheinen nicht richtig zu sein. Bitte versuchen Sie es erneut.'
NoPassword: 'Dieser Benutzer hat kein Passwort.'
SilverStripe\Security\MemberAuthenticator\MemberLoginForm:
AUTHENTICATORNAME: 'E-Mail & Passwort'
SilverStripe\Security\MemberPassword: SilverStripe\Security\MemberPassword:
PLURALNAME: Benutzerpasswörter PLURALNAME: Benutzerpasswörter
PLURALS:
one: 'Ein Benutzerpasswort'
other: '{count} Benutzerpasswörter'
SINGULARNAME: Benutzerpasswort SINGULARNAME: Benutzerpasswort
SilverStripe\Security\PasswordValidator: SilverStripe\Security\PasswordValidator:
LOWCHARSTRENGTH: 'Bitte erhöhen Sie die Sicherheit des Passworts, indem Sie auch einige der folgenden Zeichen verwenden: {chars}' LOWCHARSTRENGTH: 'Bitte erhöhen Sie die Sicherheit des Passworts, indem Sie auch einige der folgenden Zeichen verwenden: {chars}'
@ -160,10 +266,15 @@ de:
TOOSHORT: 'Das Passwort ist zu kurz, es muss mindestens {minimum} Zeichen lang sein' TOOSHORT: 'Das Passwort ist zu kurz, es muss mindestens {minimum} Zeichen lang sein'
SilverStripe\Security\Permission: SilverStripe\Security\Permission:
AdminGroup: Administrator AdminGroup: Administrator
CMS_ACCESS_CATEGORY: 'CMS Zugriff'
CONTENT_CATEGORY: Inhaltsberechtigungen CONTENT_CATEGORY: Inhaltsberechtigungen
FULLADMINRIGHTS: 'Unbeschränkte Administratorenrechte' FULLADMINRIGHTS: 'Unbeschränkte Administratorenrechte'
FULLADMINRIGHTS_HELP: 'Schließt alle anderen verfügbaren Berechtigungen ein' FULLADMINRIGHTS_HELP: 'Schließt alle anderen verfügbaren Berechtigungen ein'
PERMISSIONS_CATEGORY: 'Rollen und Zugriffsberechtigungen'
PLURALNAME: Berechtigungen PLURALNAME: Berechtigungen
PLURALS:
one: 'Eine Berechtigung'
other: '{count} Berechtigungen'
SINGULARNAME: Zugriffsberechtigung SINGULARNAME: Zugriffsberechtigung
UserPermissionsIntro: 'Durch das Hinzufügen von Benutzern zu Gruppen, werden dessen Rechte angepasst. Mehr Informationen über die Berechtigungen der einzelnen Gruppen erhältst Du im Abschnitt Gruppen.' UserPermissionsIntro: 'Durch das Hinzufügen von Benutzern zu Gruppen, werden dessen Rechte angepasst. Mehr Informationen über die Berechtigungen der einzelnen Gruppen erhältst Du im Abschnitt Gruppen.'
SilverStripe\Security\PermissionCheckboxSetField: SilverStripe\Security\PermissionCheckboxSetField:
@ -174,12 +285,24 @@ de:
SilverStripe\Security\PermissionRole: SilverStripe\Security\PermissionRole:
OnlyAdminCanApply: 'Nur Adminstratoren können beitreten' OnlyAdminCanApply: 'Nur Adminstratoren können beitreten'
PLURALNAME: Rollen PLURALNAME: Rollen
PLURALS:
one: 'Eine Rolle'
other: '{count} Rollen'
SINGULARNAME: Rolle SINGULARNAME: Rolle
Title: Titel Title: Titel
SilverStripe\Security\PermissionRoleCode: SilverStripe\Security\PermissionRoleCode:
PLURALNAME: Berechtigungsrollencodes PLURALNAME: Berechtigungsrollencodes
PLURALS:
one: 'Ein Berechtigungsrollencode'
other: '{count} Berechtigungsrollencodes'
PermsError: 'Kann Berechtigungen dem Code "{code}" nicht hinzufügen (erfordert Administratorrechte)' PermsError: 'Kann Berechtigungen dem Code "{code}" nicht hinzufügen (erfordert Administratorrechte)'
SINGULARNAME: Berechtigungsrollencode SINGULARNAME: Berechtigungsrollencode
SilverStripe\Security\RememberLoginHash:
PLURALNAME: 'Login Hashes'
PLURALS:
one: 'Ein Login Hash'
other: '{count} Login Hashes'
SINGULARNAME: 'Login Hash'
SilverStripe\Security\Security: SilverStripe\Security\Security:
ALREADYLOGGEDIN: 'Sie haben keinen Zugriff auf diese Seite. Wenn Sie ein anderes Konto besitzen, mit dem Sie auf diese Seite zugreifen können, melden Sie sich bitte unten an.' ALREADYLOGGEDIN: 'Sie haben keinen Zugriff auf diese Seite. Wenn Sie ein anderes Konto besitzen, mit dem Sie auf diese Seite zugreifen können, melden Sie sich bitte unten an.'
BUTTONSEND: 'Senden Sie mir den Link zur Passwortrücksetzung' BUTTONSEND: 'Senden Sie mir den Link zur Passwortrücksetzung'
@ -188,6 +311,10 @@ de:
ENTERNEWPASSWORD: 'Bitte geben Sie ein neues Passwort ein' ENTERNEWPASSWORD: 'Bitte geben Sie ein neues Passwort ein'
ERRORPASSWORDPERMISSION: 'Sie müssen eingeloggt sein, um Ihr Passwort ändern zu können!' ERRORPASSWORDPERMISSION: 'Sie müssen eingeloggt sein, um Ihr Passwort ändern zu können!'
LOGIN: Anmelden LOGIN: Anmelden
LOGOUT: Abmelden
LOSTPASSWORDHEADER: 'Passwort vergessen' LOSTPASSWORDHEADER: 'Passwort vergessen'
NOTEPAGESECURED: 'Diese Seite ist geschützt. Bitte melden Sie sich an und Sie werden sofort weitergeleitet.' NOTEPAGESECURED: 'Diese Seite ist geschützt. Bitte melden Sie sich an und Sie werden sofort weitergeleitet.'
NOTERESETLINKINVALID: '<p>Der Link zum Zurücksetzen des Passworts ist entweder nicht korrekt oder abgelaufen</p><p>Sie können <a href="{link1}">einen neuen Link anfordern</a> oder Ihr Passwort nach dem <a href="{link2}">einloggen</a> ändern.</p>'
NOTERESETPASSWORD: 'Geben Sie Ihre E-Mail-Adresse ein und wir werden Ihnen einen Link zuschicken, mit dem Sie Ihr Passwort zurücksetzen können.' NOTERESETPASSWORD: 'Geben Sie Ihre E-Mail-Adresse ein und wir werden Ihnen einen Link zuschicken, mit dem Sie Ihr Passwort zurücksetzen können.'
PASSWORDRESETSENTHEADER: 'Der Link zum Zurücksetzen des Passworts wurde gesendet'
PASSWORDRESETSENTTEXT: 'Vielen Dank! Wenn ein Account zu der E-Mail Adresse existiert, wurde eine E-Mail mit dem Link zum Zurücksetzen des Passworts verschickt.'

View File

@ -84,7 +84,6 @@ eo:
RelationSearch: 'Serĉi rilatojn' RelationSearch: 'Serĉi rilatojn'
ResetFilter: Restartigi ResetFilter: Restartigi
SilverStripe\Forms\GridField\GridFieldDeleteAction: SilverStripe\Forms\GridField\GridFieldDeleteAction:
DELETE_DESCRIPTION: Forigi
Delete: Forigi Delete: Forigi
DeletePermissionsFailure: 'Mankas permeso forigi' DeletePermissionsFailure: 'Mankas permeso forigi'
EditPermissionsFailure: 'Mankas permeso malligi rikordon' EditPermissionsFailure: 'Mankas permeso malligi rikordon'
@ -96,23 +95,12 @@ eo:
DeletePermissionsFailure: 'Mankas permeso forigi' DeletePermissionsFailure: 'Mankas permeso forigi'
Deleted: 'Forigita {type} {name}' Deleted: 'Forigita {type} {name}'
Save: Konservi Save: Konservi
SilverStripe\Forms\GridField\GridFieldEditButton_ss:
EDIT: Redakti
SilverStripe\Forms\GridField\GridFieldGroupDeleteAction: SilverStripe\Forms\GridField\GridFieldGroupDeleteAction:
UnlinkSelfFailure: 'Ne povas forigi vin el ĉi tiu grupo; vi perdus administrajn rajtojn' UnlinkSelfFailure: 'Ne povas forigi vin el ĉi tiu grupo; vi perdus administrajn rajtojn'
SilverStripe\Forms\GridField\GridFieldPaginator: SilverStripe\Forms\GridField\GridFieldPaginator:
OF: de OF: de
Page: Paĝo Page: Paĝo
View: Vido View: Vido
SilverStripe\Forms\GridField\GridFieldVersionedState:
ADDEDTODRAFTHELP: 'Ero ankoraŭ estas ne publikigita'
ADDEDTODRAFTSHORT: Malneto
ARCHIVEDPAGEHELP: 'Ero estas forigita el malneta kaj publika'
ARCHIVEDPAGESHORT: Enarkivigita
MODIFIEDONDRAFTHELP: 'Ero enhavas nepublikigitajn ŝanĝojn'
MODIFIEDONDRAFTSHORT: Ŝanĝita
ONLIVEONLYSHORT: 'Nur ĉe publika'
ONLIVEONLYSHORTHELP: 'Ero estas publikigita, sed ĝi estas forigita el malneto'
SilverStripe\Forms\MoneyField: SilverStripe\Forms\MoneyField:
FIELDLABELAMOUNT: Kvanto FIELDLABELAMOUNT: Kvanto
FIELDLABELCURRENCY: Kurzo FIELDLABELCURRENCY: Kurzo
@ -331,7 +319,4 @@ eo:
LOGOUT: Elsaluti LOGOUT: Elsaluti
LOSTPASSWORDHEADER: 'Perdis pasvorton' LOSTPASSWORDHEADER: 'Perdis pasvorton'
NOTEPAGESECURED: 'Tiu paĝo estas sekurigita. Enigu viajn akreditaĵojn sube kaj vi aliros pluen.' NOTEPAGESECURED: 'Tiu paĝo estas sekurigita. Enigu viajn akreditaĵojn sube kaj vi aliros pluen.'
NOTERESETLINKINVALID: '<p>La pasvorta reagorda ligilo estas malvalida aŭ finiĝis.</p><p>Vi povas peti novan <a href="{link1}">ĉi tie</a> aŭ ŝanĝi vian pasvorton post <a href="{link2}">vi ensalutis</a>.</p>'
NOTERESETPASSWORD: 'Enigu vian retpoŝtan adreson kaj ni sendos al vi ligilon per kiu vi povas reagordi vian pasvorton' NOTERESETPASSWORD: 'Enigu vian retpoŝtan adreson kaj ni sendos al vi ligilon per kiu vi povas reagordi vian pasvorton'
PASSWORDSENTHEADER: 'Pasvorta reagorda ligilo sendiĝis al ''{email}'''
PASSWORDSENTTEXT: 'Dankon! Reagordita ligilo sendiĝis al ''{email}'', kondiĉe ke konto ekzistas por tiu retadreso.'

View File

@ -84,7 +84,6 @@ nl:
RelationSearch: 'Zoek relatie' RelationSearch: 'Zoek relatie'
ResetFilter: Resetten ResetFilter: Resetten
SilverStripe\Forms\GridField\GridFieldDeleteAction: SilverStripe\Forms\GridField\GridFieldDeleteAction:
DELETE_DESCRIPTION: Verwijder
Delete: Verwijder Delete: Verwijder
DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
EditPermissionsFailure: 'Geen toelating om te ontkoppelen' EditPermissionsFailure: 'Geen toelating om te ontkoppelen'
@ -96,23 +95,12 @@ nl:
DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen' DeletePermissionsFailure: 'Onvoldoende rechten om te verwijderen'
Deleted: '{type} {name} verwijderd' Deleted: '{type} {name} verwijderd'
Save: Opslaan Save: Opslaan
SilverStripe\Forms\GridField\GridFieldEditButton_ss:
EDIT: Edit
SilverStripe\Forms\GridField\GridFieldGroupDeleteAction: SilverStripe\Forms\GridField\GridFieldGroupDeleteAction:
UnlinkSelfFailure: 'U kunt uzelf niet verwijderen van deze groep, omdat u dan geen admin-rechten meer heeft.' UnlinkSelfFailure: 'U kunt uzelf niet verwijderen van deze groep, omdat u dan geen admin-rechten meer heeft.'
SilverStripe\Forms\GridField\GridFieldPaginator: SilverStripe\Forms\GridField\GridFieldPaginator:
OF: van OF: van
Page: Pagina Page: Pagina
View: Bekijk View: Bekijk
SilverStripe\Forms\GridField\GridFieldVersionedState:
ADDEDTODRAFTHELP: 'Item is nog niet gepubliceerd'
ADDEDTODRAFTSHORT: Concept
ARCHIVEDPAGEHELP: 'Het item is verwijderd van de concept- en de live site'
ARCHIVEDPAGESHORT: Gearchiveerd
MODIFIEDONDRAFTHELP: 'Item heeft wijzigingen die nog niet gepubliceerd zijn'
MODIFIEDONDRAFTSHORT: Aangepast
ONLIVEONLYSHORT: 'Alleen op de live site'
ONLIVEONLYSHORTHELP: 'Item is gepubliceerd, maar verwijderd van de concept site'
SilverStripe\Forms\MoneyField: SilverStripe\Forms\MoneyField:
FIELDLABELAMOUNT: Aantal FIELDLABELAMOUNT: Aantal
FIELDLABELCURRENCY: Munteenheid FIELDLABELCURRENCY: Munteenheid
@ -174,8 +162,8 @@ nl:
PASSWORDEXPIRED: '<p>Uw wachtwoord is verlopen. <a target="_top" href="{link}">Kies een nieuw wachtwoord.</a></p>' PASSWORDEXPIRED: '<p>Uw wachtwoord is verlopen. <a target="_top" href="{link}">Kies een nieuw wachtwoord.</a></p>'
SilverStripe\Security\CMSSecurity: SilverStripe\Security\CMSSecurity:
INVALIDUSER: '<p>Ongeldige gebruiker <a target="_top" href="{link}">Log hier opnieuw in</a> om verder te gaan.</p>' INVALIDUSER: '<p>Ongeldige gebruiker <a target="_top" href="{link}">Log hier opnieuw in</a> om verder te gaan.</p>'
LOGIN_MESSAGE: 'Sessie is verlopen' LOGIN_MESSAGE: '<p>De browsersessie is verlopen wegens inactiviteit</p>'
LOGIN_TITLE: '<p>U kunt verder met wat u aan het doen was, door opnieuw in te loggen.</p>' LOGIN_TITLE: 'Log opnieuw in om verder te gaan.'
SUCCESS: Succes SUCCESS: Succes
SUCCESSCONTENT: '<p>U bent ingelogd. <a target="_top" href="{link}">Klik hier</a> als u niet automatisch wordt doorgestuurd.</p>' SUCCESSCONTENT: '<p>U bent ingelogd. <a target="_top" href="{link}">Klik hier</a> als u niet automatisch wordt doorgestuurd.</p>'
SUCCESS_TITLE: 'Inloggen is gelukt' SUCCESS_TITLE: 'Inloggen is gelukt'
@ -331,7 +319,4 @@ nl:
LOGOUT: Uitloggen LOGOUT: Uitloggen
LOSTPASSWORDHEADER: 'Wachtwoord vergeten' LOSTPASSWORDHEADER: 'Wachtwoord vergeten'
NOTEPAGESECURED: 'Deze pagina is beveiligd. Voer uw gegevens in en u wordt automatisch doorgestuurd.' NOTEPAGESECURED: 'Deze pagina is beveiligd. Voer uw gegevens in en u wordt automatisch doorgestuurd.'
NOTERESETLINKINVALID: '<p>De link om uw wachtwoord te kunnen wijzigen is niet meer geldig.</p><p>U kunt <a href="{link1}">een nieuwe link aanvragen</a> of uw wachtwoord aanpassen door <a href="{link2}">in te loggen</a>.</p>'
NOTERESETPASSWORD: 'Voer uw e-mailadres in en we sturen een link waarmee u een nieuw wachtwoord kunt instellen.' NOTERESETPASSWORD: 'Voer uw e-mailadres in en we sturen een link waarmee u een nieuw wachtwoord kunt instellen.'
PASSWORDSENTHEADER: 'Wachtwoord herstel link verzonden naar {email}'
PASSWORDSENTTEXT: 'Bedankt! Er is een link verstuurd naar {email} om uw wachtwoord opnieuw in te stellen, in de veronderstelling dat er een account bestaat voor dit e-mailadres.'

View File

@ -64,7 +64,7 @@ class ViewableDataContains extends PHPUnit_Framework_Constraint implements TestO
$success = true; $success = true;
foreach ($this->match as $fieldName => $value) { foreach ($this->match as $fieldName => $value) {
if ($other->getField($fieldName) != $value) { if ($other->$fieldName != $value) {
$success = false; $success = false;
break; break;
} }

View File

@ -611,7 +611,7 @@ TEXT;
<li id="ModRewriteResult">Testing...</li> <li id="ModRewriteResult">Testing...</li>
<script> <script>
if (typeof $ == 'undefined') { if (typeof $ == 'undefined') {
document.getElemenyById('ModeRewriteResult').innerHTML = "I can't run jQuery ajax to set rewriting; I will redirect you to the homepage to see if everything is working."; document.getElementById('ModeRewriteResult').innerHTML = "I can't run jQuery ajax to set rewriting; I will redirect you to the homepage to see if everything is working.";
setTimeout(function() { setTimeout(function() {
window.location = "$destinationURL"; window.location = "$destinationURL";
}, 10000); }, 10000);

View File

@ -133,7 +133,10 @@ class GridFieldPrintButton implements GridField_HTMLProvider, GridField_ActionPr
$this->extend('updatePrintData', $data); $this->extend('updatePrintData', $data);
if ($data) { if ($data) {
return $data->renderWith(get_class($gridField) . "_print"); return $data->renderWith([
get_class($gridField) . '_print',
GridField::class . '_print',
]);
} }
return null; return null;

View File

@ -220,7 +220,7 @@ class MySQLSchemaManager extends DBSchemaManager
public function databaseExists($name) public function databaseExists($name)
{ {
// MySQLi doesn't like parameterised queries for some queries // MySQLi doesn't like parameterised queries for some queries
$sqlName = $this->database->quoteString($name); $sqlName = addcslashes($this->database->quoteString($name), '%_');
return !!($this->query("SHOW DATABASES LIKE $sqlName")->value()); return !!($this->query("SHOW DATABASES LIKE $sqlName")->value());
} }

View File

@ -476,7 +476,7 @@ class ShortcodeParser
if ($tags) { if ($tags) {
$node->nodeValue = $this->replaceTagsWithText( $node->nodeValue = $this->replaceTagsWithText(
$node->nodeValue, htmlspecialchars($node->nodeValue),
$tags, $tags,
function ($idx, $tag) use ($parser, $extra) { function ($idx, $tag) use ($parser, $extra) {
return $parser->getShortcodeReplacementText($tag, $extra, false); return $parser->getShortcodeReplacementText($tag, $extra, false);

View File

@ -4,6 +4,7 @@ namespace SilverStripe\Dev\Tests;
use SilverStripe\Dev\Constraint\ViewableDataContains; use SilverStripe\Dev\Constraint\ViewableDataContains;
use SilverStripe\Dev\SapphireTest; use SilverStripe\Dev\SapphireTest;
use SilverStripe\Dev\Tests\ViewableDataContainsTest\TestObject;
use SilverStripe\Security\Member; use SilverStripe\Security\Member;
use SilverStripe\View\ArrayData; use SilverStripe\View\ArrayData;
@ -100,4 +101,14 @@ class ViewableDataContainsTest extends SapphireTest
$this->assertFalse($constraint->evaluate($item, '', true)); $this->assertFalse($constraint->evaluate($item, '', true));
} }
public function testFieldAccess()
{
$data = new TestObject(['name' => 'Damian']);
$constraint = new ViewableDataContains(['name' => 'Damian', 'Something' => 'something']);
$this->assertTrue($constraint->evaluate($data, '', true));
$constraint = new ViewableDataContains(['name' => 'Damian', 'Something' => 'notthing']);
$this->assertFalse($constraint->evaluate($data, '', true));
}
} }

View File

@ -0,0 +1,31 @@
<?php
namespace SilverStripe\Dev\Tests\ViewableDataContainsTest;
use SilverStripe\Dev\TestOnly;
use SilverStripe\View\ViewableData;
class TestObject extends ViewableData implements TestOnly
{
protected $data = null;
public function __construct($data)
{
$this->data = $data;
}
public function hasField($name)
{
return isset($this->data[$name]);
}
public function getField($name)
{
return isset($this->data[$name]) ?: null;
}
public function getSomething()
{
return 'something';
}
}

View File

@ -311,6 +311,15 @@ class ShortcodeParserTest extends SapphireTest
$this->assertEquals($this->extra['element']->tagName, 'a'); $this->assertEquals($this->extra['element']->tagName, 'a');
} }
public function testShortcodeWithAnchorAndQuerystring()
{
$result = $this->parser->parse('<a href="[test_shortcode]?my-string=this&thing=2#my-anchor">Link</a>');
$this->assertContains('my-string=this', $result);
$this->assertContains('thing=2', $result);
$this->assertContains('my-anchor', $result);
}
public function testNoParseAttemptIfNoCode() public function testNoParseAttemptIfNoCode()
{ {
$stub = $this->getMockBuilder(ShortcodeParser::class)->setMethods(array('replaceElementTagsWithMarkers')) $stub = $this->getMockBuilder(ShortcodeParser::class)->setMethods(array('replaceElementTagsWithMarkers'))