View source
<?php
namespace Drupal\popup_onload\Form;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Form\ConfigFormBase;
class PopupOnLoadSettingsForm extends ConfigFormBase {
public function getFormId() {
return 'popup_onload_settings';
}
protected function getEditableConfigNames() {
return [
'popup_onload.settings',
];
}
public function submitForm(array &$form, FormStateInterface $form_state) {
parent::submitForm($form, $form_state);
$this
->config('popup_onload.settings')
->set(POPUP_ONLOAD_VAR_SORT_METHOD, $form_state
->getValue(POPUP_ONLOAD_VAR_SORT_METHOD))
->set(POPUP_ONLOAD_VAR_COOKIE_NAME, $form_state
->getValue(POPUP_ONLOAD_VAR_COOKIE_NAME))
->set(POPUP_ONLOAD_VAR_COOKIE_LIFETIME, $form_state
->getValue(POPUP_ONLOAD_VAR_COOKIE_LIFETIME))
->set(POPUP_ONLOAD_VAR_DISPLAY_DELAY, $form_state
->getValue(POPUP_ONLOAD_VAR_DISPLAY_DELAY))
->set(POPUP_ONLOAD_VAR_INCLUDE_PATHS, $form_state
->getValue(POPUP_ONLOAD_VAR_INCLUDE_PATHS))
->save();
}
public function buildForm(array $form, FormStateInterface $form_state) {
$form = parent::buildForm($form, $form_state);
$methods = popup_onload_sort_methods();
$form['sort_methods'] = array(
'#type' => 'fieldset',
'#title' => t('Popup sort methods'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'#description' => t('How to determine the popup, displayed to the user.'),
);
$form['sort_methods'][POPUP_ONLOAD_VAR_SORT_METHOD] = array(
'#type' => 'radios',
'#options' => $methods,
'#default_value' => $this
->popupOnLoadGetDefaults(POPUP_ONLOAD_VAR_SORT_METHOD, POPUP_ONLOAD_DEFAULT_SORT_METHOD),
);
$form['misc'] = array(
'#type' => 'fieldset',
'#title' => t('Miscellaneous'),
'#collapsible' => FALSE,
'#collapsed' => FALSE,
'#description' => t('Misc settings.'),
);
$form['misc'][POPUP_ONLOAD_VAR_COOKIE_NAME] = array(
'#type' => 'textfield',
'#title' => t('Popup cookie name'),
'#description' => t('Override this only if your server configuration filters out cookies with certain pattern.'),
'#default_value' => $this
->popupOnLoadGetDefaults(POPUP_ONLOAD_VAR_COOKIE_NAME, POPUP_ONLOAD_DEFAULT_COOKIE_NAME),
);
$form['misc'][POPUP_ONLOAD_VAR_COOKIE_LIFETIME] = array(
'#type' => 'number',
'#title' => t('Popup cookie lifetime'),
'#description' => t('How many seconds popups will not be displayed to the user after the first display.'),
'#default_value' => $this
->popupOnLoadGetDefaults(POPUP_ONLOAD_VAR_COOKIE_LIFETIME, POPUP_ONLOAD_DEFAULT_COOKIE_LIFETIME),
);
$form['misc'][POPUP_ONLOAD_VAR_DISPLAY_DELAY] = array(
'#type' => 'number',
'#title' => t('Popup display delay'),
'#description' => t('Delay in milliseconds before the popup is displayed to the user.'),
'#default_value' => $this
->popupOnLoadGetDefaults(POPUP_ONLOAD_VAR_DISPLAY_DELAY, POPUP_ONLOAD_DEFAULT_DELAY),
);
return $form;
}
public static function popupOnLoadGetDefaults($key, $default) {
$configs = \Drupal::config('popup_onload.settings');
$config = $configs
->get($key);
return isset($config) ? $config : $default;
}
}