Skip to content

Commit 5f5b91f

Browse files
authored
Merge pull request #13 from darinda/implement-issue-12
Implement issue 12
2 parents 75e2b61 + a3de32c commit 5f5b91f

File tree

8 files changed

+36
-2
lines changed

8 files changed

+36
-2
lines changed

bundle/Core/FieldType/EnhancedBinaryFile/FormMapper.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,16 @@ public function mapFieldDefinitionForm(FormInterface $fieldDefinitionForm, Field
2424
'label' => 'field_definition.enhancedbinaryfile.allowedTypes',
2525
'translation_domain' => 'messages',
2626
]
27+
)
28+
->add(
29+
'mimeTypesMessage',
30+
TextType::class,
31+
[
32+
'required' => false,
33+
'property_path' => 'fieldSettings[mimeTypesMessage]',
34+
'label' => 'field_definition.enhancedbinaryfile.mimeTypesMessage',
35+
'translation_domain' => 'messages',
36+
]
2737
);
2838
}
2939
}

bundle/Core/FieldType/EnhancedBinaryFile/Type.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@ class Type extends BinaryFileType
2929
'type' => 'string',
3030
'default' => null,
3131
),
32+
'mimeTypesMessage' => array(
33+
'type' => 'string',
34+
'default' => null
35+
)
3236
);
3337

3438
/**
@@ -139,6 +143,7 @@ public function validateFieldSettings($fieldSettings)
139143

140144
foreach ($fieldSettings as $name => $value) {
141145
switch ($name) {
146+
case 'mimeTypesMessage': // break omitted on purpose
142147
case 'allowedTypes':
143148
// Nothing to validate, just recognize this setting as known
144149
break;

bundle/Core/Persistence/Legacy/Content/FieldValue/Converter/Converter.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,9 @@ public function toStorageFieldDefinition(FieldDefinition $fieldDef, StorageField
4646
$storageDef->dataText1 = isset($fieldDef->fieldTypeConstraints->fieldSettings['allowedTypes']) ?
4747
$fieldDef->fieldTypeConstraints->fieldSettings['allowedTypes'] :
4848
'';
49+
$storageDef->dataText2 = isset($fieldDef->fieldTypeConstraints->fieldSettings['mimeTypesMessage']) ?
50+
$fieldDef->fieldTypeConstraints->fieldSettings['mimeTypesMessage'] :
51+
'';
4952
}
5053

5154
/**
@@ -67,6 +70,7 @@ public function toFieldDefinition(StorageFieldDefinition $storageDef, FieldDefin
6770
),
6871
'fieldSettings' => new FieldSettings(array(
6972
'allowedTypes' => $storageDef->dataText1,
73+
'mimeTypesMessage' => $storageDef->dataText2,
7074
)),
7175
)
7276
);

bundle/Form/FieldTypeHandler/EnhancedFile.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ protected function buildFieldForm(
6868

6969
$maxFileSize = $fieldDefinition->validatorConfiguration['FileSizeValidator']['maxFileSize'];
7070
$allowedExtensions = $fieldDefinition->fieldSettings['allowedTypes'];
71+
$mimeTypesMessage = $fieldDefinition->fieldSettings['mimeTypesMessage'];
7172

7273
if (null !== $maxFileSize || !empty($allowedExtensions)) {
7374
$constraints = array();
@@ -89,6 +90,11 @@ protected function buildFieldForm(
8990
$constraints['mimeTypes'] = $allowedMimeTypes;
9091
}
9192

93+
if (!empty($mimeTypesMessage))
94+
{
95+
$constraints['mimeTypesMessage'] = $mimeTypesMessage;
96+
}
97+
9298
$options['constraints'][] = new Constraints\File($constraints);
9399
}
94100

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
field_definition.enhancedbinaryfile.allowedTypes: Erlaubte Dateiformate (komma-separiert)
1+
field_definition.enhancedbinaryfile.allowedTypes: Erlaubte Dateiformate (|-separiert)
2+
field_definition.enhancedbinaryfile.mimeTypesMessage: Mimetype Validierungs-Fehlertext (https://symfony.com/doc/current/reference/constraints/File.html#mimetypesmessage)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
field_definition.enhancedbinaryfile.allowedTypes: Allowed file types (comma separated)
1+
field_definition.enhancedbinaryfile.allowedTypes: Allowed file types (pipe-separated)
2+
field_definition.enhancedbinaryfile.mimeTypesMessage: Wrong mimetype error message (https://symfony.com/doc/current/reference/constraints/File.html#mimetypesmessage)

bundle/Resources/views/admin/field_types.html.twig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,10 @@
1111
{{- form_errors(form.allowedTypes) -}}
1212
{{- form_widget(form.allowedTypes) -}}
1313
</div>
14+
15+
<div class="enhancedezbinaryfile-validator mime-types-message{% if group_class is not empty %} {{ group_class }}{% endif %}">
16+
{{- form_label(form.mimeTypesMessage) -}}
17+
{{- form_errors(form.mimeTypesMessage) -}}
18+
{{- form_widget(form.mimeTypesMessage) -}}
19+
</div>
1420
{% endblock %}

tests/Form/FieldTypeHandler/EnhancedFileTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public function testBuildFieldCreateForm()
6363
$fieldDefinition = new FieldDefinition(array(
6464
'fieldSettings' => array(
6565
'allowedTypes' => 'jpg|pdf|txt',
66+
'mimeTypesMessage' => null
6667
),
6768
));
6869
$lang = 'eng_US';

0 commit comments

Comments
 (0)