diff --git a/Plugin.php b/Plugin.php index e773f98..858604e 100644 --- a/Plugin.php +++ b/Plugin.php @@ -3,6 +3,7 @@ namespace Silva\Adrema; use Backend; +use Silva\Adrema\Components\EventOverview; use Silva\Adrema\Models\Settings; use System\Classes\PluginBase; @@ -47,10 +48,8 @@ class Plugin extends PluginBase */ public function registerComponents() { - return []; // Remove this line to activate - return [ - 'Silva\Adrema\Components\MyComponent' => 'myComponent', + EventOverview::class => 'adrema_event_overview', ]; } diff --git a/assets/vendor/adrema-form b/assets/vendor/adrema-form index f76b46b..93df5ba 160000 --- a/assets/vendor/adrema-form +++ b/assets/vendor/adrema-form @@ -1 +1 @@ -Subproject commit f76b46bc9fe159324e58783ff945595b5ba5e488 +Subproject commit 93df5bac1d1a7ed971a5d98477b25514a75a59e0 diff --git a/components/EventOverview.php b/components/EventOverview.php new file mode 100644 index 0000000..42ce204 --- /dev/null +++ b/components/EventOverview.php @@ -0,0 +1,41 @@ + 'EventOverview Component', + 'description' => 'No description provided yet...' + ]; + } + + public function onRun(): void + { + $this->addJs('assets/vendor/adrema-form/dist/main.js'); + $this->settings = [ + 'primary_color' => Settings::get('primary_color'), + ]; + } + + /** + * @link https://docs.octobercms.com/3.x/element/inspector-types.html + */ + public function defineProperties() + { + return []; + } +} diff --git a/components/eventoverview/default.htm b/components/eventoverview/default.htm new file mode 100644 index 0000000..1b3bc95 --- /dev/null +++ b/components/eventoverview/default.htm @@ -0,0 +1,40 @@ +{% set iconClass="w-3 h-3 flex-none text-dpsgred-700 mr-2" %} + +
+ + + + +
+ {% partial __SELF__.alias ~ '::events.htm' events=__SELF__.events %} +
+ +
+ + + +
diff --git a/components/eventoverview/events.htm b/components/eventoverview/events.htm new file mode 100644 index 0000000..c3f52ac --- /dev/null +++ b/components/eventoverview/events.htm @@ -0,0 +1,29 @@ +{% set iconClass="w-3 h-3 flex-none text-dpsgred-700 mr-2" %} + +{% for i, event in events %} + + {% partial 'site/components/box' + image=event.header_image + image_size='calc(50vw - 2rem)|845:calc(33vw - 1.666rem)|1112:calc(25vw - 1.5rem)|1375:calc(20vw - 1.4rem)|1568:282px' + header=event.name + image_rounded=0 + link={'link': '#', 'title': 'Zur Veranstaltung'} + buttonring=1 + body + %} + {% put tagextend %} href="#" @click.prevent="showDetail({{event.id}})" data-backstop-event-box {% endput %} + + + {{'calendar'|sprite(iconClass)}} + {{ event.formattedDates }} + + {% if event.formattedTimes %} + + {{'clock'|sprite(iconClass)}} + {{ event.formattedTimes }} + + {% endif %} + + {{event.excerpt}} + {% endpartial %} +{% endfor %} diff --git a/components/eventoverview/popup.htm b/components/eventoverview/popup.htm new file mode 100644 index 0000000..5c505f0 --- /dev/null +++ b/components/eventoverview/popup.htm @@ -0,0 +1,16 @@ +{% set iconClass="w-3 h-3 flex-none text-dpsgred-700 mr-2" %} + +

{{event.name}}

+
+ {{'calendar' | sprite(iconClass)}} +
{{event.formattedDates}}
+ {{'clock'|sprite(iconClass ~ ' ml-2')}} +
{{event.formattedTimes}}
+
+
{{event.content | raw }}
+{% if event.can_register %} +Zur Anmeldung +{% endif %} + + {{'close'|sprite('w-4 h-4 text-gray-700')}} + diff --git a/models/Setting.php b/models/Setting.php new file mode 100644 index 0000000..075ab36 --- /dev/null +++ b/models/Setting.php @@ -0,0 +1,23 @@ +ok()) { + return Response::json(['message' => 'Fehler beim Laden der Veranstaltungen'], 422); + } + + return Response::json($response->json()); +})->middleware('api');