You are here

class PreprocessBase in Express 8

Base preprocess class used to build the necessary variables for templates.

Hierarchy

Expanded class hierarchy of PreprocessBase

File

themes/contrib/bootstrap/src/Plugin/Preprocess/PreprocessBase.php, line 19
Contains \Drupal\bootstrap\Plugin\Preprocess\PreprocessBase.

Namespace

Drupal\bootstrap\Plugin\Preprocess
View source
class PreprocessBase extends PluginBase implements PreprocessInterface {

  /**
   * The theme hook invoked.
   *
   * @type string
   */
  protected $hook;

  /**
   * The theme hook info array from the theme registry.
   *
   * @type array
   */
  protected $info;

  /**
   * The Variables object.
   *
   * @type \Drupal\bootstrap\Utility\Variables
   */
  protected $variables;

  /**
   * {@inheritdoc}
   */
  public function preprocess(array &$variables, $hook, array $info) {
    $this->hook = $hook;
    $this->info = $info;
    $this->variables = Variables::create($variables);
    if ($this->variables->element) {

      // Check for errors and set the "has_error" property flag.
      if (!$this->variables->element
        ->hasProperty('has_error')) {
        $errors = $this->variables->element
          ->getProperty('errors');
        $this->variables->element
          ->setProperty('has_error', isset($errors) || $this->variables->element
          ->getProperty('required') && $this->theme
          ->getSetting('forms_required_has_error'));
      }
      $this
        ->preprocessElement($this->variables->element, $this->variables);
    }
    $this
      ->preprocessVariables($this->variables);
  }

  /**
   * Ensures all attributes have been converted to an Attribute object.
   */
  protected function preprocessAttributes() {
    foreach ($this->variables as $name => $value) {
      if (strpos($name, 'attributes') !== FALSE && is_array($value)) {
        $this->variables[$name] = new Attribute($value);
      }
    }
  }

  /**
   * Converts any set description variable into a traversable array.
   *
   * @see https://www.drupal.org/node/2324025
   */
  protected function preprocessDescription() {
    if ($this->variables
      ->offsetGet('description')) {

      // Retrieve the description attributes.
      $description_attributes = $this->variables
        ->offsetGet('description_attributes', []);

      // Remove standalone description attributes.
      $this->variables
        ->offsetUnset('description_attributes');

      // Build the description attributes.
      if ($id = $this->variables
        ->getAttribute('id')) {
        $this->variables
          ->setAttribute('aria-describedby', "{$id}--description");
        $description_attributes['id'] = "{$id}--description";
      }

      // Replace the description variable.
      $this->variables
        ->offsetSet('description', [
        'attributes' => new Attribute($description_attributes),
        'content' => $this->variables['description'],
        'position' => $this->variables
          ->offsetGet('description_display', 'after'),
      ]);
    }
  }

  /**
   * Preprocess the variables array if an element is present.
   *
   * @param \Drupal\bootstrap\Utility\Element $element
   *   The Element object.
   * @param \Drupal\bootstrap\Utility\Variables $variables
   *   The Variables object.
   */
  protected function preprocessElement(Element $element, Variables $variables) {
  }

  /**
   * Preprocess the variables array.
   *
   * @param \Drupal\bootstrap\Utility\Variables $variables
   *   The Variables object.
   */
  protected function preprocessVariables(Variables $variables) {
  }

}

Members

Namesort descending Modifiers Type Description Overrides
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
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::$theme protected property The currently set theme object.
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::__construct public function Constructs a \Drupal\Component\Plugin\PluginBase object. Overrides PluginBase::__construct 1
PreprocessBase::$hook protected property The theme hook invoked.
PreprocessBase::$info protected property The theme hook info array from the theme registry.
PreprocessBase::$variables protected property The Variables object.
PreprocessBase::preprocess public function Preprocess theme hook variables. Overrides PreprocessInterface::preprocess
PreprocessBase::preprocessAttributes protected function Ensures all attributes have been converted to an Attribute object.
PreprocessBase::preprocessDescription protected function Converts any set description variable into a traversable array.
PreprocessBase::preprocessElement protected function Preprocess the variables array if an element is present. 8
PreprocessBase::preprocessVariables protected function Preprocess the variables array. 15
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.