From fb4f764bc408773b0142de794f498c363293c53d Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Tue, 21 Apr 2026 17:44:49 -0500
Subject: [PATCH] feat: add template overrides for Community Builder and
DPCalendar modules
Add overrides for all installed third-party modules:
- mod_cblogin (login + logout)
- mod_comprofilermoderator
- mod_comprofileronline
- mod_dpcalendar_counter
- mod_dpcalendar_map
- mod_dpcalendar_mini (with sublayouts)
- mod_dpcalendar_upcoming (with scripts)
Sourced from waas.dev site installation for template consistency.
Co-Authored-By: Claude Opus 4.6 (1M context)
---
src/html/mod_cblogin/default.php | 194 +++++++++++++++++
src/html/mod_cblogin/default_logout.php | 127 +++++++++++
src/html/mod_cblogin/index.html | 1 +
src/html/mod_comprofilermoderator/default.php | 66 ++++++
src/html/mod_comprofilermoderator/index.html | 1 +
src/html/mod_comprofileronline/default.php | 42 ++++
src/html/mod_comprofileronline/index.html | 1 +
src/html/mod_dpcalendar_counter/default.php | 122 +++++++++++
src/html/mod_dpcalendar_counter/index.html | 1 +
src/html/mod_dpcalendar_map/default.php | 37 ++++
src/html/mod_dpcalendar_map/index.html | 1 +
src/html/mod_dpcalendar_mini/_scripts.php | 204 ++++++++++++++++++
src/html/mod_dpcalendar_mini/default.php | 50 +++++
.../mod_dpcalendar_mini/default_icons.php | 22 ++
src/html/mod_dpcalendar_mini/default_map.php | 20 ++
.../mod_dpcalendar_mini/default_quickadd.php | 47 ++++
src/html/mod_dpcalendar_mini/index.html | 1 +
src/html/mod_dpcalendar_upcoming/_scripts.php | 22 ++
src/html/mod_dpcalendar_upcoming/default.php | 172 +++++++++++++++
src/html/mod_dpcalendar_upcoming/index.html | 1 +
20 files changed, 1132 insertions(+)
create mode 100644 src/html/mod_cblogin/default.php
create mode 100644 src/html/mod_cblogin/default_logout.php
create mode 100644 src/html/mod_cblogin/index.html
create mode 100644 src/html/mod_comprofilermoderator/default.php
create mode 100644 src/html/mod_comprofilermoderator/index.html
create mode 100644 src/html/mod_comprofileronline/default.php
create mode 100644 src/html/mod_comprofileronline/index.html
create mode 100644 src/html/mod_dpcalendar_counter/default.php
create mode 100644 src/html/mod_dpcalendar_counter/index.html
create mode 100644 src/html/mod_dpcalendar_map/default.php
create mode 100644 src/html/mod_dpcalendar_map/index.html
create mode 100644 src/html/mod_dpcalendar_mini/_scripts.php
create mode 100644 src/html/mod_dpcalendar_mini/default.php
create mode 100644 src/html/mod_dpcalendar_mini/default_icons.php
create mode 100644 src/html/mod_dpcalendar_mini/default_map.php
create mode 100644 src/html/mod_dpcalendar_mini/default_quickadd.php
create mode 100644 src/html/mod_dpcalendar_mini/index.html
create mode 100644 src/html/mod_dpcalendar_upcoming/_scripts.php
create mode 100644 src/html/mod_dpcalendar_upcoming/default.php
create mode 100644 src/html/mod_dpcalendar_upcoming/index.html
diff --git a/src/html/mod_cblogin/default.php b/src/html/mod_cblogin/default.php
new file mode 100644
index 0000000..ecfbdfa
--- /dev/null
+++ b/src/html/mod_cblogin/default.php
@@ -0,0 +1,194 @@
+
+
+
+
diff --git a/src/html/mod_cblogin/default_logout.php b/src/html/mod_cblogin/default_logout.php
new file mode 100644
index 0000000..ed1b6fd
--- /dev/null
+++ b/src/html/mod_cblogin/default_logout.php
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/html/mod_cblogin/index.html b/src/html/mod_cblogin/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_cblogin/index.html
@@ -0,0 +1 @@
+
diff --git a/src/html/mod_comprofilermoderator/default.php b/src/html/mod_comprofilermoderator/default.php
new file mode 100644
index 0000000..d3766ac
--- /dev/null
+++ b/src/html/mod_comprofilermoderator/default.php
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+ -
+ $imageApprovalCount ) ) : CBTxt::T( 'COUNT_IMAGE_APPROVALS', '[count] Image Approvals', array( '[count]' => $imageApprovalCount ) ) ); ?>
+
+
+
+ -
+ $userReportsCount ) ) : CBTxt::T( 'COUNT_PROFILE_REPORTS', '[count] Profile Reports', array( '[count]' => $userReportsCount ) ) ); ?>
+
+
+
+ -
+ $unbanRequestCount ) ) : CBTxt::T( 'COUNT_UNBAN_REQUESTS', '[count] Unban Requests', array( '[count]' => $unbanRequestCount ) ) ); ?>
+
+
+
+ -
+ $userApprovalCount ) ) : CBTxt::T( 'COUNT_USER_APPROVALS', '[count] User Approvals', array( '[count]' => $userApprovalCount ) ) ); ?>
+
+
+
+ -
+ $newMessageCount ) ) : CBTxt::T( 'COUNT_PRIVATE_MESSAGES', '[count] Private Messages', array( '[count]' => $newMessageCount ) ) ); ?>
+
+
+
+ -
+ $newConnectionRequests ) ) : CBTxt::T( 'COUNT_CONNECTION_REQUESTS', '[count] Connection Requests', array( '[count]' => $newConnectionRequests ) ) ); ?>
+
+
+
+
+
+
+
+
+
+
diff --git a/src/html/mod_comprofilermoderator/index.html b/src/html/mod_comprofilermoderator/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_comprofilermoderator/index.html
@@ -0,0 +1 @@
+
diff --git a/src/html/mod_comprofileronline/default.php b/src/html/mod_comprofileronline/default.php
new file mode 100644
index 0000000..7646779
--- /dev/null
+++ b/src/html/mod_comprofileronline/default.php
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+ -
+ get( 'usertext' ) ) {
+ echo $cbUser->replaceUserVars( $params->get( 'usertext' ) );
+ } else {
+ echo $cbUser->getField( 'formatname', null, 'html', 'none', 'list', 0, true );
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
diff --git a/src/html/mod_comprofileronline/index.html b/src/html/mod_comprofileronline/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_comprofileronline/index.html
@@ -0,0 +1 @@
+
diff --git a/src/html/mod_dpcalendar_counter/default.php b/src/html/mod_dpcalendar_counter/default.php
new file mode 100644
index 0000000..dd258ef
--- /dev/null
+++ b/src/html/mod_dpcalendar_counter/default.php
@@ -0,0 +1,122 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use Joomla\CMS\HTML\HTMLHelper;
+
+if (!$events) {
+ return;
+}
+
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_YEARS');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_MONTHS');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_WEEKS');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_DAYS');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_HOURS');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_MINUTES');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_SECONDS');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_YEAR');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_MONTH');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_WEEK');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_DAY');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_HOUR');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_MINUTE');
+$translator->translateJS('MOD_DPCALENDAR_COUNTER_LABEL_SECOND');
+$translator->translateJS('COM_DPCALENDAR_CLOSE');
+
+$document->loadStyleFile('default.css', 'mod_dpcalendar_counter');
+$document->loadScriptFile('default.js', 'mod_dpcalendar_counter');
+$document->addStyle($params->get('custom_css', ''));
+?>
+
+
+ translate($params->get('textbefore', ''))); ?>
+
+
+
+
+
+
+ translate('MOD_DPCALENDAR_COUNTER_SOON_OUTPUT'); ?>
+
+ get('show_field_year', 1)) { ?>
+
+
+
+
+
+ get('show_field_month', 1)) { ?>
+
+
+
+
+
+ get('show_field_week', 1)) { ?>
+
+
+
+
+
+ get('show_field_day', 1)) { ?>
+
+
+
+
+
+ get('show_field_hour', 1)) { ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ translate('MOD_DPCALENDAR_COUNTER_ONGOING_OUTPUT'); ?>
+
+
+ title; ?>
+
+ images->image_intro) { ?>
+
+
+ truncatedDescription) { ?>
+
+ truncatedDescription; ?>
+
+
+
+
+
+
+
+ translate($params->get('textafter', ''))); ?>
+
+
diff --git a/src/html/mod_dpcalendar_counter/index.html b/src/html/mod_dpcalendar_counter/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_dpcalendar_counter/index.html
@@ -0,0 +1 @@
+
diff --git a/src/html/mod_dpcalendar_map/default.php b/src/html/mod_dpcalendar_map/default.php
new file mode 100644
index 0000000..32a9d02
--- /dev/null
+++ b/src/html/mod_dpcalendar_map/default.php
@@ -0,0 +1,37 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use Joomla\CMS\HTML\HTMLHelper;
+
+$document->loadStyleFile('default.css', 'mod_dpcalendar_map');
+$document->loadScriptFile('views/map/default.js');
+$document->addStyle($params->get('custom_css', ''));
+
+$layoutHelper->renderLayout('block.map', $displayData);
+
+$translator->translateJS('COM_DPCALENDAR_FIELD_CONFIG_EVENT_LABEL_NO_EVENT_TEXT');
+?>
+
+
+ translate($params->get('textbefore', ''))); ?>
+
+ renderLayout('block.loader', $displayData); ?>
+ renderLayout('block.filter', $displayData); ?>
+
+
+
+ translate($params->get('textafter', ''))); ?>
+
+
diff --git a/src/html/mod_dpcalendar_map/index.html b/src/html/mod_dpcalendar_map/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_dpcalendar_map/index.html
@@ -0,0 +1 @@
+
diff --git a/src/html/mod_dpcalendar_mini/_scripts.php b/src/html/mod_dpcalendar_mini/_scripts.php
new file mode 100644
index 0000000..eac51e3
--- /dev/null
+++ b/src/html/mod_dpcalendar_mini/_scripts.php
@@ -0,0 +1,204 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use DigitalPeak\Component\DPCalendar\Administrator\Helper\DPCalendarHelper;
+use DigitalPeak\Component\DPCalendar\Administrator\Router\Router;;
+use Joomla\Utilities\ArrayHelper;
+
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_ALL_DAY');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_MONTH');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_WEEK');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_DAY');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_LIST');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_UNTIL');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_PAST');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_TODAY');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_TOMORROW');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_THIS_WEEK');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_NEXT_WEEK');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_THIS_MONTH');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_NEXT_MONTH');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_FUTURE');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_WEEK');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_VIEW_TEXTS_MORE');
+
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_TOOLBAR_NEXT');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_TOOLBAR_PREVIOUS');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_TOOLBAR_TODAY');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_SHOW_DATEPICKER');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_TOOLBAR_PRINT');
+$translator->translateJS('COM_DPCALENDAR_VIEW_CALENDAR_TOOLBAR_ADD');
+
+$translator->translateJS('JCANCEL');
+$translator->translateJS('COM_DPCALENDAR_CLOSE');
+$translator->translateJS('COM_DPCALENDAR_PREVIOUS');
+$translator->translateJS('COM_DPCALENDAR_NEXT');
+$translator->translateJS('COM_DPCALENDAR_FIELD_CAPACITY_UNLIMITED');
+
+$document->addScriptOptions('calendar.names', $dateHelper->getNames());
+$document->addScriptOptions('timezone', $dateHelper->getDate()->getTimezone()->getName());
+$document->addScriptOptions('itemid', $app->getInput()->getInt('Itemid', 0));
+
+// The options which will be passed to the js library
+$options = [];
+$options['requestUrlRoot'] = 'view=events&limit=0&format=raw&module_id=' . $module->id . '&Itemid=' . $app->getInput()->getInt('Itemid', 0);
+$options['calendarIds'] = [implode(',', $ids)];
+
+// Set the default view
+$options['initialView'] = $params->get('default_view', 'month');
+
+// Some general calendar options
+$options['weekNumbers'] = (bool)$params->get('week_numbers');
+$options['weekends'] = (bool)$params->get('weekend', 1);
+$options['fixedWeekCount'] = (bool)$params->get('fixed_week_count', 1);
+
+$bd = $params->get('business_hours_days', []);
+if ($bd && !(is_countable($bd) ? count($bd) : 0 === 1 && !$bd[0])) {
+ $options['businessHours'] = [
+ 'startTime' => $params->get('business_hours_start', ''),
+ 'endTime' => $params->get('business_hours_end', ''),
+ 'daysOfWeek' => $params->get('business_hours_days', [])
+ ];
+}
+
+$options['firstDay'] = (int)$params->get('weekstart', 1);
+$options['hiddenDays'] = ArrayHelper::toInteger($params->get('hidden_days', []));
+$options['scrollTime'] = $params->get('first_hour', 6) === 'now' ? 'now' : $params->get('first_hour', 6) . ':00:00';
+$options['weekNumberCalculation'] = 'ISO';
+$options['displayEventEnd'] = true;
+$options['navLinks'] = true;
+
+$max = $params->get('max_time', 24);
+if (is_numeric($max)) {
+ $max .= ':00:00';
+}
+$options['slotMaxTime'] = $max;
+
+$min = $params->get('min_time', 0);
+if (is_numeric($min)) {
+ $min .= ':00:00';
+}
+$options['slotMinTime'] = $min;
+
+$options['nowIndicator'] = (bool)$params->get('current_time_indicator', 1);
+$options['displayEventTime'] = $params->get('compact_events', 2) != 2;
+
+if ($params->get('event_limit', '') != '-1') {
+ $options['dayMaxEventRows'] = $params->get('event_limit', '') == '' ? 2 : $params->get('event_limit', '') + 1;
+}
+
+// Set the height
+if ($params->get('calendar_height', 0) > 0) {
+ $options['contentHeight'] = (int)$params->get('calendar_height', 0);
+} else {
+ $options['height'] = 'auto';
+}
+
+$options['slotEventOverlap'] = (bool)$params->get('overlap_events', 1);
+
+// Set up the header
+$options['headerToolbar'] = ['left' => [], 'center' => [], 'right' => []];
+if ($params->get('header_show_navigation', 1)) {
+ $options['headerToolbar']['left'][] = 'prev';
+ $options['headerToolbar']['left'][] = 'next';
+}
+if ($params->get('header_show_today', 0)) {
+ $options['headerToolbar']['left'][] = 'today';
+}
+if ($params->get('header_show_datepicker', 0)) {
+ $options['headerToolbar']['left'][] = 'datepicker';
+}
+if ($params->get('header_show_create', 1) && DPCalendarHelper::canCreateEvent()) {
+ $options['headerToolbar']['left'][] = 'add';
+}
+if ($params->get('header_show_title', 1)) {
+ $options['headerToolbar']['center'][] = 'title';
+}
+if ($params->get('header_show_month', 1)) {
+ $options['headerToolbar']['right'][] = 'month';
+}
+if ($params->get('header_show_week', 1)) {
+ $options['headerToolbar']['right'][] = 'week';
+}
+if ($params->get('header_show_day', 1)) {
+ $options['headerToolbar']['right'][] = 'day';
+} else {
+ $options['navLinks'] = false;
+}
+if ($params->get('header_show_list', 1)) {
+ $options['headerToolbar']['right'][] = 'list';
+}
+
+$options['headerToolbar']['left'] = implode(',', $options['headerToolbar']['left']);
+$options['headerToolbar']['center'] = implode(',', $options['headerToolbar']['center']);
+$options['headerToolbar']['right'] = implode(',', $options['headerToolbar']['right']);
+
+$resourceViews = $params->get('calendar_resource_views');
+if (!DPCalendarHelper::isFree() && $resourceViews && $resources) {
+ $options['resources'] = $resources;
+ $options['resourceViews'] = $resourceViews;
+ $options['datesAboveResources'] = true;
+}
+
+// Set up the views
+$options['views'] = [];
+$options['views']['month'] = [
+ 'titleFormat' => $dateHelper->convertPHPDateToJS($params->get('titleformat_month', 'F Y')),
+ 'eventTimeFormat' => $dateHelper->convertPHPDateToJS($params->get('timeformat_month', 'H:i')),
+ 'dayHeaderFormat' => $dateHelper->convertPHPDateToJS($params->get('columnformat_month', 'D'))
+];
+$options['views']['week'] = [
+ 'titleFormat' => $dateHelper->convertPHPDateToJS($params->get('titleformat_week', 'M j Y')),
+ 'eventTimeFormat' => $dateHelper->convertPHPDateToJS($params->get('timeformat_week', 'H:i')),
+ 'dayHeaderFormat' => $dateHelper->convertPHPDateToJS($params->get('columnformat_week', 'D n/j')),
+ 'slotDuration' => $dateHelper->minutesToDuration((int)$params->get('agenda_slot_minutes', 30)),
+ 'slotLabelInterval' => $dateHelper->minutesToDuration((int)$params->get('agenda_slot_minutes', 30)),
+ 'slotLabelFormat' => $dateHelper->convertPHPDateToJS($params->get('axisformat_week', 'H:i'))
+];
+$options['views']['day'] = [
+ 'titleFormat' => $dateHelper->convertPHPDateToJS($params->get('titleformat_day', 'F j Y')),
+ 'eventTimeFormat' => $dateHelper->convertPHPDateToJS($params->get('timeformat_day', 'H:i')),
+ 'dayHeaderFormat' => $dateHelper->convertPHPDateToJS($params->get('columnformat_day', 'l')),
+ 'slotDuration' => $dateHelper->minutesToDuration((int)$params->get('agenda_slot_minutes', 30)),
+ 'slotLabelInterval' => $dateHelper->minutesToDuration((int)$params->get('agenda_slot_minutes', 30)),
+ 'slotLabelFormat' => $dateHelper->convertPHPDateToJS($params->get('axisformat_day', 'H:i'))
+];
+$options['views']['list'] = [
+ 'titleFormat' => $dateHelper->convertPHPDateToJS($params->get('titleformat_list', 'M j Y')),
+ 'eventTimeFormat' => $dateHelper->convertPHPDateToJS($params->get('timeformat_list', 'H:i')),
+ 'dayHeaderFormat' => $dateHelper->convertPHPDateToJS($params->get('columnformat_list', 'D')),
+ 'listDayFormat' => $dateHelper->convertPHPDateToJS($params->get('dayformat_list', 'l')),
+ 'listDaySideFormat' => $dateHelper->convertPHPDateToJS($params->get('dateformat_list', 'F j, Y')),
+ 'duration' => ['days' => (int)$params->get('list_range', 30)],
+ 'noEventsContent' => $translator->translate('COM_DPCALENDAR_ERROR_EVENT_NOT_FOUND', true)
+];
+
+// Some DPCalendar specific options
+$options['show_event_as_popup'] = $params->get('show_event_as_popup');
+$options['popupWidth'] = $params->get('popup_width');
+$options['popupHeight'] = $params->get('popup_height');
+$options['show_event_tooltip'] = $params->get('show_event_tooltip', 1);
+$options['show_map'] = $params->get('show_map', 1);
+$options['event_create_form'] = (int)$params->get('event_create_form', 1);
+$options['screen_size_list_view'] = $params->get('screen_size_list_view', 500);
+$options['use_hash'] = false;
+if (DPCalendarHelper::canCreateEvent()) {
+ $router = new Router();
+ $input = $app->getInput();
+ $returnPage = $input->getInt('Itemid', 0) ? 'index.php?Itemid=' . $input->getInt('Itemid', 0) : null;
+ $options['event_create_url'] = $router->getEventFormRoute('0', $returnPage, null, false);
+}
+
+// Set the actual date
+$now = DPCalendarHelper::getDate($params->get('start_date'));
+$options['year'] = $now->format('Y', true);
+$options['month'] = $now->format('m', true);
+$options['date'] = $now->format('d', true);
+
+$document->addScriptOptions('module.mini.' . $module->id . '.options', $options);
diff --git a/src/html/mod_dpcalendar_mini/default.php b/src/html/mod_dpcalendar_mini/default.php
new file mode 100644
index 0000000..ede0930
--- /dev/null
+++ b/src/html/mod_dpcalendar_mini/default.php
@@ -0,0 +1,50 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use Joomla\CMS\Helper\ModuleHelper;
+use Joomla\CMS\HTML\HTMLHelper;
+
+if ($params->get('show_map', 1)) {
+ $layoutHelper->renderLayout('block.map', $displayData);
+}
+
+$document->loadScriptFile('views/calendar/default.js');
+$document->loadScriptFile('views/calendar/default.js');
+$document->loadStyleFile('default.css', 'mod_dpcalendar_mini');
+$document->addStyle($params->get('custom_css', ''));
+
+require ModuleHelper::getLayoutPath('mod_dpcalendar_mini', '_scripts');
+
+$compact = $params->get('compact_events', 2) == 1 ? 'compact' : 'expanded';
+?>
+
+
+ renderLayout('block.loader', $displayData); ?>
+
+
+ translate($params->get('textbefore', ''))); ?>
+
+
+
+
+
+
+
+
+
+ translate($params->get('textafter', ''))); ?>
+
+
diff --git a/src/html/mod_dpcalendar_mini/default_icons.php b/src/html/mod_dpcalendar_mini/default_icons.php
new file mode 100644
index 0000000..6c20f6d
--- /dev/null
+++ b/src/html/mod_dpcalendar_mini/default_icons.php
@@ -0,0 +1,22 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use DigitalPeak\Component\DPCalendar\Administrator\HTML\Block\Icon;
+?>
+
+ renderLayout('block.icon', ['icon' => Icon::DELETE]); ?>
+ renderLayout('block.icon', ['icon' => Icon::EDIT]); ?>
+ renderLayout('block.icon', ['icon' => Icon::PLUS]); ?>
+ renderLayout('block.icon', ['icon' => Icon::PRINTING]); ?>
+ renderLayout('block.icon', ['icon' => Icon::CALENDAR]); ?>
+ renderLayout('block.icon', ['icon' => Icon::NEXT]); ?>
+ renderLayout('block.icon', ['icon' => Icon::BACK]); ?>
+ renderLayout('block.icon', ['icon' => Icon::USERS]); ?>
+ renderLayout('block.icon', ['icon' => Icon::MONEY]); ?>
+
diff --git a/src/html/mod_dpcalendar_mini/default_map.php b/src/html/mod_dpcalendar_mini/default_map.php
new file mode 100644
index 0000000..ce87f48
--- /dev/null
+++ b/src/html/mod_dpcalendar_mini/default_map.php
@@ -0,0 +1,20 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+if (!$params->get('show_map', 0)) {
+ return;
+}
+?>
+
+
diff --git a/src/html/mod_dpcalendar_mini/default_quickadd.php b/src/html/mod_dpcalendar_mini/default_quickadd.php
new file mode 100644
index 0000000..8743a5e
--- /dev/null
+++ b/src/html/mod_dpcalendar_mini/default_quickadd.php
@@ -0,0 +1,47 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use DigitalPeak\Component\DPCalendar\Administrator\Helper\DPCalendarHelper;
+use Joomla\CMS\Uri\Uri;
+use Joomla\CMS\HTML\HTMLHelper;
+
+if (!DPCalendarHelper::canCreateEvent()) {
+ return;
+}
+?>
+
diff --git a/src/html/mod_dpcalendar_mini/index.html b/src/html/mod_dpcalendar_mini/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_dpcalendar_mini/index.html
@@ -0,0 +1 @@
+
diff --git a/src/html/mod_dpcalendar_upcoming/_scripts.php b/src/html/mod_dpcalendar_upcoming/_scripts.php
new file mode 100644
index 0000000..4fe7c66
--- /dev/null
+++ b/src/html/mod_dpcalendar_upcoming/_scripts.php
@@ -0,0 +1,22 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+// Load the required modal JS libraries
+if ($params->get('show_as_popup') || $params->get('show_map')) {
+ $document->loadScriptFile('default.js', 'mod_dpcalendar_upcoming');
+ $translator->translateJS('COM_DPCALENDAR_CLOSE');
+}
+
+if ($params->get('show_map')) {
+ $layoutHelper->renderLayout('block.map', $displayData);
+}
+
+// Load the stylesheet
+$document->loadStyleFile(str_replace('_:', '', (string)$params->get('layout', 'default')) . '.css', 'mod_dpcalendar_upcoming');
+$document->addStyle($params->get('custom_css', ''));
diff --git a/src/html/mod_dpcalendar_upcoming/default.php b/src/html/mod_dpcalendar_upcoming/default.php
new file mode 100644
index 0000000..d4a2893
--- /dev/null
+++ b/src/html/mod_dpcalendar_upcoming/default.php
@@ -0,0 +1,172 @@
+
+ * @license https://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
+ */
+
+\defined('_JEXEC') or die();
+
+use DigitalPeak\Component\DPCalendar\Administrator\Helper\Booking;
+use DigitalPeak\Component\DPCalendar\Administrator\Helper\DPCalendarHelper;
+use DigitalPeak\Component\DPCalendar\Administrator\HTML\Block\Icon;
+use Joomla\CMS\Helper\ModuleHelper;
+use Joomla\CMS\HTML\HTMLHelper;
+
+if (!$events) {
+ echo $translator->translate($params->get('no_events_text', 'MOD_DPCALENDAR_UPCOMING_NO_EVENT_TEXT'));
+
+ return;
+}
+
+require ModuleHelper::getLayoutPath('mod_dpcalendar_upcoming', '_scripts');
+?>
+
+
+ translate($params->get('textbefore', ''))); ?>
+
+
+ $events) { ?>
+
+
+
+
+
+
+ getDate($event->start_date, $event->all_day); ?>
+
+ renderLayout('block.flatcalendar', ['date' => $startDate, 'color' => $event->color]); ?>
+
+ get('show_image', 1) && $event->images->image_intro) { ?>
+
+
+ get('show_booking', 1) && Booking::openForBooking($event)) { ?>
+
+ renderLayout('block.icon', ['icon' => Icon::BOOK]); ?>
+
+ translate('MOD_DPCALENDAR_UPCOMING_BOOK'); ?>
+
+
+
+ get('show_display_events') && $event->displayEvent->beforeDisplayContent) { ?>
+
displayEvent->beforeDisplayContent; ?>
+
+
+ truncatedDescription; ?>
+
+ get('show_display_events') && $event->displayEvent->afterDisplayContent) { ?>
+
displayEvent->afterDisplayContent; ?>
+
+
+ renderLayout('schema.event', $displayData); ?>
+
+
+
+
+
+
+
+ get('show_map')) { ?>
+
+
+
+
+ translate($params->get('textafter', ''))); ?>
+
+
diff --git a/src/html/mod_dpcalendar_upcoming/index.html b/src/html/mod_dpcalendar_upcoming/index.html
new file mode 100644
index 0000000..2efb97f
--- /dev/null
+++ b/src/html/mod_dpcalendar_upcoming/index.html
@@ -0,0 +1 @@
+