Unverified Commit 7505ef79 authored by Stefan Auditor's avatar Stefan Auditor
Browse files

Issue #2332769 by sanduhrs: Port to Drupal 8, 9, 10: Rename filter and add some settings

parent 237345c7
Loading
Loading
Loading
Loading
+84 −0
Original line number Diff line number Diff line
@@ -5,32 +5,48 @@ namespace Drupal\urlicon\Plugin\Filter;
use Drupal\Core\Form\FormStateInterface;
use Drupal\filter\FilterProcessResult;
use Drupal\filter\Plugin\FilterBase;
use Drupal\urlicon\ClassFilter;
use Drupal\urlicon\FaviconFilter;
use Drupal\urlicon\IconFilter;

/**
 * Provides a 'Favicon' filter.
 * Provides a 'Urlicon' filter.
 *
 * @Filter(
 *   id = "urlicon_favicon",
 *   title = @Translation("Favicon"),
 *   id = "urlicon_urlicon",
 *   title = @Translation("URL Icon filter"),
 *   type = Drupal\filter\Plugin\FilterInterface::TYPE_TRANSFORM_REVERSIBLE,
 *   settings = {
 *     "example" = "foo",
 *     "type" = "favicon",
 *   },
 *   weight = -10
 * )
 */
class Favicon extends FilterBase {
class Urlicon extends FilterBase {

  /**
   * {@inheritdoc}
   */
  public function defaultConfiguration() {
    return [
      'type' => 'favicon',
    ];
  }

  /**
   * {@inheritdoc}
   */
  public function settingsForm(array $form, FormStateInterface $form_state) {
    $form['example'] = [
      '#type' => 'textfield',
      '#title' => $this->t('Example'),
      '#default_value' => $this->settings['example'],
      '#description' => $this->t('Description of the setting.'),
    $form['type'] = [
      '#type' => 'radios',
      '#title' => $this->t('Filter URLs'),
      '#options' => [
        'favicon' => $this->t('Find all external URLs and append the according favicon (if available)'),
        'icon' => $this->t('Find all external URLs and append an external link icon'),
        'class' => $this->t('Find all external URLs and add a CSS class only (theme it as you like)'),
      ],
      '#default_value' => $this->settings['type'],
      '#description' => $this->t('Choose what to add to a link in the markup.'),
    ];
    return $form;
  }
@@ -39,9 +55,23 @@ class Favicon extends FilterBase {
   * {@inheritdoc}
   */
  public function process($text, $langcode) {
    switch ($this->settings['type']) {
      case 'class':
        return new FilterProcessResult(
          ClassFilter::filter($text)
        );

      case 'icon':
        return new FilterProcessResult(
          IconFilter::filter($text)
        );

      case 'favicon':
        return new FilterProcessResult(
          FaviconFilter::filter($text)
        );

    }
  }

  /**