From 63e80232ae29e113c9ec668d5eb5431983ef1f87 Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Wed, 23 Apr 2025 14:25:37 +0200 Subject: [PATCH 1/7] Default template for module "Custom Pages" --- Module.php | 28 ++++++++++++++ docs/CHANGELOG.md | 1 + extensions/custom_pages/defaultTemplates.php | 40 ++++++++++++++++++++ 3 files changed, 69 insertions(+) create mode 100644 extensions/custom_pages/defaultTemplates.php diff --git a/Module.php b/Module.php index bbcd5f70..4606b906 100644 --- a/Module.php +++ b/Module.php @@ -50,6 +50,8 @@ class Module extends ContentContainerModule */ public $resourcesPath = 'resources'; + public string $customPagesDefaultTemplatesPath = 'extensions/custom_pages/defaultTemplates.php'; + /** * @inheritdoc */ @@ -194,4 +196,30 @@ public function getContentClasses(): array { return [CalendarEntry::class]; } + + public function enable() + { + parent::enable() && $this->importCustomPagesDefaultTemplates(); + } + + public function update() + { + parent::update(); + $this->importCustomPagesDefaultTemplates(); + } + + private function importCustomPagesDefaultTemplates(): bool + { + if (!Yii::$app->getModule('custom_pages')->isEnabled || + !class_exists('humhub\modules\custom_pages\modules\template\services\ImportService')) { + return true; + } + + $importService = new \humhub\modules\custom_pages\modules\template\services\ImportService(); + if (!method_exists($importService, 'importDefaultTemplates')) { + return true; + } + + return $importService->importDefaultTemplates($this); + } } diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b6e3ff0a..533d8f24 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -4,6 +4,7 @@ Changelog 1.7.4 (Unreleased) ------------------------- - Enh #542: Add filters for template element of the custom pages module +- Enh #545: Default template for module "Custom Pages" 1.7.3 (February 25, 2025) ------------------------- diff --git a/extensions/custom_pages/defaultTemplates.php b/extensions/custom_pages/defaultTemplates.php new file mode 100644 index 00000000..6629d1f8 --- /dev/null +++ b/extensions/custom_pages/defaultTemplates.php @@ -0,0 +1,40 @@ + [ + 'type' => Template::TYPE_LAYOUT, + 'description' => 'Default template for calendar events.', + 'source' => '', + 'elements' => [ + [ + 'name' => 'events', + 'content_type' => CalendarEventsElement::class, + 'dyn_attributes' => [ + 'type' => 1, + 'space' => '', + 'author' => '', + 'topic' => '', + 'filter' => [ + 'participant', + ], + 'limit' => 10, + 'nextDays' => 7, + 'sortOrder' => 'date_old', + ], + ], + ], + ], +]; From 3405b2377592c3967b294c81174be9876b457a55 Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Wed, 23 Apr 2025 14:36:13 +0200 Subject: [PATCH 2/7] Fix import custom pages default templates --- Module.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Module.php b/Module.php index 4606b906..9c8884db 100644 --- a/Module.php +++ b/Module.php @@ -210,7 +210,9 @@ public function update() private function importCustomPagesDefaultTemplates(): bool { - if (!Yii::$app->getModule('custom_pages')->isEnabled || + $customPagesModule = Yii::$app->getModule('custom_pages'); + if (!$customPagesModule || + !$customPagesModule->isEnabled || !class_exists('humhub\modules\custom_pages\modules\template\services\ImportService')) { return true; } From be4841c6e52f2cacc8256a0e0160b00a388eb81c Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Thu, 24 Apr 2025 15:41:11 +0200 Subject: [PATCH 3/7] Default template for module "Custom Pages" --- Module.php | 8 ++-- extensions/custom_pages/defaultTemplates.php | 40 ------------------- .../calendar_events.json | 32 +++++++++++++++ 3 files changed, 35 insertions(+), 45 deletions(-) delete mode 100644 extensions/custom_pages/defaultTemplates.php create mode 100644 resources/custom-pages-templates/calendar_events.json diff --git a/Module.php b/Module.php index 9c8884db..d3f60cf5 100644 --- a/Module.php +++ b/Module.php @@ -4,13 +4,13 @@ use humhub\components\console\Application as ConsoleApplication; use humhub\modules\calendar\models\CalendarEntryType; -use Yii; use humhub\modules\calendar\helpers\Url; use humhub\modules\content\components\ContentContainerModule; use humhub\modules\space\models\Space; use humhub\modules\user\models\User; use humhub\modules\calendar\models\CalendarEntry; use humhub\modules\content\components\ContentContainerActiveRecord; +use Yii; class Module extends ContentContainerModule { @@ -50,8 +50,6 @@ class Module extends ContentContainerModule */ public $resourcesPath = 'resources'; - public string $customPagesDefaultTemplatesPath = 'extensions/custom_pages/defaultTemplates.php'; - /** * @inheritdoc */ @@ -218,10 +216,10 @@ private function importCustomPagesDefaultTemplates(): bool } $importService = new \humhub\modules\custom_pages\modules\template\services\ImportService(); - if (!method_exists($importService, 'importDefaultTemplates')) { + if (!method_exists($importService, 'importFromFolder')) { return true; } - return $importService->importDefaultTemplates($this); + return $importService->importFromFolder(Yii::getAlias('@calendar/resources/custom-pages-templates')); } } diff --git a/extensions/custom_pages/defaultTemplates.php b/extensions/custom_pages/defaultTemplates.php deleted file mode 100644 index 6629d1f8..00000000 --- a/extensions/custom_pages/defaultTemplates.php +++ /dev/null @@ -1,40 +0,0 @@ - [ - 'type' => Template::TYPE_LAYOUT, - 'description' => 'Default template for calendar events.', - 'source' => '
    -{% for event in events.items %} -
  • {{ event.title }} - {{ event.start_datetime }}
  • -{% endfor %} -
