.../field.storage.media.field_media_file.yml | 2 +- .../field.storage.media.field_media_image.yml | 2 +- core/modules/media/src/MediaSourceBase.php | 1 - core/modules/media/src/MediaTypeForm.php | 4 +- .../MediaFunctionalTestCreateMediaTypeTrait.php | 2 +- .../tests/src/Functional/MediaSourceFileTest.php | 54 ++++++++++++++++++++++ .../FunctionalJavascript/MediaUiJavascriptTest.php | 2 +- .../media/tests/src/Kernel/MediaSourceTest.php | 4 +- 8 files changed, 62 insertions(+), 9 deletions(-) diff --git a/core/modules/media/config/install/field.storage.media.field_media_file.yml b/core/modules/media/config/install/field.storage.media.field_media_file.yml index 344abd1..1fa8af9 100644 --- a/core/modules/media/config/install/field.storage.media.field_media_file.yml +++ b/core/modules/media/config/install/field.storage.media.field_media_file.yml @@ -17,7 +17,7 @@ settings: display_field: false display_default: false module: file -locked: true +locked: false cardinality: 1 translatable: true indexes: { } diff --git a/core/modules/media/config/install/field.storage.media.field_media_image.yml b/core/modules/media/config/install/field.storage.media.field_media_image.yml index 155db11..231200d 100644 --- a/core/modules/media/config/install/field.storage.media.field_media_image.yml +++ b/core/modules/media/config/install/field.storage.media.field_media_image.yml @@ -24,7 +24,7 @@ settings: display_default: false uri_scheme: public module: image -locked: true +locked: false cardinality: 1 translatable: true indexes: { } diff --git a/core/modules/media/src/MediaSourceBase.php b/core/modules/media/src/MediaSourceBase.php index d22d86c..dea0140 100644 --- a/core/modules/media/src/MediaSourceBase.php +++ b/core/modules/media/src/MediaSourceBase.php @@ -240,7 +240,6 @@ protected function createSourceFieldStorage() { 'entity_type' => 'media', 'field_name' => $this->getSourceFieldName(), 'type' => reset($this->pluginDefinition['allowed_field_types']), - 'locked' => TRUE, ]); } diff --git a/core/modules/media/src/MediaTypeForm.php b/core/modules/media/src/MediaTypeForm.php index 3a96291..80f7d21 100644 --- a/core/modules/media/src/MediaTypeForm.php +++ b/core/modules/media/src/MediaTypeForm.php @@ -318,8 +318,8 @@ public function save(array $form, FormStateInterface $form_state) { $source_field = $source->createSourceField($media_type); /** @var \Drupal\field\FieldStorageConfigInterface $storage */ $storage = $source_field->getFieldStorageDefinition(); - if ($storage->isNew() || !$storage->isLocked()) { - $storage->setLocked(TRUE)->save(); + if ($storage->isNew()) { + $storage->save(); } $source_field->save(); diff --git a/core/modules/media/tests/src/Functional/MediaFunctionalTestCreateMediaTypeTrait.php b/core/modules/media/tests/src/Functional/MediaFunctionalTestCreateMediaTypeTrait.php index 2d60c9b..4197caa 100644 --- a/core/modules/media/tests/src/Functional/MediaFunctionalTestCreateMediaTypeTrait.php +++ b/core/modules/media/tests/src/Functional/MediaFunctionalTestCreateMediaTypeTrait.php @@ -51,7 +51,7 @@ protected function createMediaType(array $values = [], $source = 'test') { $source_field = $source->createSourceField($media_type); /** @var \Drupal\field\FieldStorageConfigInterface $storage */ $storage = $source_field->getFieldStorageDefinition(); - $storage->setLocked(TRUE)->save(); + $storage->save(); $source_field->save(); $media_type diff --git a/core/modules/media/tests/src/Functional/MediaSourceFileTest.php b/core/modules/media/tests/src/Functional/MediaSourceFileTest.php new file mode 100644 index 0000000..caa0f79 --- /dev/null +++ b/core/modules/media/tests/src/Functional/MediaSourceFileTest.php @@ -0,0 +1,54 @@ +delete(); + } + + /** + * Test that it's possible to change the allowed file extensions. + */ + public function testSourceFieldSettingsEditing() { + $session = $this->getSession(); + $page = $session->getPage(); + $assert_session = $this->assertSession(); + + $media_type = $this->createMediaType([], 'file'); + $media_type_id = $media_type->id(); + $this->assertSame('txt doc docx pdf', FieldConfig::load("media.$media_type_id.field_media_file")->get('settings')['file_extensions']); + + $this->drupalGet("admin/structure/media/manage/$media_type_id/fields/media.$media_type_id.field_media_file"); + + // File extension field exists. + $assert_session->fieldExists('Allowed file extensions'); + + // Add another extension. + $page->fillField('settings[file_extensions]', 'txt, doc, docx, pdf, odt'); + + $page->pressButton('Save settings'); + $this->drupalGet("admin/structure/media/manage/$media_type_id/fields/media.$media_type_id.field_media_file"); + + // Verify that new extension is present. + $assert_session->fieldValueEquals('settings[file_extensions]', 'txt, doc, docx, pdf, odt'); + $this->assertSame('txt doc docx pdf odt', FieldConfig::load("media.$media_type_id.field_media_file")->get('settings')['file_extensions']); + } + +} diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php index b150f89..80fa633 100644 --- a/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php +++ b/core/modules/media/tests/src/FunctionalJavascript/MediaUiJavascriptTest.php @@ -90,7 +90,7 @@ public function testMediaTypes() { /** @var \Drupal\field\FieldStorageConfigInterface $storage */ $storage = $source_field->getFieldStorageDefinition(); $this->assertFalse($storage->isNew(), 'Source field storage definition was saved.'); - $this->assertTrue($storage->isLocked(), 'Source field storage definition was locked.'); + $this->assertFalse($storage->isLocked(), 'Source field storage definition was not locked.'); /** @var \Drupal\media\MediaTypeInterface $media_type_storage */ $media_type_storage = $this->container->get('entity_type.manager')->getStorage('media_type'); diff --git a/core/modules/media/tests/src/Kernel/MediaSourceTest.php b/core/modules/media/tests/src/Kernel/MediaSourceTest.php index c236914..90f6f2b 100644 --- a/core/modules/media/tests/src/Kernel/MediaSourceTest.php +++ b/core/modules/media/tests/src/Kernel/MediaSourceTest.php @@ -352,7 +352,7 @@ public function testSourceFieldCreation() { // Test field storage. $this->assertTrue($field_storage->isNew(), 'Field storage is saved automatically.'); - $this->assertTrue($field_storage->isLocked(), 'Field storage is not locked.'); + $this->assertFalse($field_storage->isLocked(), 'Field storage is not locked.'); $this->assertEquals('string', $field_storage->getType(), 'Field is not of correct type.'); $this->assertEquals('field_media_test_1', $field_storage->getName(), 'Incorrect field name is used.'); $this->assertEquals('media', $field_storage->getTargetEntityTypeId(), 'Field is not targeting media entities.'); @@ -387,7 +387,7 @@ public function testSourceFieldCreation() { // Test field storage. $this->assertTrue($field_storage->isNew(), 'Field storage is saved automatically.'); - $this->assertTrue($field_storage->isLocked(), 'Field storage is not locked.'); + $this->assertFalse($field_storage->isLocked(), 'Field storage is not locked.'); $this->assertEquals('string_long', $field_storage->getType(), 'Field is of incorrect type.'); $this->assertEquals('field_media_test_constraints_1', $field_storage->getName(), 'Incorrect field name is used.'); $this->assertEquals('media', $field_storage->getTargetEntityTypeId(), 'Field is not targeting media entities.');