diff --git a/assets/vendor/adrema-form b/assets/vendor/adrema-form
index e629345..10070f3 160000
--- a/assets/vendor/adrema-form
+++ b/assets/vendor/adrema-form
@@ -1 +1 @@
-Subproject commit e62934504bf2d33b65d0282a8d311df9cecb178e
+Subproject commit 10070f39ad7b91dee37f953325726e8b56694c6c
diff --git a/components/EventIndex.php b/components/EventIndex.php
index 4d8141f..93bacd1 100644
--- a/components/EventIndex.php
+++ b/components/EventIndex.php
@@ -4,8 +4,10 @@ namespace Silva\Adrema\Components;
use Cms\Classes\ComponentBase;
use Cms\Classes\Page;
+use FetchAllEvents;
use Silva\Adrema\Exceptions\ComponentException;
use Silva\Adrema\Models\Settings;
+use Silva\Adrema\Support\FetchAllEvents as SupportFetchAllEvents;
class EventIndex extends ComponentBase
{
@@ -13,7 +15,9 @@ class EventIndex extends ComponentBase
public $settings;
/** @var string The active event */
- public ?string $event;
+ public ?string $eventSlug;
+ public ?array $event;
+ public string $currentUrl;
public function componentDetails()
{
@@ -26,12 +30,22 @@ class EventIndex extends ComponentBase
public function onRun()
{
$this->addJs('assets/vendor/adrema-form/dist/main.js');
+ $this->currentUrl = url()->current();
+ // $this->addJs('http://localhost:5174/src/main.js', ['type' => 'module']);
$this->settings = [
'primary_color' => Settings::get('primary_color'),
...$this->resolvePageUrls(),
];
- $this->event = $this->property('event');
+ $this->eventSlug = $this->property('eventSlug');
+
+ if ($this->eventSlug) {
+ $events = data_get(app(SupportFetchAllEvents::class)->run(), 'data');
+ throw_if(is_null($events), ComponentException::class, 'event_fetching_failed');
+
+ $this->event = collect($events)->first(fn ($event) => $event['slug'] === $this->eventSlug);
+ $this->page->title = $this->event['name'];
+ }
}
/**
@@ -81,8 +95,8 @@ class EventIndex extends ComponentBase
'type' => 'dropdown',
'default' => null,
],
- 'event' => [
- 'title' => __('properties.event_title'),
+ 'eventSlug' => [
+ 'title' => __('properties.event_slug_title'),
'type' => 'text',
'default' => null,
],
diff --git a/components/eventindex/default.htm b/components/eventindex/default.htm
index 4bf8120..1ddf708 100644
--- a/components/eventindex/default.htm
+++ b/components/eventindex/default.htm
@@ -1,8 +1,18 @@
+{% if __SELF__.event %}
+ {% put metatags %}
+
+
+
+
+
+ {% endput %}
+{% endif %}
+
diff --git a/lang/de.json b/lang/de.json
index 60d436f..f09fc8b 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -5,5 +5,5 @@
"properties.index_page_title": "Seite für Übersicht",
"properties.single_page_title": "Seite für Einzelansicht",
"properties.register_page_title": "Seite zum anmelden",
- "properties.event_title": "Veranstaltung slug"
+ "properties.event_slug_title": "Veranstaltung slug"
}
diff --git a/lang/en.json b/lang/en.json
index 7f83962..499f36b 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -5,8 +5,9 @@
"properties.index_page_title": "Page for overview",
"properties.single_page_title": "Page for single view",
"properties.register_page_title": "Page for registration",
- "properties.event_title": "Event slug",
+ "properties.event_slug_title": "Event slug",
"errors.not_all_pages_set": "You didn't assign all pages. Please edit your components.",
"errors.page_not_found": "One page cannot be found. Event component cannot be rendered.",
- "errors.slug_not_found": "You need to set a placeholder in page urls to set the event slug (\":slug\")"
+ "errors.slug_not_found": "You need to set a placeholder in page urls to set the event slug (\":slug\")",
+ "errors.event_fetching_failed": "Failed to fetch event."
}
diff --git a/routes.php b/routes.php
index 67e0fbf..dd91ac3 100644
--- a/routes.php
+++ b/routes.php
@@ -1,14 +1,13 @@
run();
- if (!$response->ok()) {
+ if (is_null($events)) {
return Response::json(['message' => 'Fehler beim Laden der Veranstaltungen'], 422);
}
- return Response::json($response->json());
+ return Response::json($events);
})->middleware('api');
diff --git a/support/FetchAllEvents.php b/support/FetchAllEvents.php
new file mode 100644
index 0000000..e5ce7a7
--- /dev/null
+++ b/support/FetchAllEvents.php
@@ -0,0 +1,21 @@
+ok()) {
+ return null;
+ }
+
+ return $response->json();
+ }
+}