Skip to content

Commit ef985b0

Browse files
authored
Merge pull request #79 from govigilant/develop
Implement redesign
2 parents 261b775 + 20b51c4 commit ef985b0

File tree

228 files changed

+5335
-1551
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

228 files changed

+5335
-1551
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"laravel/socialite": "^5.18",
2727
"laravel/tinker": "^2.8",
2828
"livewire/livewire": "^3.0",
29-
"ramonrietdijk/livewire-tables": "^5.0",
29+
"ramonrietdijk/livewire-tables": "^6.0",
3030
"vigilant/certificates": "@dev",
3131
"vigilant/core": "@dev",
3232
"vigilant/crawler": "@dev",

composer.lock

Lines changed: 134 additions & 193 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/certificates/resources/views/livewire/certificate-monitor-form.blade.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,22 @@
99
@endif
1010

1111
<form wire:submit="save">
12-
<div class="flex flex-col gap-4 max-w-7xl mx-auto">
13-
@if (!$inline)
14-
<x-form.checkbox field="form.enabled" name="Enabled"
15-
description="Enable or disable this certificate monitor" />
16-
@endif
17-
<x-form.text field="form.domain" name="Domain" description="Domain" />
12+
<div class="max-w-7xl mx-auto">
13+
<x-card>
14+
<div class="flex flex-col gap-4">
15+
@if (!$inline)
16+
<x-form.checkbox field="form.enabled" name="Enabled"
17+
description="Enable or disable this certificate monitor" />
18+
@endif
19+
<x-form.text field="form.domain" name="Domain" description="Domain" />
1820

19-
<x-form.number field="form.port" name="Port" description="Port" />
20-
21-
@if (!$inline)
22-
<x-form.submit-button dusk="submit-button" :submitText="$updating ? 'Save' : 'Create'" />
23-
@endif
21+
<x-form.number field="form.port" name="Port" description="Port" />
2422

23+
@if (!$inline)
24+
<x-form.submit-button dusk="submit-button" :submitText="$updating ? 'Save' : 'Create'" />
25+
@endif
26+
</div>
27+
</x-card>
2528
</div>
2629
</form>
2730
</div>

packages/certificates/resources/views/livewire/monitor/dashboard.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<div class="">
22

3-
<dl class="grid grid-cols-4 grid-rows-1 gap-4">
3+
<dl class="grid grid-cols-2 lg:grid-cols-4 gap-4">
44
<x-frontend::stats-card :title="__('Expiry')">
55
@if ($monitor->valid_to === null)
66
<span class="text-red-light">@lang('Unknown')</span>
Lines changed: 53 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,23 @@
11
<x-app-layout>
22
<x-slot name="header">
3-
<x-page-header :back="route('certificates')" :title="'Certificate Monitor - ' . $monitor->domain . ($monitor->enabled ? '' : ' (Disabled)')" x-data="{ submitForm() { if (confirm('Are you sure you want to delete this monitor?')) { $refs.form.submit(); } } }">
4-
<form action="{{ route('certificates.delete', ['monitor' => $monitor]) }}" method="POST" wire:ignore
5-
x-ref="form" onsubmit="return confirm('Are you sure you want to delete this monitor?');">
6-
@csrf
7-
@method('DELETE')
8-
</form>
9-
3+
<x-page-header :back="route('certificates')" :title="'Certificate Monitor - ' . $monitor->domain . ($monitor->enabled ? '' : ' (Disabled)')">
104
<x-frontend::page-header.actions>
115
<x-form.button dusk="lighthouse-edit-button"
12-
href="{{ route('certificates.edit', ['monitor' => $monitor]) }}" class="bg-blue hover:bg-blue-light">
6+
href="{{ route('certificates.edit', ['monitor' => $monitor]) }}">
137
@lang('Edit')
148
</x-form.button>
15-
<x-form.button class="bg-red hover:bg-red-light" x-on:click="submitForm">
9+
<x-form.button class="bg-red" @click="$dispatch('open-delete-modal')">
1610
@lang('Delete')
1711
</x-form.button>
1812
</x-frontend::page-header.actions>
13+
1914
<x-frontend::page-header.mobile-actions>
20-
<x-form.dropdown-button href="{{ route('certificates.edit', ['monitor' => $monitor]) }}"
21-
class="bg-blue hover:bg-blue-light">
15+
<x-form.dropdown-button href="{{ route('certificates.edit', ['monitor' => $monitor]) }}">
2216
@lang('Edit')
23-
</x-form.button>
24-
<x-form.dropdown-button class="bg-red hover:bg-red-light" x-on:click="submitForm">
25-
@lang('Delete')
26-
</x-form.button>
17+
</x-form.dropdown-button>
18+
<x-form.dropdown-button class="!text-red hover:!text-red-light" @click="$dispatch('open-delete-modal')">
19+
@lang('Delete')
20+
</x-form.dropdown-button>
2721
</x-frontend::page-header.mobile-actions>
2822
</x-page-header>
2923
</x-slot>
@@ -39,5 +33,49 @@ class="bg-blue hover:bg-blue-light">
3933
<livewire:certificate-monitor-history-table :monitorId="$monitor->id" />
4034
</div>
4135

