first commit
This commit is contained in:
188
layouts/joomla/edit/params.php
Normal file
188
layouts/joomla/edit/params.php
Normal file
@ -0,0 +1,188 @@
|
||||
<?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;
|
||||
use Joomla\CMS\Layout\LayoutHelper;
|
||||
|
||||
$app = Factory::getApplication();
|
||||
$form = $displayData->getForm();
|
||||
$fieldSets = $form->getFieldsets();
|
||||
$helper = $displayData->get('useCoreUI', false) ? 'uitab' : 'bootstrap';
|
||||
|
||||
if (empty($fieldSets)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$ignoreFieldsets = $displayData->get('ignore_fieldsets') ?: [];
|
||||
$outputFieldsets = $displayData->get('output_fieldsets') ?: [];
|
||||
$ignoreFieldsetFields = $displayData->get('ignore_fieldset_fields') ?: [];
|
||||
$ignoreFields = $displayData->get('ignore_fields') ?: [];
|
||||
$extraFields = $displayData->get('extra_fields') ?: [];
|
||||
$tabName = $displayData->get('tab_name') ?: 'myTab';
|
||||
|
||||
// These are required to preserve data on save when fields are not displayed.
|
||||
$hiddenFieldsets = $displayData->get('hiddenFieldsets') ?: [];
|
||||
|
||||
// These are required to configure showing and hiding fields in the editor.
|
||||
$configFieldsets = $displayData->get('configFieldsets') ?: [];
|
||||
|
||||
// Handle the hidden fieldsets when show_options is set false
|
||||
if (!$displayData->get('show_options', 1)) {
|
||||
// The HTML buffer
|
||||
$html = [];
|
||||
|
||||
// Loop over the fieldsets
|
||||
foreach ($fieldSets as $name => $fieldSet) {
|
||||
// Check if the fieldset should be ignored
|
||||
if (in_array($name, $ignoreFieldsets, true)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// If it is a hidden fieldset, render the inputs
|
||||
if (in_array($name, $hiddenFieldsets)) {
|
||||
// Loop over the fields
|
||||
foreach ($form->getFieldset($name) as $field) {
|
||||
// Add only the input on the buffer
|
||||
$html[] = $field->input;
|
||||
}
|
||||
|
||||
// Make sure the fieldset is not rendered twice
|
||||
$ignoreFieldsets[] = $name;
|
||||
}
|
||||
|
||||
// Check if it is the correct fieldset to ignore
|
||||
if (strpos($name, 'basic') === 0) {
|
||||
// Ignore only the fieldsets which are defined by the options not the custom fields ones
|
||||
$ignoreFieldsets[] = $name;
|
||||
}
|
||||
}
|
||||
|
||||
// Echo the hidden fieldsets
|
||||
echo implode('', $html);
|
||||
}
|
||||
|
||||
$opentab = false;
|
||||
|
||||
$xml = $form->getXml();
|
||||
|
||||
// Loop again over the fieldsets
|
||||
foreach ($fieldSets as $name => $fieldSet) {
|
||||
// Ensure any fieldsets we don't want to show are skipped (including repeating formfield fieldsets)
|
||||
if (
|
||||
(isset($fieldSet->repeat) && $fieldSet->repeat === true)
|
||||
|| in_array($name, $ignoreFieldsets)
|
||||
|| (!empty($configFieldsets) && in_array($name, $configFieldsets, true))
|
||||
|| (!empty($hiddenFieldsets) && in_array($name, $hiddenFieldsets, true))
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Determine the label
|
||||
if (!empty($fieldSet->label)) {
|
||||
$label = Text::_($fieldSet->label);
|
||||
} else {
|
||||
$label = strtoupper('JGLOBAL_FIELDSET_' . $name);
|
||||
if (Text::_($label) === $label) {
|
||||
$label = strtoupper($app->getInput()->get('option') . '_' . $name . '_FIELDSET_LABEL');
|
||||
}
|
||||
$label = Text::_($label);
|
||||
}
|
||||
|
||||
$hasChildren = $xml->xpath('//fieldset[@name="' . $name . '"]//fieldset[not(ancestor::field/form/*)]');
|
||||
$hasParent = $xml->xpath('//fieldset//fieldset[@name="' . $name . '"]');
|
||||
$isGrandchild = $xml->xpath('//fieldset//fieldset//fieldset[@name="' . $name . '"]');
|
||||
|
||||
if (!$isGrandchild && $hasParent) {
|
||||
echo '<fieldset id="fieldset-' . $name . '" class="options-form ' . (!empty($fieldSet->class) ? $fieldSet->class : '') . '">';
|
||||
echo '<legend>' . $label . '</legend>';
|
||||
|
||||
// Include the description when available
|
||||
if (!empty($fieldSet->description)) {
|
||||
echo '<div class="alert alert-info">';
|
||||
echo '<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden">' . Text::_('INFO') . '</span> ';
|
||||
echo Text::_($fieldSet->description);
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '<div class="form-grid">';
|
||||
} elseif (!$hasParent) {
|
||||
// Tabs
|
||||
if ($opentab) {
|
||||
if ($opentab > 1) {
|
||||
echo '</div>';
|
||||
echo '</fieldset>';
|
||||
}
|
||||
|
||||
// End previous tab
|
||||
echo HTMLHelper::_($helper . '.endTab');
|
||||
}
|
||||
|
||||
// Start the tab
|
||||
echo HTMLHelper::_($helper . '.addTab', $tabName, 'attrib-' . $name, $label);
|
||||
|
||||
$opentab = 1;
|
||||
|
||||
// Directly add a fieldset if we have no children
|
||||
if (!$hasChildren) {
|
||||
echo '<fieldset id="fieldset-' . $name . '" class="options-form ' . (!empty($fieldSet->class) ? $fieldSet->class : '') . '">';
|
||||
echo '<legend>' . $label . '</legend>';
|
||||
|
||||
// Include the description when available
|
||||
if (!empty($fieldSet->description)) {
|
||||
echo '<div class="alert alert-info">';
|
||||
echo '<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden">' . Text::_('INFO') . '</span> ';
|
||||
echo Text::_($fieldSet->description);
|
||||
echo '</div>';
|
||||
}
|
||||
|
||||
echo '<div class="form-grid">';
|
||||
|
||||
$opentab = 2;
|
||||
} elseif (!empty($fieldSet->description)) {
|
||||
// Include the description when available
|
||||
echo '<div class="alert alert-info alert-parent">';
|
||||
echo '<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden">' . Text::_('INFO') . '</span> ';
|
||||
echo Text::_($fieldSet->description);
|
||||
echo '</div>';
|
||||
}
|
||||
}
|
||||
|
||||
// We're on the deepest level => output fields
|
||||
if (!$hasChildren) {
|
||||
// The name of the fieldset to render
|
||||
$displayData->fieldset = $name;
|
||||
|
||||
// Force to show the options
|
||||
$displayData->showOptions = true;
|
||||
|
||||
// Render the fieldset
|
||||
echo LayoutHelper::render('joomla.edit.fieldset', $displayData);
|
||||
}
|
||||
|
||||
// Close open fieldset
|
||||
if (!$isGrandchild && $hasParent) {
|
||||
echo '</div>';
|
||||
echo '</fieldset>';
|
||||
}
|
||||
}
|
||||
|
||||
if ($opentab) {
|
||||
if ($opentab > 1) {
|
||||
echo '</div>';
|
||||
echo '</fieldset>';
|
||||
}
|
||||
|
||||
// End previous tab
|
||||
echo HTMLHelper::_($helper . '.endTab');
|
||||
}
|
||||
Reference in New Issue
Block a user