themeManager = $theme_manager; $this->themeHandler = $theme_handler; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('theme.manager'), $container->get('theme_handler') ); } /** * {@inheritdoc} */ public function defaultConfiguration() { return ['theme' => ''] + parent::defaultConfiguration(); } /** * {@inheritdoc} */ public function buildConfigurationForm(array $form, FormStateInterface $form_state) { $form['theme'] = [ '#type' => 'select', '#title' => $this->t('Theme'), '#default_value' => $this->configuration['theme'], '#options' => array_map(function ($theme_info) { return $theme_info->info['name']; }, $this->themeHandler->listInfo()), ]; return parent::buildConfigurationForm($form, $form_state); } /** * {@inheritdoc} */ public function submitConfigurationForm(array &$form, FormStateInterface $form_state) { $this->configuration['theme'] = $form_state->getValue('theme'); parent::submitConfigurationForm($form, $form_state); } /** * {@inheritdoc} */ public function evaluate() { if (!$this->configuration['theme']) { return TRUE; } return $this->themeManager->getActiveTheme()->getName() == $this->configuration['theme']; } /** * {@inheritdoc} */ public function summary() { if ($this->isNegated()) { return $this->t('The current theme is not @theme', ['@theme' => $this->configuration['theme']]); } return $this->t('The current theme is @theme', ['@theme' => $this->configuration['theme']]); } /** * {@inheritdoc} */ public function getCacheContexts() { $contexts = parent::getCacheContexts(); $contexts[] = 'theme'; return $contexts; } }