Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 43 |
EditorLinkDialog | |
0.00% |
0 / 1 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 43 |
getFormId | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
buildForm | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 26 |
|||
submitForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 15 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\editor\Form\EditorLinkDialog. | |
*/ | |
namespace Drupal\editor\Form; | |
use Drupal\Core\Form\FormBase; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\filter\Entity\FilterFormat; | |
use Drupal\Core\Ajax\AjaxResponse; | |
use Drupal\Core\Ajax\HtmlCommand; | |
use Drupal\editor\Ajax\EditorDialogSave; | |
use Drupal\Core\Ajax\CloseModalDialogCommand; | |
/** | |
* Provides a link dialog for text editors. | |
*/ | |
class EditorLinkDialog extends FormBase { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function getFormId() { | |
return 'editor_link_dialog'; | |
} | |
/** | |
* {@inheritdoc} | |
* | |
* @param \Drupal\filter\Entity\FilterFormat $filter_format | |
* The filter format for which this dialog corresponds. | |
*/ | |
public function buildForm(array $form, FormStateInterface $form_state, FilterFormat $filter_format = NULL) { | |
// The default values are set directly from \Drupal::request()->request, | |
// provided by the editor plugin opening the dialog. | |
$user_input = $form_state->getUserInput(); | |
$input = isset($user_input['editor_object']) ? $user_input['editor_object'] : array(); | |
$form['#tree'] = TRUE; | |
$form['#attached']['library'][] = 'editor/drupal.editor.dialog'; | |
$form['#prefix'] = '<div id="editor-link-dialog-form">'; | |
$form['#suffix'] = '</div>'; | |
// Everything under the "attributes" key is merged directly into the | |
// generated link tag's attributes. | |
$form['attributes']['href'] = array( | |
'#title' => $this->t('URL'), | |
'#type' => 'textfield', | |
'#default_value' => isset($input['href']) ? $input['href'] : '', | |
'#maxlength' => 2048, | |
); | |
$form['actions'] = array( | |
'#type' => 'actions', | |
); | |
$form['actions']['save_modal'] = array( | |
'#type' => 'submit', | |
'#value' => $this->t('Save'), | |
// No regular submit-handler. This form only works via JavaScript. | |
'#submit' => array(), | |
'#ajax' => array( | |
'callback' => '::submitForm', | |
'event' => 'click', | |
), | |
); | |
return $form; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function submitForm(array &$form, FormStateInterface $form_state) { | |
$response = new AjaxResponse(); | |
if ($form_state->getErrors()) { | |
unset($form['#prefix'], $form['#suffix']); | |
$form['status_messages'] = [ | |
'#type' => 'status_messages', | |
'#weight' => -10, | |
]; | |
$response->addCommand(new HtmlCommand('#editor-link-dialog-form', $form)); | |
} | |
else { | |
$response->addCommand(new EditorDialogSave($form_state->getValues())); | |
$response->addCommand(new CloseModalDialogCommand()); | |
} | |
return $response; | |
} | |
} |