wxt-8.x-3.011/modules/custom/wxt_ext/wxt_ext_media/src/Form/AddByUrlForm.php
modules/custom/wxt_ext/wxt_ext_media/src/Form/AddByUrlForm.php
<?php
namespace Drupal\wxt_ext_media\Form;
use Drupal\Core\Form\FormBuilderInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Url;
use Drupal\media_library\Form\AddFormBase;
/**
* Provides a form for adding URL-based media in the media library.
*
* Leveraged from code provided by Acquia for the Lightning distribution.
*
* @internal
* This is an internal part of WxT Extend Media and may be changed or removed
* at any time, in any way, without warning. External code should not
* instantiate or depend on this class!
*/
final class AddByUrlForm extends AddFormBase {
/**
* {@inheritdoc}
*/
public function getFormId() {
return $this->getBaseFormId() . '_instagram';
}
/**
* {@inheritdoc}
*/
protected function buildInputElement(array $form, FormStateInterface $form_state) {
// Add a container to group the input elements for styling purposes.
$form['container'] = [
'#type' => 'container',
];
$form['container']['url'] = [
'#type' => 'url',
'#title' => $this->t('Add @type via URL', [
'@type' => $this->getMediaType($form_state)->label(),
]),
'#required' => TRUE,
'#attributes' => [
'placeholder' => 'https://',
],
];
$form['container']['submit'] = [
'#type' => 'submit',
'#value' => $this->t('Add'),
'#button_type' => 'primary',
'#submit' => ['::addButtonSubmit'],
// @todo Move validation in https://www.drupal.org/node/2988215
'#ajax' => [
'callback' => '::updateFormCallback',
'wrapper' => 'media-library-wrapper',
// Add a fixed URL to post the form since AJAX forms are automatically
// posted to <current> instead of $form['#action'].
// @todo Remove when https://www.drupal.org/project/drupal/issues/2504115
// is fixed.
'url' => Url::fromRoute('media_library.ui'),
'options' => [
'query' => $this->getMediaLibraryState($form_state)->all() + [
FormBuilderInterface::AJAX_FORM_REQUEST => TRUE,
],
],
],
];
return $form;
}
/**
* {@inheritdoc}
*/
public function addButtonSubmit(array $form, FormStateInterface $form_state) {
$this->processInputValues([$form_state->getValue('url')], $form, $form_state);
}
}
