configFactory = $config_factory; $this->messenger = $messenger; } /** * {@inheritdoc} */ public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) { return new static( $entity_type, $container->get('entity.manager')->getStorage($entity_type->id()), $container->get('config.factory'), $container->get('messenger') ); } /** * {@inheritdoc} */ public function getFormId() { return 'filter_admin_overview'; } /** * {@inheritdoc} */ public function load() { // Only list enabled filters. return array_filter(parent::load(), function ($entity) { return $entity->status(); }); } /** * {@inheritdoc} */ public function buildHeader() { $header['label'] = $this->t('Name'); $header['roles'] = $this->t('Roles'); return $header + parent::buildHeader(); } /** * {@inheritdoc} */ public function buildRow(EntityInterface $entity) { // Check whether this is the fallback text format. This format is available // to all roles and cannot be disabled via the admin interface. $row['label'] = $entity->label(); $row['roles'] = []; if ($entity->isFallbackFormat()) { $fallback_choice = $this->configFactory->get('filter.settings')->get('always_show_fallback_choice'); if ($fallback_choice) { $row['roles']['#markup'] = $this->t('All roles may use this format'); } else { $row['roles']['#markup'] = $this->t('This format is shown when no other formats are available'); } // Emphasize the fallback role text since it is important to understand // how it works which configuring filter formats. Additionally, it is not // a list of roles unlike the other values in this column. $row['roles']['#prefix'] = ''; $row['roles']['#suffix'] = ''; } else { $row['roles'] = [ '#theme' => 'item_list', '#items' => filter_get_roles_by_format($entity), '#empty' => $this->t('No roles may use this format'), '#context' => ['list_style' => 'comma-list'], ]; } return $row + parent::buildRow($entity); } /** * {@inheritdoc} */ public function getDefaultOperations(EntityInterface $entity) { $operations = parent::getDefaultOperations($entity); if (isset($operations['edit'])) { $operations['edit']['title'] = $this->t('Configure'); } // The fallback format may not be disabled. if ($entity->isFallbackFormat()) { unset($operations['disable']); } return $operations; } /** * {@inheritdoc} */ public function buildForm(array $form, FormStateInterface $form_state) { $form = parent::buildForm($form, $form_state); $form['actions']['submit']['#value'] = $this->t('Save'); return $form; } /** * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { parent::submitForm($form, $form_state); filter_formats_reset(); $this->messenger->addStatus($this->t('The text format ordering has been saved.')); } }