Fix mod_finder and mod_footer overrides to match Joomla core contracts

mod_finder:
- Use correct language keys (MOD_FINDER_SEARCH_VALUE, JSEARCH_FILTER_SUBMIT)
- Use $app (available from module dispatcher) instead of Factory
- Load com_finder.finder script and awesomplete preset
- Add show_label, show_button, show_advanced support from core
- Register com_finder extension assets
- Use $route from module dispatcher (not hardcoded)

mod_footer:
- Use $lineone variable from module helper (not $module->content)
- Add MOD_FOOTER_LINE2 language string output
- mod_footer generates its own content, it's not a custom HTML module

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 22:51:36 -05:00
parent c80f12455c
commit 8b49ff679b
2 changed files with 53 additions and 21 deletions

View File

@@ -14,39 +14,72 @@
defined('_JEXEC') or die; defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text; use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route; use Joomla\CMS\Router\Route;
Factory::getApplication()->getLanguage()->load('mod_finder', JPATH_SITE); // Load component language for search labels
Factory::getApplication()->getLanguage()->load('com_finder', JPATH_SITE); $lang = $app->getLanguage();
$lang->load('com_finder', JPATH_SITE);
$suffix = htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_COMPAT, 'UTF-8'); $suffix = htmlspecialchars($params->get('moduleclass_sfx', ''), ENT_COMPAT, 'UTF-8');
$headerTag = htmlspecialchars($params->get('header_tag', 'h3'), ENT_COMPAT, 'UTF-8'); $headerTag = htmlspecialchars($params->get('header_tag', 'h3'), ENT_COMPAT, 'UTF-8');
$headerClass = htmlspecialchars($params->get('header_class', ''), ENT_COMPAT, 'UTF-8'); $headerClass = htmlspecialchars($params->get('header_class', ''), ENT_COMPAT, 'UTF-8');
$showLabel = $params->get('show_label', 1);
$labelClass = (!$showLabel ? 'visually-hidden ' : '') . 'finder';
Text::script('MOD_FINDER_SEARCH_VALUE');
/** @var Joomla\CMS\WebAsset\WebAssetManager $wa */
$wa = $app->getDocument()->getWebAssetManager();
$wa->getRegistry()->addExtensionRegistryFile('com_finder');
if ($params->get('show_autosuggest', 1)) {
$wa->usePreset('awesomplete');
$app->getDocument()->addScriptOptions('finder-search', ['url' => Route::_('index.php?option=com_finder&task=suggestions.suggest&format=json&tmpl=component', false)]);
Text::script('COM_FINDER_SEARCH_FORM_LIST_LABEL');
Text::script('JLIB_JS_AJAX_ERROR_OTHER');
Text::script('JLIB_JS_AJAX_ERROR_PARSE');
}
$wa->useScript('com_finder.finder');
?> ?>
<div class="mod-finder<?php echo $suffix ? ' ' . $suffix : ''; ?>"> <div class="mod-finder<?php echo $suffix ? ' ' . $suffix : ''; ?>">
<?php if ($module->showtitle) : ?> <?php if ($module->showtitle) : ?>
<<?php echo $headerTag; ?> class="mod-finder__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>> <<?php echo $headerTag; ?> class="mod-finder__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>>
<?php endif; ?> <?php endif; ?>
<form action="<?php echo Route::_($route); ?>" method="get" class="mod-finder__form" role="search"> <form class="mod-finder__form js-finder-searchform form-search" action="<?php echo Route::_($route); ?>" method="get" role="search">
<label for="mod-finder-searchword<?php echo $module->id; ?>" class="<?php echo $labelClass; ?>">
<?php echo $params->get('alt_label', Text::_('JSEARCH_FILTER_SUBMIT')); ?>
</label>
<div class="input-group"> <div class="input-group">
<label for="mod-finder-searchword-<?php echo $module->id; ?>" class="visually-hidden"> <input type="text" name="q" id="mod-finder-searchword<?php echo $module->id; ?>"
<?php echo Text::_('COM_FINDER_SEARCH_LABEL'); ?> class="js-finder-search-query form-control"
</label> value="<?php echo htmlspecialchars($app->getInput()->get('q', '', 'string'), ENT_COMPAT, 'UTF-8'); ?>"
<input type="search" name="q" id="mod-finder-searchword-<?php echo $module->id; ?>" placeholder="<?php echo Text::_('MOD_FINDER_SEARCH_VALUE'); ?>">
class="form-control" value="<?php echo htmlspecialchars($app->getInput()->get('q', '', 'string'), ENT_COMPAT, 'UTF-8'); ?>" <?php if ($params->get('show_button', 0)) : ?>
placeholder="<?php echo Text::_('COM_FINDER_SEARCH_LABEL'); ?>"> <button class="btn btn-primary" type="submit">
<button type="submit" class="btn btn-primary"> <span class="fa-solid fa-magnifying-glass" aria-hidden="true"></span>
<span class="fa-solid fa-magnifying-glass" aria-hidden="true"></span> <span class="visually-hidden"><?php echo Text::_('JSEARCH_FILTER_SUBMIT'); ?></span>
<span class="visually-hidden"><?php echo Text::_('COM_FINDER_SEARCH_LABEL'); ?></span> </button>
</button> <?php endif; ?>
</div> </div>
<?php if ($params->get('show_autosuggest', 1)) : ?>
<?php $app->getDocument()->getWebAssetManager()->useScript('awesomplete'); ?> <?php $show_advanced = $params->get('show_advanced', 0); ?>
<?php if ($show_advanced == 2) : ?>
<a href="<?php echo Route::_($route); ?>" class="mod-finder__advanced-link mt-2 d-inline-block">
<?php echo Text::_('COM_FINDER_ADVANCED_SEARCH'); ?>
</a>
<?php elseif ($show_advanced == 1) : ?>
<div class="mod-finder__advanced js-finder-advanced mt-2">
<?php echo HTMLHelper::_('filter.select', $query, $params); ?>
</div>
<?php endif; ?> <?php endif; ?>
<input type="hidden" name="option" value="com_finder">
<input type="hidden" name="Itemid" value="<?php echo $route; ?>"> <?php
$finderHelper = $app->bootModule('mod_finder', 'site')->getHelper('FinderHelper');
echo $finderHelper->getHiddenFields($route);
?>
</form> </form>
</div> </div>

View File

@@ -24,7 +24,6 @@ $headerClass = htmlspecialchars($params->get('header_class', ''), ENT_COMPAT, 'U
<?php if ($module->showtitle) : ?> <?php if ($module->showtitle) : ?>
<<?php echo $headerTag; ?> class="mod-footer__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>> <<?php echo $headerTag; ?> class="mod-footer__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>>
<?php endif; ?> <?php endif; ?>
<div class="mod-footer__content"> <div class="mod-footer__line1"><?php echo $lineone; ?></div>
<?php echo $module->content; ?> <div class="mod-footer__line2"><?php echo Text::_('MOD_FOOTER_LINE2'); ?></div>
</div>
</div> </div>