Stand: SMTP-Test, Admin-Mail-Tab, Notifiable-Fix, Lazy-Quill
- Fix: Notifiable-Trait zum User-Model hinzugefuegt (behebt notify()-500er) - Installer: SMTP-Verbindungstest mit EsmtpTransport + Ueberspringen-Link - Admin: Neuer E-Mail-Tab mit SMTP-Konfiguration + Verbindungstest - Admin: Lazy Quill-Initialisierung (nur sichtbare Locale wird geladen) - Uebersetzungen: 17 neue Mail-Keys in allen 6 Sprachen Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
176
resources/views/admin/list-generator/document.blade.php
Normal file
176
resources/views/admin/list-generator/document.blade.php
Normal file
@@ -0,0 +1,176 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{{ $title }}</title>
|
||||
<style>
|
||||
@page {
|
||||
size: {{ $orientation ?? 'portrait' }};
|
||||
margin: 10mm;
|
||||
}
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
body {
|
||||
font-family: 'DejaVu Sans', Helvetica, Arial, sans-serif;
|
||||
font-size: {{ $fontSize ?? 10 }}pt;
|
||||
color: #374151;
|
||||
background: #f3f4f6;
|
||||
}
|
||||
|
||||
/* Card container */
|
||||
.card {
|
||||
background: #ffffff;
|
||||
border-radius: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Dark header */
|
||||
.card-header {
|
||||
background: #1f2937;
|
||||
padding: 14px 20px;
|
||||
}
|
||||
.card-header h1 {
|
||||
font-size: {{ max(($fontSize ?? 10) + 4, 13) }}pt;
|
||||
font-weight: 700;
|
||||
color: #ffffff;
|
||||
margin: 0;
|
||||
}
|
||||
.card-header .subtitle {
|
||||
font-size: {{ max(($fontSize ?? 10), 9) }}pt;
|
||||
color: #d1d5db;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
/* Notes bar */
|
||||
.notes-bar {
|
||||
padding: 8px 20px;
|
||||
background: #f9fafb;
|
||||
border-bottom: 1px solid #e5e7eb;
|
||||
font-size: {{ max(($fontSize ?? 10) - 1, 8) }}pt;
|
||||
color: #4b5563;
|
||||
}
|
||||
|
||||
/* Table */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
th {
|
||||
background: #f3f4f6;
|
||||
border-bottom: 1px solid #e5e7eb;
|
||||
padding: 7px 12px;
|
||||
text-align: left;
|
||||
font-size: {{ max(($fontSize ?? 10) - 2, 7) }}pt;
|
||||
font-weight: 600;
|
||||
color: #6b7280;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
}
|
||||
td {
|
||||
padding: 6px 12px;
|
||||
border-bottom: 1px solid #f3f4f6;
|
||||
font-size: {{ $fontSize ?? 10 }}pt;
|
||||
color: #374151;
|
||||
}
|
||||
tr:nth-child(even) td {
|
||||
background: #fafbfc;
|
||||
}
|
||||
.row-num {
|
||||
color: #9ca3af;
|
||||
font-size: {{ max(($fontSize ?? 10) - 2, 7) }}pt;
|
||||
width: 28px;
|
||||
font-family: monospace;
|
||||
}
|
||||
.empty-cell {
|
||||
color: #d1d5db;
|
||||
}
|
||||
.link {
|
||||
color: #2563eb;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* Footer bar */
|
||||
.card-footer {
|
||||
padding: 8px 20px;
|
||||
background: #f9fafb;
|
||||
border-top: 1px solid #e5e7eb;
|
||||
font-size: {{ max(($fontSize ?? 10) - 3, 7) }}pt;
|
||||
color: #9ca3af;
|
||||
}
|
||||
.card-footer table { border: none; }
|
||||
.card-footer td {
|
||||
border: none;
|
||||
padding: 0;
|
||||
background: none;
|
||||
font-size: {{ max(($fontSize ?? 10) - 3, 7) }}pt;
|
||||
color: #9ca3af;
|
||||
}
|
||||
.card-footer .right {
|
||||
text-align: right;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="card">
|
||||
{{-- Dark header --}}
|
||||
<div class="card-header">
|
||||
<h1>{{ $title }}</h1>
|
||||
@if ($subtitle)
|
||||
<div class="subtitle">{{ $subtitle }}</div>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
{{-- Notes --}}
|
||||
@if ($notes)
|
||||
<div class="notes-bar">{{ $notes }}</div>
|
||||
@endif
|
||||
|
||||
{{-- Data table --}}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="row-num">#</th>
|
||||
@foreach ($columns as $key => $header)
|
||||
<th>{{ $header }}</th>
|
||||
@endforeach
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@forelse ($rows as $i => $row)
|
||||
<tr>
|
||||
<td class="row-num">{{ $i + 1 }}</td>
|
||||
@foreach ($columns as $key => $header)
|
||||
<td>
|
||||
@if (($key === 'email') && !empty($row[$key]))
|
||||
<a class="link" href="mailto:{{ $row[$key] }}">{{ $row[$key] }}</a>
|
||||
@elseif (($key === 'phone') && !empty($row[$key]) && $row[$key] !== '–')
|
||||
<a class="link" href="tel:{{ $row[$key] }}">{{ $row[$key] }}</a>
|
||||
@elseif (($row[$key] ?? '') === '')
|
||||
<span class="empty-cell">—</span>
|
||||
@else
|
||||
{{ $row[$key] }}
|
||||
@endif
|
||||
</td>
|
||||
@endforeach
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="{{ count($columns) + 1 }}" style="text-align: center; color: #9ca3af; padding: 20px;">
|
||||
{{ __('admin.no_entries') }}
|
||||
</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{-- Footer bar --}}
|
||||
<div class="card-footer">
|
||||
<table>
|
||||
<tr>
|
||||
<td>{{ count($rows) }} {{ __('admin.list_entries_count') }}</td>
|
||||
<td class="right">{{ __('admin.list_generated_at') }}: {{ $generatedAt->translatedFormat('d.m.Y, H:i') }} Uhr</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user