Skip to content

Commit f2ad2f1

Browse files
authored
Allow non-CP collection config fields to persist (#381)
* Allow non-CP collection config fields to persist * Taxonomies too * And the rest * handle null
1 parent 4440a8b commit f2ad2f1

File tree

4 files changed

+64
-50
lines changed

4 files changed

+64
-50
lines changed

src/Assets/AssetContainer.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -68,17 +68,19 @@ public static function makeModelFromContract(AssetContainerContract $source)
6868
$model = app('statamic.eloquent.assets.container_model')::firstOrNew(['handle' => $source->handle()])->fill([
6969
'title' => $source->title(),
7070
'disk' => $source->diskHandle() ?? config('filesystems.default'),
71-
'settings' => [
72-
'allow_uploads' => $source->allowUploads(),
73-
'allow_downloading' => $source->allowDownloading(),
74-
'allow_moving' => $source->allowMoving(),
75-
'allow_renaming' => $source->allowRenaming(),
76-
'create_folders' => $source->createFolders(),
77-
'search_index' => $source->searchIndex(),
78-
'source_preset' => $source->sourcePreset,
79-
'warm_presets' => $source->warmPresets,
80-
'validation_rules' => $source->validationRules(),
81-
],
71+
'settings' => [],
72+
]);
73+
74+
$model->settings = array_merge($model->settings ?? [], [
75+
'allow_uploads' => $source->allowUploads(),
76+
'allow_downloading' => $source->allowDownloading(),
77+
'allow_moving' => $source->allowMoving(),
78+
'allow_renaming' => $source->allowRenaming(),
79+
'create_folders' => $source->createFolders(),
80+
'search_index' => $source->searchIndex(),
81+
'source_preset' => $source->sourcePreset,
82+
'warm_presets' => $source->warmPresets,
83+
'validation_rules' => $source->validationRules(),
8284
]);
8385

8486
// Set initial timestamps.

src/Collections/Collection.php

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -49,32 +49,36 @@ public static function makeModelFromContract(Contract $source)
4949
{
5050
$class = app('statamic.eloquent.collections.model');
5151

52-
return $class::firstOrNew(['handle' => $source->handle])->fill([
52+
$model = $class::firstOrNew(['handle' => $source->handle])->fill([
5353
'title' => $source->title ?? $source->handle,
54-
'settings' => [
55-
'routes' => $source->routes,
56-
'slugs' => $source->requiresSlugs(),
57-
'title_formats' => collect($source->titleFormats())->filter(),
58-
'mount' => $source->mount,
59-
'dated' => $source->dated,
60-
'sites' => $source->sites,
61-
'template' => $source->template,
62-
'layout' => $source->layout,
63-
'inject' => $source->cascade,
64-
'search_index' => $source->searchIndex,
65-
'revisions' => $source->revisionsEnabled(),
66-
'default_status' => $source->defaultPublishState,
67-
'structure' => $source->structureContents(),
68-
'sort_dir' => $source->customSortDirection(),
69-
'sort_field' => $source->customSortField(),
70-
'taxonomies' => $source->taxonomies,
71-
'propagate' => $source->propagate(),
72-
'past_date_behavior' => $source->pastDateBehavior(),
73-
'future_date_behavior' => $source->futureDateBehavior(),
74-
'preview_targets' => $source->previewTargets(),
75-
'origin_behavior' => $source->originBehavior(),
76-
],
54+
'settings' => [],
7755
]);
56+
57+
$model->settings = array_merge($model->settings ?? [], [
58+
'routes' => $source->routes,
59+
'slugs' => $source->requiresSlugs(),
60+
'title_formats' => collect($source->titleFormats())->filter(),
61+
'mount' => $source->mount,
62+
'dated' => $source->dated,
63+
'sites' => $source->sites,
64+
'template' => $source->template,
65+
'layout' => $source->layout,
66+
'inject' => $source->cascade,
67+
'search_index' => $source->searchIndex,
68+
'revisions' => $source->revisionsEnabled(),
69+
'default_status' => $source->defaultPublishState,
70+
'structure' => $source->structureContents(),
71+
'sort_dir' => $source->customSortDirection(),
72+
'sort_field' => $source->customSortField(),
73+
'taxonomies' => $source->taxonomies,
74+
'propagate' => $source->propagate(),
75+
'past_date_behavior' => $source->pastDateBehavior(),
76+
'future_date_behavior' => $source->futureDateBehavior(),
77+
'preview_targets' => $source->previewTargets(),
78+
'origin_behavior' => $source->originBehavior(),
79+
]);
80+
81+
return $model;
7882
}
7983

8084
public function model($model = null)

src/Structures/Nav.php

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,19 @@ public static function makeModelFromContract(Contract $source)
3636
{
3737
$class = app('statamic.eloquent.navigations.model');
3838

39-
return $class::firstOrNew(['handle' => $source->handle()])->fill([
39+
$model = $class::firstOrNew(['handle' => $source->handle()])->fill([
4040
'title' => $source->title(),
41-
'settings' => [
42-
'collections' => $source->collections()->map->handle(),
43-
'select_across_sites' => $source->canSelectAcrossSites(),
44-
'max_depth' => $source->maxDepth(),
45-
'expects_root' => $source->expectsRoot(),
46-
],
41+
'settings' => [],
4742
]);
43+
44+
$model->settings = array_merge($model->settings ?? [], [
45+
'collections' => $source->collections()->map->handle(),
46+
'select_across_sites' => $source->canSelectAcrossSites(),
47+
'max_depth' => $source->maxDepth(),
48+
'expects_root' => $source->expectsRoot(),
49+
]);
50+
51+
return $model;
4852
}
4953

5054
public function model($model = null)

src/Taxonomies/Taxonomy.php

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,17 +34,21 @@ public static function makeModelFromContract(Contract $source)
3434
{
3535
$class = app('statamic.eloquent.taxonomies.model');
3636

37-
return $class::firstOrNew(['handle' => $source->handle()])->fill([
37+
$model = $class::firstOrNew(['handle' => $source->handle()])->fill([
3838
'title' => $source->title(),
3939
'sites' => $source->sites(),
40-
'settings' => [
41-
'revisions' => $source->revisionsEnabled(),
42-
'preview_targets' => $source->previewTargets(),
43-
'term_template' => $source->hasCustomTermTemplate() ? $source->termTemplate() : null,
44-
'template' => $source->hasCustomTemplate() ? $source->template() : null,
45-
'layout' => $source->layout,
46-
],
40+
'settings' => [],
4741
]);
42+
43+
$model->settings = array_merge($model->settings ?? [], [
44+
'revisions' => $source->revisionsEnabled(),
45+
'preview_targets' => $source->previewTargets(),
46+
'term_template' => $source->hasCustomTermTemplate() ? $source->termTemplate() : null,
47+
'template' => $source->hasCustomTemplate() ? $source->template() : null,
48+
'layout' => $source->layout,
49+
]);
50+
51+
return $model;
4852
}
4953

5054
public function model($model = null)

0 commit comments

Comments
 (0)