Skip to content

Commit 73d8d2b

Browse files
committed
[TASK] Disallow foreign_table in FlexForm Container
Fixes: #528
1 parent 5f8a3ef commit 73d8d2b

7 files changed

Lines changed: 97 additions & 6 deletions

File tree

Build/JsonSchema/SchemaSources/FieldTypes/flex-form.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,16 @@
659659
"required": ["type"]
660660
},
661661
"then": {
662-
"$ref": "select.json"
662+
"allOf": [
663+
{
664+
"$ref": "select.json"
665+
},
666+
{
667+
"properties": {
668+
"foreign_table": false
669+
}
670+
}
671+
]
663672
}
664673
},
665674
{

JsonSchema/basic.schema.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5671,7 +5671,16 @@
56715671
]
56725672
},
56735673
"then": {
5674-
"$ref": "#/properties/fields/items/allOf/12/then"
5674+
"allOf": [
5675+
{
5676+
"$ref": "#/properties/fields/items/allOf/12/then"
5677+
},
5678+
{
5679+
"properties": {
5680+
"foreign_table": false
5681+
}
5682+
}
5683+
]
56755684
}
56765685
},
56775686
{

JsonSchema/content-element.schema.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5806,7 +5806,16 @@
58065806
]
58075807
},
58085808
"then": {
5809-
"$ref": "#/allOf/1/properties/fields/items/allOf/12/then"
5809+
"allOf": [
5810+
{
5811+
"$ref": "#/allOf/1/properties/fields/items/allOf/12/then"
5812+
},
5813+
{
5814+
"properties": {
5815+
"foreign_table": false
5816+
}
5817+
}
5818+
]
58105819
}
58115820
},
58125821
{

JsonSchema/file-type.schema.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5723,7 +5723,16 @@
57235723
]
57245724
},
57255725
"then": {
5726-
"$ref": "#/properties/fields/items/allOf/12/then"
5726+
"allOf": [
5727+
{
5728+
"$ref": "#/properties/fields/items/allOf/12/then"
5729+
},
5730+
{
5731+
"properties": {
5732+
"foreign_table": false
5733+
}
5734+
}
5735+
]
57275736
}
57285737
},
57295738
{

JsonSchema/page-type.schema.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5844,7 +5844,16 @@
58445844
]
58455845
},
58465846
"then": {
5847-
"$ref": "#/allOf/1/properties/fields/items/allOf/12/then"
5847+
"allOf": [
5848+
{
5849+
"$ref": "#/allOf/1/properties/fields/items/allOf/12/then"
5850+
},
5851+
{
5852+
"properties": {
5853+
"foreign_table": false
5854+
}
5855+
}
5856+
]
58485857
}
58495858
},
58505859
{

JsonSchema/record-type.schema.json

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5926,7 +5926,16 @@
59265926
]
59275927
},
59285928
"then": {
5929-
"$ref": "#/allOf/1/properties/fields/items/allOf/12/then"
5929+
"allOf": [
5930+
{
5931+
"$ref": "#/allOf/1/properties/fields/items/allOf/12/then"
5932+
},
5933+
{
5934+
"properties": {
5935+
"foreign_table": false
5936+
}
5937+
}
5938+
]
59305939
}
59315940
},
59325941
{

Tests/Unit/JsonSchemaValidation/SectionFieldSchemaTest.php

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,43 @@ public static function sectionFieldSchemaValidationWorksAsExpectedDataProvider()
132132
'valid' => true,
133133
];
134134

135+
yield 'Select with foreign_table relation not allowed inside container' => [
136+
'data' => (object)[
137+
'name' => 'json/schema-test',
138+
'fields' => [
139+
(object)[
140+
'identifier' => 'flex',
141+
'type' => 'FlexForm',
142+
'fields' => [
143+
(object)[
144+
'identifier' => 'section1',
145+
'type' => 'Section',
146+
'label' => 'A section',
147+
'container' => [
148+
(object)[
149+
'identifier' => 'container1',
150+
'label' => 'A container',
151+
'fields' => [
152+
(object)[
153+
'identifier' => 'field1',
154+
'type' => 'Text',
155+
],
156+
(object)[
157+
'identifier' => 'field2',
158+
'type' => 'Select',
159+
'foreign_table' => 'tt_content',
160+
],
161+
],
162+
],
163+
],
164+
],
165+
],
166+
],
167+
],
168+
],
169+
'valid' => false,
170+
];
171+
135172
yield 'Missing container' => [
136173
'data' => (object)[
137174
'name' => 'json/schema-test',

0 commit comments

Comments
 (0)