From bb8df0b4689a00f132b9660a29b11772bbef2a6a Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Fri, 24 Jun 2022 16:36:54 +0800 Subject: [PATCH 1/4] consider case where some fieldtype do not need to cast its value --- src/Fieldtypes/Fieldtype.php | 2 +- src/Services/Builders/Builder.php | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Fieldtypes/Fieldtype.php b/src/Fieldtypes/Fieldtype.php index 1ace92f19..c758df6a8 100755 --- a/src/Fieldtypes/Fieldtype.php +++ b/src/Fieldtypes/Fieldtype.php @@ -27,7 +27,7 @@ abstract class Fieldtype * * @var string */ - public $cast = ''; + public $cast = null; /** * @var null diff --git a/src/Services/Builders/Builder.php b/src/Services/Builders/Builder.php index fee31afdb..ead42a4f6 100755 --- a/src/Services/Builders/Builder.php +++ b/src/Services/Builders/Builder.php @@ -48,7 +48,9 @@ public function refresh() foreach ($this->columns as $column) { $fillable[] = $column->handle; - $casts[$column->handle] = $column->type()->cast; + if (isset($column->type()->cast)) { + $casts[$column->handle] = $column->type()->cast; + } } $fillable = array_merge($this->getFillable(), $fillable); From 7b892798a8ed91596cec6ea706fb860f3380e2a6 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Wed, 7 Sep 2022 10:05:38 +0800 Subject: [PATCH 2/4] fix typo --- src/Fieldtypes/UserFieldtype.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Fieldtypes/UserFieldtype.php b/src/Fieldtypes/UserFieldtype.php index f684c0512..6fbded2e6 100644 --- a/src/Fieldtypes/UserFieldtype.php +++ b/src/Fieldtypes/UserFieldtype.php @@ -3,7 +3,7 @@ namespace Fusion\Fieldtypes; use File; -use Fusion\Http\Resources\USerResource; +use Fusion\Http\Resources\UserResource; use Fusion\Models\Field; use Illuminate\Support\Str; From 63970cf296a454819a511b011819a1b997ed3e44 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Sun, 13 Nov 2022 00:03:42 +0800 Subject: [PATCH 3/4] enable feature to pass value to persistRelationship for fieldtypes --- src/Fieldtypes/AssetFieldtype.php | 4 ++-- src/Fieldtypes/FieldsetFieldtype.php | 4 ++-- src/Fieldtypes/FormFieldtype.php | 4 ++-- src/Fieldtypes/ReplicatorFieldtype.php | 8 ++++---- src/Fieldtypes/TaxonomyFieldtype.php | 4 ++-- src/Fieldtypes/UserFieldtype.php | 4 ++-- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Fieldtypes/AssetFieldtype.php b/src/Fieldtypes/AssetFieldtype.php index 087df455e..c2caaf4fc 100644 --- a/src/Fieldtypes/AssetFieldtype.php +++ b/src/Fieldtypes/AssetFieldtype.php @@ -100,10 +100,10 @@ public function generateRelationship($field) * * @return void */ - public function persistRelationship($model, Field $field) + public function persistRelationship($model, Field $field, $value = null) { $oldValues = $model->{$field->handle}->pluck('id'); - $newValues = collect(request()->input($field->handle))->mapWithKeys(function ($item, $key) use ($field) { + $newValues = collect($value ?? request()->input($field->handle))->mapWithKeys(function ($item, $key) use ($field) { return [ $item['id'] => [ 'field_id' => $field->id, diff --git a/src/Fieldtypes/FieldsetFieldtype.php b/src/Fieldtypes/FieldsetFieldtype.php index a66a77573..515874517 100755 --- a/src/Fieldtypes/FieldsetFieldtype.php +++ b/src/Fieldtypes/FieldsetFieldtype.php @@ -148,14 +148,14 @@ public function generateRelationship($field) * * @return void */ - public function persistRelationship($model, Field $field) + public function persistRelationship($model, Field $field, $value = null) { $fieldset = Fieldset::findOrFail($field->settings['fieldset']); $model->{$field->handle}()->updateOrCreate([ 'field_id' => $field->id, 'fieldset_id' => $fieldset->id, - ], request()->input($field->handle, [])); + ], $value ?? request()->input($field->handle, [])); } /** diff --git a/src/Fieldtypes/FormFieldtype.php b/src/Fieldtypes/FormFieldtype.php index 7a58ee061..cf3760623 100644 --- a/src/Fieldtypes/FormFieldtype.php +++ b/src/Fieldtypes/FormFieldtype.php @@ -69,10 +69,10 @@ public function generateRelationship($field) * * @return void */ - public function persistRelationship($model, Field $field) + public function persistRelationship($model, Field $field, $value = null) { $oldValues = $model->{$field->handle}->pluck('id'); - $newValues = collect(request()->input($field->handle)) + $newValues = collect($value ?? request()->input($field->handle)) ->mapWithKeys(function ($id, $key) use ($field) { return [ $id => [ diff --git a/src/Fieldtypes/ReplicatorFieldtype.php b/src/Fieldtypes/ReplicatorFieldtype.php index 16eee4e38..0f85dece6 100755 --- a/src/Fieldtypes/ReplicatorFieldtype.php +++ b/src/Fieldtypes/ReplicatorFieldtype.php @@ -151,10 +151,10 @@ public function generateRelationship(Field $field) * * @return void */ - public function persistRelationship($model, Field $field) + public function persistRelationship($model, Field $field, $value = null) { $replicator = Replicator::find($field->settings['replicator']); - $replicants = $this->persistReplicants($replicator, $field); + $replicants = $this->persistReplicants($replicator, $field, $value); $sections = $replicator->sections; $sections->each(function ($section) use ($model, $replicator, $replicants) { @@ -259,9 +259,9 @@ public function getResource($model, Field $field) * * @return \Illuminate\Support\Collection */ - private function persistReplicants(Replicator $replicator, Field $field) + private function persistReplicants(Replicator $replicator, Field $field, $value = null) { - return collect(request()->input($field->handle, [])) + return collect($value ?? request()->input($field->handle, [])) ->map(function ($input) use ($replicator) { $section = Section::findOrFail($input['section']['id']); $builder = $replicator->getBuilder($section); diff --git a/src/Fieldtypes/TaxonomyFieldtype.php b/src/Fieldtypes/TaxonomyFieldtype.php index fd473693a..9cd74e17d 100644 --- a/src/Fieldtypes/TaxonomyFieldtype.php +++ b/src/Fieldtypes/TaxonomyFieldtype.php @@ -88,10 +88,10 @@ public function generateRelationship($field) * * @return void */ - public function persistRelationship($model, Field $field) + public function persistRelationship($model, Field $field, $value = null) { $oldValues = $model->{$field->handle}->pluck('id'); - $newValues = collect(request()->input($field->handle)) + $newValues = collect($value ?? request()->input($field->handle)) ->mapWithKeys(function ($id) use ($field) { return [ $id => [ diff --git a/src/Fieldtypes/UserFieldtype.php b/src/Fieldtypes/UserFieldtype.php index 6fbded2e6..9cc26c415 100644 --- a/src/Fieldtypes/UserFieldtype.php +++ b/src/Fieldtypes/UserFieldtype.php @@ -76,10 +76,10 @@ public function generateRelationship($field) * * @return void */ - public function persistRelationship($model, Field $field) + public function persistRelationship($model, Field $field, $value = null) { $oldValues = $model->{$field->handle}->pluck('id'); - $newValues = collect(request()->input($field->handle))->mapWithKeys(function ($item, $key) use ($field) { + $newValues = collect($value ?? request()->input($field->handle))->mapWithKeys(function ($item, $key) use ($field) { return [ $item['id'] => [ 'field_id' => $field->id, From 4c6cb3def074904ae7e9f618312179da459d3cad Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Wed, 20 Mar 2024 00:01:35 +0800 Subject: [PATCH 4/4] fix issue of datetime field when there is more than one field which have same field handle in the same page (it is possible when there is multiple form in the same page) --- resources/js/components/Fieldtypes/DateTime/Field.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/components/Fieldtypes/DateTime/Field.vue b/resources/js/components/Fieldtypes/DateTime/Field.vue index d17a509d6..28488c01b 100644 --- a/resources/js/components/Fieldtypes/DateTime/Field.vue +++ b/resources/js/components/Fieldtypes/DateTime/Field.vue @@ -61,7 +61,7 @@ }, mounted() { - this.inst = flatpickr(`#flatpickr_${this.field.handle}`, { + this.inst = flatpickr(this.$el.querySelector(`#flatpickr_${this.field.handle}`), { altFormat: this.field.settings.format, altInput: true, dateFormat: 'Y-m-d H:i:S',