Commit 8b1c50e3 authored by Anwoon's avatar Anwoon
Browse files

Feature #3092175 - Added template for form filter, conditionnal table filter and fix i18n

parent e8b6bd84
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -21,10 +21,10 @@ filter_entity_list_display:
  category: 'Entity List Display'
  default_region: content
  regions:
    header:
      label: Header
    filters:
      label: Filters
    header:
      label: Header
    before_items:
      label: Before
    content:
+3 −0
Original line number Diff line number Diff line
@@ -61,6 +61,9 @@ function entity_list_theme($existing, $type, $theme, $path) {
        'list_id' => '',
      ],
    ],
    'entity_list_filters' => [
      'render element' => 'form',
    ],
  ];
}

+42 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@
          if (tableDrag) {
            tableDrag.onDrop = this.onDrop;
            tableDrag.row.prototype.onSwap = this.onSwap;
            tableDrag.row.prototype.isValidSwap = this.isValidSwap;
          }
        }

@@ -48,6 +49,47 @@
      }
    },

    /**
     * Lets override isValidSwap function for filter element.
     */
    isValidSwap: function (row) {
      var $row = $(row);
      var $element = $(this.element);

      var checkDataType = $row.attr('data-type') !== 'filter' && $row.attr('data-region') === undefined;
      var checkDataRegion = $row.attr('data-region') !== 'filters' && $row.attr('data-type') === undefined;

      if (($element.attr('data-type') === 'filter' && (checkDataType || checkDataRegion))) {
        return false;
      }

      if (this.indentEnabled) {
        var prevRow;
        var nextRow;

        if (this.direction === 'down') {
          prevRow = row;
          nextRow = $row.next('tr').get(0);
        } else {
          prevRow = $row.prev('tr').get(0);
          nextRow = row;
        }


        this.interval = this.validIndentInterval(prevRow, nextRow);

        if (this.interval.min > this.interval.max) {
          return false;
        }
      }

      if (this.table.tBodies[0].rows[0] === row && $row.is(':not(.draggable)')) {
        return false;
      }

      return true;
    },

    /**
     * Refreshes placeholder rows in empty regions while a row is being dragged.
     *
+1 −1
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ class EntityListFilterController extends ControllerBase {

    $bundles = $request->query->get('bundles');
    $entity_type_id = $request->query->get('entity_type_id');
    $filters_used = $request->query->get('filters_used');
    $filters_used = $request->query->get('filters_used') ?? [];
    $terms_filters = $request->query->get('terms_filters');
    $entity_list_id = $request->query->get('entity_list_id');

+2 −29
Original line number Diff line number Diff line
@@ -59,45 +59,18 @@ class EntityListFilterForm extends FormBase {
      $form = [];

      $form['#method'] = 'GET';

      $form['form-wrapper'] = [
        '#type' => 'fieldset',
        '#title' => $this->t('Filter'),
      ];
      $form['#theme'] = 'entity_list_filters';

      foreach ($filters as $key => $filter) {
        /** @var EntityListFilterBase $instance */
        if (isset($parameters[$filter]['settings']['plugin'])) {
          $instance = $this->entityListFilterManager->createInstance($parameters[$filter]['settings']['plugin']);
          if (!empty($instance->buildFilter($parameters[$filter], $entity_list))) {
            $form['form-wrapper'] = array_merge($form['form-wrapper'], $instance->buildFilter($parameters[$filter], $entity_list));
            $form = array_merge($form, $instance->buildFilter($parameters[$filter], $entity_list));
          }
        }
      }

      $form['form-wrapper']['fieldset-submit'] = [
        '#type' => 'fieldset',
        '#title' => $this->t('Submit'),
        '#title_display' => 'invisible',
      ];

      $form['form-wrapper']['fieldset-submit']['submit'] = [
        '#type' => 'submit',
        '#value' => $this->t('Filter'),
      ];

      $options = [
        'attributes' => [
          'class' => ['reset-link'],
        ],
      ];

      $current_link = Link::createFromRoute($this->t('Reset'), '<current>', [], $options);

      $form['form-wrapper']['fieldset-submit']['reset'] = [
        '#markup' => $current_link->toString(),
      ];

      return $form;
    }

Loading