36+
<!-- Delete Confirmation Modal -->
37+
<div x-data="{ showDeleteModal: false }" @open-delete-modal.window="showDeleteModal = true">
38+
<x-frontend::modal show="showDeleteModal">
39+
<x-frontend::modal.header icon="phosphor-trash" iconColor="red" show="showDeleteModal">
40+
@lang('Delete Certificate Monitor')
41+
</x-frontend::modal.header>
42+
43+
<x-frontend::modal.body>
44+
<div class="space-y-4">
45+
<p class="text-base-100">
46+
@lang('Are you sure you want to delete this certificate monitor?')
47+
</p>
48+
<div class="bg-base-850 border border-base-700 rounded-lg p-4">
49+
<div class="flex items-start gap-3">
50+
<div class="flex-shrink-0">
51+
@svg('phosphor-warning-circle', 'w-5 h-5 text-orange mt-0.5')
52+
</div>
53+
<div class="flex-1">
54+
<p class="text-sm text-base-300">
55+
<span class="font-semibold text-base-100">{{ $monitor->domain }}</span>
56+
</p>
57+
<p class="text-sm text-base-400 mt-1">
58+
@lang('This action cannot be undone. All certificate history for this monitor will be permanently deleted.')
59+
</p>
60+
</div>
61+
</div>
62+
</div>
63+
</div>
64+
</x-frontend::modal.body>
65+
66+
<x-frontend::modal.footer>
67+
<x-form.button type="button" @click="showDeleteModal = false">
68+
@lang('Cancel')
69+
</x-form.button>
70+
<form action="{{ route('certificates.delete', ['monitor' => $monitor]) }}" method="POST" class="inline">
71+
@csrf
72+
@method('DELETE')
73+
<x-form.button class="bg-red" type="submit">
74+
@lang('Delete Monitor')
75+
</x-form.button>
76+
</form>
77+
</x-frontend::modal.footer>
78+
</x-frontend::modal>
79+
</div>
4280

4381
</x-app-layout>

packages/certificates/src/Livewire/Tables/CertificateMonitorHistoryTable.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
use Illuminate\Database\Eloquent\Model;
77
use Livewire\Attributes\Locked;
88
use RamonRietdijk\LivewireTables\Columns\Column;
9-
use RamonRietdijk\LivewireTables\Livewire\LivewireTable;
109
use Vigilant\Certificates\Models\CertificateMonitorHistory;
10+
use Vigilant\Frontend\Integrations\Table\BaseTable;
1111
use Vigilant\Frontend\Integrations\Table\DateColumn;
1212

