You are here

class RenderedItemProperty in Search API 8

Defines a "rendered item" property.

Hierarchy

Expanded class hierarchy of RenderedItemProperty

See also

\Drupal\search_api\Plugin\search_api\processor\RenderedItem

1 file declares its use of RenderedItemProperty
RenderedItem.php in src/Plugin/search_api/processor/RenderedItem.php

File

src/Plugin/search_api/processor/Property/RenderedItemProperty.php, line 16

Namespace

Drupal\search_api\Plugin\search_api\processor\Property
View source
class RenderedItemProperty extends ConfigurablePropertyBase {
  use StringTranslationTrait;

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'roles' => [
        AccountInterface::ANONYMOUS_ROLE,
      ],
      'view_mode' => [],
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function buildConfigurationForm(FieldInterface $field, array $form, FormStateInterface $form_state) {
    $configuration = $field
      ->getConfiguration();
    $index = $field
      ->getIndex();
    $form['#tree'] = TRUE;
    $roles = user_role_names();
    $form['roles'] = [
      '#type' => 'select',
      '#title' => $this
        ->t('User roles'),
      '#description' => $this
        ->t('Your item will be rendered as seen by a user with the selected roles. We recommend to just use "@anonymous" here to prevent data leaking out to unauthorized roles.', [
        '@anonymous' => $roles[AccountInterface::ANONYMOUS_ROLE],
      ]),
      '#options' => $roles,
      '#multiple' => TRUE,
      '#default_value' => $configuration['roles'],
      '#required' => TRUE,
    ];
    $form['view_mode'] = [
      '#type' => 'item',
      '#description' => $this
        ->t('You can choose the view modes to use for rendering the items of different datasources and bundles. We recommend using a dedicated view mode (for example, the "Search index" view mode available by default for content) to make sure that only relevant data (especially no field labels) will be included in the index.'),
    ];
    $options_present = FALSE;
    foreach ($index
      ->getDatasources() as $datasource_id => $datasource) {
      $bundles = $datasource
        ->getBundles();
      foreach ($bundles as $bundle_id => $bundle_label) {
        $view_modes = $datasource
          ->getViewModes($bundle_id);
        $view_modes[''] = $this
          ->t("Don't include the rendered item.");
        if (count($view_modes) > 1) {
          $form['view_mode'][$datasource_id][$bundle_id] = [
            '#type' => 'select',
            '#title' => $this
              ->t('View mode for %datasource » %bundle', [
              '%datasource' => $datasource
                ->label(),
              '%bundle' => $bundle_label,
            ]),
            '#options' => $view_modes,
          ];
          if (isset($configuration['view_mode'][$datasource_id][$bundle_id])) {
            $form['view_mode'][$datasource_id][$bundle_id]['#default_value'] = $configuration['view_mode'][$datasource_id][$bundle_id];
          }
          $options_present = TRUE;
        }
        else {
          $form['view_mode'][$datasource_id][$bundle_id] = [
            '#type' => 'value',
            '#value' => $view_modes ? key($view_modes) : FALSE,
          ];
        }
      }
    }

    // If there are no datasources/bundles with more than one view mode, don't
    // display the description either.
    if (!$options_present) {
      unset($form['view_mode']['#type']);
      unset($form['view_mode']['#description']);
    }
    return $form;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
ConfigurablePropertyBase::getFieldDescription public function Retrieves the description for a field based on this property. Overrides ConfigurablePropertyInterface::getFieldDescription 1
ConfigurablePropertyBase::submitConfigurationForm public function Submits a configuration form for a field based on this property. Overrides ConfigurablePropertyInterface::submitConfigurationForm 1
ConfigurablePropertyBase::validateConfigurationForm public function Validates a configuration form for a field based on this property. Overrides ConfigurablePropertyInterface::validateConfigurationForm
DataDefinition::$definition protected property The array holding values for all definition keys.
DataDefinition::addConstraint public function Adds a validation constraint. Overrides DataDefinitionInterface::addConstraint
DataDefinition::create public static function Creates a new data definition. 5
DataDefinition::createFromDataType public static function Creates a new data definition object. Overrides DataDefinitionInterface::createFromDataType 5
DataDefinition::getClass public function Returns the class used for creating the typed data object. Overrides DataDefinitionInterface::getClass 1
DataDefinition::getConstraint public function Returns a validation constraint. Overrides DataDefinitionInterface::getConstraint
DataDefinition::getConstraints public function Returns an array of validation constraints. Overrides DataDefinitionInterface::getConstraints 1
DataDefinition::getDataType public function Returns the data type of the data. Overrides DataDefinitionInterface::getDataType 2
DataDefinition::getDescription public function Returns a human readable description. Overrides DataDefinitionInterface::getDescription
DataDefinition::getLabel public function Returns a human readable label. Overrides DataDefinitionInterface::getLabel
DataDefinition::getSetting public function Returns the value of a given setting. Overrides DataDefinitionInterface::getSetting 2
DataDefinition::getSettings public function Returns the array of settings, as required by the used class. Overrides DataDefinitionInterface::getSettings 2
DataDefinition::isComputed public function Determines whether the data value is computed. Overrides DataDefinitionInterface::isComputed
DataDefinition::isInternal public function Determines whether the data value is internal. Overrides DataDefinitionInterface::isInternal 1
DataDefinition::isReadOnly public function Determines whether the data is read-only. Overrides DataDefinitionInterface::isReadOnly
DataDefinition::isRequired public function Determines whether a data value is required. Overrides DataDefinitionInterface::isRequired
DataDefinition::offsetExists public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetGet public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetSet public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetUnset public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::setClass public function Sets the class used for creating the typed data object.
DataDefinition::setComputed public function Sets whether the data is computed.
DataDefinition::setConstraints public function Sets an array of validation constraints.
DataDefinition::setDataType public function Sets the data type. 1
DataDefinition::setDescription public function Sets the human-readable description.
DataDefinition::setInternal public function Sets the whether the data value should be internal.
DataDefinition::setLabel public function Sets the human-readable label.
DataDefinition::setReadOnly public function Sets whether the data is read-only.
DataDefinition::setRequired public function Sets whether the data is required.
DataDefinition::setSetting public function Sets a definition setting. 2
DataDefinition::setSettings public function Sets the array of settings, as required by the used class. 2
DataDefinition::toArray public function Returns all definition values as array.
DataDefinition::__construct public function Constructs a new data definition object. 1
DataDefinition::__sleep public function 2
ProcessorProperty::getProcessorId public function Retrieves the ID of the processor which defines this property. Overrides ProcessorPropertyInterface::getProcessorId
ProcessorProperty::isHidden public function Determines whether this property should be hidden from the UI. Overrides ProcessorPropertyInterface::isHidden
ProcessorProperty::isList public function Returns whether the data is multi-valued, i.e. a list of data items. Overrides DataDefinition::isList
RenderedItemProperty::buildConfigurationForm public function Constructs a configuration form for a field based on this property. Overrides ConfigurablePropertyInterface::buildConfigurationForm
RenderedItemProperty::defaultConfiguration public function Gets the default configuration for this property. Overrides ConfigurablePropertyBase::defaultConfiguration
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.
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2