You are here

public function PanopolyAdminBlocksForm::buildForm in Panopoly 8.2

Form constructor.

Parameters

array $form: An associative array containing the structure of the form.

\Drupal\Core\Form\FormStateInterface $form_state: The current state of the form.

Return value

array The form structure.

Overrides FormInterface::buildForm

File

modules/panopoly/panopoly_admin/src/Form/PanopolyAdminBlocksForm.php, line 63

Class

PanopolyAdminBlocksForm
Form to administer available blocks.

Namespace

Drupal\panopoly_admin\Form

Code

public function buildForm(array $form, FormStateInterface $form_state) {
  $config = $this->configFactory
    ->get('panopoly_admin.settings');
  $blocks = $config
    ->get('blocks');
  $form['blocks'] = [
    '#type' => 'vertical_tabs',
  ];
  $definitions = $this->blockManager
    ->getFilteredDefinitions('layout_builder', NULL, [
    'panopoly_admin_blocks_form' => TRUE,
  ]);
  $definitions = $this->blockManager
    ->getGroupedDefinitions($definitions);
  foreach ($definitions as $group_name => $group) {
    $key = $group_name;
    if (empty($group_name)) {
      $group_name = $this
        ->t('Miscellaneous');
    }
    $form[$key] = [
      '#type' => 'details',
      '#title' => $group_name,
      '#group' => 'blocks',
    ];
    foreach ($group as $block_id => $definition) {
      $form[$key][$block_id] = [
        '#type' => 'checkbox',
        '#title' => isset($definition['admin_label']) ? $definition['admin_label'] : $block_id,
        '#default_value' => isset($blocks[$block_id]) ? $blocks[$block_id] : TRUE,
        '#parents' => [
          'block_values',
          $block_id,
        ],
      ];
    }
  }
  $form['submit'] = [
    '#type' => 'submit',
    '#value' => $this
      ->t('Save'),
  ];
  return $form;
}