Skip to content

Commit 9b4302c

Browse files
authored
[5.x] Extra values for entry field conditions, including depth (#11080)
1 parent 16bb315 commit 9b4302c

File tree

8 files changed

+36
-3
lines changed

8 files changed

+36
-3
lines changed

resources/js/components/entries/BaseCreateForm.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
:collection-has-routes="collectionHasRoutes"
1111
:initial-fieldset="fieldset"
1212
:initial-values="values"
13+
:initial-extra-values="extraValues"
1314
:initial-meta="meta"
1415
:initial-localizations="localizations"
1516
:initial-has-origin="false"
@@ -37,6 +38,7 @@ export default {
3738
'collectionHasRoutes',
3839
'fieldset',
3940
'values',
41+
'extraValues',
4042
'meta',
4143
'localizations',
4244
'revisions',

resources/js/components/entries/PublishForm.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@
6868
:name="publishContainer"
6969
:blueprint="fieldset"
7070
:values="values"
71+
:extra-values="extraValues"
7172
:reference="initialReference"
7273
:meta="meta"
7374
:errors="errors"
@@ -335,6 +336,7 @@ export default {
335336
initialReference: String,
336337
initialFieldset: Object,
337338
initialValues: Object,
339+
initialExtraValues: Object,
338340
initialMeta: Object,
339341
initialTitle: String,
340342
initialLocalizations: Array,
@@ -375,6 +377,7 @@ export default {
375377
title: this.initialTitle,
376378
values: _.clone(this.initialValues),
377379
meta: _.clone(this.initialMeta),
380+
extraValues: _.clone(this.initialExtraValues),
378381
localizations: _.clone(this.initialLocalizations),
379382
localizedFields: this.initialLocalizedFields,
380383
hasOrigin: this.initialHasOrigin,
@@ -606,6 +609,7 @@ export default {
606609
clearTimeout(this.trackDirtyStateTimeout)
607610
this.trackDirtyState = false
608611
this.values = this.resetValuesFromResponse(response.data.data.values);
612+
this.extraValues = response.data.data.extraValues;
609613
this.trackDirtyStateTimeout = setTimeout(() => (this.trackDirtyState = true), 500)
610614
this.$nextTick(() => this.$emit('saved', response));
611615
return;
@@ -630,6 +634,7 @@ export default {
630634
clearTimeout(this.trackDirtyStateTimeout);
631635
this.trackDirtyState = false;
632636
this.values = this.resetValuesFromResponse(response.data.data.values);
637+
this.extraValues = response.data.data.extraValues;
633638
this.trackDirtyStateTimeout = setTimeout(() => (this.trackDirtyState = true), 500);
634639
this.initialPublished = response.data.data.published;
635640
this.activeLocalization.published = response.data.data.published;

resources/js/components/publish/Container.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,9 @@ export default {
124124
setValues(state, values) {
125125
state.values = values;
126126
},
127+
setExtraValues(state, values) {
128+
state.extraValues = values;
129+
},
127130
setHiddenField(state, field) {
128131
state.hiddenFields[field.dottedKey] = {
129132
hidden: field.hidden,
@@ -211,6 +214,9 @@ export default {
211214
context.commit('setValues', payload);
212215
vm.emitUpdatedEvent(context.state.values);
213216
},
217+
setExtraValues(context, payload) {
218+
context.commit('setExtraValues', payload);
219+
},
214220
setMeta(context, payload) {
215221
context.commit('setMeta', payload);
216222
}
@@ -276,6 +282,14 @@ export default {
276282
}
277283
},
278284
285+
extraValues: {
286+
deep: true,
287+
handler(after, before) {
288+
if (_.isEqual(before, after)) return;
289+
this.$store.commit(`publish/${this.name}/setExtraValues`, after);
290+
}
291+
},
292+
279293
meta: {
280294
deep: true,
281295
handler(after, before) {

resources/views/entries/create.blade.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
:collection-has-routes="{{ Statamic\Support\Str::bool($collectionHasRoutes) }}"
1111
:fieldset="{{ json_encode($blueprint) }}"
1212
:values="{{ json_encode($values) }}"
13+
:extra-values="{{ json_encode($extraValues) }}"
1314
:meta="{{ json_encode($meta) }}"
1415
:published="{{ json_encode($published) }}"
1516
:localizations="{{ json_encode($localizations) }}"

resources/views/entries/edit.blade.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
initial-reference="{{ $reference }}"
1616
:initial-fieldset="{{ json_encode($blueprint) }}"
1717
:initial-values="{{ json_encode($values) }}"
18+
:initial-extra-values="{{ json_encode($extraValues) }}"
1819
:initial-localized-fields="{{ json_encode($localizedFields) }}"
1920
:initial-meta="{{ json_encode($meta) }}"
2021
initial-permalink="{{ $permalink }}"

src/Fieldtypes/Entries.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class Entries extends Relationship
4646
'initialReference' => 'reference',
4747
'initialFieldset' => 'blueprint',
4848
'initialValues' => 'values',
49+
'initialExtraValues' => 'extraValues',
4950
'initialLocalizedFields' => 'localizedFields',
5051
'initialMeta' => 'meta',
5152
'initialPermalink' => 'permalink',

src/Http/Controllers/CP/Collections/EntriesController.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ public function edit(Request $request, $collection, $entry)
101101
$blueprint->ensureFieldHasConfig('author', ['visibility' => 'read_only']);
102102
}
103103

104-
[$values, $meta] = $this->extractFromFields($entry, $blueprint);
104+
[$values, $meta, $extraValues] = $this->extractFromFields($entry, $blueprint);
105105

106106
if ($hasOrigin = $entry->hasOrigin()) {
107107
[$originValues, $originMeta] = $this->extractFromFields($entry->origin(), $blueprint);
@@ -121,6 +121,7 @@ public function edit(Request $request, $collection, $entry)
121121
'editBlueprint' => cp_route('collections.blueprints.edit', [$collection, $blueprint]),
122122
],
123123
'values' => array_merge($values, ['id' => $entry->id()]),
124+
'extraValues' => $extraValues,
124125
'meta' => $meta,
125126
'collection' => $collection->handle(),
126127
'collectionHasRoutes' => ! is_null($collection->route($entry->locale())),
@@ -270,11 +271,12 @@ public function update(Request $request, $collection, $entry)
270271
$saved = $entry->updateLastModified(User::current())->save();
271272
}
272273

273-
[$values] = $this->extractFromFields($entry, $blueprint);
274+
[$values, $meta, $extraValues] = $this->extractFromFields($entry, $blueprint);
274275

275276
return [
276277
'data' => array_merge((new EntryResource($entry->fresh()))->resolve()['data'], [
277278
'values' => $values,
279+
'extraValues' => $extraValues,
278280
]),
279281
'saved' => $saved,
280282
];
@@ -321,6 +323,9 @@ public function create(Request $request, $collection, $site)
321323
'save' => cp_route('collections.entries.store', [$collection->handle(), $site->handle()]),
322324
],
323325
'values' => $values->all(),
326+
'extraValues' => [
327+
'depth' => 1,
328+
],
324329
'meta' => $fields->meta(),
325330
'collection' => $collection->handle(),
326331
'collectionCreateLabel' => $collection->createLabel(),

src/Http/Controllers/CP/Collections/ExtractsFromEntryFields.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@ protected function extractFromFields($entry, $blueprint)
4141
'published' => $entry->published(),
4242
]);
4343

44-
return [$values->all(), $fields->meta()];
44+
$extraValues = [
45+
'depth' => $entry->page()?->depth(),
46+
];
47+
48+
return [$values->all(), $fields->meta(), $extraValues];
4549
}
4650
}

0 commit comments

Comments
 (0)