From 201094d8de6446e9c43d9aa914d1a8309f675b06 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 04:18:24 +0000 Subject: [PATCH] Add JEM component overrides with mobile-first design Co-authored-by: jmiller-moko <230051081+jmiller-moko@users.noreply.github.com> --- docs/MODULE_OVERRIDES.md | 82 ++++++- .../html/com_jem/calendar/index.html | 1 + .../html/com_jem/calendar/mobile.php | 167 ++++++++++++++ .../html/com_jem/categories/index.html | 1 + .../html/com_jem/categories/mobile.php | 111 +++++++++ src/templates/html/com_jem/event/index.html | 1 + src/templates/html/com_jem/event/mobile.php | 212 ++++++++++++++++++ .../html/com_jem/eventslist/index.html | 1 + .../html/com_jem/eventslist/mobile.php | 147 ++++++++++++ src/templates/html/com_jem/index.html | 1 + src/templates/html/com_jem/venue/index.html | 1 + src/templates/html/com_jem/venue/mobile.php | 188 ++++++++++++++++ 12 files changed, 912 insertions(+), 1 deletion(-) create mode 100644 src/templates/html/com_jem/calendar/index.html create mode 100644 src/templates/html/com_jem/calendar/mobile.php create mode 100644 src/templates/html/com_jem/categories/index.html create mode 100644 src/templates/html/com_jem/categories/mobile.php create mode 100644 src/templates/html/com_jem/event/index.html create mode 100644 src/templates/html/com_jem/event/mobile.php create mode 100644 src/templates/html/com_jem/eventslist/index.html create mode 100644 src/templates/html/com_jem/eventslist/mobile.php create mode 100644 src/templates/html/com_jem/index.html create mode 100644 src/templates/html/com_jem/venue/index.html create mode 100644 src/templates/html/com_jem/venue/mobile.php diff --git a/docs/MODULE_OVERRIDES.md b/docs/MODULE_OVERRIDES.md index cd7ad2c..7acd309 100644 --- a/docs/MODULE_OVERRIDES.md +++ b/docs/MODULE_OVERRIDES.md @@ -35,7 +35,7 @@ This document provides a comprehensive guide to all mobile-responsive module and ## Overview -MokoCassiopeia includes **16 mobile-responsive module overrides** and **7 component view overrides** designed to enhance the mobile user experience for third-party extensions and the Main Menu navigation. +MokoCassiopeia includes **16 mobile-responsive module overrides** and **12 component view overrides** designed to enhance the mobile user experience for third-party extensions and the Main Menu navigation. **Important**: Following Cassiopeia template best practices, MokoCassiopeia avoids overriding standard Joomla core modules (such as mod_search, mod_login, mod_breadcrumbs) to ensure proper language loading and compatibility. **Exception**: mod_menu "Main Menu" override provides essential Bootstrap 5 collapsible dropdown functionality. @@ -361,6 +361,79 @@ Login page with remember me and helper links. - CSRF token support - Responsive padding adjustments +### 5. JEM (Joomla Event Manager) Components + +Five comprehensive component view overrides for JEM event management. + +#### com_jem +**Location**: `src/templates/html/com_jem/` + +Mobile-responsive views for JEM event listings, details, calendar, venues, and categories. + +##### eventslist +Event listing with card-based layout. + +**Features**: +- Event cards with date, time, and venue +- Category badges with color coding +- Responsive event grid layout +- Event description excerpts +- Read more buttons with clear calls-to-action +- Pagination support +- Empty state messaging + +##### event +Single event details view with comprehensive information. + +**Features**: +- Large event image display (responsive) +- Date and time with structured data +- Venue information with maps link +- Event description with full content +- Category display with badges +- Registration information (if enabled) +- Contact information display +- Back to events navigation +- Meta information with icons + +##### calendar +Monthly calendar view with event indicators. + +**Features**: +- Month navigation (previous/next) +- Calendar grid with weekday headers +- Event indicators on dates with events +- Responsive calendar layout +- Today highlighting +- Event list for selected month +- Event count per day display +- Touch-friendly navigation buttons + +##### venue +Venue details with location and upcoming events. + +**Features**: +- Venue image display +- Complete address information +- Website link (external) +- Google Maps integration +- Venue description +- Upcoming events at venue +- Location coordinates display +- Back navigation + +##### categories +Event category listing with descriptions. + +**Features**: +- Category cards with images +- Category descriptions +- Event count per category +- View category buttons +- Responsive grid layout +- Empty state messaging +- Pagination support + --- ## CSS Architecture @@ -402,6 +475,13 @@ All module styles are located in `src/media/css/template.css` with dedicated sec - Login pages - Tab interfaces +6. **JEM COMPONENT STYLES** (Lines ~22000+) + - Event list cards + - Event details layout + - Calendar grid + - Venue information + - Category displays + ### CSS Variables Integration All modules integrate with template CSS variables: diff --git a/src/templates/html/com_jem/calendar/index.html b/src/templates/html/com_jem/calendar/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/src/templates/html/com_jem/calendar/index.html @@ -0,0 +1 @@ + diff --git a/src/templates/html/com_jem/calendar/mobile.php b/src/templates/html/com_jem/calendar/mobile.php new file mode 100644 index 0000000..ec2c307 --- /dev/null +++ b/src/templates/html/com_jem/calendar/mobile.php @@ -0,0 +1,167 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + * + * Mobile responsive override for JEM calendar view + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +use Joomla\CMS\HTML\HTMLHelper; + +$events = $this->rows ?? []; +$date = $this->date ?? null; +$year = $this->year ?? date('Y'); +$month = $this->month ?? date('m'); +?> + +
+
+ + +
+

