From 098c66e4b3c5a2815c0392122f01682c03e68066 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Sun, 5 Jun 2022 21:11:20 +0800 Subject: [PATCH 01/10] fix replicator feature --- src/Models/Replicator.php | 3 +++ src/Observers/ReplicatorObserver.php | 33 ++++++++++++++-------------- src/Services/Builders/Builder.php | 2 +- src/Services/Builders/Replicator.php | 13 ++++++++++- 4 files changed, 33 insertions(+), 18 deletions(-) diff --git a/src/Models/Replicator.php b/src/Models/Replicator.php index d213b75d1..331d69951 100644 --- a/src/Models/Replicator.php +++ b/src/Models/Replicator.php @@ -3,6 +3,8 @@ namespace Fusion\Models; use Fusion\Concerns\HasBlueprint; +use Fusion\Concerns\HasActivity; +use Fusion\Concerns\HasBuilder; use Fusion\Contracts\Structure; use Fusion\Database\Eloquent\Model; use Fusion\Services\Builders; @@ -10,6 +12,7 @@ class Replicator extends Model implements Structure { use HasBlueprint; + use HasBuilder; /** * The attributes that are fillable via mass assignment. diff --git a/src/Observers/ReplicatorObserver.php b/src/Observers/ReplicatorObserver.php index a601c2f04..ed8cd0baf 100755 --- a/src/Observers/ReplicatorObserver.php +++ b/src/Observers/ReplicatorObserver.php @@ -3,7 +3,7 @@ namespace Fusion\Observers; use Fusion\Models\Field; -use Fusion\Models\Fieldset; +use Fusion\Models\Blueprint as FusionBlueprint; use Fusion\Models\Replicator; use Fusion\Models\Section; use Illuminate\Database\Schema\Blueprint; @@ -73,14 +73,17 @@ public function deleted(Replicator $replicator) */ private function createFieldset(Replicator $replicator) { - $fieldset = $replicator->fieldsets()->create([ + $blueprint = $replicator->blueprint()->create([ + 'structure' => 'Replicator', 'name' => ($name = "Replicator: {$replicator->name}"), 'handle' => str_handle("{$replicator->name}_{$replicator->uniqid}"), 'hidden' => true, + 'blueprintable_type' => Replicator::class, + 'blueprintable_id' => $replicator->id, ]); $this->createSections( - $fieldset, + $blueprint, collect($replicator->field->settings['sections']) ); } @@ -132,20 +135,18 @@ private function deleteFieldset(Replicator $replicator) * * @return void */ - private function createSections(Fieldset $fieldset, Collection $toCreate) + private function createSections(FusionBlueprint $blueprint, Collection $toCreate) { - $toCreate->each(function ($data, $index) use ($fieldset) { - $section = $fieldset->sections()->create([ - 'name' => $data['name'], - 'handle' => $data['handle'], - 'description' => $data['description'], - 'placement' => $data['placement'], - 'order' => ($index + 1), - ]); + $section = $blueprint->sections()->create([ + 'name' => 'General', + 'handle' => 'general', + 'description' => null, + 'placement' => 'body', + 'order' => 0, + ]); - $this->createReplicantTable($section); - $this->createFields($section, collect($data['fields'])); - }); + $this->createReplicantTable($section); + $this->createFields($section, $toCreate); } /** @@ -213,7 +214,7 @@ private function createFields(Section $section, Collection $toCreate) $field = $section->fields()->create([ 'name' => $data['name'], 'handle' => $data['handle'], - 'help' => $data['help'], + 'help' => $data['help'] ?? null, 'settings' => $data['settings'], 'type' => is_string($data['type']) ? $data['type'] : $data['type']['handle'], 'order' => ($index + 1), diff --git a/src/Services/Builders/Builder.php b/src/Services/Builders/Builder.php index fee31afdb..ea45d9d1f 100755 --- a/src/Services/Builders/Builder.php +++ b/src/Services/Builders/Builder.php @@ -186,7 +186,7 @@ protected function getPlaceholders() * * @return string */ - private function getBuildTable() + protected function getBuildTable() { $prefix = static::prefix(); diff --git a/src/Services/Builders/Replicator.php b/src/Services/Builders/Replicator.php index 38e1c8ff5..7905cc377 100755 --- a/src/Services/Builders/Replicator.php +++ b/src/Services/Builders/Replicator.php @@ -68,6 +68,17 @@ protected function getPlaceholders() ]; } + protected function getBuildTable() + { + $prefix = static::prefix(); + + if (is_null($prefix)) { + $prefix = Str::lower($this->source->getClassName()); + } + + return "{$prefix}_{$this->handle}"; + } + /** * Builder table prefix. * @@ -75,6 +86,6 @@ protected function getPlaceholders() */ public static function prefix() { - return 'replicator'; + return 'rp'; } } From 9c1df3217f6e40b2a22b02dd7f23638526aa1a62 Mon Sep 17 00:00:00 2001 From: Hui Yang Date: Mon, 6 Jun 2022 20:59:06 +0800 Subject: [PATCH 02/10] update replicator setting field --- package.json | 6 +++--- resources/js/components/Fieldtypes/Replicator/Settings.vue | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 904968406..e2531d02f 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ "@ckeditor/ckeditor5-vue": "^1.0.3", "@fortawesome/fontawesome-free": "^5.12.0", "@fortawesome/fontawesome-svg-core": "^1.2.0", - "@fortawesome/free-brands-svg-icons": "^5.12.0", - "@fortawesome/free-regular-svg-icons": "^5.12.0", - "@fortawesome/free-solid-svg-icons": "^5.12.0", + "@fortawesome/free-brands-svg-icons": "^5.15.4", + "@fortawesome/free-regular-svg-icons": "^5.15.4", + "@fortawesome/free-solid-svg-icons": "^5.15.4", "@fortawesome/vue-fontawesome": "^0.1.0", "@popperjs/core": "^2.0.6", "@shopify/draggable": "^1.0.0-beta.8", diff --git a/resources/js/components/Fieldtypes/Replicator/Settings.vue b/resources/js/components/Fieldtypes/Replicator/Settings.vue index 84c3f174c..986a70a9a 100755 --- a/resources/js/components/Fieldtypes/Replicator/Settings.vue +++ b/resources/js/components/Fieldtypes/Replicator/Settings.vue @@ -1,5 +1,5 @@