Compare commits
No commits in common. "master" and "dev" have entirely different histories.
|
@ -1 +1 @@
|
|||
Subproject commit e4fa326f3593fc61573bd81bfdfe75a3d4711124
|
||||
Subproject commit 3907395506afab856559972fe7f19d2b8ccba8cd
|
|
@ -8,7 +8,6 @@ use Cms\Classes\Page;
|
|||
use Silva\Adrema\Exceptions\ComponentException;
|
||||
use Silva\Adrema\Models\Settings;
|
||||
use Silva\Adrema\Support\FetchAllEvents;
|
||||
use Validator;
|
||||
|
||||
abstract class EventManager extends ComponentBase
|
||||
{
|
||||
|
@ -16,7 +15,6 @@ abstract class EventManager extends ComponentBase
|
|||
public array $settings = [];
|
||||
public ?array $event = null;
|
||||
public array $eventMeta = [];
|
||||
public array $pageMeta = [];
|
||||
|
||||
/** @var Collection<int, mixed> */
|
||||
public Collection $events;
|
||||
|
@ -39,31 +37,17 @@ abstract class EventManager extends ComponentBase
|
|||
$this->loadColors();
|
||||
$this->loadSettings();
|
||||
$this->loadSingleEvent();
|
||||
$this->loadQueryParams();
|
||||
$this->page['breadcrumbs'] = $this->getBreadcrumbs();
|
||||
}
|
||||
|
||||
private function loadQueryParams(): array {
|
||||
$validator = Validator::make(array_only(request()->query(), ['signature', 'id', 'later']), [
|
||||
'signature' => 'required|string',
|
||||
'id' => 'required|string|uuid:4',
|
||||
'later' => 'required|numeric|in:1',
|
||||
]);
|
||||
|
||||
return $validator->fails()
|
||||
? ['later' => '0']
|
||||
: $validator->validated();
|
||||
}
|
||||
|
||||
private function getBreadcrumbs(): Collection
|
||||
{
|
||||
$breadcrumbs = collect([]);
|
||||
$breadcrumbs->push(['url' => '/', 'title' => 'Start', 'isActive' => false]);
|
||||
$breadcrumbs->push(['url' => $this->settings['indexUrl'], 'title' => 'Veranstaltungen', 'isActive' => $this->event === null]);
|
||||
|
||||
if ($this->event) {
|
||||
$breadcrumbs->push([
|
||||
'url' => str($this->settings['singleUrl'])->replace(':slug', $this->event['slug'])->toString(),
|
||||
'url' => (string) str($this->settings['singleUrl'])->replace(':slug', $this->event['slug']),
|
||||
'title' => $this->event['name'],
|
||||
'isActive' => !$this->isRegistering()
|
||||
]);
|
||||
|
@ -71,7 +55,7 @@ abstract class EventManager extends ComponentBase
|
|||
|
||||
if ($this->event && $this->isRegistering()) {
|
||||
$breadcrumbs->push([
|
||||
'url' => str($this->settings['registerUrl'])->replace(':slug', $this->event['slug'])->toString(),
|
||||
'url' => (string) str($this->settings['registerUrl'])->replace(':slug', $this->event['slug']),
|
||||
'title' => 'Anmeldung',
|
||||
'isActive' => true,
|
||||
]);
|
||||
|
@ -169,7 +153,6 @@ abstract class EventManager extends ComponentBase
|
|||
$this->eventMeta = data_get($eventData, 'meta', []);
|
||||
$this->events = $this->page['events'] = collect($eventData['data']);
|
||||
$this->event = $this->page['event'] = $this->events->first(fn ($event) => $event['slug'] == $eventSlug);
|
||||
$this->pageMeta = $this->loadQueryParams();
|
||||
$this->currentUrl = url()->current();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
{% include 'silva.adrema::head' %}
|
||||
|
||||
{% if __SELF__.event.can_register %}
|
||||
<event-form
|
||||
style="--primary: {{__SELF__.settings.primary_color}}; --secondary: {{__SELF__.settings.secondary_color}}; --font: {{__SELF__.settings.font_color}}; --circle: {{__SELF__.settings.circle_color}}"
|
||||
index-url="{{__SELF__.settings.indexUrl}}"
|
||||
|
@ -10,4 +9,3 @@
|
|||
form-id="{{__SELF__.event.id }}"
|
||||
scroll
|
||||
></event-form>
|
||||
{% endif %}
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
<?php
|
||||
|
||||
use Silva\Adrema\Support\ClearCache;
|
||||
use Silva\Adrema\Support\Proxy;
|
||||
|
||||
Route::get('/adrema-api/{route}', fn (string $route) => Response::json(app(Proxy::class)->run($route, 'get')))
|
||||
->where('route', '[a-zA-Z0-9\-/]+')->middleware('api');
|
||||
Route::post('/adrema-api/{route}', fn (string $route) => app(Proxy::class)->submit($route))
|
||||
->where('route', '[a-zA-Z0-9\-/]+')->middleware('api');
|
||||
|
||||
Route::get('/adrema/clear-cache', fn () => app(ClearCache::class)->run());
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace Silva\Adrema\Support;
|
||||
|
||||
use Cache;
|
||||
|
||||
class ClearCache
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
Cache::forget('adrema-all-events');
|
||||
}
|
||||
}
|
|
@ -3,17 +3,19 @@
|
|||
namespace Silva\Adrema\Support;
|
||||
|
||||
use Illuminate\Support\Collection;
|
||||
use Cache;
|
||||
|
||||
class FetchAllEvents
|
||||
{
|
||||
public function run(): ?Collection
|
||||
{
|
||||
$events = app(Proxy::class)->run('api/form');
|
||||
$events = Cache::remember('adrema-all-events', 3600, function () {
|
||||
return app(Proxy::class)->run('/api/form');
|
||||
});
|
||||
|
||||
if (!$events) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return collect($events);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
namespace Silva\Adrema\Support;
|
||||
|
||||
use Cache;
|
||||
use Silva\Adrema\Models\Settings;
|
||||
use Http;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
@ -10,15 +9,6 @@ use Illuminate\Http\JsonResponse;
|
|||
class Proxy
|
||||
{
|
||||
public function run(string $url): ?array
|
||||
{
|
||||
if ($url === 'api/form') {
|
||||
return Cache::rememberForever('adrema-all-events', fn () => $this->get($url));
|
||||
}
|
||||
|
||||
return $this->get($url);
|
||||
}
|
||||
|
||||
protected function get(string $url): ?array
|
||||
{
|
||||
$response = Http::acceptJson()->get($this->url($url));
|
||||
|
||||
|
|
|
@ -10,7 +10,6 @@
|
|||
<script type="text/javascript">
|
||||
var adrema_event_config = {{__SELF__.event.config | json_encode | raw}};
|
||||
var adrema_event_meta = {{__SELF__.eventMeta | json_encode | raw}};
|
||||
var adrema_page_meta = {{__SELF__.pageMeta | json_encode | raw}};
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
|
|
Loading…
Reference in New Issue