+ +

+
+ + +
+ + + + +

+ +

+ + + + +
+ + +
+ +
+ +
+ +
+ +
+ + +
+ +
+ dates) && date('Y-m-d', strtotime($event->dates)) == $currentDate) { + $hasEvents = true; + $dayEvents[] = $event; + } + } + } + + $isToday = ($currentDate == date('Y-m-d')); + $classes = 'jem-calendar__day'; + if ($hasEvents) { + $classes .= ' jem-calendar__day--has-events'; + } + if ($isToday) { + $classes .= ' jem-calendar__day--today'; + } + ?> +
+
+ +
+ +
+ + + +
+ +
+ +
+
+ + + +
+

+ +

+
+ +
+
+ dates)) : ?> + + +
+

+ slug)) : ?> + + escape($event->title); ?> + + + escape($event->title); ?> + +

+ venue)) : ?> +
+ 📍 escape($event->venue); ?> +
+ +
+ +
+
+ + +
+
diff --git a/src/templates/html/com_jem/categories/index.html b/src/templates/html/com_jem/categories/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/src/templates/html/com_jem/categories/index.html @@ -0,0 +1 @@ + diff --git a/src/templates/html/com_jem/categories/mobile.php b/src/templates/html/com_jem/categories/mobile.php new file mode 100644 index 0000000..7c704a7 --- /dev/null +++ b/src/templates/html/com_jem/categories/mobile.php @@ -0,0 +1,111 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + * + * Mobile responsive override for JEM categories view + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; + +$categories = $this->categories ?? []; +?> + +
+
+ + +
+

+ +

+
+ + +
+ +
+
+ + + image)) : ?> +
+ <?php echo $this->escape($category->catname); ?> +
+ + + +
+ + +

+ slug)) : ?> + + escape($category->catname); ?> + + + escape($category->catname); ?> + +

+ + + catdescription)) : ?> +
+ catdescription; ?> +
+ + + + eventcount)) : ?> +
+ + eventcount); ?> + +
+ + + + slug)) : ?> +
+ + + +
+ + +
+ +
+
+ +
+ + + pagination)) : ?> +
+ pagination->getPagesLinks(); ?> +
+ + + +
+

+ +

+
+ + +
+
diff --git a/src/templates/html/com_jem/event/index.html b/src/templates/html/com_jem/event/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/src/templates/html/com_jem/event/index.html @@ -0,0 +1 @@ + diff --git a/src/templates/html/com_jem/event/mobile.php b/src/templates/html/com_jem/event/mobile.php new file mode 100644 index 0000000..43f90c8 --- /dev/null +++ b/src/templates/html/com_jem/event/mobile.php @@ -0,0 +1,212 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + * + * Mobile responsive override for JEM event details view + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +use Joomla\CMS\HTML\HTMLHelper; + +$item = $this->item ?? null; +$params = $this->params ?? null; + +if (!$item) { + return; +} +?> + +
+
+ + +
+

+ escape($item->title); ?> +

+
+ + + datimage)) : ?> +
+ <?php echo $this->escape($item->title); ?> +
+ + + +
+ + +
+ +
+ + : + + dates)) : ?> + + + + enddates) && $item->enddates != $item->dates) : ?> + - + + +
+
+ + + times)) : ?> +
+ +
+ + : + + + escape($item->times); ?> + endtimes)) : ?> + - escape($item->endtimes); ?> + + +
+
+ + + + venue)) : ?> +
+ +
+ + : + + venueslug)) : ?> + + escape($item->venue); ?> + + + + escape($item->venue); ?> + + + + street) || !empty($item->city)) : ?> +
+ street)) : ?> + + escape($item->street); ?> + + + city)) : ?> + + escape($item->city); ?> + + +
+ +
+
+ + + + categories)) : ?> +
+ +
+ + : + +
+ categories as $category) : ?> + + escape($category->catname); ?> + + +
+
+
+ + +
+ + + fulltext)) : ?> +
+

