You are here

class AutocompletionConfigurationListBuilder in Search Autocomplete 8

Same name and namespace in other branches
  1. 2.x src/Controller/AutocompletionConfigurationListBuilder.php \Drupal\search_autocomplete\Controller\AutocompletionConfigurationListBuilder

Provides a listing of autocompletion_configuration entities.

List Controllers provide a list of entities in a tabular form. The base class provides most of the rendering logic for us. The key functions we need to override are buildHeader() and buildRow(). These control what columns are displayed in the table, and how each row is displayed respectively.

Drupal locates the list controller by looking for the "list" entry under "controllers" in our entity type's annotation. We define the path on which the list may be accessed in our module's *.routing.yml file. The key entry to look for is "_entity_list". In *.routing.yml, "_entity_list" specifies an entity type ID. When a user navigates to the URL for that router item, Drupal loads the annotation for that entity type. It looks for the "list" entry under "controllers" for the class to load.

@package Drupal\search_autocomplete\Controller

Hierarchy

Expanded class hierarchy of AutocompletionConfigurationListBuilder

File

src/Controller/AutocompletionConfigurationListBuilder.php, line 32

Namespace

Drupal\search_autocomplete\Controller
View source
class AutocompletionConfigurationListBuilder extends ConfigEntityListBuilder implements FormInterface {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'search_autocomplete_admin_form';
  }

  /**
   * Implements \Drupal\Core\Form\FormInterface::buildForm().
   *
   * Form constructor for the main block administration form.
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $settings = Drupal::config('search_autocomplete.settings');

    // Define the table of configurations.
    $form['configs'] = [
      '#type' => 'table',
      '#header' => [
        $this
          ->t('Autocompletion Configuration Name'),
        $this
          ->t('Enabled'),
        $this
          ->t('Selector'),
        $this
          ->t('Operations'),
      ],
    ];

    // Retrieve existing configurations.
    $entity_ids = $this
      ->getEntityIds();
    $entities = $this->storage
      ->loadMultiple($entity_ids);

    // Build blocks first for each region.
    $configs = [];
    foreach ($entities as $entity_id => $entity) {
      $editable = $entity
        ->getEditable() ? 'editable' : '';
      $deletable = $entity
        ->getEditable() ? 'deletable' : '';
      $form['configs'][$entity_id]['#attributes'] = [
        'id' => [
          $entity_id,
        ],
        'class' => [
          $editable,
          $deletable,
        ],
      ];
      $form['configs'][$entity_id]['label'] = [
        '#markup' => new HtmlEscapedText($entity
          ->label()),
      ];
      $form['configs'][$entity_id]['enabled'] = [
        '#type' => 'checkbox',
        '#default_value' => $entity
          ->getStatus(),
      ];
      $form['configs'][$entity_id]['selector'] = [
        '#markup' => new HtmlEscapedText($entity
          ->getSelector()),
      ];
      $form['configs'][$entity_id]['operations'] = $this
        ->buildOperations($entity);
    }

    // Use admin helper tool option settings.
    $form['admin_helper'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Use autocompletion helper tool for Search Autocomplete administrators.'),
      '#description' => $this
        ->t('If enabled, user with "administer Search Autocomplete" permission will be able to use admin helper tool on input fields (recommended).'),
      '#default_value' => $settings
        ->get('admin_helper'),
    ];
    $form['actions']['submit'] = [
      '#type' => 'submit',
      '#value' => $this
        ->t('Save changes'),
      '#button_type' => 'primary',
    ];
    return $form;
  }

  /**
   * Implements \Drupal\Core\Form\FormInterface::validateForm().
   */
  public function validateForm(array &$form, FormStateInterface $form_state) {

    // No validation.
  }

  /**
   * Implements \Drupal\Core\Form\FormInterface::submitForm().
   *
   * Form submission handler for the main block administration form.
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    $values = $form_state
      ->getValues();

    // Save global configurations.
    Drupal::configFactory()
      ->getEditable('search_autocomplete.settings')
      ->set('admin_helper', $values['admin_helper'])
      ->save();

    // Save all configuration activations.
    $entities = $this->storage
      ->loadMultiple(array_keys($form_state
      ->getValue('configs')));
    foreach ($entities as $entity_id => $entity) {
      $entity_values = $form_state
        ->getValue([
        'configs',
        $entity_id,
      ]);
      $entity
        ->setStatus($entity_values['enabled']);
      $entity
        ->save();
    }
    drupal_set_message($this
      ->t('Data have been saved.'));
  }

  /**
   * Adds some descriptive text to our entity list.
   *
   * Typically, there's no need to override render(). You may wish to do so,
   * however, if you want to add markup before or after the table.
   *
   * @return array
   *   Renderable array.
   */
  public function render() {
    return Drupal::formBuilder()
      ->getForm($this);
  }

  /**
   * {@inheritdoc}
   */
  protected function getEditableConfigNames() {
    return [
      'search_autocomplete.settings',
    ];
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AutocompletionConfigurationListBuilder::buildForm public function Implements \Drupal\Core\Form\FormInterface::buildForm(). Overrides FormInterface::buildForm
AutocompletionConfigurationListBuilder::getEditableConfigNames protected function
AutocompletionConfigurationListBuilder::getFormId public function Returns a unique string identifying the form. Overrides FormInterface::getFormId
AutocompletionConfigurationListBuilder::render public function Adds some descriptive text to our entity list. Overrides EntityListBuilder::render
AutocompletionConfigurationListBuilder::submitForm public function Implements \Drupal\Core\Form\FormInterface::submitForm(). Overrides FormInterface::submitForm
AutocompletionConfigurationListBuilder::validateForm public function Implements \Drupal\Core\Form\FormInterface::validateForm(). Overrides FormInterface::validateForm
ConfigEntityListBuilder::getDefaultOperations public function Gets this list's default operations. Overrides EntityListBuilder::getDefaultOperations 15
ConfigEntityListBuilder::load public function Loads entities of this type from storage for listing. Overrides EntityListBuilder::load 7
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
EntityHandlerBase::$moduleHandler protected property The module handler to invoke hooks on. 2
EntityHandlerBase::moduleHandler protected function Gets the module handler. 2
EntityHandlerBase::setModuleHandler public function Sets the module handler for this handler.
EntityListBuilder::$entityType protected property Information about the entity type.
EntityListBuilder::$entityTypeId protected property The entity type ID.
EntityListBuilder::$limit protected property The number of entities to list per page, or FALSE to list all entities. 3
EntityListBuilder::$storage protected property The entity storage class. 1
EntityListBuilder::buildHeader public function Builds the header row for the entity listing. 26
EntityListBuilder::buildOperations public function Builds a renderable list of operation links for the entity. 2
EntityListBuilder::buildRow public function Builds a row for an entity in the entity listing. 26
EntityListBuilder::createInstance public static function Instantiates a new instance of this entity handler. Overrides EntityHandlerInterface::createInstance 20
EntityListBuilder::ensureDestination protected function Ensures that a destination is present on the given URL.
EntityListBuilder::getEntityIds protected function Loads entity IDs using a pager sorted by the entity id. 4
EntityListBuilder::getLabel Deprecated protected function Gets the label of an entity.
EntityListBuilder::getOperations public function Provides an array of information to build a list of operation links. Overrides EntityListBuilderInterface::getOperations 2
EntityListBuilder::getStorage public function Gets the entity storage. Overrides EntityListBuilderInterface::getStorage
EntityListBuilder::getTitle protected function Gets the title of the page. 1
EntityListBuilder::__construct public function Constructs a new EntityListBuilder object. 16
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
RedirectDestinationTrait::$redirectDestination protected property The redirect destination service. 1
RedirectDestinationTrait::getDestinationArray protected function Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url.
RedirectDestinationTrait::getRedirectDestination protected function Returns the redirect destination service.
RedirectDestinationTrait::setRedirectDestination public function Sets the redirect destination service.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.