commerce_inventory-8.x-1.0-alpha6/src/Plugin/views/field/CommerceInventoryAdjustmentTypeLabel.php

src/Plugin/views/field/CommerceInventoryAdjustmentTypeLabel.php
<?php

namespace Drupal\commerce_inventory\Plugin\views\field;

use Drupal\commerce_inventory\InventoryAdjustmentTypeManager;
use Drupal\Core\Entity\EntityManagerInterface;
use Drupal\Core\Field\FieldTypePluginManagerInterface;
use Drupal\Core\Field\FormatterPluginManager;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Drupal\Core\Render\RendererInterface;
use Drupal\views\Plugin\views\field\EntityField;
use Drupal\views\ResultRow;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * A handler to provide a field that is completely custom by the administrator.
 *
 * @ingroup views_field_handlers
 *
 * @ViewsField("commerce_inventory_adjustment_type_label")
 */
class CommerceInventoryAdjustmentTypeLabel extends EntityField {

  /**
   * The inventory adjustment type plugin manager.
   *
   * @var \Drupal\commerce_inventory\InventoryAdjustmentTypeManager
   */
  protected $inventoryAdjustmentTypeManager;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, EntityManagerInterface $entity_manager, FormatterPluginManager $formatter_plugin_manager, FieldTypePluginManagerInterface $field_type_plugin_manager, LanguageManagerInterface $language_manager, RendererInterface $renderer, InventoryAdjustmentTypeManager $adjustment_type_manager) {
    parent::__construct($configuration, $plugin_id, $plugin_definition, $entity_manager, $formatter_plugin_manager, $field_type_plugin_manager, $language_manager, $renderer);

    $this->inventoryAdjustmentTypeManager = $adjustment_type_manager;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('entity.manager'),
      $container->get('plugin.manager.field.formatter'),
      $container->get('plugin.manager.field.field_type'),
      $container->get('language_manager'),
      $container->get('renderer'),
      $container->get('plugin.manager.commerce_inventory_adjustment_type')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function getItems(ResultRow $values) {
    $items = parent::getItems($values);
    foreach ($items as &$item) {
      if ($definition = $this->inventoryAdjustmentTypeManager->getDefinition($item['raw']->get('value')->getValue(), FALSE)) {
        $label_select = $this->options['label_select'];
        if (!array_key_exists($label_select, $definition)) {
          $label_select = 'label';
        }
        $item['rendered']['#context']['value'] = $definition[$label_select];
      }
    }
    return $items;
  }

  /**
   * {@inheritdoc}
   */
  protected function defineOptions() {
    $options = parent::defineOptions();
    $options['label_select']['default'] = 'label';
    return $options;
  }

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

    $form['label_select'] = [
      '#title' => $this->t('Label selection'),
      '#description' => $this->t('Choose label version to use.'),
      '#type' => 'select',
      '#options' => [
        'label' => $this->t('Default'),
        'label_verb' => $this->t('Verb'),
        'label_preposition' => $this->t('Preposition'),
        'label_related_preposition' => $this->t('Related Preposition'),
      ],
      '#default_value' => $this->options['label_select'],
    ];
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc