first commit
This commit is contained in:
@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Site
|
||||
* @subpackage Layout
|
||||
*
|
||||
* @copyright (C) 2023 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\Language\Text;
|
||||
|
||||
extract($displayData);
|
||||
|
||||
/**
|
||||
* Layout variables
|
||||
* -----------------
|
||||
* @var string $autocomplete Autocomplete attribute for the field.
|
||||
* @var boolean $autofocus Is autofocus enabled?
|
||||
* @var string $class Classes for the input.
|
||||
* @var string $description Description of the field.
|
||||
* @var boolean $disabled Is this field disabled?
|
||||
* @var string $group Group the field belongs to. <fields> section in form XML.
|
||||
* @var boolean $hidden Is this field hidden in the form?
|
||||
* @var string $hint Placeholder for the field.
|
||||
* @var string $id DOM id of the field.
|
||||
* @var string $label Label of the field.
|
||||
* @var string $labelclass Classes to apply to the label.
|
||||
* @var boolean $multiple Does this field support multiple values?
|
||||
* @var string $name Name of the input field.
|
||||
* @var string $onchange Onchange attribute for the field.
|
||||
* @var string $onclick Onclick attribute for the field.
|
||||
* @var string $pattern Pattern (Reg Ex) of value of the form field.
|
||||
* @var boolean $readonly Is this field read only?
|
||||
* @var boolean $repeat Allows extensions to duplicate elements.
|
||||
* @var boolean $required Is this field required?
|
||||
* @var integer $size Size attribute of the input.
|
||||
* @var boolean $spellcheck Spellcheck state for the form field.
|
||||
* @var string $validate Validation rules to apply.
|
||||
* @var string $value Value attribute of the field.
|
||||
* @var string $dataAttribute Miscellaneous data attributes preprocessed for HTML output
|
||||
* @var array $dataAttributes Miscellaneous data attribute for eg, data-*
|
||||
* @var string $valueTitle
|
||||
* @var array $canDo
|
||||
* @var string[] $urls
|
||||
* @var string[] $modalTitles
|
||||
* @var string $language
|
||||
*/
|
||||
|
||||
// Do nothing when propagate is disabled
|
||||
if (empty($canDo['propagate'])) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Scripts for backward compatibility
|
||||
/** @var \Joomla\CMS\WebAsset\WebAssetManager $wa */
|
||||
$wa = Factory::getApplication()->getDocument()->getWebAssetManager();
|
||||
$wa->useScript('field.modal-fields');
|
||||
$wa->addInlineScript(
|
||||
'window.jSelectMenu_' . $id . ' = function (id, title, object) {
|
||||
window.processModalSelect("Item", "' . $id . '", id, title, "", object);
|
||||
}',
|
||||
['name' => 'inline.select_menu_' . $id],
|
||||
['type' => 'module']
|
||||
);
|
||||
Text::script('JGLOBAL_ASSOCIATIONS_PROPAGATE_FAILED');
|
||||
|
||||
// Language propagate callback name
|
||||
// Strip off language tag at the end
|
||||
$tagLength = strlen($language);
|
||||
$callbackFunctionStem = substr("jSelectMenu_" . $id, 0, -$tagLength);
|
||||
|
||||
?>
|
||||
|
||||
<button type="button" class="btn btn-primary" <?php echo $value ? '' : 'hidden'; ?>
|
||||
title="<?php echo $this->escape(Text::_('JGLOBAL_ASSOCIATIONS_PROPAGATE_TIP')); ?>"
|
||||
data-show-when-value="1"
|
||||
onclick="Joomla.propagateAssociation('<?php echo $id; ?>', '<?php echo $callbackFunctionStem; ?>')">
|
||||
<span class="icon-sync" aria-hidden="true"></span> <?php echo Text::_('JGLOBAL_ASSOCIATIONS_PROPAGATE_BUTTON'); ?>
|
||||
</button>
|
||||
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_menus
|
||||
*
|
||||
* @copyright (C) 2016 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\Component\ComponentHelper;
|
||||
use Joomla\CMS\Factory;
|
||||
|
||||
$app = Factory::getApplication();
|
||||
$form = $displayData->getForm();
|
||||
$input = $app->getInput();
|
||||
$component = $input->getCmd('option', 'com_content');
|
||||
|
||||
if ($component == 'com_categories') {
|
||||
$extension = $input->getCmd('extension', 'com_content');
|
||||
$parts = explode('.', $extension);
|
||||
$component = $parts[0];
|
||||
}
|
||||
|
||||
$saveHistory = ComponentHelper::getParams($component)->get('save_history', 0);
|
||||
|
||||
$fields = $displayData->get('fields') ?: [
|
||||
['parent', 'parent_id'],
|
||||
['published', 'state', 'enabled'],
|
||||
['category', 'catid'],
|
||||
'featured',
|
||||
'sticky',
|
||||
'access',
|
||||
'language',
|
||||
'tags',
|
||||
'note',
|
||||
'version_note',
|
||||
];
|
||||
|
||||
$hiddenFields = $displayData->get('hidden_fields') ?: [];
|
||||
|
||||
if (!$saveHistory) {
|
||||
$hiddenFields[] = 'version_note';
|
||||
}
|
||||
|
||||
$html = [];
|
||||
$html[] = '<fieldset><ul class="list-unstyled">';
|
||||
|
||||
foreach ($fields as $field) {
|
||||
$field = is_array($field) ? $field : [$field];
|
||||
|
||||
foreach ($field as $f) {
|
||||
if ($form->getField($f)) {
|
||||
if (in_array($f, $hiddenFields)) {
|
||||
$form->setFieldAttribute($f, 'type', 'hidden');
|
||||
}
|
||||
|
||||
$html[] = '<li>' . $form->renderField($f) . '</li>';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$html[] = '</ul></fieldset>';
|
||||
|
||||
echo implode('', $html);
|
||||
@ -0,0 +1,123 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_menus
|
||||
*
|
||||
* @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;
|
||||
use Joomla\CMS\Layout\LayoutHelper;
|
||||
|
||||
$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]);
|
||||
}
|
||||
|
||||
if ($data['view'] instanceof \Joomla\Component\Menus\Administrator\View\Items\HtmlView) :
|
||||
unset($data['view']->activeFilters['client_id']);
|
||||
endif;
|
||||
|
||||
// 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['view'] instanceof \Joomla\Component\Menus\Administrator\View\Items\HtmlView) : ?>
|
||||
<?php // Add the itemtype and language selectors before the form filters. Do not display in modal.?>
|
||||
<?php $app = Factory::getApplication(); ?>
|
||||
<?php $clientIdField = $data['view']->filterForm->getField('client_id'); ?>
|
||||
<?php if ($clientIdField) : ?>
|
||||
<div class="js-stools-container-selector">
|
||||
<div class="visually-hidden">
|
||||
<?php echo $clientIdField->label; ?>
|
||||
</div>
|
||||
<div class="js-stools-field-selector js-stools-client_id">
|
||||
<?php echo $clientIdField->input; ?>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<?php endif; ?>
|
||||
<?php if ($data['options']['showSelector']) : ?>
|
||||
<div class="js-stools-container-selector">
|
||||
<?php echo LayoutHelper::render('joomla.searchtools.default.selector', $data); ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<div class="js-stools-container-bar ms-auto">
|
||||
<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; ?>
|
||||
Reference in New Issue
Block a user