13-
class CertificateMonitorHistoryTable extends LivewireTable
13+
class CertificateMonitorHistoryTable extends BaseTable
1414
{
1515
protected string $model = CertificateMonitorHistory::class;
1616

packages/certificates/src/Livewire/Tables/CertificateMonitorsTable.php

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,16 @@
77
use Illuminate\Support\Facades\Gate;
88
use RamonRietdijk\LivewireTables\Actions\Action;
99
use RamonRietdijk\LivewireTables\Columns\Column;
10-
use RamonRietdijk\LivewireTables\Livewire\LivewireTable;
10+
use RamonRietdijk\LivewireTables\Filters\SelectFilter;
1111
use Vigilant\Certificates\Jobs\CheckCertificateJob;
1212
use Vigilant\Certificates\Models\CertificateMonitor;
13+
use Vigilant\Frontend\Integrations\Table\BaseTable;
1314
use Vigilant\Frontend\Integrations\Table\DateColumn;
1415
use Vigilant\Frontend\Integrations\Table\Enums\Status;
1516
use Vigilant\Frontend\Integrations\Table\StatusColumn;
17+
use Vigilant\Sites\Models\Site;
1618

17-
class CertificateMonitorsTable extends LivewireTable
19+
class CertificateMonitorsTable extends BaseTable
1820
{
1921
protected string $model = CertificateMonitor::class;
2022

@@ -83,30 +85,43 @@ protected function columns(): array
8385
];
8486
}
8587

88+
protected function filters(): array
89+
{
90+
return [
91+
SelectFilter::make(__('Site'), 'site_id')
92+
->options(
93+
Site::query()
94+
->orderBy('url')
95+
->pluck('url', 'id')
96+
->toArray()
97+
),
98+
];
99+
}
100+
86101
protected function actions(): array
87102
{
88103
return [
89-
Action::make(__('Check Now'), 'run', function (Enumerable $models): void {
104+
Action::make(__('Check Now'), function (Enumerable $models): void {
90105
$models->each(fn (CertificateMonitor $monitor) => CheckCertificateJob::dispatch($monitor));
91-
}),
106+
}, 'run'),
92107

93-
Action::make(__('Enable'), 'enable', function (Enumerable $models): void {
108+
Action::make(__('Enable'), function (Enumerable $models): void {
94109
foreach ($models as $model) {
95110
if (! Gate::allows('create', $model)) {
96111
break;
97112
}
98113

99114
$model->update(['enabled' => true]);
100115
}
101-
}),
116+
}, 'enable'),
102117

103-
Action::make(__('Disable'), 'disable', function (Enumerable $models): void {
118+
Action::make(__('Disable'), function (Enumerable $models): void {
104119
$models->each(fn (CertificateMonitor $monitor) => $monitor->update(['enabled' => false]));
105-
}),
120+
}, 'disable'),
106121

107-
Action::make(__('Delete'), 'delete', function (Enumerable $models): void {
122+
Action::make(__('Delete'), function (Enumerable $models): void {
108123
$models->each(fn (CertificateMonitor $monitor): ?bool => $monitor->delete());
109-
}),
124+
}, 'delete'),
110125
];
111126
}
112127

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
<x-app-layout>
22
<x-slot name="header">
3-
<x-page-header :back="route('crawler.index')" :title="'Crawler - ' . $crawler->start_url . ($crawler->enabled ? '' : ' (Disabled)')" x-data="{ submitForm() { if (confirm('Are you sure you want to delete this monitor?')) { $refs.form.submit(); } } }">
4-
<form action="{{ route('crawler.delete', ['crawler' => $crawler]) }}" method="POST" wire:ignore x-ref="form"
5-
onsubmit="return confirm('Are you sure you want to delete this monitor?');">
6-
@csrf
7-
@method('DELETE')
8-
</form>
9-
10-
3+
<x-page-header :back="route('crawler.index')" :title="'Crawler - ' . $crawler->start_url . ($crawler->enabled ? '' : ' (Disabled)')">
114
<x-frontend::page-header.actions>
12-
<x-form.button dusk="crawler-edit-button" class="bg-blue hover:bg-blue-light" :href="route('crawler.edit', ['crawler' => $crawler])">
5+
<x-form.button dusk="crawler-edit-button" :href="route('crawler.edit', ['crawler' => $crawler])">
136
@lang('Edit')
147
</x-form.button>
15-
<x-form.button class="bg-red hover:bg-red-light" x-on:click="submitForm">
8+
<x-form.button class="bg-red" @click="$dispatch('open-delete-modal')">
169
@lang('Delete')
1710
</x-form.button>
1811
</x-frontend::page-header.actions>
@@ -21,7 +14,7 @@
2114
<x-form.dropdown-button :href="route('crawler.edit', ['crawler' => $crawler])">
2215
@lang('Edit')
2316
</x-form.dropdown-button>
24-
<x-form.dropdown-button x-on:click="submitForm">
17+
<x-form.dropdown-button class="!text-red hover:!text-red-light" @click="$dispatch('open-delete-modal')">
2518
@lang('Delete')
2619
</x-form.dropdown-button>
2720
</x-frontend::page-header.mobile-actions>
@@ -37,4 +30,49 @@
3730
<livewire:crawler-issues-table :crawlerId="$crawler->id" wire:key="issues-table" />
3831
</div>
3932