+ +

+
+ fulltext; ?> +
+
+ + + + registra) && $item->registra == 1) : ?> +
+

+ +

+ maxplaces)) : ?> +

+ : + maxplaces; ?> +

+ + waitinglist)) : ?> +

+ +

+ +
+ + + + contactname)) : ?> +
+

+ +

+

+ : + escape($item->contactname); ?> +

+ contactemail)) : ?> +

+ : + + escape($item->contactemail); ?> + +

+ +
+ + + +
+ + + +
+ +
+
diff --git a/src/templates/html/com_jem/eventslist/index.html b/src/templates/html/com_jem/eventslist/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/src/templates/html/com_jem/eventslist/index.html @@ -0,0 +1 @@ + diff --git a/src/templates/html/com_jem/eventslist/mobile.php b/src/templates/html/com_jem/eventslist/mobile.php new file mode 100644 index 0000000..b7b6d65 --- /dev/null +++ b/src/templates/html/com_jem/eventslist/mobile.php @@ -0,0 +1,147 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + * + * Mobile responsive override for JEM events list view + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +use Joomla\CMS\HTML\HTMLHelper; + +// Load JEM helper if available +if (file_exists(JPATH_SITE . '/components/com_jem/helpers/helper.php')) { + require_once JPATH_SITE . '/components/com_jem/helpers/helper.php'; +} + +$items = $this->items ?? []; +$params = $this->params ?? null; +?> + +
+
+ + pageheading)) : ?> +
+

+ escape($this->pageheading); ?> +

+
+ + + +
+ +
+
+ + +
+ dates)) : ?> + + + + enddates) && $item->enddates != $item->dates) : ?> + - + + +
+ + +

+ slug)) : ?> + + escape($item->title); ?> + + + escape($item->title); ?> + +

+ + + venue)) : ?> +
+ + venueslug)) : ?> + + escape($item->venue); ?> + + + + escape($item->venue); ?> + + + + city)) : ?> + + , escape($item->city); ?> + + +
+ + + + introtext)) : ?> +
+ introtext; ?> +
+ + + + categories)) : ?> +
+ categories as $category) : ?> + + escape($category->catname); ?> + + +
+ + + + slug)) : ?> +
+ + + +
+ + +
+
+ +
+ + + pagination)) : ?> +
+ pagination->getPagesLinks(); ?> +
+ + + +
+

+ +

+
+ + +
+
diff --git a/src/templates/html/com_jem/index.html b/src/templates/html/com_jem/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/src/templates/html/com_jem/index.html @@ -0,0 +1 @@ + diff --git a/src/templates/html/com_jem/venue/index.html b/src/templates/html/com_jem/venue/index.html new file mode 100644 index 0000000..2efb97f --- /dev/null +++ b/src/templates/html/com_jem/venue/index.html @@ -0,0 +1 @@ + diff --git a/src/templates/html/com_jem/venue/mobile.php b/src/templates/html/com_jem/venue/mobile.php new file mode 100644 index 0000000..6c69804 --- /dev/null +++ b/src/templates/html/com_jem/venue/mobile.php @@ -0,0 +1,188 @@ + + * @license GNU General Public License version 2 or later; see LICENSE.txt + * + * Mobile responsive override for JEM venue view + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Language\Text; +use Joomla\CMS\Router\Route; +use Joomla\CMS\HTML\HTMLHelper; + +$venue = $this->venue ?? null; +$events = $this->rows ?? []; + +if (!$venue) { + return; +} +?> + +
+
+ + +
+

+ escape($venue->venue); ?> +

+
+ + + locimage)) : ?> +
+ <?php echo $this->escape($venue->venue); ?> +
+ + + +
+ + + street) || !empty($venue->city) || !empty($venue->postalCode)) : ?> +
+ +
+ + : + +
+ street)) : ?> +
+ escape($venue->street); ?> +
+ + postalCode) || !empty($venue->city)) : ?> +
+ postalCode)) : ?> + + escape($venue->postalCode); ?> + + + city)) : ?> + + escape($venue->city); ?> + + +
+ + state)) : ?> +
+ escape($venue->state); ?> +
+ + country)) : ?> +
+ escape($venue->country); ?> +
+ +
+
+
+ + + + url)) : ?> +
+ + +
+ + + + locdescription)) : ?> +
+

+ +

+
+ locdescription; ?> +
+
+ + +
+ + + latitude) && !empty($venue->longitude)) : ?> +
+

+ +

+
+ +
+

+

+ + + +

+
+
+
+ + + + +
+

+ +

+
+ +
+
+ dates)) : ?> + + +
+

+ slug)) : ?> + + escape($event->title); ?> + + + escape($event->title); ?> + +

+
+ +
+
+ + + +
+ + + +
+ +
+