From b5b3949b1454d535f876e29b8d0453d31416179c Mon Sep 17 00:00:00 2001 From: Lee Rowlands <lee.rowlands@previousnext.com.au> Date: Tue, 12 Dec 2017 19:41:20 +1000 Subject: [PATCH] Issue #2928256 by marcoscano, seanB: Users shouldn't be able to change the media source plugin after the media type is created --- core/modules/media/src/MediaTypeForm.php | 11 ++++++++++- .../FunctionalJavascript/MediaTypeCreationTest.php | 4 ++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/core/modules/media/src/MediaTypeForm.php b/core/modules/media/src/MediaTypeForm.php index 04ac4ba88ccf..170a34fa5c2e 100644 --- a/core/modules/media/src/MediaTypeForm.php +++ b/core/modules/media/src/MediaTypeForm.php @@ -118,14 +118,23 @@ public function form(array $form, FormStateInterface $form_state) { '#attributes' => ['id' => 'source-dependent'], ]; + if ($source) { + $source_description = $this->t('<em>The media source cannot be changed after the media type is created.</em>'); + } + else { + $source_description = $this->t('Media source that is responsible for additional logic related to this media type.'); + } $form['source_dependent']['source'] = [ '#type' => 'select', '#title' => $this->t('Media source'), '#default_value' => $source ? $source->getPluginId() : NULL, '#options' => $options, - '#description' => $this->t('Media source that is responsible for additional logic related to this media type.'), + '#description' => $source_description, '#ajax' => ['callback' => '::ajaxHandlerData'], '#required' => TRUE, + // Once the media type is created, its source plugin cannot be changed + // anymore. + '#disabled' => !empty($source), ]; if (!$source) { diff --git a/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php b/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php index efbe28849b19..652aca8c6be1 100644 --- a/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php +++ b/core/modules/media/tests/src/FunctionalJavascript/MediaTypeCreationTest.php @@ -49,6 +49,10 @@ public function testMediaTypeCreationFormWithDefaultField() { $this->drupalGet("admin/structure/media/manage/{$mediaTypeMachineName}"); $assert_session->pageTextContains('Test source field is used to store the essential information about the media item.'); + + // Check that the plugin cannot be changed after it is set on type creation. + $assert_session->fieldDisabled('Media source'); + $assert_session->pageTextContains('The media source cannot be changed after the media type is created.'); } /** -- GitLab