You are here

class MixItUp in MixItUp Views 8

Same name and namespace in other branches
  1. 8.2 src/Plugin/views/style/MixItUp.php \Drupal\mixitup_views\Plugin\views\style\MixItUp

Style plugin for MixItUp.

Plugin annotation


@ViewsStyle(
  id = "mixitup_views",
  title = @Translation("MixItUp"),
  help = @Translation("Display content using MixItUp."),
  theme = "mixitup_views_view_mixitup",
  theme_file = "mixitup_views.theme.inc",
  display_types = {"normal"}
)

Hierarchy

Expanded class hierarchy of MixItUp

1 string reference to 'MixItUp'
MixItUp::buildOptionsForm in src/Plugin/views/style/MixItUp.php
Provide a form to edit options for this plugin.

File

src/Plugin/views/style/MixItUp.php, line 26

Namespace

Drupal\mixitup_views\Plugin\views\style
View source
class MixItUp extends StylePluginBase {

  /**
   * Overrides Drupal\views\Plugin\Plugin::$usesOptions.
   *
   * @var bool
   */
  protected $usesOptions = TRUE;

  /**
   * Does the style plugin allows to use style plugins.
   *
   * @var bool
   */
  protected $usesRowPlugin = TRUE;

  /**
   * Does the style plugin support custom css class for the rows.
   *
   * @var bool
   */
  protected $usesRowClass = TRUE;

  /**
   * Mixitup service.
   *
   * @var object|null
   */
  protected $mixitupFuncService;

  /**
   * Default options.
   *
   * @var array
   */
  protected $defaultOptions;

  /**
   * Does the style plugin support grouping of rows.
   *
   * @var bool
   */
  protected $usesGrouping = FALSE;

  /**
   * Constructor.
   */
  public function __construct(array $configuration, $plugin_id, $plugin_definition, $mixitupFuncService) {
    parent::__construct($configuration, $plugin_id, $plugin_definition);
    $this->mixitupFuncService = $mixitupFuncService;
    $this->defaultOptions = $this->mixitupFuncService
      ->getDefaultOptions(TRUE);
  }

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

  /**
   * {@inheritdoc}
   */
  protected function defineOptions() {
    $options = parent::defineOptions();

    // Get the default options.
    $default_options = $this->defaultOptions;
    foreach ($default_options as $option => $default_value) {
      $options[$option] = [
        'default' => $default_value,
      ];
      if (\is_int($default_value)) {
        $options[$option]['bool'] = TRUE;
      }
    }
    return $options;
  }