33+
<!-- Delete Confirmation Modal -->
34+
<div x-data="{ showDeleteModal: false }" @open-delete-modal.window="showDeleteModal = true">
35+
<x-frontend::modal show="showDeleteModal">
36+
<x-frontend::modal.header icon="phosphor-trash" iconColor="red" show="showDeleteModal">
37+
@lang('Delete Crawler Monitor')
38+
</x-frontend::modal.header>
39+
40+
<x-frontend::modal.body>
41+
<div class="space-y-4">
42+
<p class="text-base-100">
43+
@lang('Are you sure you want to delete this crawler monitor?')
44+
</p>
45+
<div class="bg-base-850 border border-base-700 rounded-lg p-4">
46+
<div class="flex items-start gap-3">
47+
<div class="flex-shrink-0">
48+
@svg('phosphor-warning-circle', 'w-5 h-5 text-orange mt-0.5')
49+
</div>
50+
<div class="flex-1">
51+
<p class="text-sm text-base-300">
52+
<span class="font-semibold text-base-100">{{ $crawler->start_url }}</span>
53+
</p>
54+
<p class="text-sm text-base-400 mt-1">
55+
@lang('This action cannot be undone. All crawl data and issues for this monitor will be permanently deleted.')
56+
</p>
57+
</div>
58+
</div>
59+
</div>
60+
</div>
61+
</x-frontend::modal.body>
62+
63+
<x-frontend::modal.footer>
64+
<x-form.button type="button" @click="showDeleteModal = false">
65+
@lang('Cancel')
66+
</x-form.button>
67+
<form action="{{ route('crawler.delete', ['crawler' => $crawler]) }}" method="POST" class="inline">
68+
@csrf
69+
@method('DELETE')
70+
<x-form.button class="bg-red" type="submit">
71+
@lang('Delete Monitor')
72+
</x-form.button>
73+
</form>
74+
</x-frontend::modal.footer>
75+
</x-frontend::modal>
76+
</div>
77+
4078
</x-app-layout>

packages/crawler/resources/views/crawlers.blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<x-slot name="header">
33
<x-page-header title="Crawlers">
44
<x-frontend::page-header.actions>
5-
<x-create-button dusk="crawler-add-button" class="bg-blue hover:bg-blue-light" :href="route('crawler.create')"
5+
<x-create-button dusk="crawler-add-button" :href="route('crawler.create')"
66
model="Vigilant\Crawler\Models\Crawler">
77
@lang('Add Crawler')
88
</x-create-button>

0 commit comments

Comments
 (0)