You are here

class EloquaSettingsForm in Eloqua 8

Configure Eloqua settings for this site.

Hierarchy

Expanded class hierarchy of EloquaSettingsForm

File

src/Form/EloquaSettingsForm.php, line 22
Contains \Drupal\eloqua\Form\EloquaSettingsForm.

Namespace

Drupal\Eloqua\Form
View source
class EloquaSettingsForm extends ConfigFormBase {

  /**
   * The condition plugin manager.
   *
   * @var \Drupal\Core\Condition\ConditionManager
   */
  protected $manager;

  /**
   * The request_path condition.
   *
   * @var \Drupal\system\Plugin\Condition\RequestPath $requestPath
   */
  protected $requestPath;

  /**
   * The user_role condition.
   *
   * @var \Drupal\user\Plugin\Condition\UserRole $userRole
   */
  protected $userRole;

  /**
   * Creates a new EloquaSettingsForm.
   *
   * @param ConfigFactoryInterface $config_factory
   *   The config factory.
   * @param \Drupal\Core\Executable\ExecutableManagerInterface $manager
   *   The ConditionManager for building the tracking scope UI.
   * @param \Drupal\Component\Plugin\Factory\FactoryInterface $plugin_factory
   *   The condition plugin factory.
   */
  public function __construct(ConfigFactoryInterface $config_factory, ExecutableManagerInterface $manager, FactoryInterface $plugin_factory) {
    parent::__construct($config_factory);
    $this->manager = $manager;
    $this->requestPath = $plugin_factory
      ->createInstance('request_path');
    $this->userRole = $plugin_factory
      ->createInstance('user_role');
  }

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

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

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

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

    // Load our default configuration settings.
    $config = $this
      ->config('eloqua.settings');
    $form['eloqua_settings'] = array(
      '#type' => 'details',
      '#title' => $this
        ->t('General Settings'),
      '#description' => $this
        ->t('General settings applicable to all Eloqua functionality.'),
      '#open' => TRUE,
    );
    $form['eloqua_settings']['site_identifier'] = array(
      '#type' => 'textfield',
      '#title' => $this
        ->t('Site Identifier'),
      '#description' => $this
        ->t('The Eloqua Site ID for this web site. Required to include the Eloqua tracking code.'),
      '#required' => TRUE,
      '#size' => 20,
      '#maxlength' => 64,
      '#default_value' => $config
        ->get('site_identifier'),
    );
    $form['tracking_scope'] = $this
      ->buildTrackignScopeInterface([], $form_state);
    return parent::buildForm($form, $form_state);
  }

  /**
   * Helper function for building the tracking scope UI form.
   *
   * @param array $form
   *   An associative array containing the structure of the form.
   * @param \Drupal\Core\Form\FormStateInterface $form_state
   *   The current state of the form.
   *
   * @return array
   *   The form array with the tracking scope UI added in.
   */
  protected function buildTrackignScopeInterface(array $form, FormStateInterface $form_state) {
    $config = $this
      ->config('eloqua.settings');
    $form['tracking_scope'] = array(
      '#type' => 'item',
      '#title' => $this
        ->t('Tracking scope'),
      '#description' => $this
        ->t('Configuration to include/exclude the Eloqua tracking code.'),
    );
    $form['tracking_scope_tabs'] = [
      '#type' => 'vertical_tabs',
      '#title' => $this
        ->t('Tracking Scope Conditions'),
      '#title_display' => 'invisible',
      '#parents' => [
        'tracking_scope_tabs',
      ],
      '#attached' => [
        'library' => [
          'eloqua/eloqua.admin',
        ],
      ],
    ];

    // Set the condition configuration.
    $this->requestPath
      ->setConfiguration($config
      ->get('request_path'));
    $this->userRole
      ->setConfiguration($config
      ->get('user_role'));

    // Build the request_path condition configuration form elements.
    $form += $this->requestPath
      ->buildConfigurationForm($form, $form_state);
    if (isset($form['pages'])) {
      $form['pages']['pages'] = $form['pages'];
      $form['pages']['negate'] = $form['negate'];
      unset($form['pages']['#description']);
      unset($form['negate']);
      $form['pages']['#type'] = 'details';
      $form['pages']['#group'] = 'tracking_scope_tabs';
      $form['pages']['#title'] = $this
        ->t('Pages');
      $form['pages']['negate']['#type'] = 'radios';
      $form['pages']['negate']['#title_display'] = 'invisible';
      $form['pages']['negate']['#options'] = [
        $this
          ->t('Show for the listed pages'),
        $this
          ->t('Hide for the listed pages'),
      ];

      // Switch negate default value form boolean to integer.
      // Solves issue related to https://www.drupal.org/node/2450637.
      $form['pages']['negate']['#default_value'] = $form['pages']['negate']['#default_value'] === FALSE ? 0 : 1;
    }

    // Build the user_role condition configuration form elements.
    $form += $this->userRole
      ->buildConfigurationForm($form, $form_state);
    if (isset($form['roles'])) {
      $form['roles']['roles'] = $form['roles'];
      $form['roles']['negate'] = $form['negate'];
      unset($form['roles']['#description']);
      unset($form['negate']);
      $form['roles']['#type'] = 'details';
      $form['roles']['#group'] = 'tracking_scope_tabs';
      $form['roles']['#title'] = $this
        ->t('Roles');
      $form['roles']['negate']['#type'] = 'value';
      $form['roles']['negate']['#default_value'] = FALSE;
    }
    return $form;
  }

  /**
   * {@inheritdoc}
   */
  public function submitForm(array &$form, FormStateInterface $form_state) {
    parent::submitForm($form, $form_state);
    $this->requestPath
      ->submitConfigurationForm($form, $form_state);
    $this->userRole
      ->submitConfigurationForm($form, $form_state);
    $this
      ->config('eloqua.settings')
      ->set('site_identifier', Html::escape($form_state
      ->getValue('site_identifier')))
      ->set('request_path', $this->requestPath
      ->getConfiguration())
      ->set('user_role', $this->userRole
      ->getConfiguration())
      ->save();
    parent::submitForm($form, $form_state);
  }

}

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
EloquaSettingsForm::$manager protected property The condition plugin manager.
EloquaSettingsForm::$requestPath protected property The request_path condition.
EloquaSettingsForm::$userRole protected property The user_role condition.
EloquaSettingsForm::buildForm public function Form constructor. Overrides ConfigFormBase::buildForm
EloquaSettingsForm::buildTrackignScopeInterface protected function Helper function for building the tracking scope UI form.
EloquaSettingsForm::create public static function Instantiates a new instance of this class. Overrides ConfigFormBase::create
EloquaSettingsForm::getEditableConfigNames protected function Gets the configuration names that will be editable. Overrides ConfigFormBaseTrait::getEditableConfigNames
EloquaSettingsForm::getFormId public function Returns a unique string identifying the form. Overrides FormInterface::getFormId
EloquaSettingsForm::submitForm public function Form submission handler. Overrides ConfigFormBase::submitForm
EloquaSettingsForm::__construct public function Creates a new EloquaSettingsForm. Overrides ConfigFormBase::__construct
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.
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.