Skip to content

Commit 6c9d81d

Browse files
authored
Render Hooks (#151)
1 parent 1177876 commit 6c9d81d

File tree

11 files changed

+159
-1
lines changed

11 files changed

+159
-1
lines changed

resources/views/components/about.blade.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_ABOUT_BEFORE) }}
2+
13
@if ($about !== '')
24
<div>
35
<h1 class="text-3xl font-semibold">{{ $title }}</h1>
@@ -6,3 +8,5 @@
68
</div>
79
</div>
810
@endif
11+
12+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_ABOUT_AFTER) }}

resources/views/components/cachet.blade.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,12 @@
4141
</style>
4242
</head>
4343
<body class="flex min-h-screen flex-col items-stretch antialiased">
44+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_BODY_BEFORE) }}
4445
{{ $slot }}
4546

4647
<!-- Custom Cachet Footer -->
4748
{!! $cachet_footer !!}
49+
50+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_BODY_AFTER) }}
4851
</body>
4952
</html>

resources/views/components/component-group.blade.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
@props(['componentGroup' => null])
22

3+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_COMPONENT_GROUPS_BEFORE) }}
34
<div x-data x-disclosure {{ $attributes
45
->merge(array_filter([
56
'default-open' => $componentGroup->isExpanded(),
@@ -29,3 +30,4 @@
2930
</ul>
3031
</div>
3132
</div>
33+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_COMPONENT_GROUPS_AFTER) }}

resources/views/components/component.blade.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_COMPONENTS_BEFORE) }}
12
<li class="px-4 py-3">
23
<div class="flex items-center justify-between">
34
<div class="flex flex-col grow gap-y-1">
@@ -37,3 +38,4 @@
3738
</div>
3839
</div>
3940
</li>
41+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_BODY_AFTER) }}

resources/views/components/header.blade.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_NAVIGATION_BEFORE) }}
12
<div class="flex items-center justify-between border-b border-zinc-200 px-4 sm:px-6 lg:px-8 py-4 dark:border-zinc-700">
23
<div>
34
<a href="{{ route('cachet.status-page') }}" class="transition hover:opacity-80">
@@ -26,4 +27,5 @@
2627
@endauth
2728
</div>
2829
@endif
29-
</div>
30+
</div>
31+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_NAVIGATION_AFTER) }}

resources/views/components/incident.blade.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
'incidents',
55
])
66

7+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_INCIDENTS_BEFORE) }}
78
<div class="relative flex flex-col gap-5" x-data="{ forDate: new Date(@js($date)) }">
89
<h3 class="text-xl font-semibold"><time datetime="{{ $date }}" x-text="forDate.toLocaleDateString()"></time></h3>
910
@forelse($incidents as $incident)
@@ -78,3 +79,4 @@
7879
</div>
7980
@endforelse
8081
</div>
82+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_INCIDENTS_AFTER) }}

resources/views/components/schedule.blade.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_SCHEDULES_BEFORE) }}
12
<li class="p-4" x-data="{ timestamp: new Date(@js($schedule->scheduled_at)) }">
23
<div class="flex flex-col-reverse items-start justify-between gap-4 md:flex-row md:items-center">
34
<div class="flex items-start gap-2.5 w-full">
@@ -37,3 +38,4 @@
3738
</div>
3839
</div>
3940
</li>
41+
{{ \Cachet\Facades\CachetView::renderHook(\Cachet\View\RenderHook::STATUS_PAGE_SCHEDULES_AFTER) }}

src/CachetCoreServiceProvider.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Cachet\Models\Incident;
99
use Cachet\Models\Schedule;
1010
use Cachet\Settings\AppSettings;
11+
use Cachet\View\ViewManager;
1112
use Filament\Support\Colors\Color;
1213
use Filament\Support\Facades\FilamentColor;
1314
use Illuminate\Cache\RateLimiting\Limit;
@@ -36,6 +37,7 @@ public function register(): void
3637
}
3738

3839
$this->app->singleton(Cachet::class);
40+
$this->app->singleton(ViewManager::class);
3941
}
4042

4143
/**

src/Facades/CachetView.php

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php
2+
3+
namespace Cachet\Facades;
4+
5+
use Cachet\View\ViewManager;
6+
use Closure;
7+
use Illuminate\Contracts\Support\Htmlable;
8+
use Illuminate\Support\Facades\Facade;
9+
10+
/**
11+
* @method static Htmlable renderHook(string $name, string | array | null $scopes = null)
12+
*
13+
* @see ViewManager
14+
*/
15+
class CachetView extends Facade
16+
{
17+
protected static function getFacadeAccessor()
18+
{
19+
return ViewManager::class;
20+
}
21+
22+
public static function registerRenderHook(string $name, Closure $hook, string | array | null $scopes = null): void
23+
{
24+
static::resolved(function (ViewManager $viewManager) use ($name, $hook, $scopes) {
25+
$viewManager->registerRenderHook($name, $hook, $scopes);
26+
});
27+
}
28+
}

src/View/RenderHook.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Cachet\View;
4+
5+
class RenderHook
6+
{
7+
const STATUS_PAGE_BODY_AFTER = 'cachet::status-page.body.after';
8+
9+
const STATUS_PAGE_BODY_BEFORE = 'cachet::status-page.body.before';
10+
11+
const STATUS_PAGE_NAVIGATION_AFTER = 'cachet::status-page.navigation.after';
12+
13+
const STATUS_PAGE_NAVIGATION_BEFORE = 'cachet::status-page.navigation.before';
14+
15+
const STATUS_PAGE_ABOUT_AFTER = 'cachet::status-page.about.after';
16+
17+
const STATUS_PAGE_ABOUT_BEFORE = 'cachet::status-page.about.before';
18+
19+
const STATUS_PAGE_COMPONENTS_AFTER = 'cachet::status-page.components.after';
20+
21+
const STATUS_PAGE_COMPONENTS_BEFORE = 'cachet::status-page.components.before';
22+
23+
const STATUS_PAGE_COMPONENT_GROUPS_AFTER = 'cachet::status-page.component-groups.after';
24+
25+
const STATUS_PAGE_COMPONENT_GROUPS_BEFORE = 'cachet::status-page.component-groups.before';
26+
27+
const STATUS_PAGE_INCIDENTS_AFTER = 'cachet::status-page.incidents.after';
28+
29+
const STATUS_PAGE_INCIDENTS_BEFORE = 'cachet::status-page.incidents.before';
30+
31+
const STATUS_PAGE_SCHEDULES_AFTER = 'cachet::status-page.schedules.after';
32+
33+
const STATUS_PAGE_SCHEDULES_BEFORE = 'cachet::status-page.schedules.before';
34+
35+
const STATUS_PAGE_BANNER = 'cachet::status-page.banner';
36+
37+
const STATUS_PAGE_METRICS_AFTER = 'cachet::status-page.metrics.after';
38+
39+
const STATUS_PAGE_METRICS_BEFORE = 'cachet::status-page.metrics.before';
40+
41+
const FOOTER = 'cachet::footer';
42+
}

0 commit comments

Comments
 (0)