From 47618093c09a1b173bc5aace6efe6424748e7bf5 Mon Sep 17 00:00:00 2001 From: Awilum Date: Tue, 11 Aug 2020 20:22:23 +0300 Subject: [PATCH] fix(entries): fix wrong Implementation of Slug Field for Entries #452 - add new field `id` BREAKING CHANGES use field `id` to get entry path instead of `slug` field --- .../app/Foundation/Entries/Fields/IdField.php | 14 ++++++++++++++ .../app/Foundation/Entries/Fields/SlugField.php | 3 ++- src/flextype/settings.yaml | 4 +++- 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 src/flextype/app/Foundation/Entries/Fields/IdField.php diff --git a/src/flextype/app/Foundation/Entries/Fields/IdField.php b/src/flextype/app/Foundation/Entries/Fields/IdField.php new file mode 100644 index 00000000..ad5ef9a7 --- /dev/null +++ b/src/flextype/app/Foundation/Entries/Fields/IdField.php @@ -0,0 +1,14 @@ +registry->get('flextype.settings.entries.fields.id.enabled')) { + $flextype->emitter->addListener('onEntryAfterInitialized', function () use ($flextype) : void { + $flextype->entries->entry['id'] = isset($flextype->entries->entry['id']) ? (string) $flextype->entries->entry['id'] : (string) ltrim(rtrim($flextype->entries->entry_path, '/'), '/'); + }); +} diff --git a/src/flextype/app/Foundation/Entries/Fields/SlugField.php b/src/flextype/app/Foundation/Entries/Fields/SlugField.php index 0f2f6bb1..c10a09c0 100644 --- a/src/flextype/app/Foundation/Entries/Fields/SlugField.php +++ b/src/flextype/app/Foundation/Entries/Fields/SlugField.php @@ -9,6 +9,7 @@ declare(strict_types=1); if ($flextype->registry->get('flextype.settings.entries.fields.slug.enabled')) { $flextype->emitter->addListener('onEntryAfterInitialized', function () use ($flextype) : void { - $flextype->entries->entry['slug'] = isset($flextype->entries->entry['slug']) ? (string) $flextype->entries->entry['slug'] : (string) ltrim(rtrim($flextype->entries->entry_path, '/'), '/'); + $parts = explode('/', ltrim(rtrim($flextype->entries->entry_path, '/'), '/')); + $flextype->entries->entry['slug'] = isset($flextype->entries->entry['slug']) ? (string) $flextype->entries->entry['slug'] : (string) end($parts); }); } diff --git a/src/flextype/settings.yaml b/src/flextype/settings.yaml index 612d005e..c661fff0 100644 --- a/src/flextype/settings.yaml +++ b/src/flextype/settings.yaml @@ -79,7 +79,9 @@ entries: enabled: true uuid: enabled: true - + id: + enabled: true + # Cache # # - enabled: Set to true to enable caching