acquia_commercemanager-8.x-1.122/modules/acm/src/Plugin/CommerceDashboardItem/StoreConfigurationStatus.php

modules/acm/src/Plugin/CommerceDashboardItem/StoreConfigurationStatus.php
<?php

namespace Drupal\acm\Plugin\CommerceDashboardItem;

use Drupal\acm\CommerceDashboardItemBase;
use Drupal\Core\Config\ConfigFactoryInterface;
use Drupal\Core\Language\LanguageManagerInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Class StoreConfigurationStatus.
 *
 * @CommerceDashboardItem(
 *   id = "store_configuration_status",
 *   title = @Translation("Store configuration"),
 *   weight = -200,
 *   group = "tile",
 * )
 */
class StoreConfigurationStatus extends CommerceDashboardItemBase {

  /**
   * Language Manager.
   *
   * @var \Drupal\Core\Language\LanguageManagerInterface
   */
  protected $languageManager;

  /**
   * Config Factory.
   *
   * @var \Drupal\Core\Config\ConfigFactoryInterface
   */
  protected $configFactory;

  /**
   * {@inheritdoc}
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, LanguageManagerInterface $language_manager, ConfigFactoryInterface $config_factory) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);

    $this->languageManager = $language_manager;
    $this->configFactory = $config_factory;
  }

  /**
   * {@inheritdoc}
   */
  public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
    return new static(
      $configuration,
      $plugin_id,
      $plugin_definition,
      $container->get('language_manager'),
      $container->get('config.factory')
    );
  }

  /**
   * {@inheritdoc}
   */
  public function render() {
    $rows = [];
    $header = [
      'language' => $this->t('Language'),
      'store_id' => $this->t('ACM UUID'),
      'currency' => $this->t('Currency code'),
    ];

    $languages = $this->languageManager->getLanguages();

    // Prepare the alternate locale data.
    foreach ($languages as $lang => $language) {
      // For default language, we access the config directly.
      if ($lang == $this->languageManager->getDefaultLanguage()->getId()) {
        $storeConfig = $this->configFactory->get('acm.store');
        $currencyConfig = $this->configFactory->get('acm.currency');
      }
      // We get store id from translated config for other languages.
      else {
        $storeConfig = $this->languageManager->getLanguageConfigOverride($lang, 'acm.store');
        $currencyConfig = $this->languageManager->getLanguageConfigOverride($lang, 'acm.currency');
      }

      $rows[] = [
        'language' => $language->getName(),
        'store_id' => $storeConfig->get('store_id') ?? 'N/A',
        'currency' => $currencyConfig->get('currency_code') ?? 'N/A',
      ];
    }
    return [
      '#theme' => "dashboard_item__" . $this->pluginDefinition['group'],
      '#title' => $this->title(),
      '#value' => [
        '#type' => 'table',
        '#header' => $header,
        '#rows' => $rows,
      ],
    ];
  }

}

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

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