You are here

public function SimplePopupBlocksEditForm::buildForm in Simple Popup Blocks 8

Same name and namespace in other branches
  1. 8.2 src/Form/SimplePopupBlocksEditForm.php \Drupal\simple_popup_blocks\Form\SimplePopupBlocksEditForm::buildForm()

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 SimplePopupBlocksAddForm::buildForm

File

src/Form/SimplePopupBlocksEditForm.php, line 25

Class

SimplePopupBlocksEditForm
Form to add a database entry, with all the interesting fields.

Namespace

Drupal\simple_popup_blocks\Form

Code

public function buildForm(array $form, FormStateInterface $form_state, $first = NULL) {

  // Query for items to display.
  $entry = SimplePopupBlocksStorage::load($first, $this->database);

  // Tell the user if there is nothing to display.
  if (empty($entry)) {
    $form['no_values'] = [
      '#markup' => t('<h3>No results found. Please goto manage popups page.</h3>'),
    ];
    return $form;
  }
  $entry = $entry[0];
  $form = parent::buildForm($form, $form_state);
  $form['status'] = [
    '#type' => 'checkbox',
    '#title' => $this
      ->t('Enable this as popup.'),
    '#default_value' => $entry->status,
    '#weight' => -99,
  ];
  $visit_counts = unserialize($entry->visit_counts);
  $identifier = $entry->identifier;
  $form['type']['#default_value'] = $entry->type;
  $form['block_list']['#default_value'] = $identifier;
  $form['custom_css']['#default_value'] = $identifier;
  $form['css_selector']['#default_value'] = $entry->css_selector;
  $form['layout']['#default_value'] = $entry->layout;
  $form['visit_counts']['#default_value'] = $visit_counts;
  $form['minimize']['#default_value'] = $entry->minimize;
  $form['close']['#default_value'] = $entry->close;
  $form['escape']['#default_value'] = $entry->escape;
  $form['overlay']['#default_value'] = $entry->overlay;
  $form['trigger_method']['#default_value'] = $entry->trigger_method;
  $form['trigger_selector']['#default_value'] = $entry->trigger_selector;
  $form['delay']['#default_value'] = $entry->delay;
  $form['width']['#default_value'] = $entry->width;
  $block_id_append = '';
  if ($entry->type == 0) {
    $block_id_append = 'block-';
    $identifier = preg_replace('/[_]+/', '-', $identifier);
  }
  $identifier = $block_id_append . $identifier;
  $parent = "#spb-" . $identifier;
  $modal_class = "." . $identifier . "-modal";
  $modal_close_class = "." . $identifier . "-modal-close";
  $modal_minimize_class = "." . $identifier . "-modal-minimize";
  $modal_minimized_class = "." . $identifier . "-modal-minimized";
  $positions = [
    0 => $this
      ->t('spb_top_left'),
    1 => $this
      ->t('spb_top_right'),
    2 => $this
      ->t('spb_bottom_left'),
    3 => $this
      ->t('spb_bottom_right'),
    4 => $this
      ->t('spb_center'),
    5 => $this
      ->t('spb_top_center'),
    6 => $this
      ->t('spb_top_bar'),
    7 => $this
      ->t('spb_bottom_bar'),
    8 => $this
      ->t('spb_left_bar'),
    9 => $this
      ->t('spb_right_bar'),
  ];
  $override_positions = $modal_class . ' .' . $positions[$entry->layout];
  $css_selector = '#';
  if ($entry->type && $entry->css_selector == 0) {
    $css_selector = '.';
  }
  $form['adjustments']['#description'] = $this
    ->t('Use the following css selectors to customize the popup designs.');
  $rows = [
    [
      'Parent',
      $parent,
    ],
    [
      'Identifier',
      $css_selector . $identifier,
    ],
    [
      'Modal class',
      $modal_class,
    ],
    [
      'Modal close class',
      $modal_close_class,
    ],
    [
      'Modal minimize class',
      $modal_minimize_class,
    ],
    [
      'Modal minimized class',
      $modal_minimized_class,
    ],
    [
      'Override positions',
      $override_positions,
    ],
  ];
  $form['adjustments']['table'] = [
    '#type' => 'table',
    '#rows' => $rows,
    '#empty' => t('No results found'),
  ];
  $documentation = Url::fromUri('https://www.drupal.org/docs/8/modules/simple-popup-blocks');
  $documentation = Link::fromTextAndUrl($this
    ->t('here'), $documentation);
  $documentation = $documentation
    ->toRenderable();
  $documentation = render($documentation);
  $display_none = "<p><h3>Add this css code in your css file (Recommended)</h3><p>";
  $display_none .= "<code>\n      " . $css_selector . $identifier . " {<br>\n      &nbsp;&nbsp;display: none;<br>\n      }</code><br>";
  $display_none .= "<p>While page loading with slow internet connection, content of popup will be visible to users. So you should add this css code in your theme or any css file.</p>";
  $display_none .= "<p>See the documentation " . $documentation . "</p>";
  $form['adjustments']['display_none'] = [
    '#markup' => $display_none,
  ];

  // Set a value by key.
  $form_state
    ->set('simple_popup_blocks_id', $first);
  return $form;
}