MokoOnyx v01.00.00 — initial release (successor to MokoCassiopeia)
Some checks failed
Standards Compliance / Secret Scanning (push) Successful in 3s
Standards Compliance / License Header Validation (push) Successful in 4s
Standards Compliance / Repository Structure Validation (push) Successful in 5s
Standards Compliance / Coding Standards Check (push) Failing after 3s
Standards Compliance / Version Consistency Check (push) Successful in 3s
Standards Compliance / Workflow Configuration Check (push) Failing after 2s
Standards Compliance / Documentation Quality Check (push) Successful in 3s
Standards Compliance / README Completeness Check (push) Successful in 3s
Standards Compliance / Git Repository Hygiene (push) Successful in 2s
Standards Compliance / Script Integrity Validation (push) Successful in 4s
Standards Compliance / Line Length Check (push) Failing after 4s
Standards Compliance / File Naming Standards (push) Successful in 2s
Standards Compliance / Insecure Code Pattern Detection (push) Successful in 3s
Standards Compliance / Code Complexity Analysis (push) Successful in 3s
Standards Compliance / Code Duplication Detection (push) Successful in 4s
Standards Compliance / Dead Code Detection (push) Successful in 3s
Standards Compliance / File Size Limits (push) Successful in 2s
CodeQL Security Scanning / Analyze (javascript) (push) Failing after 1m9s
Standards Compliance / Binary File Detection (push) Successful in 4s
CodeQL Security Scanning / Analyze (actions) (push) Failing after 1m11s
Standards Compliance / TODO/FIXME Tracking (push) Successful in 3s
Standards Compliance / Dependency Vulnerability Scanning (push) Successful in 5s
Standards Compliance / Broken Link Detection (push) Successful in 5s
Standards Compliance / Unused Dependencies Check (push) Successful in 7s
Standards Compliance / API Documentation Coverage (push) Successful in 3s
Standards Compliance / Accessibility Check (push) Successful in 3s
Standards Compliance / Performance Metrics (push) Successful in 3s
Standards Compliance / Enterprise Readiness Check (push) Successful in 3s
Standards Compliance / Repository Health Check (push) Successful in 4s
Standards Compliance / Terraform Configuration Validation (push) Successful in 6s
CodeQL Security Scanning / Security Scan Summary (push) Successful in 1s
Standards Compliance / Compliance Summary (push) Successful in 1s
Repo Health / Access control (push) Successful in 1s
Auto-Update SHA Hash / Update SHA-256 Hash in updates.xml (release) Successful in 4s
Repo Health / Release configuration (push) Failing after 3s
Repo Health / Scripts governance (push) Successful in 3s
Repo Health / Repository health (push) Failing after 3s
Some checks failed
Standards Compliance / Secret Scanning (push) Successful in 3s
Standards Compliance / License Header Validation (push) Successful in 4s
Standards Compliance / Repository Structure Validation (push) Successful in 5s
Standards Compliance / Coding Standards Check (push) Failing after 3s
Standards Compliance / Version Consistency Check (push) Successful in 3s
Standards Compliance / Workflow Configuration Check (push) Failing after 2s
Standards Compliance / Documentation Quality Check (push) Successful in 3s
Standards Compliance / README Completeness Check (push) Successful in 3s
Standards Compliance / Git Repository Hygiene (push) Successful in 2s
Standards Compliance / Script Integrity Validation (push) Successful in 4s
Standards Compliance / Line Length Check (push) Failing after 4s
Standards Compliance / File Naming Standards (push) Successful in 2s
Standards Compliance / Insecure Code Pattern Detection (push) Successful in 3s
Standards Compliance / Code Complexity Analysis (push) Successful in 3s
Standards Compliance / Code Duplication Detection (push) Successful in 4s
Standards Compliance / Dead Code Detection (push) Successful in 3s
Standards Compliance / File Size Limits (push) Successful in 2s
CodeQL Security Scanning / Analyze (javascript) (push) Failing after 1m9s
Standards Compliance / Binary File Detection (push) Successful in 4s
CodeQL Security Scanning / Analyze (actions) (push) Failing after 1m11s
Standards Compliance / TODO/FIXME Tracking (push) Successful in 3s
Standards Compliance / Dependency Vulnerability Scanning (push) Successful in 5s
Standards Compliance / Broken Link Detection (push) Successful in 5s
Standards Compliance / Unused Dependencies Check (push) Successful in 7s
Standards Compliance / API Documentation Coverage (push) Successful in 3s
Standards Compliance / Accessibility Check (push) Successful in 3s
Standards Compliance / Performance Metrics (push) Successful in 3s
Standards Compliance / Enterprise Readiness Check (push) Successful in 3s
Standards Compliance / Repository Health Check (push) Successful in 4s
Standards Compliance / Terraform Configuration Validation (push) Successful in 6s
CodeQL Security Scanning / Security Scan Summary (push) Successful in 1s
Standards Compliance / Compliance Summary (push) Successful in 1s
Repo Health / Access control (push) Successful in 1s
Auto-Update SHA Hash / Update SHA-256 Hash in updates.xml (release) Successful in 4s
Repo Health / Release configuration (push) Failing after 3s
Repo Health / Scripts governance (push) Successful in 3s
Repo Health / Repository health (push) Failing after 3s
All files renamed from mokocassiopeia to mokoonyx. Update server points to MokoOnyx repo. Bridge migration removed (clean standalone template). Version reset to 01.00.00. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
332
docs/OVERRIDE_PHILOSOPHY.md
Normal file
332
docs/OVERRIDE_PHILOSOPHY.md
Normal file
@@ -0,0 +1,332 @@
|
||||
<!--
|
||||
Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
|
||||
|
||||
This file is part of a Moko Consulting project.
|
||||
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# FILE INFORMATION
|
||||
DEFGROUP: Joomla.Template.Site
|
||||
INGROUP: MokoOnyx.Documentation
|
||||
REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx
|
||||
FILE: docs/OVERRIDE_PHILOSOPHY.md
|
||||
VERSION: 03.09.03
|
||||
BRIEF: Philosophy and implementation of non-replacing alternative layouts
|
||||
PATH: /docs/OVERRIDE_PHILOSOPHY.md
|
||||
-->
|
||||
|
||||
# Override Philosophy — MokoOnyx
|
||||
|
||||
## Core Principle: Add-On, Not Replacement
|
||||
|
||||
**MokoOnyx overrides are designed as alternative layouts, not replacements of default Joomla layouts.**
|
||||
|
||||
This means:
|
||||
- ✅ Default Joomla layouts continue to work unchanged
|
||||
- ✅ Site administrators can choose when to use our enhanced layouts
|
||||
- ✅ Updates to Joomla core layouts don't break the site
|
||||
- ✅ Compatibility with other extensions is maintained
|
||||
- ✅ Users have control over which layouts to use
|
||||
|
||||
---
|
||||
|
||||
## Technical Implementation
|
||||
|
||||
### Layout Naming Convention
|
||||
|
||||
All MokoOnyx overrides use **`mobile.php`** naming instead of **`default.php`**:
|
||||
|
||||
```
|
||||
❌ BAD (Replaces default):
|
||||
src/html/mod_virtuemart_cart/default.php
|
||||
|
||||
✅ GOOD (Alternative layout):
|
||||
src/html/mod_virtuemart_cart/mobile.php
|
||||
```
|
||||
|
||||
### How Joomla Handles Layouts
|
||||
|
||||
When a module or component looks for a layout, Joomla searches in this order:
|
||||
|
||||
1. **Template override with specified layout name**: `templates/mokoonyx/html/{extension}/{view}/{layout}.php`
|
||||
2. **Extension's specified layout**: `{extension}/tmpl/{view}/{layout}.php`
|
||||
3. **Template override for default layout**: `templates/mokoonyx/html/{extension}/{view}/default.php`
|
||||
4. **Extension's default layout**: `{extension}/tmpl/{view}/default.php`
|
||||
|
||||
By naming our overrides `mobile.php` instead of `default.php`, they become **step 1** alternatives that must be explicitly selected, rather than **step 3** replacements that are automatically used.
|
||||
|
||||
---
|
||||
|
||||
## How to Use Alternative Layouts
|
||||
|
||||
### Method 1: Module/Menu Item Settings
|
||||
|
||||
When editing a module or menu item in Joomla administrator:
|
||||
|
||||
1. Open the module/menu item for editing
|
||||
2. Navigate to the **Advanced** tab
|
||||
3. Find the **Alternative Layout** field
|
||||
4. Select **MokoOnyx - mobile** from the dropdown
|
||||
5. Save
|
||||
|
||||
### Method 2: Override in Module Position
|
||||
|
||||
If you want all modules in a specific position to use the mobile layout:
|
||||
|
||||
```php
|
||||
<!-- In your index.php template file -->
|
||||
<?php if ($this->countModules('sidebar-left')) : ?>
|
||||
<jdoc:include type="modules" name="sidebar-left" style="none" layout="mobile" />
|
||||
<?php endif; ?>
|
||||
```
|
||||
|
||||
### Method 3: Module Chrome (Advanced)
|
||||
|
||||
Create a custom module chrome in `templates/mokoonyx/html/layouts/chromes/` that automatically applies the mobile layout.
|
||||
|
||||
---
|
||||
|
||||
## Exception: Main Menu
|
||||
|
||||
**The only exception** to this philosophy is `mod_menu` with the "Main Menu" module type.
|
||||
|
||||
The template includes files like:
|
||||
- `src/html/mod_menu/mainmenu.php`
|
||||
- `src/html/mod_menu/mainmenu_component.php`
|
||||
- `src/html/mod_menu/mainmenu_heading.php`
|
||||
- `src/html/mod_menu/mainmenu_url.php`
|
||||
- `src/html/mod_menu/mainmenu_separator.php`
|
||||
|
||||
These use a **custom layout name** (`mainmenu`) instead of replacing `default.php`, which allows the site to:
|
||||
- Use the enhanced Bootstrap 5 collapsible menu for main navigation
|
||||
- Keep standard Joomla menus working in other positions
|
||||
- Provide better mobile navigation without breaking existing menus
|
||||
|
||||
To use this layout, set the module's **Alternative Layout** to **MokoOnyx - mainmenu**.
|
||||
|
||||
---
|
||||
|
||||
## Override Inventory
|
||||
|
||||
### Module Overrides (16 total)
|
||||
|
||||
All use `mobile.php` naming (alternative layout):
|
||||
|
||||
**VirtueMart (5)**:
|
||||
- `mod_virtuemart_cart/mobile.php`
|
||||
- `mod_virtuemart_product/mobile.php`
|
||||
- `mod_virtuemart_currencies/mobile.php`
|
||||
- `mod_virtuemart_category/mobile.php`
|
||||
- `mod_virtuemart_manufacturer/mobile.php`
|
||||
|
||||
**Community Builder (2)**:
|
||||
- `mod_cblogin/mobile.php`
|
||||
- `mod_comprofilerOnline/mobile.php`
|
||||
|
||||
**Main Menu (1)**:
|
||||
- `mod_menu/mainmenu.php` (custom layout name)
|
||||
|
||||
**Industry Extensions (8)**:
|
||||
- `mod_k2_content/mobile.php`
|
||||
- `mod_acymailing/mobile.php`
|
||||
- `mod_hikashop_cart/mobile.php`
|
||||
- `mod_kunenalatest/mobile.php`
|
||||
- `mod_kunenalogin/mobile.php`
|
||||
- `mod_kunenasearch/mobile.php`
|
||||
- `mod_kunenastats/mobile.php`
|
||||
- `mod_osmembership/mobile.php`
|
||||
|
||||
### Component View Overrides (12 total)
|
||||
|
||||
All use `mobile.php` naming (alternative layout):
|
||||
|
||||
**Community Builder (4)**:
|
||||
- `com_comprofiler/userprofile/mobile.php`
|
||||
- `com_comprofiler/userslist/mobile.php`
|
||||
- `com_comprofiler/registers/mobile.php`
|
||||
- `com_comprofiler/login/mobile.php`
|
||||
|
||||
**JEM - Joomla Event Manager (5)**:
|
||||
- `com_jem/eventslist/mobile.php`
|
||||
- `com_jem/event/mobile.php`
|
||||
- `com_jem/calendar/mobile.php`
|
||||
- `com_jem/venue/mobile.php`
|
||||
- `com_jem/categories/mobile.php`
|
||||
|
||||
**Kunena Forum (1)**:
|
||||
- `com_kunena/category/mobile.php`
|
||||
|
||||
**OSMembership (2)**:
|
||||
- `com_osmembership/plan/mobile.php`
|
||||
- `com_osmembership/plans/mobile.php`
|
||||
|
||||
**Joomla Core (2)**:
|
||||
- `com_content/article/toc-left.php` (custom layout name)
|
||||
- `com_content/article/toc-right.php` (custom layout name)
|
||||
|
||||
---
|
||||
|
||||
## Benefits of This Approach
|
||||
|
||||
### 1. **Zero Breaking Changes**
|
||||
|
||||
Existing sites continue to work exactly as before. No layouts are forcibly changed.
|
||||
|
||||
### 2. **Gradual Adoption**
|
||||
|
||||
Site administrators can:
|
||||
- Test mobile layouts on specific modules first
|
||||
- Roll out changes module-by-module
|
||||
- Keep some modules using default layouts if needed
|
||||
- Easily revert by changing the Alternative Layout setting
|
||||
|
||||
### 3. **Extension Compatibility**
|
||||
|
||||
Third-party extensions' default layouts remain untouched, preventing conflicts with:
|
||||
- Extension updates
|
||||
- Other templates
|
||||
- Custom development
|
||||
|
||||
### 4. **Joomla Core Updates**
|
||||
|
||||
When Joomla core updates:
|
||||
- Default layouts get new features/bug fixes automatically
|
||||
- Mobile layouts remain stable and tested
|
||||
- No emergency fixes needed after Joomla updates
|
||||
|
||||
### 5. **Multi-Language Support**
|
||||
|
||||
Joomla's language system loads extension language files properly because:
|
||||
- Extensions aren't hijacked by template overrides
|
||||
- Language strings come from the correct source
|
||||
- Translations work as expected
|
||||
|
||||
---
|
||||
|
||||
## Standards Not Overridden
|
||||
|
||||
Following Cassiopeia template best practices, MokoOnyx **does not override** standard Joomla core modules:
|
||||
|
||||
- ❌ `mod_breadcrumbs` - Use Joomla core layout
|
||||
- ❌ `mod_login` - Use Joomla core layout
|
||||
- ❌ `mod_articles_latest` - Use Joomla core layout
|
||||
- ❌ `mod_articles_category` - Use Joomla core layout
|
||||
- ❌ `mod_articles_news` - Use Joomla core layout
|
||||
- ❌ `mod_search` - Use Joomla core layout (removed in v03.08.03)
|
||||
|
||||
**Reason**: These modules have robust core layouts with proper language loading, accessibility, and ongoing Joomla maintenance.
|
||||
|
||||
---
|
||||
|
||||
## Developer Guidelines
|
||||
|
||||
When adding new overrides to MokoOnyx:
|
||||
|
||||
### ✅ DO:
|
||||
|
||||
1. Name files `mobile.php` or use descriptive custom names (`mainmenu.php`, `toc-left.php`)
|
||||
2. Document the alternative layout in MODULE_OVERRIDES.md
|
||||
3. Add CSS with BEM naming: `.{extension}-{view}__element`
|
||||
4. Test that default layouts still work
|
||||
5. Provide clear instructions for selecting the layout
|
||||
|
||||
### ❌ DON'T:
|
||||
|
||||
1. Create `default.php` files that replace core layouts
|
||||
2. Override standard Joomla core modules without strong justification
|
||||
3. Break backward compatibility
|
||||
4. Assume users will automatically get your layout
|
||||
5. Forget to document how to enable the alternative layout
|
||||
|
||||
---
|
||||
|
||||
## Migration from Replacing Overrides
|
||||
|
||||
If you're migrating from a template that used `default.php` overrides:
|
||||
|
||||
### Step 1: Identify Replaced Layouts
|
||||
|
||||
```bash
|
||||
find templates/oldtemplate/html -name "default.php"
|
||||
```
|
||||
|
||||
### Step 2: Rename to Alternative Layouts
|
||||
|
||||
```bash
|
||||
# For each default.php found:
|
||||
mv default.php mobile.php
|
||||
```
|
||||
|
||||
### Step 3: Update Module Settings
|
||||
|
||||
For each module using the old override:
|
||||
1. Edit module in administrator
|
||||
2. Advanced tab → Alternative Layout
|
||||
3. Select "mobile" from dropdown
|
||||
4. Save
|
||||
|
||||
### Step 4: Test
|
||||
|
||||
- Verify module displays correctly
|
||||
- Check that other modules still use default layouts
|
||||
- Confirm language strings load properly
|
||||
|
||||
---
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### My Alternative Layout Doesn't Appear in Dropdown
|
||||
|
||||
**Check:**
|
||||
1. File is in correct location: `templates/mokoonyx/html/{extension}/{view}/`
|
||||
2. File has `.php` extension
|
||||
3. File is not named `default.php`
|
||||
4. Cache is cleared (System → Clear Cache)
|
||||
|
||||
### Module Still Uses Default Layout
|
||||
|
||||
**Check:**
|
||||
1. Module's Alternative Layout setting in administrator
|
||||
2. Module position's `layout` parameter in `<jdoc:include>` tag
|
||||
3. File permissions (must be readable)
|
||||
4. Template is assigned to correct pages
|
||||
|
||||
### Layout Works But Looks Wrong
|
||||
|
||||
**Check:**
|
||||
1. CSS is loaded: inspect element and check for `.{extension}-{view}__` classes
|
||||
2. `template.css` is up to date
|
||||
3. Browser cache is cleared
|
||||
4. CSS variables are defined in template
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- [Joomla Docs: Layout Overrides](https://docs.joomla.org/Layout_Overrides_in_Joomla)
|
||||
- [Joomla Docs: Alternative Layouts](https://docs.joomla.org/J3.x:How_to_use_the_alternative_layout_feature)
|
||||
- [MODULE_OVERRIDES.md](MODULE_OVERRIDES.md) - Complete override inventory
|
||||
- [CSS_VARIABLES.md](CSS_VARIABLES.md) - Template styling system
|
||||
|
||||
---
|
||||
|
||||
## Version History
|
||||
|
||||
- **03.08.04**: Created OVERRIDE_PHILOSOPHY.md document
|
||||
- **03.08.03**: Removed mod_search override to align with philosophy
|
||||
- **03.08.02**: Removed standard Joomla module overrides for proper language loading
|
||||
- **Earlier**: Renamed all overrides from default.php to mobile.php (21 files)
|
||||
Reference in New Issue
Block a user