Merge branch 'version/03'

# Conflicts:
#	.github/workflows/auto-assign.yml
#	.github/workflows/auto-dev-issue.yml
#	.github/workflows/auto-release.yml
#	.github/workflows/changelog-validation.yml
#	.github/workflows/ci-joomla.yml
#	.github/workflows/deploy-manual.yml
#	.github/workflows/enterprise-firewall-setup.yml
#	.github/workflows/repo_health.yml
#	.github/workflows/repository-cleanup.yml
#	.github/workflows/standards-compliance.yml
#	.github/workflows/sync-version-on-merge.yml
#	.github/workflows/update-server.yml
#	README.md
This commit is contained in:
2026-04-07 23:15:57 -05:00
32 changed files with 61 additions and 11 deletions

View File

@@ -13,12 +13,11 @@
BRIEF: Documentation for MokoCassiopeia template
-->
# MokoCassiopeia
# MokoCassiopeia Template
**A Modern, Lightweight Joomla Template Based on Cassiopeia**
[![Version](https://img.shields.io/badge/version-03.09.03-blue.svg?logo=v&logoColor=white)](https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/tag/v03)
[![Version](https://img.shields.io/badge/version-03.09.07-blue.svg?logo=v&logoColor=white)](https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/tag/v03)
[![License](https://img.shields.io/badge/license-GPL--3.0--or--later-green.svg?logo=gnu&logoColor=white)](LICENSE)
[![Joomla](https://img.shields.io/badge/Joomla-5.x%20%7C%206.x-red.svg?logo=joomla&logoColor=white)](https://www.joomla.org)
[![PHP](https://img.shields.io/badge/PHP-8.1%2B-777BB4.svg?logo=php&logoColor=white)](https://www.php.net)

View File

@@ -10,31 +10,62 @@
/**
* Default layout override for mod_breadcrumbs.
* Bootstrap 5 breadcrumb with schema.org BreadcrumbList markup.
* Respects showHome, showLast, homeText module settings.
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
Factory::getApplication()->getLanguage()->load('mod_breadcrumbs', JPATH_SITE);
$suffix = htmlspecialchars($params->get('moduleclass_sfx', ''), 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');
$showHome = $params->get('showHome', 1);
$showLast = $params->get('showLast', 1);
$homeText = $params->get('homeText', '') ?: Text::_('MOD_BREADCRUMBS_HOME');
// Build filtered list respecting module settings
$items = [];
$count = count($list);
foreach ($list as $key => $item) {
// Skip Home item if showHome is off
if ($key === 0 && !$showHome) {
continue;
}
// Replace Home text if custom homeText is set
if ($key === 0 && $showHome) {
$item->name = $homeText;
}
// Skip last item if showLast is off
if ($key === $count - 1 && !$showLast) {
continue;
}
$items[] = $item;
}
if (empty($items)) {
return;
}
?>
<nav class="mod-breadcrumbs<?php echo $suffix ? ' ' . $suffix : ''; ?>" aria-label="<?php echo Text::_('MOD_BREADCRUMBS_HERE'); ?>">
<?php if ($module->showtitle) : ?>
<<?php echo $headerTag; ?> class="mod-breadcrumbs__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>>
<?php endif; ?>
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
<?php foreach ($list as $key => $item) : ?>
<?php
$isLast = ($key === array_key_last($list));
?>
<?php foreach ($items as $key => $item) : ?>
<?php $isLast = ($key === array_key_last($items)); ?>
<li class="breadcrumb-item<?php echo $isLast ? ' active' : ''; ?>" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"
<?php echo $isLast ? ' aria-current="page"' : ''; ?>>
<?php if (!$isLast && $item->link) : ?>
<?php if (!$isLast && !empty($item->link)) : ?>
<a href="<?php echo $item->link; ?>" itemprop="item">
<span itemprop="name"><?php echo $item->name; ?></span>
</a>

View File

@@ -451,7 +451,7 @@ $wa->useScript('user.js'); // js/user.js
<button class="search-toggler d-lg-none" type="button" data-bs-toggle="collapse" data-bs-target="#headerSearchCollapse" aria-controls="headerSearchCollapse" aria-expanded="false" aria-label="<?php echo Text::_('JSEARCH_FILTER_SUBMIT'); ?>">
<span class="fa-solid fa-magnifying-glass" aria-hidden="true"></span>
</button>
<div class="container-search collapse d-lg-block" id="headerSearchCollapse">
<div class="container-search" id="headerSearchCollapse">
<jdoc:include type="modules" name="search" style="none" />
</div>
<?php endif; ?>

View File

@@ -18672,10 +18672,14 @@ nav[data-toggle=toc] .nav-link.active+ul{
margin-top: 0.5rem;
}
.container-header .container-search.collapse:not(.show) {
.container-header .container-search {
display: none;
}
.container-header .container-search.show {
display: block;
}
.mod-finder__search.input-group {
max-width: 100%;
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -539,6 +539,20 @@
});
}
/**
* Toggle search on mobile via .show class
*/
function initSearchToggle() {
var btn = doc.querySelector(".search-toggler");
var target = doc.getElementById("headerSearchCollapse");
if (!btn || !target) return;
btn.addEventListener("click", function () {
var isOpen = target.classList.toggle("show");
btn.setAttribute("aria-expanded", isOpen ? "true" : "false");
});
}
/**
* Run all template JS initializations
*/
@@ -563,6 +577,7 @@
// Init features
initDrawers();
initBackTop();
initSearchToggle();
initSidebarAccordion();
}

View File

@@ -36,7 +36,7 @@
</server>
</updateservers>
<name>MokoCassiopeia</name>
<version>03.09.07</version>
<version>03.09.09</version>
<scriptfile>script.php</scriptfile>
<creationDate>2026-03-26</creationDate>
<author>Jonathan Miller || Moko Consulting</author>
@@ -66,6 +66,7 @@
<folder>css</folder>
<folder>images</folder>
<folder>fonts</folder>
<folder>vendor</folder>
</media>
<positions>
<position>topbar</position>