  /**
   * {@inheritdoc}
   */
  public function buildOptionsForm(&$form, FormStateInterface $form_state) {
    parent::buildOptionsForm($form, $form_state);

    // Add Mixitup options to views form.
    $form['mixitup'] = [
      '#type' => 'fieldset',
      '#title' => $this
        ->t('MixItUp Animation settings'),
    ];
    if ($this->mixitupFuncService
      ->isMixitupInstalled()) {
      $options = $this->options;
      $form['filter_type'] = [
        '#type' => 'select',
        '#title' => $this
          ->t('Type of filtering'),
        '#options' => [
          'checkboxes' => $this
            ->t('Checkboxes'),
          'select' => $this
            ->t('Selectboxes'),
        ],
        '#default_value' => $options['filter_type'],
        '#description' => $this
          ->t('Select the preferred field type for filtering'),
      ];
      $form['agregation_type'] = [
        '#type' => 'select',
        '#title' => $this
          ->t('Agregation type'),
        '#options' => [
          'and' => $this
            ->t('AND'),
          'or' => $this
            ->t('OR'),
        ],
        '#default_value' => $options['agregation_type'],
        '#description' => $this
          ->t('The terms agregation type detects how to fetch nodes when multiple checkboxes selected.AND - node should have all of the terms to be selected, OR - one of them is enough.'),
      ];
      $form['animation_enable'] = [
        '#type' => 'checkbox',
        '#title' => $this
          ->t('Enable Animation'),
        '#default_value' => $options['animation_enable'],
        '#attributes' => [
          'class' => [
            'animation_enable',
          ],
        ],
      ];
      $form['animation_effects'] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('Effects'),
        '#description' => $this
          ->t('The effects for all filter operations as a space-separated string.'),
        '#default_value' => $options['animation_effects'],
      ];
      $form['animation_duration'] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('Duration'),
        '#description' => $this
          ->t('The duration of the animation in milliseconds.'),
        '#default_value' => $options['animation_duration'],
      ];
      $form['animation_easing'] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('Easing'),
        '#description' => $this
          ->t('For a full list of accepted values, check out easings.net.'),
        '#default_value' => $options['animation_easing'],
      ];
      $form['animation_perspectiveDistance'] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('perspectiveDistance'),
        '#description' => $this
          ->t('The perspective value in CSS units applied to the container during animations.'),
        '#default_value' => $options['animation_perspectiveDistance'],
      ];
      $form['animation_perspectiveOrigin'] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('perspectiveOrigin'),
        '#description' => $this
          ->t('The perspective-origin value applied to the container during animations.'),
        '#default_value' => $options['animation_perspectiveOrigin'],
      ];
      $form['animation_queue'] = [
        '#type' => 'checkbox',
        '#title' => $this
          ->t('Queue'),
        '#description' => $this
          ->t('Enable queuing for all operations received while an another operation is in progress.'),
        '#default_value' => $options['animation_queue'],
        '#attributes' => [
          'class' => [
            'animation_queue',
          ],
        ],
      ];
      $form['animation_queueLimit'] = [
        '#type' => 'textfield',
        '#title' => $this
          ->t('queueLimit'),
        '#description' => $this
          ->t('The maximum number of operations allowed in the queue at any time.'),
        '#default_value' => $options['animation_queueLimit'],
      ];
      foreach ($this->defaultOptions as $option => $default_value) {
        $form[$option]['#fieldset'] = 'mixitup';
        if ($option != 'animation_enable') {
          $selectors['.animation_enable'] = [
            'checked' => TRUE,
          ];
          if ($option == 'animation_queueLimit') {
            $selectors['.animation_queue'] = [
              'checked' => TRUE,
            ];
          }
          $form[$option]['#states'] = [
            'visible' => $selectors,
          ];
        }
      }
      $sorts = $this->view->displayHandlers
        ->get($this->view->current_display)
        ->getOption('sorts');
      $form['mixitup_sorting_settings'] = [
        '#type' => 'fieldset',
        '#title' => $this
          ->t('MixItUp Sorting settings'),
      ];
      $form['use_sort'] = [
        '#type' => 'checkbox',
        '#fieldset' => 'mixitup_sorting_settings',
        '#title' => $this
          ->t('Use sorting.'),
        '#description' => $this
          ->t('If you want to add new Sort criteria, add them under views "Sort criteria", at first.'),
        '#default_value' => $options['use_sort'],
        '#attributes' => [
          'class' => [
            'use_sort',
          ],
        ],
      ];
      if ($sorts) {
        $form['sorts'] = [
          '#type' => 'div',
          '#fieldset' => 'mixitup_sorting_settings',
        ];
        foreach ($sorts as $id => $sort) {
          $sort_id = $sort['table'] . '_' . $sort['field'];
          if (isset($options)) {
            $form['sorts'][$sort_id] = [
              '#type' => 'textfield',
              '#title' => $this
                ->t('Label for "@f"', [
                '@f' => $id,
              ]),
              '#description' => $this
                ->t("If you don't want to use it, just make this field empty."),
              '#default_value' => $options['sorts'][$sort_id] ?? '',
              '#states' => [
                'visible' => [
                  '.use_sort' => [
                    'checked' => TRUE,
                  ],
                ],
              ],
            ];
          }
        }
      }
      $form['mixitup_vocab'] = [
        '#type' => 'fieldset',
        '#title' => $this
          ->t('MixItUp Vocabulary settings'),
      ];
      $form['restrict_vocab'] = [
        '#type' => 'checkbox',
        '#fieldset' => 'mixitup_vocab',
        '#title' => $this
          ->t('Restrict terms to particular vocabulary.'),
        '#default_value' => $options['restrict_vocab'],
        '#attributes' => [
          'class' => [
            'restrict_vocab_enable',
          ],
        ],
      ];

      // Load all vocabularies.
      $all_vocabs = Vocabulary::loadMultiple();
      $vocabulary_options = [];
      foreach ($all_vocabs as $key_vid => $vocab) {
        $vocabulary_options[$key_vid] = $vocab
          ->get('name');
      }
      $form['restrict_vocab_ids'] = [
        '#type' => 'select',
        '#fieldset' => 'mixitup_vocab',
        '#title' => $this
          ->t('Select vocabularies'),
        '#multiple' => TRUE,
        '#options' => $vocabulary_options,
        '#default_value' => $options['restrict_vocab_ids'],
        '#states' => [
          'visible' => [
            '.restrict_vocab_enable' => [
              'checked' => TRUE,
            ],
          ],
        ],
      ];
      $form['filters_settings'] = [
        '#type' => 'fieldset',
        '#title' => $this
          ->t('MixItUp Filters settings'),
      ];
      $form['hide_unchecked_chekboxes'] = [
        '#type' => 'checkbox',
        '#fieldset' => 'filters_settings',
        '#title' => $this
          ->t('Hide unchecked checkboxes if one of items selected.'),
        '#description' => $this
          ->t('If you want to hide other filters if you selected one of them, please check checkbox above.'),
        '#default_value' => $options['hide_unchecked_chekboxes'],
        '#attributes' => [
          'class' => [
            'hide_unchecked_chekboxes',
          ],
        ],
      ];
    }
    else {
      $url = Url::fromUri('https://github.com/patrickkunka/mixitup/tree/v3');
      $mixitup_link = Link::fromTextAndUrl($this
        ->t('MixItUp'), $url);
      $url_readme = Url::fromUri('base:admin/help/mixitup_views', [
        'absolute' => TRUE,
        'attributes' => [
          'target' => '_blank',
        ],
      ]);
      $readme_link = Link::fromTextAndUrl($this
        ->t('README'), $url_readme);

      // Disable Mixitup.
      $form['mixitup_disabled'] = [
        '#markup' => $this
          ->t('Please, download !mixitup plugin to libraries/mixitup
         directory. For more information read !read. After that, you can use it.', [
          '!mixitup' => $mixitup_link,
          '!read' => $readme_link,
        ]),
        '#fieldset' => 'mixitup',
      ];
    }
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DependencySerializationTrait::$_entityStorages protected property An array of entity type IDs keyed by the property name of their storages.
DependencySerializationTrait::$_serviceIds protected property An array of service IDs keyed by property name used for serialization.
DependencySerializationTrait::__sleep public function 1
DependencySerializationTrait::__wakeup public function 2
MessengerTrait::$messenger protected property The messenger. 29
MessengerTrait::messenger public function Gets the messenger. 29
MessengerTrait::setMessenger public function Sets the messenger.
MixItUp::$defaultOptions protected property Default options.
MixItUp::$mixitupFuncService protected property Mixitup service.
MixItUp::$usesGrouping protected property Does the style plugin support grouping of rows. Overrides StylePluginBase::$usesGrouping
MixItUp::$usesOptions protected property Overrides Drupal\views\Plugin\Plugin::$usesOptions. Overrides StylePluginBase::$usesOptions
MixItUp::$usesRowClass protected property Does the style plugin support custom css class for the rows. Overrides StylePluginBase::$usesRowClass
MixItUp::$usesRowPlugin protected property Does the style plugin allows to use style plugins. Overrides StylePluginBase::$usesRowPlugin
MixItUp::buildOptionsForm public function Provide a form to edit options for this plugin. Overrides StylePluginBase::buildOptionsForm
MixItUp::create public static function Creates an instance of the plugin. Overrides PluginBase::create
MixItUp::defineOptions protected function Information about options for all kinds of purposes will be held here. Overrides StylePluginBase::defineOptions
MixItUp::__construct public function Constructor. Overrides PluginBase::__construct
PluginBase::$configuration protected property Configuration information passed into the plugin. 1
PluginBase::$definition public property Plugins's definition
PluginBase::$displayHandler public property The display object this plugin is for.
PluginBase::$options public property Options for this plugin will be held here.
PluginBase::$pluginDefinition protected property The plugin implementation definition. 1
PluginBase::$pluginId protected property The plugin_id.
PluginBase::$renderer protected property Stores the render API renderer. 3
PluginBase::$view public property The top object of a view. 1
PluginBase::calculateDependencies public function Calculates dependencies for the configured plugin. Overrides DependentPluginInterface::calculateDependencies 14
PluginBase::DERIVATIVE_SEPARATOR constant A string which is used to separate base plugin IDs from the derivative ID.
PluginBase::doFilterByDefinedOptions protected function Do the work to filter out stored options depending on the defined options.
PluginBase::filterByDefinedOptions public function Filter out stored options depending on the defined options. Overrides ViewsPluginInterface::filterByDefinedOptions
PluginBase::getAvailableGlobalTokens public function Returns an array of available token replacements. Overrides ViewsPluginInterface::getAvailableGlobalTokens
PluginBase::getBaseId public function Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface::getBaseId
PluginBase::getDerivativeId public function Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface::getDerivativeId
PluginBase::getPluginDefinition public function Gets the definition of the plugin implementation. Overrides PluginInspectionInterface::getPluginDefinition 3
PluginBase::getPluginId public function Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface::getPluginId
PluginBase::getProvider public function Returns the plugin provider. Overrides ViewsPluginInterface::getProvider
PluginBase::getRenderer protected function Returns the render API renderer. 1
PluginBase::globalTokenForm public function Adds elements for available core tokens to a form. Overrides ViewsPluginInterface::globalTokenForm
PluginBase::globalTokenReplace public function Returns a string with any core tokens replaced. Overrides ViewsPluginInterface::globalTokenReplace
PluginBase::INCLUDE_ENTITY constant Include entity row languages when listing languages.
PluginBase::INCLUDE_NEGOTIATED constant Include negotiated languages when listing languages.
PluginBase::isConfigurable public function Determines if the plugin is configurable.
PluginBase::listLanguages protected function Makes an array of languages, optionally including special languages.
PluginBase::pluginTitle public function Return the human readable name of the display. Overrides ViewsPluginInterface::pluginTitle
PluginBase::preRenderAddFieldsetMarkup public static function Moves form elements into fieldsets for presentation purposes. Overrides ViewsPluginInterface::preRenderAddFieldsetMarkup
PluginBase::preRenderFlattenData public static function Flattens the structure of form elements. Overrides ViewsPluginInterface::preRenderFlattenData
PluginBase::queryLanguageSubstitutions public static function Returns substitutions for Views queries for languages.
PluginBase::setOptionDefaults protected function Fills up the options of the plugin with defaults.
PluginBase::submitOptionsForm public function Handle any special handling on the validate form. Overrides ViewsPluginInterface::submitOptionsForm 16
PluginBase::summaryTitle public function Returns the summary of the settings in the display. Overrides ViewsPluginInterface::summaryTitle 6
PluginBase::themeFunctions public function Provide a full list of possible theme templates used by this style. Overrides ViewsPluginInterface::themeFunctions 1
PluginBase::unpackOptions public function Unpack options over our existing defaults, drilling down into arrays so that defaults don't get totally blown away. Overrides ViewsPluginInterface::unpackOptions
PluginBase::usesOptions public function Returns the usesOptions property. Overrides ViewsPluginInterface::usesOptions 8
PluginBase::viewsTokenReplace protected function Replaces Views' tokens in a given string. The resulting string will be sanitized with Xss::filterAdmin. 1
PluginBase::VIEWS_QUERY_LANGUAGE_SITE_DEFAULT constant Query string to indicate the site default language.
StringTranslationTrait::$stringTranslation protected property The string translation service. 1
StringTranslationTrait::formatPlural protected function Formats a string containing a count of items.
StringTranslationTrait::getNumberOfPlurals protected function Returns the number of plurals supported by a given language.
StringTranslationTrait::getStringTranslation protected function Gets the string translation service.
StringTranslationTrait::setStringTranslation public function Sets the string translation service to use. 2
StringTranslationTrait::t protected function Translates a string to the current language or to a given language.
StylePluginBase::$defaultFieldLabels protected property Should field labels be enabled by default. 1
StylePluginBase::$groupingTheme protected property The theme function used to render the grouping set.
StylePluginBase::$rendered_fields protected property Stores the rendered field values, keyed by the row index and field name.
StylePluginBase::$rowTokens protected property Store all available tokens row rows.
StylePluginBase::$usesFields protected property Does the style plugin for itself support to add fields to its output. 3
StylePluginBase::buildSort public function Called by the view builder to see if this style handler wants to interfere with the sorts. If so it should build; if it returns any non-TRUE value, normal sorting will NOT be added to the query. 1
StylePluginBase::buildSortPost public function Called by the view builder to let the style build a second set of sorts that will come after any other sorts in the view. 1
StylePluginBase::defaultFieldLabels public function Return TRUE if this style enables field labels by default. 1
StylePluginBase::destroy public function Clears a plugin. Overrides PluginBase::destroy
StylePluginBase::elementPreRenderRow public function #pre_render callback for view row field rendering.
StylePluginBase::evenEmpty public function Should the output of the style plugin be rendered even if it's a empty view. 2
StylePluginBase::getField public function Gets a rendered field.
StylePluginBase::getFieldValue public function Get the raw field value.
StylePluginBase::getRowClass public function Return the token replaced row class for the specified row.
StylePluginBase::init public function Overrides \Drupal\views\Plugin\views\PluginBase::init(). Overrides PluginBase::init
StylePluginBase::preRender public function Allow the style to do stuff before each row is rendered.
StylePluginBase::query public function Add anything to the query that we might need to. Overrides PluginBase::query 1
StylePluginBase::render public function Render the display in this style. 7
StylePluginBase::renderFields protected function Renders all of the fields for a given style and store them on the object.
StylePluginBase::renderGrouping public function Group records as needed for rendering.
StylePluginBase::renderGroupingSets public function Render the grouping sets.
StylePluginBase::renderRowGroup protected function Renders a group of rows of the grouped view.
StylePluginBase::tokenizeValue public function Take a value and apply token replacement logic to it.
StylePluginBase::trustedCallbacks public static function Lists the trusted callbacks provided by the implementing class. Overrides PluginBase::trustedCallbacks
StylePluginBase::usesFields public function Return TRUE if this style also uses fields. 3
StylePluginBase::usesGrouping public function Returns the usesGrouping property. 3
StylePluginBase::usesRowClass public function Returns the usesRowClass property. 3
StylePluginBase::usesRowPlugin public function Returns the usesRowPlugin property. 10
StylePluginBase::usesTokens public function Return TRUE if this style uses tokens.
StylePluginBase::validate public function Validate that the plugin is correct and can be saved. Overrides PluginBase::validate
StylePluginBase::validateOptionsForm public function Validate the options form. Overrides PluginBase::validateOptionsForm
StylePluginBase::wizardForm public function Provide a form in the views wizard if this style is selected.
StylePluginBase::wizardSubmit public function Alter the options of a display before they are added to the view. 1
TrustedCallbackInterface::THROW_EXCEPTION constant Untrusted callbacks throw exceptions.
TrustedCallbackInterface::TRIGGER_SILENCED_DEPRECATION constant Untrusted callbacks trigger silenced E_USER_DEPRECATION errors.
TrustedCallbackInterface::TRIGGER_WARNING constant Untrusted callbacks trigger E_USER_WARNING errors.