104 lines
4.1 KiB
PHP
104 lines
4.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Joomla.Site
|
|
* @subpackage Layout
|
|
*
|
|
* @copyright (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
|
|
* @license GNU General Public License version 2 or later; see LICENSE.txt
|
|
*/
|
|
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\HTML\HTMLHelper;
|
|
use Joomla\CMS\Language\Text;
|
|
|
|
$data = $displayData;
|
|
|
|
// Receive overridable options
|
|
$data['options'] = !empty($data['options']) ? $data['options'] : [];
|
|
|
|
$noResultsText = '';
|
|
$hideActiveFilters = false;
|
|
$showFilterButton = false;
|
|
$showSelector = false;
|
|
$selectorFieldName = $data['options']['selectorFieldName'] ?? 'client_id';
|
|
|
|
// If a filter form exists.
|
|
if (isset($data['view']->filterForm) && !empty($data['view']->filterForm)) {
|
|
// Checks if a selector (e.g. client_id) exists.
|
|
if ($selectorField = $data['view']->filterForm->getField($selectorFieldName)) {
|
|
$showSelector = $selectorField->getAttribute('filtermode', '') === 'selector' ? true : $showSelector;
|
|
|
|
// Checks if a selector should be shown in the current layout.
|
|
if (isset($data['view']->layout)) {
|
|
$showSelector = $selectorField->getAttribute('layout', 'default') != $data['view']->layout ? false : $showSelector;
|
|
}
|
|
|
|
// Unset the selector field from active filters group.
|
|
unset($data['view']->activeFilters[$selectorFieldName]);
|
|
}
|
|
|
|
// Checks if the filters button should exist.
|
|
$filters = $data['view']->filterForm->getGroup('filter');
|
|
$showFilterButton = isset($filters['filter_search']) && count($filters) === 1 ? false : true;
|
|
|
|
// Checks if it should show the be hidden.
|
|
$hideActiveFilters = empty($data['view']->activeFilters);
|
|
|
|
// Check if the no results message should appear.
|
|
if (isset($data['view']->total) && (int) $data['view']->total === 0) {
|
|
$noResults = $data['view']->filterForm->getFieldAttribute('search', 'noresults', '', 'filter');
|
|
if (!empty($noResults)) {
|
|
$noResultsText = Text::_($noResults);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Set some basic options.
|
|
$customOptions = [
|
|
'filtersHidden' => isset($data['options']['filtersHidden']) && $data['options']['filtersHidden'] ? $data['options']['filtersHidden'] : $hideActiveFilters,
|
|
'filterButton' => isset($data['options']['filterButton']) && $data['options']['filterButton'] ? $data['options']['filterButton'] : $showFilterButton,
|
|
'defaultLimit' => $data['options']['defaultLimit'] ?? Factory::getApplication()->get('list_limit', 20),
|
|
'searchFieldSelector' => '#filter_search',
|
|
'selectorFieldName' => $selectorFieldName,
|
|
'showSelector' => $showSelector,
|
|
'orderFieldSelector' => '#list_fullordering',
|
|
'showNoResults' => !empty($noResultsText),
|
|
'noResultsText' => !empty($noResultsText) ? $noResultsText : '',
|
|
'formSelector' => !empty($data['options']['formSelector']) ? $data['options']['formSelector'] : '#adminForm',
|
|
];
|
|
|
|
// Merge custom options in the options array.
|
|
$data['options'] = array_merge($customOptions, $data['options']);
|
|
|
|
// Add class to hide the active filters if needed.
|
|
$filtersActiveClass = $hideActiveFilters ? '' : ' js-stools-container-filters-visible';
|
|
|
|
// Load search tools
|
|
HTMLHelper::_('searchtools.form', $data['options']['formSelector'], $data['options']);
|
|
?>
|
|
<div class="js-stools" role="search">
|
|
<?php if ($data['options']['showSelector']) : ?>
|
|
<div class="js-stools-container-selector">
|
|
<?php echo $this->sublayout('selector', $data); ?>
|
|
</div>
|
|
<?php endif; ?>
|
|
<div class="js-stools-container-bar">
|
|
<div class="btn-toolbar">
|
|
<?php echo $this->sublayout('bar', $data); ?>
|
|
<?php echo $this->sublayout('list', $data); ?>
|
|
</div>
|
|
</div>
|
|
<!-- Filters div -->
|
|
<div class="js-stools-container-filters clearfix<?php echo $filtersActiveClass; ?>">
|
|
<?php if ($data['options']['filterButton']) : ?>
|
|
<?php echo $this->sublayout('filters', $data); ?>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
<?php if ($data['options']['showNoResults']) : ?>
|
|
<?php echo $this->sublayout('noitems', $data); ?>
|
|
<?php endif; ?>
|