Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
| Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 116 |
| FieldConfigEditForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
272 | |
0.00% |
0 / 116 |
| form | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 64 |
|||
| actions | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 25 |
|||
| validateForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 6 |
|||
| submitForm | |
0.00% |
0 / 1 |
6 | |
0.00% |
0 / 8 |
|||
| save | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 11 |
|||
| getTitle | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
| <?php | |
| /** | |
| * @file | |
| * Contains \Drupal\field_ui\Form\FieldConfigEditForm. | |
| */ | |
| namespace Drupal\field_ui\Form; | |
| use Drupal\Core\Entity\EntityForm; | |
| use Drupal\Core\Field\AllowedTagsXssTrait; | |
| use Drupal\Core\Field\FieldFilteredMarkup; | |
| use Drupal\Core\Form\FormStateInterface; | |
| use Drupal\Core\Url; | |
| use Drupal\field\FieldConfigInterface; | |
| use Drupal\field_ui\FieldUI; | |
| /** | |
| * Provides a form for the field settings form. | |
| */ | |
| class FieldConfigEditForm extends EntityForm { | |
| use AllowedTagsXssTrait; | |
| /** | |
| * The entity being used by this form. | |
| * | |
| * @var \Drupal\field\FieldConfigInterface | |
| */ | |
| protected $entity; | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function form(array $form, FormStateInterface $form_state) { | |
| $form = parent::form($form, $form_state); | |
| $field_storage = $this->entity->getFieldStorageDefinition(); | |
| $bundles = $this->entityManager->getBundleInfo($this->entity->getTargetEntityTypeId()); | |
| $form_title = $this->t('%field settings for %bundle', array( | |
| '%field' => $this->entity->getLabel(), | |
| '%bundle' => $bundles[$this->entity->getTargetBundle()]['label'], | |
| )); | |
| $form['#title'] = $form_title; | |
| if ($field_storage->isLocked()) { | |
| $form['locked'] = array( | |
| '#markup' => $this->t('The field %field is locked and cannot be edited.', array('%field' => $this->entity->getLabel())), | |
| ); | |
| return $form; | |
| } | |
| // Build the configurable field values. | |
| $form['label'] = array( | |
| '#type' => 'textfield', | |
| '#title' => $this->t('Label'), | |
| '#default_value' => $this->entity->getLabel() ?: $field_storage->getName(), | |
| '#required' => TRUE, | |
| '#weight' => -20, | |
| ); | |
| $form['description'] = array( | |
| '#type' => 'textarea', | |
| '#title' => $this->t('Help text'), | |
| '#default_value' => $this->entity->getDescription(), | |
| '#rows' => 5, | |
| '#description' => $this->t('Instructions to present to the user below this field on the editing form.<br />Allowed HTML tags: @tags', array('@tags' => FieldFilteredMarkup::displayAllowedTags())) . '<br />' . $this->t('This field supports tokens.'), | |
| '#weight' => -10, | |
| ); | |
| $form['required'] = array( | |
| '#type' => 'checkbox', | |
| '#title' => $this->t('Required field'), | |
| '#default_value' => $this->entity->isRequired(), | |
| '#weight' => -5, | |
| ); | |
| // Create an arbitrary entity object (used by the 'default value' widget). | |
| $ids = (object) array( | |
| 'entity_type' => $this->entity->getTargetEntityTypeId(), | |
| 'bundle' => $this->entity->getTargetBundle(), | |
| 'entity_id' => NULL | |
| ); | |
| $form['#entity'] = _field_create_entity_from_ids($ids); | |
| $items = $form['#entity']->get($this->entity->getName()); | |
| $item = $items->first() ?: $items->appendItem(); | |
| // Add field settings for the field type and a container for third party | |
| // settings that modules can add to via hook_form_FORM_ID_alter(). | |
| $form['settings'] = array( | |
| '#tree' => TRUE, | |
| '#weight' => 10, | |
| ); | |
| $form['settings'] += $item->fieldSettingsForm($form, $form_state); | |
| $form['third_party_settings'] = array( | |
| '#tree' => TRUE, | |
| '#weight' => 11, | |
| ); | |
| // Add handling for default value. | |
| if ($element = $items->defaultValuesForm($form, $form_state)) { | |
| $element = array_merge($element , array( | |
| '#type' => 'details', | |
| '#title' => $this->t('Default value'), | |
| '#open' => TRUE, | |
| '#tree' => TRUE, | |
| '#description' => $this->t('The default value for this field, used when creating new content.'), | |
| )); | |
| $form['default_value'] = $element; | |
| } | |
| return $form; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| protected function actions(array $form, FormStateInterface $form_state) { | |
| $actions = parent::actions($form, $form_state); | |
| $actions['submit']['#value'] = $this->t('Save settings'); | |
| if (!$this->entity->isNew()) { | |
| $target_entity_type = $this->entityManager->getDefinition($this->entity->getTargetEntityTypeId()); | |
| $route_parameters = [ | |
| 'field_config' => $this->entity->id(), | |
| ] + FieldUI::getRouteBundleParameter($target_entity_type, $this->entity->getTargetBundle()); | |
| $url = new Url('entity.field_config.' . $target_entity_type->id() . '_field_delete_form', $route_parameters); | |
| if ($this->getRequest()->query->has('destination')) { | |
| $query = $url->getOption('query'); | |
| $query['destination'] = $this->getRequest()->query->get('destination'); | |
| $url->setOption('query', $query); | |
| } | |
| $actions['delete'] = array( | |
| '#type' => 'link', | |
| '#title' => $this->t('Delete'), | |
| '#url' => $url, | |
| '#access' => $this->entity->access('delete'), | |
| '#attributes' => array( | |
| 'class' => array('button', 'button--danger'), | |
| ), | |
| ); | |
| } | |
| return $actions; | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function validateForm(array &$form, FormStateInterface $form_state) { | |
| parent::validateForm($form, $form_state); | |
| if (isset($form['default_value'])) { | |
| $item = $form['#entity']->get($this->entity->getName()); | |
| $item->defaultValuesFormValidate($form['default_value'], $form, $form_state); | |
| } | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function submitForm(array &$form, FormStateInterface $form_state) { | |
| parent::submitForm($form, $form_state); | |
| // Handle the default value. | |
| $default_value = array(); | |
| if (isset($form['default_value'])) { | |
| $items = $form['#entity']->get($this->entity->getName()); | |
| $default_value = $items->defaultValuesFormSubmit($form['default_value'], $form, $form_state); | |
| } | |
| $this->entity->setDefaultValue($default_value); | |
| } | |
| /** | |
| * {@inheritdoc} | |
| */ | |
| public function save(array $form, FormStateInterface $form_state) { | |
| $this->entity->save(); | |
| drupal_set_message($this->t('Saved %label configuration.', array('%label' => $this->entity->getLabel()))); | |
| $request = $this->getRequest(); | |
| if (($destinations = $request->query->get('destinations')) && $next_destination = FieldUI::getNextDestination($destinations)) { | |
| $request->query->remove('destinations'); | |
| $form_state->setRedirectUrl($next_destination); | |
| } | |
| else { | |
| $form_state->setRedirectUrl(FieldUI::getOverviewRouteInfo($this->entity->getTargetEntityTypeId(), $this->entity->getTargetBundle())); | |
| } | |
| } | |
| /** | |
| * The _title_callback for the field settings form. | |
| * | |
| * @param \Drupal\field\FieldConfigInterface $field_config | |
| * The field. | |
| * | |
| * @return string | |
| * The label of the field. | |
| */ | |
| public function getTitle(FieldConfigInterface $field_config) { | |
| return $field_config->label(); | |
| } | |
| } |