Skip to content

Commit f9b113d

Browse files
author
roadiz-ci
committed
feat: Added new NodeTypeField.php normalizationContext to alter normalization groups per field basis (#29)
1 parent 7095ebd commit f9b113d

File tree

7 files changed

+70
-16
lines changed

7 files changed

+70
-16
lines changed

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
"require-dev": {
6767
"php-coveralls/php-coveralls": "^2.4",
6868
"phpstan/phpstan": "^1.5.3",
69+
"phpstan/phpdoc-parser": "<2",
6970
"phpstan/phpstan-doctrine": "^1.3",
7071
"roadiz/entity-generator": "2.4.*",
7172
"roadiz/jwt": "2.4.*",

src/AjaxControllers/AjaxSearchController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ public function searchAction(Request $request): Response
6565
foreach ($nodesSources as $source) {
6666
$uniqueKey = null;
6767
if ($source instanceof NodesSources) {
68-
$uniqueKey = 'n_' . $source->getNode()->getId();
68+
$uniqueKey = 'n_'.$source->getNode()->getId();
6969
if (!$this->security->isGranted(NodeVoter::READ, $source)) {
7070
continue;
7171
}
7272
} elseif ($source instanceof PersistableInterface) {
73-
$uniqueKey = 'p_' . $source->getId();
73+
$uniqueKey = 'p_'.$source->getId();
7474
}
7575
if (key_exists($uniqueKey, $data)) {
7676
continue;

src/Forms/NodeTypeFieldSerializationType.php

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,34 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
2424
'help' => 'exclude_this_field_from_api_serialization',
2525
'required' => false,
2626
])
27+
->add('serializationGroups', CollectionType::class, [
28+
'label' => 'nodeTypeField.serializationGroups',
29+
'help' => 'nodeTypeField.serializationGroups.help',
30+
'required' => false,
31+
'allow_add' => true,
32+
'allow_delete' => true,
33+
'attr' => [
34+
'class' => 'rz-collection-form-type',
35+
],
36+
'entry_options' => [
37+
'label' => false,
38+
],
39+
'entry_type' => TextType::class,
40+
])
41+
->add('normalizationContextGroups', CollectionType::class, [
42+
'label' => 'nodeTypeField.normalizationContextGroups',
43+
'help' => 'nodeTypeField.normalizationContextGroups.help',
44+
'required' => false,
45+
'allow_add' => true,
46+
'allow_delete' => true,
47+
'attr' => [
48+
'class' => 'rz-collection-form-type',
49+
],
50+
'entry_options' => [
51+
'label' => false,
52+
],
53+
'entry_type' => TextType::class,
54+
])
2755
->add('serializationMaxDepth', IntegerType::class, [
2856
'label' => 'nodeTypeField.serializationMaxDepth',
2957
'required' => false,
@@ -43,19 +71,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void
4371
'attr' => [
4472
'placeholder' => 'enter_symfony_expression_language_with_object_as_var_name',
4573
],
46-
])
47-
->add('serializationGroups', CollectionType::class, [
48-
'label' => 'nodeTypeField.serializationGroups',
49-
'required' => false,
50-
'allow_add' => true,
51-
'allow_delete' => true,
52-
'attr' => [
53-
'class' => 'rz-collection-form-type',
54-
],
55-
'entry_options' => [
56-
'label' => false,
57-
],
58-
'entry_type' => TextType::class,
5974
]);
6075
}
6176

src/Resources/translations/messages.en.xlf

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,23 @@
402402
<source>nodeTypeField.defaultValues</source>
403403
<target state="translated">Advanced field configuration</target>
404404
</trans-unit>
405+
<trans-unit xml:space="preserve" id="nodeTypeField.normalizationContextGroups">
406+
<source>nodeTypeField.normalizationContextGroups</source>
407+
<target state="final">Custom serialization context (groups)</target>
408+
</trans-unit>
409+
<trans-unit xml:space="preserve" id="nodeTypeField.normalizationContextGroups.help">
410+
<source>nodeTypeField.normalizationContextGroups.help</source>
411+
<target state="final">Changes the serialization context for the contents of this field.</target>
412+
</trans-unit>
413+
<trans-unit xml:space="preserve" id="nodeTypeField.serializationGroups.help">
414+
<source>nodeTypeField.serializationGroups.help</source>
415+
<target state="final">
416+
Select the [serialization groups](https://docs.roadiz.io/en/latest/developer/api/serialization.html#serialization-groups) for which this field will be serialized.
417+
By default, this field will be serialized for the *nodes_sources* and *nodes_sources_default* groups.
418+
If the field is part of a Field Group, it will use the *nodes_sources_{group name}* group instead of *nodes_sources_default*.
419+
which will hide the field from an API collection operation.
420+
</target>
421+
</trans-unit>
405422
<trans-unit xml:space="preserve" id="101" approved="yes">
406423
<source>enter_values_comma_separated</source>
407424
<target state="final">Enter each values separated with commas.</target>

src/Resources/translations/messages.fr.xlf

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,23 @@
402402
<source>nodeTypeField.defaultValues</source>
403403
<target state="final">Configuration avancée</target>
404404
</trans-unit>
405+
<trans-unit xml:space="preserve" id="nodeTypeField.normalizationContextGroups">
406+
<source>nodeTypeField.normalizationContextGroups</source>
407+
<target state="final">Contexte personalisé de sérialisation (groupes)</target>
408+
</trans-unit>
409+
<trans-unit xml:space="preserve" id="nodeTypeField.normalizationContextGroups.help">
410+
<source>nodeTypeField.normalizationContextGroups.help</source>
411+
<target state="final">Permet de modifier le contexte de sérialisation pour le contenu de ce champ.</target>
412+
</trans-unit>
413+
<trans-unit xml:space="preserve" id="nodeTypeField.serializationGroups.help">
414+
<source>nodeTypeField.serializationGroups.help</source>
415+
<target state="final">
416+
Permet de choisir des [groupes de sérialisation](https://docs.roadiz.io/en/latest/developer/api/serialization.html#serialization-groups) pour lesquels ce champ sera sérialisé.
417+
Par défaut, ce champ sera sérialisé pour les groupes *nodes_sources* et *nodes_sources_default*.
418+
Si le champ fait partie d'un Groupe de champ, il utilisera le groupe *nodes_sources_{nom du groupe}* à la place de *nodes_sources_default*
419+
ce qui cachera le champ depuis une opération API de type Collection.
420+
</target>
421+
</trans-unit>
405422
<trans-unit xml:space="preserve" id="101" approved="yes">
406423
<source>enter_values_comma_separated</source>
407424
<target state="final">Entrez les valeurs séparées par des virgules…</target>

src/Resources/translations/messages.xlf

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@
102102
<trans-unit xml:space="preserve" id="100"><source>defaultValues</source></trans-unit>
103103
<trans-unit xml:space="preserve" id="customFormField.defaultValues"><source>customFormField.defaultValues</source></trans-unit>
104104
<trans-unit xml:space="preserve" id="nodeTypeField.defaultValues"><source>nodeTypeField.defaultValues</source></trans-unit>
105+
<trans-unit xml:space="preserve" id="nodeTypeField.normalizationContextGroups"><source>nodeTypeField.normalizationContextGroups</source></trans-unit>
106+
<trans-unit xml:space="preserve" id="nodeTypeField.normalizationContextGroups.help"><source>nodeTypeField.normalizationContextGroups.help</source></trans-unit>
107+
<trans-unit xml:space="preserve" id="nodeTypeField.serializationGroups.help"><source>nodeTypeField.serializationGroups.help</source></trans-unit>
105108
<trans-unit xml:space="preserve" id="101"><source>enter_values_comma_separated</source></trans-unit>
106109
<trans-unit xml:space="preserve" id="102"><source>node.%name%.translated</source></trans-unit>
107110
<trans-unit xml:space="preserve" id="103"><source>node_source.%node_source%.updated.%translation%</source></trans-unit>

src/Resources/views/node-type-fields/editBase.html.twig

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
{% block content %}
66
<section class="content-global manage-node-type-field">
77
<header class="content-header header-node-type-fields header-node-type-field-edit">
8-
<h1 class="content-title node-type-field-edit-title">{{ "edit.nodeTypeField.%name%"|trans({'%name%': field.getName})|u.truncate(25, '[…]', true) }}</h1>
8+
<h2 class="content-title">{{ nodeType.name }}</h2>
9+
<h1 class="node-type-field-edit-title">{{ "edit.nodeTypeField.%name%"|trans({'%name%': field.getName})|u.truncate(25, '[…]', true) }}</h1>
910
<a class="content-header-nav-back uk-navbar-content" href="{{ path('nodeTypeFieldsListPage', { nodeTypeId: nodeType.getId }) }}" title="{% trans %}back_to.nodeTypeFields{% endtrans %}" data-uk-tooltip="{animation:true}"><i class="uk-icon-rz-back-parent"></i></a>
1011
</header>
1112

0 commit comments

Comments
 (0)