public function MixItUp::buildOptionsForm in MixItUp Views 8
Same name and namespace in other branches
- 8.2 src/Plugin/views/style/MixItUp.php \Drupal\mixitup_views\Plugin\views\style\MixItUp::buildOptionsForm()
Provide a form to edit options for this plugin.
Overrides StylePluginBase::buildOptionsForm
File
- src/
Plugin/ views/ style/ MixItUp.php, line 107
Class
- MixItUp
- Style plugin for MixItUp.
Namespace
Drupal\mixitup_views\Plugin\views\styleCode
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',
];
}
}