You are here

class PopupSettingsForm in Popup Dialog 8.2

Same name and namespace in other branches
  1. 8 src/Form/PopupSettingsForm.php \Drupal\popup_dialog\Form\PopupSettingsForm

Class PopupSettingsForm.

@package Drupal\popup_dialog\Form

Hierarchy

Expanded class hierarchy of PopupSettingsForm

1 string reference to 'PopupSettingsForm'
popup_dialog.routing.yml in ./popup_dialog.routing.yml
popup_dialog.routing.yml

File

src/Form/PopupSettingsForm.php, line 17

Namespace

Drupal\popup_dialog\Form
View source
class PopupSettingsForm extends ConfigFormBase {

  /**
   * The block manager.
   *
   * @var \Drupal\Core\Block\BlockManagerInterface
   */
  protected $blockManager;

  /**
   * The context manager service.
   *
   * @var \Drupal\Core\Plugin\Context\ContextRepositoryInterface
   */
  protected $contextRepository;

  /**
   * Constructs a new CategoryAutocompleteController.
   *
   * @param \Drupal\Core\Block\BlockManagerInterface $blockManager
   *   The block Manager.
   * @param \Drupal\Core\Plugin\Context\ContextRepositoryInterface $contextRepository
   *   The contextrepository.
   */
  public function __construct(BlockManagerInterface $blockManager, ContextRepositoryInterface $contextRepository) {
    $this->blockManager = $blockManager;
    $this->contextRepository = $contextRepository;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container) {
    return new static($container
      ->get('plugin.manager.block'), $container
      ->get('context.repository'));
  }

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

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

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {
    $config = $this
      ->config('popup_dialog.settings');
    $form['popup_enabled'] = [
      '#type' => 'checkbox',
      '#title' => $this
        ->t('Enabled'),
      '#description' => $this
        ->t('Popup will be enabled when the checkbox is active.'),
      '#default_value' => $config
        ->get('popup_enabled'),
    ];
    $prefix_class = $config
      ->get('popup_enabled') == 0 ? 'hidden' : '';
    $form['popup_settings'] = [
      '#type' => 'details',
      '#title' => $this
        ->t('Popup Box Settings'),
      '#open' => TRUE,
      '#prefix' => '<div id="config-form-section" ' . $prefix_class . '>',
    ];
    $category_settings = !empty($config
      ->get('category_settings')) ? $config
      ->get('category_settings') : 1;
    $form['popup_settings']['category_settings'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Category Settings'),
      '#options' => [
        '1' => $this
          ->t('Custom Content'),
        '2' => $this
          ->t('Blocks'),
        '3' => $this
          ->t('Views'),
      ],
      '#default_value' => $category_settings,
    ];
    $form['popup_settings']['custom_content'] = [
      '#type' => 'details',
      '#title' => $this
        ->t('Custom Content'),
      '#open' => TRUE,
      '#states' => [
        'visible' => [
          ':input[name="category_settings"]' => [
            'value' => '1',
          ],
        ],
      ],
    ];
    $form['popup_settings']['custom_content']['popup_box_title'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Title'),
      '#description' => $this
        ->t('The title for the popup dialog box.'),
      '#maxlength' => 64,
      '#size' => 64,
      '#default_value' => $config
        ->get('popup_box_title'),
    ];
    $form['popup_settings']['custom_content']['popup_box_body'] = [
      '#type' => 'text_format',
      '#title' => $this
        ->t('Body'),
      '#default_value' => $config
        ->get('popup_box_body')['value'],
      '#format' => $config
        ->get('popup_box_body')['format'],
    ];

    // Get blocks definition.
    $definitions = $this->blockManager
      ->getDefinitionsForContexts($this->contextRepository
      ->getAvailableContexts());
    $definitions = $this->blockManager
      ->getSortedDefinitions($definitions);
    foreach ($definitions as $plugin_id => $plugin_definition) {
      $title = (string) $plugin_definition['admin_label'];
      $list_of_blocks[$plugin_id . '|' . $title] = (string) $title;
    }
    $form['popup_settings']['blocks'] = [
      '#type' => 'details',
      '#title' => $this
        ->t('Blocks'),
      '#open' => TRUE,
      '#states' => [
        'visible' => [
          ':input[name="category_settings"]' => [
            'value' => '2',
          ],
        ],
      ],
    ];
    $form['popup_settings']['blocks']['list_of_blocks'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('List of Blocks'),
      '#options' => [
        '0' => 'Please select block',
      ] + $list_of_blocks,
      '#default_value' => $config
        ->get('list_of_blocks'),
    ];

    // List of views.
    $list_of_views = Views::getViewsAsOptions(FALSE, 'all', NULL, FALSE, TRUE);
    $form['popup_settings']['views'] = [
      '#type' => 'details',
      '#title' => $this
        ->t('Views'),
      '#open' => TRUE,
      '#states' => [
        'visible' => [
          ':input[name="category_settings"]' => [
            'value' => '3',
          ],
        ],
      ],
    ];
    $form['popup_settings']['views']['list_of_views'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('List of Views'),
      '#options' => [
        '0' => 'Please select view',
      ] + $list_of_views,
      '#default_value' => $config
        ->get('list_of_views'),
    ];
    $form['popup_settings']['views']['arguments'] = [
      '#type' => 'textfield',
      '#title' => $this
        ->t('Arguments'),
      '#description' => $this
        ->t('Please give arguments in a comma format.'),
      '#default_value' => $config
        ->get('arguments'),
    ];
    $form['popup_settings']['delay'] = [
      '#type' => 'number',
      '#title' => $this
        ->t('Delay'),
      '#description' => $this
        ->t('Show message after the enter number of seconds. Enter 0 to show instantly.'),
      '#default_value' => $config
        ->get('delay'),
      '#min' => 0,
    ];
    $form['popup_settings']['popup_top_position'] = [
      '#type' => 'number',
      '#title' => $this
        ->t('Top Offset'),
      '#description' => $this
        ->t('Set the offset in px how much the popup box should be away from the top edge of the screen.'),
      '#min' => 0,
      '#default_value' => $config
        ->get('popup_top_position'),
    ];
    $popup_interval = !empty($config
      ->get('popup_interval')) ? $config
      ->get('popup_interval') : 1;
    $form['popup_settings']['popup_interval'] = [
      '#type' => 'radios',
      '#title' => $this
        ->t('Popup time interval settings'),
      '#options' => [
        '1' => $this
          ->t('One time (By default the pop-up will display once in 6 months.)'),
        '2' => $this
          ->t('Time Interval'),
      ],
      '#default_value' => $popup_interval,
    ];
    $form['popup_settings']['time_interval_fieldset'] = [
      '#type' => 'details',
      '#title' => $this
        ->t('Set time interval'),
      '#open' => TRUE,
      '#states' => [
        'visible' => [
          ':input[name="popup_interval"]' => [
            'value' => '2',
          ],
        ],
      ],
    ];
    $form['popup_settings']['time_interval_fieldset']['time_interval'] = [
      '#type' => 'number',
      '#title' => $this
        ->t('Time interval'),
      '#description' => $this
        ->t('Time interval for popup dialog box (in: Days).'),
      '#min' => 1,
      '#default_value' => $config
        ->get('time_interval'),
      '#suffix' => '</div>',
    ];
    return parent::buildForm($form, $form_state);
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    parent::submitForm($form, $form_state);

    /* $config = \Drupal::config('popup_dialog.settings'); */
    $this
      ->config('popup_dialog.settings')
      ->set('popup_enabled', $form_state
      ->getValue('popup_enabled'))
      ->set('category_settings', $form_state
      ->getValue('category_settings'))
      ->set('popup_box_title', $form_state
      ->getValue('popup_box_title'))
      ->set('popup_box_body', $form_state
      ->getValue('popup_box_body'))
      ->set('list_of_blocks', $form_state
      ->getValue('list_of_blocks'))
      ->set('list_of_views', $form_state
      ->getValue('list_of_views'))
      ->set('arguments', $form_state
      ->getValue('arguments'))
      ->set('delay', $form_state
      ->getValue('delay'))
      ->set('popup_top_position', $form_state
      ->getValue('popup_top_position'))
      ->set('popup_interval', $form_state
      ->getValue('popup_interval'))
      ->set('time_interval', $form_state
      ->getValue('time_interval'))
      ->save();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigFormBaseTrait::config protected function Retrieves a configuration object.
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
FormBase::$configFactory protected property The config factory. 1
FormBase::$requestStack protected property The request stack. 1
FormBase::$routeMatch protected property The route match.
FormBase::configFactory protected function Gets the config factory for this form. 1
FormBase::container private function Returns the service container.
FormBase::currentUser protected function Gets the current user.
FormBase::getRequest protected function Gets the request object.
FormBase::getRouteMatch protected function Gets the route match.
FormBase::logger protected function Gets the logger for a specific channel.
FormBase::redirect protected function Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait::redirect
FormBase::resetConfigFactory public function Resets the configuration factory.
FormBase::setConfigFactory public function Sets the config factory for this form.
FormBase::setRequestStack public function Sets the request stack object to use.
FormBase::validateForm public function Form validation handler. Overrides FormInterface::validateForm 62
LinkGeneratorTrait::$linkGenerator protected property The link generator. 1
LinkGeneratorTrait::getLinkGenerator Deprecated protected function Returns the link generator.
LinkGeneratorTrait::l Deprecated protected function Renders a link to a route given a route name and its parameters.
LinkGeneratorTrait::setLinkGenerator Deprecated public function Sets the link generator service.
LoggerChannelTrait::$loggerFactory protected property The logger channel factory service.
LoggerChannelTrait::getLogger protected function Gets the logger for a specific channel.
LoggerChannelTrait::setLoggerFactory public function Injects the logger channel factory.
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PopupSettingsForm::$blockManager protected property The block manager.
PopupSettingsForm::$contextRepository protected property The context manager service.
PopupSettingsForm::buildForm public function Form constructor. Overrides ConfigFormBase::buildForm
PopupSettingsForm::create public static function Instantiates a new instance of this class. Overrides ConfigFormBase::create
PopupSettingsForm::getEditableConfigNames protected function Gets the configuration names that will be editable. Overrides ConfigFormBaseTrait::getEditableConfigNames
PopupSettingsForm::getFormId public function Returns a unique string identifying the form. Overrides FormInterface::getFormId
PopupSettingsForm::submitForm public function Form submission handler. Overrides ConfigFormBase::submitForm
PopupSettingsForm::__construct public function Constructs a new CategoryAutocompleteController. Overrides ConfigFormBase::__construct
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.
UrlGeneratorTrait::$urlGenerator protected property The url generator.
UrlGeneratorTrait::getUrlGenerator Deprecated protected function Returns the URL generator service.
UrlGeneratorTrait::setUrlGenerator Deprecated public function Sets the URL generator service.
UrlGeneratorTrait::url Deprecated protected function Generates a URL or path for a specific route based on the given parameters.