', - 'elements' => [ - [ - 'name' => 'events', - 'content_type' => CalendarEventsElement::class, - 'dyn_attributes' => [ - 'type' => 1, - 'space' => '', - 'author' => '', - 'topic' => '', - 'filter' => [ - 'participant', - ], - 'limit' => 10, - 'nextDays' => 7, - 'sortOrder' => 'date_old', - ], - ], - ], - ], -]; diff --git a/resources/custom-pages-templates/calendar_events.json b/resources/custom-pages-templates/calendar_events.json new file mode 100644 index 00000000..f7dfa79d --- /dev/null +++ b/resources/custom-pages-templates/calendar_events.json @@ -0,0 +1,32 @@ +{ + "name": "calendar_events", + "engine": "twig", + "description": "Default template for calendar events.", + "source": "\u003Cul class=\"calendar-events\"\u003E\r\n{% for item in events.items %}\r\n\t\u003Cli class=\"calendar-event\" style=\"margin-bottom:10px\"\u003E\r\n\t\t\u003Ca class=\"cc-event-item\" title=\"{{ item.title }}\" href=\"{{ item.url }}\"\u003E\r\n\t\t\t\u003Cspan style=\"background:{{ item.color }};display:inline-block;border-radius:3px;height:24px;vertical-align:middle\"\u003E\r\n\t\t\t\t\u003Csvg xmlns=\"http://www.w3.org/2000/svg\" width=\"22\" height=\"22\" viewBox=\"0 0 22 22\" fill=\"none\"\u003E\r\n\t\t\t\t\t\u003Cpath d=\"M14.666 2.75V6.41667M7.33268 2.75V6.41667M3.66602 10.0833H18.3327M3.66602 6.41667C3.66602 5.93044 3.85917 5.46412 4.20299 5.1203C4.5468 4.77649 5.01312 4.58333 5.49935 4.58333H16.4993C16.9856 4.58333 17.4519 4.77649 17.7957 5.1203C18.1395 5.46412 18.3327 5.93044 18.3327 6.41667V17.4167C18.3327 17.9029 18.1395 18.3692 17.7957 18.713C17.4519 19.0568 16.9856 19.25 16.4993 19.25H5.49935C5.01312 19.25 4.5468 19.0568 4.20299 18.713C3.85917 18.3692 3.66602 17.9029 3.66602 17.4167V6.41667ZM10.0827 14.6667C10.0827 14.9098 10.1793 15.1429 10.3512 15.3148C10.5231 15.4868 10.7562 15.5833 10.9993 15.5833C11.2425 15.5833 11.4756 15.4868 11.6475 15.3148C11.8194 15.1429 11.916 14.9098 11.916 14.6667C11.916 14.4236 11.8194 14.1904 11.6475 14.0185C11.4756 13.8466 11.2425 13.75 10.9993 13.75C10.7562 13.75 10.5231 13.8466 10.3512 14.0185C10.1793 14.1904 10.0827 14.4236 10.0827 14.6667Z\" stroke=\"white\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /\u003E\r\n \t\u003C/svg\u003E\r\n\t\t\t\u003C/span\u003E\r\n\r\n\t\t\t\u003Cstrong\u003E{{ item.title }}\u003C/strong\u003E\r\n\t\t\t\u003Cp\u003E{{ item.description|u.truncate(70, '...') }}\u003C/p\u003E\r\n\r\n\t\t\t\u003Cspan class=\"label label-info\"\u003E\r\n\t\t\t{% if item.start_datetime|date(\"Y-m-d\") == item.end_datetime|date(\"Y-m-d\") %}\r\n\t\t\t\t{% if item.start_datetime|date(\"H:i\") == \"00:00\" %}\r\n\t\t\t\t\t{{ item.start_datetime|date(\"M. d, Y\") }}\r\n\t\t\t\t{% else %}\r\n\t\t\t\t\t{{ item.start_datetime|date(\"M. d, Y \\\\a\\\\t H:i\") }}\r\n\t\t\t\t{% endif %}\r\n\t\t\t{% else %}\r\n\t\t\t\t{% if item.start_datetime|date(\"H:i\") == \"00:00\" and item.end_datetime|date(\"H:i\") == \"00:00\" %}\r\n\t\t\t\t\t{{ item.start_datetime|date(\"M. d, Y\") }}\r\n\t\t\t\t{% else %}\r\n\t\t\t\t\t{{ item.start_datetime|date(\"M. d \\\\a\\\\t H:i\") }} - {{ item.end_datetime|date(\"M. d, Y \\\\a\\\\t H:i\") }}\r\n\t\t\t\t{% endif %}\r\n\t\t\t{% endif %}\r\n\t\t\t\u003C/span\u003E\r\n\r\n\t\t\t{% if item.location %}\r\n\t\t\t\t\u003Cspan class=\"label label-warning\"\u003E{{ item.location }}\u003C/span\u003E\r\n\t\t\t{% endif %}\r\n\t\t\u003C/a\u003E\r\n\t\u003C/li\u003E\r\n{% endfor %}\r\n\u003C/ul\u003E", + "allow_for_spaces": 0, + "type": "layout", + "is_default": 1, + "elements": [ + { + "name": "events", + "content_type": "humhub\\modules\\calendar\\extensions\\custom_pages\\elements\\CalendarEventsElement", + "title": "", + "dyn_attributes": "{\"type\":1,\"space\":\"\",\"author\":\"\",\"topic\":\"\",\"filter\":[\"participant\"],\"limit\":10,\"nextDays\":7,\"sortOrder\":\"date_old\"}", + "elementContent": { + "dyn_attributes": { + "type": "options", + "space": "", + "author": "", + "topic": "", + "filter": [ + "participant" + ], + "limit": "10", + "static": "", + "nextDays": "7", + "sortOrder": "date_old" + } + } + } + ] +} From 8c37a85c821d1d0d780ad26028eded8e8ac7006b Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Thu, 24 Apr 2025 18:55:48 +0200 Subject: [PATCH 4/7] Default template for module "Custom Pages" --- Module.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Module.php b/Module.php index d3f60cf5..6498259d 100644 --- a/Module.php +++ b/Module.php @@ -216,10 +216,12 @@ private function importCustomPagesDefaultTemplates(): bool } $importService = new \humhub\modules\custom_pages\modules\template\services\ImportService(); - if (!method_exists($importService, 'importFromFolder')) { + if (!method_exists($importService, 'allowUpdateDefaultTemplates')) { return true; } - return $importService->importFromFolder(Yii::getAlias('@calendar/resources/custom-pages-templates')); + return $importService + ->allowUpdateDefaultTemplates() + ->importFromFolder(Yii::getAlias('@calendar/resources/custom-pages-templates')); } } From 288452146827f8c162a605b3cb232092d1e3710d Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Fri, 25 Apr 2025 14:07:50 +0200 Subject: [PATCH 5/7] Use event to import default template for module "Custom Pages" --- Events.php | 5 +++++ Module.php | 18 +++--------------- config.php | 1 + 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/Events.php b/Events.php index 95fc8414..75858106 100644 --- a/Events.php +++ b/Events.php @@ -422,6 +422,11 @@ public static function onCustomPagesTemplateElementTypeServiceInit($event) $elementTypeService->addType(CalendarEventsElement::class); } + public static function onCustomPagesImportServiceDefaultTemplates(\humhub\modules\custom_pages\modules\template\events\DefaultTemplateEvent $event) + { + $event->addPath('@calendar/resources/custom-pages-templates'); + } + public static function onContentAfterSoftDelete(ContentEvent $event): void { // It may be called from wall stream diff --git a/Module.php b/Module.php index 6498259d..1cac275d 100644 --- a/Module.php +++ b/Module.php @@ -208,20 +208,8 @@ public function update() private function importCustomPagesDefaultTemplates(): bool { - $customPagesModule = Yii::$app->getModule('custom_pages'); - if (!$customPagesModule || - !$customPagesModule->isEnabled || - !class_exists('humhub\modules\custom_pages\modules\template\services\ImportService')) { - return true; - } - - $importService = new \humhub\modules\custom_pages\modules\template\services\ImportService(); - if (!method_exists($importService, 'allowUpdateDefaultTemplates')) { - return true; - } - - return $importService - ->allowUpdateDefaultTemplates() - ->importFromFolder(Yii::getAlias('@calendar/resources/custom-pages-templates')); + $importServiceClassName = '\humhub\modules\custom_pages\modules\template\services\ImportService'; + return !method_exists($importServiceClassName, 'importDefaultTemplates') || + $importServiceClassName::instance()->importDefaultTemplates(); } } diff --git a/config.php b/config.php index 89d83be1..7023aacf 100644 --- a/config.php +++ b/config.php @@ -40,6 +40,7 @@ ['class' => User::class, 'event' => User::EVENT_BEFORE_DELETE, 'callback' => [Events::class, 'onUserDelete']], ['class' => 'humhub\modules\rest\Module', 'event' => 'restApiAddRules', 'callback' => [Events::class, 'onRestApiAddRules']], ['class' => 'humhub\modules\custom_pages\modules\template\services\ElementTypeService', 'event' => 'init', 'callback' => [Events::class, 'onCustomPagesTemplateElementTypeServiceInit']], + ['class' => 'humhub\modules\custom_pages\modules\template\services\ImportService', 'event' => 'defaultTemplates', 'callback' => [Events::class, 'onCustomPagesImportServiceDefaultTemplates']], ['class' => Content::class, 'event' => Content::EVENT_AFTER_SOFT_DELETE, 'callback' => [Events::class, 'onContentAfterSoftDelete']], ], 'urlManagerRules' => [ From f236648077411f4cf744f4df46fd0a883a3bc08c Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Thu, 29 May 2025 14:01:11 +0200 Subject: [PATCH 6/7] Rename `TemplateImportService` for Custom Pages module --- Module.php | 2 +- config.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Module.php b/Module.php index 1cac275d..449c9c5d 100644 --- a/Module.php +++ b/Module.php @@ -208,7 +208,7 @@ public function update() private function importCustomPagesDefaultTemplates(): bool { - $importServiceClassName = '\humhub\modules\custom_pages\modules\template\services\ImportService'; + $importServiceClassName = '\humhub\modules\custom_pages\modules\template\services\TemplateImportService'; return !method_exists($importServiceClassName, 'importDefaultTemplates') || $importServiceClassName::instance()->importDefaultTemplates(); } diff --git a/config.php b/config.php index 7023aacf..4118a1fd 100644 --- a/config.php +++ b/config.php @@ -40,7 +40,7 @@ ['class' => User::class, 'event' => User::EVENT_BEFORE_DELETE, 'callback' => [Events::class, 'onUserDelete']], ['class' => 'humhub\modules\rest\Module', 'event' => 'restApiAddRules', 'callback' => [Events::class, 'onRestApiAddRules']], ['class' => 'humhub\modules\custom_pages\modules\template\services\ElementTypeService', 'event' => 'init', 'callback' => [Events::class, 'onCustomPagesTemplateElementTypeServiceInit']], - ['class' => 'humhub\modules\custom_pages\modules\template\services\ImportService', 'event' => 'defaultTemplates', 'callback' => [Events::class, 'onCustomPagesImportServiceDefaultTemplates']], + ['class' => 'humhub\modules\custom_pages\modules\template\services\TemplateImportService', 'event' => 'defaultTemplates', 'callback' => [Events::class, 'onCustomPagesImportServiceDefaultTemplates']], ['class' => Content::class, 'event' => Content::EVENT_AFTER_SOFT_DELETE, 'callback' => [Events::class, 'onContentAfterSoftDelete']], ], 'urlManagerRules' => [ From 3463db0a2c406e74c6b80663ce4afc5652bcacc5 Mon Sep 17 00:00:00 2001 From: Yuriy Bakhtin Date: Fri, 30 May 2025 09:54:07 +0200 Subject: [PATCH 7/7] Fix default custom pages template --- resources/custom-pages-templates/calendar_events.json | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/custom-pages-templates/calendar_events.json b/resources/custom-pages-templates/calendar_events.json index f7dfa79d..6a196b0c 100644 --- a/resources/custom-pages-templates/calendar_events.json +++ b/resources/custom-pages-templates/calendar_events.json @@ -1,4 +1,5 @@ { + "version": "1.0", "name": "calendar_events", "engine": "twig", "description": "Default template for calendar events.",