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:
@@ -13,12 +13,11 @@
|
|||||||
BRIEF: Documentation for MokoCassiopeia template
|
BRIEF: Documentation for MokoCassiopeia template
|
||||||
-->
|
-->
|
||||||
|
|
||||||
|
# MokoCassiopeia Template
|
||||||
# MokoCassiopeia
|
|
||||||
|
|
||||||
**A Modern, Lightweight Joomla Template Based on Cassiopeia**
|
**A Modern, Lightweight Joomla Template Based on Cassiopeia**
|
||||||
|
|
||||||
[](https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/tag/v03)
|
[](https://github.com/mokoconsulting-tech/MokoCassiopeia/releases/tag/v03)
|
||||||
[](LICENSE)
|
[](LICENSE)
|
||||||
[](https://www.joomla.org)
|
[](https://www.joomla.org)
|
||||||
[](https://www.php.net)
|
[](https://www.php.net)
|
||||||
|
|||||||
@@ -10,31 +10,62 @@
|
|||||||
/**
|
/**
|
||||||
* Default layout override for mod_breadcrumbs.
|
* Default layout override for mod_breadcrumbs.
|
||||||
* Bootstrap 5 breadcrumb with schema.org BreadcrumbList markup.
|
* Bootstrap 5 breadcrumb with schema.org BreadcrumbList markup.
|
||||||
|
* Respects showHome, showLast, homeText module settings.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
defined('_JEXEC') or die;
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
use Joomla\CMS\Factory;
|
use Joomla\CMS\Factory;
|
||||||
use Joomla\CMS\Language\Text;
|
use Joomla\CMS\Language\Text;
|
||||||
|
use Joomla\CMS\Router\Route;
|
||||||
|
use Joomla\CMS\Uri\Uri;
|
||||||
|
|
||||||
Factory::getApplication()->getLanguage()->load('mod_breadcrumbs', JPATH_SITE);
|
Factory::getApplication()->getLanguage()->load('mod_breadcrumbs', 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');
|
||||||
|
$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'); ?>">
|
<nav class="mod-breadcrumbs<?php echo $suffix ? ' ' . $suffix : ''; ?>" aria-label="<?php echo Text::_('MOD_BREADCRUMBS_HERE'); ?>">
|
||||||
<?php if ($module->showtitle) : ?>
|
<?php if ($module->showtitle) : ?>
|
||||||
<<?php echo $headerTag; ?> class="mod-breadcrumbs__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>>
|
<<?php echo $headerTag; ?> class="mod-breadcrumbs__title<?php echo $headerClass ? ' ' . $headerClass : ''; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
|
<ol class="breadcrumb" itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||||
<?php foreach ($list as $key => $item) : ?>
|
<?php foreach ($items as $key => $item) : ?>
|
||||||
<?php
|
<?php $isLast = ($key === array_key_last($items)); ?>
|
||||||
$isLast = ($key === array_key_last($list));
|
|
||||||
?>
|
|
||||||
<li class="breadcrumb-item<?php echo $isLast ? ' active' : ''; ?>" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"
|
<li class="breadcrumb-item<?php echo $isLast ? ' active' : ''; ?>" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"
|
||||||
<?php echo $isLast ? ' aria-current="page"' : ''; ?>>
|
<?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">
|
<a href="<?php echo $item->link; ?>" itemprop="item">
|
||||||
<span itemprop="name"><?php echo $item->name; ?></span>
|
<span itemprop="name"><?php echo $item->name; ?></span>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@@ -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'); ?>">
|
<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>
|
<span class="fa-solid fa-magnifying-glass" aria-hidden="true"></span>
|
||||||
</button>
|
</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" />
|
<jdoc:include type="modules" name="search" style="none" />
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|||||||
@@ -18672,10 +18672,14 @@ nav[data-toggle=toc] .nav-link.active+ul{
|
|||||||
margin-top: 0.5rem;
|
margin-top: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container-header .container-search.collapse:not(.show) {
|
.container-header .container-search {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.container-header .container-search.show {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
.mod-finder__search.input-group {
|
.mod-finder__search.input-group {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
src/media/fonts/fredoka-v17-latin-300.woff2
Normal file
BIN
src/media/fonts/fredoka-v17-latin-300.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/fredoka-v17-latin-500.woff2
Normal file
BIN
src/media/fonts/fredoka-v17-latin-500.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/fredoka-v17-latin-600.woff2
Normal file
BIN
src/media/fonts/fredoka-v17-latin-600.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/fredoka-v17-latin-700.woff2
Normal file
BIN
src/media/fonts/fredoka-v17-latin-700.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/fredoka-v17-latin-regular.woff2
Normal file
BIN
src/media/fonts/fredoka-v17-latin-regular.woff2
Normal file
Binary file not shown.
Binary file not shown.
BIN
src/media/fonts/osaka-re.woff
Normal file
BIN
src/media/fonts/osaka-re.woff
Normal file
Binary file not shown.
BIN
src/media/fonts/pacifico-v23-latin-regular.woff2
Normal file
BIN
src/media/fonts/pacifico-v23-latin-regular.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-100.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-100.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-100italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-100italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-200.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-200.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-200italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-200italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-300.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-300.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-300italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-300italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-500.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-500.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-500italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-500italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-600.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-600.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-600italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-600italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-700.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-700.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-700italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-700italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-800.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-800.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-800italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-800italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-900.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-900.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-900italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-900italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-italic.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-italic.woff2
Normal file
Binary file not shown.
BIN
src/media/fonts/roboto-v51-latin-regular.woff2
Normal file
BIN
src/media/fonts/roboto-v51-latin-regular.woff2
Normal file
Binary file not shown.
@@ -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
|
* Run all template JS initializations
|
||||||
*/
|
*/
|
||||||
@@ -563,6 +577,7 @@
|
|||||||
// Init features
|
// Init features
|
||||||
initDrawers();
|
initDrawers();
|
||||||
initBackTop();
|
initBackTop();
|
||||||
|
initSearchToggle();
|
||||||
initSidebarAccordion();
|
initSidebarAccordion();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@
|
|||||||
</server>
|
</server>
|
||||||
</updateservers>
|
</updateservers>
|
||||||
<name>MokoCassiopeia</name>
|
<name>MokoCassiopeia</name>
|
||||||
<version>03.09.07</version>
|
<version>03.09.09</version>
|
||||||
<scriptfile>script.php</scriptfile>
|
<scriptfile>script.php</scriptfile>
|
||||||
<creationDate>2026-03-26</creationDate>
|
<creationDate>2026-03-26</creationDate>
|
||||||
<author>Jonathan Miller || Moko Consulting</author>
|
<author>Jonathan Miller || Moko Consulting</author>
|
||||||
@@ -66,6 +66,7 @@
|
|||||||
<folder>css</folder>
|
<folder>css</folder>
|
||||||
<folder>images</folder>
|
<folder>images</folder>
|
||||||
<folder>fonts</folder>
|
<folder>fonts</folder>
|
||||||
|
<folder>vendor</folder>
|
||||||
</media>
|
</media>
|
||||||
<positions>
|
<positions>
|
||||||
<position>topbar</position>
|
<position>topbar</position>
|
||||||
|
|||||||
Reference in New Issue
Block a user