kop laporan: format resmi sekolah (logo lambang Jatim kiri + 6 baris teks tengah + garis hitam tebal) — settings Kop Surat baru + upload logo kop
This commit is contained in:
@@ -28,6 +28,13 @@ class SettingsController extends Controller
|
||||
'kepala_sekolah_nip' => ['nullable', 'string', 'max:50'],
|
||||
'bk_koordinator_name' => ['nullable', 'string', 'max:255'],
|
||||
'wa_notification_template' => ['nullable', 'string', 'max:3000'],
|
||||
// Kop surat
|
||||
'school_government' => ['nullable', 'string', 'max:255'],
|
||||
'school_agency' => ['nullable', 'string', 'max:255'],
|
||||
'school_full_name' => ['nullable', 'string', 'max:255'],
|
||||
'school_address_detail' => ['nullable', 'string', 'max:500'],
|
||||
'school_website_email' => ['nullable', 'string', 'max:500'],
|
||||
'school_postal' => ['nullable', 'string', 'max:20'],
|
||||
]);
|
||||
|
||||
foreach ($validated as $key => $value) {
|
||||
@@ -39,6 +46,11 @@ class SettingsController extends Controller
|
||||
Setting::setValue('school_logo', $path, 'school', 'Logo sekolah');
|
||||
}
|
||||
|
||||
if ($request->hasFile('kop_logo')) {
|
||||
$path = $request->file('kop_logo')->store('school', 'public');
|
||||
Setting::setValue('kop_logo', $path, 'school', 'Logo kop surat');
|
||||
}
|
||||
|
||||
if ($request->hasFile('login_background')) {
|
||||
$path = $request->file('login_background')->store('school', 'public');
|
||||
Setting::setValue('login_background', $path, 'school', 'Background halaman login');
|
||||
|
||||
@@ -72,6 +72,13 @@ class ViolationReportController extends Controller
|
||||
'address' => Setting::getValue('school_address', ''),
|
||||
'phone' => Setting::getValue('school_phone', ''),
|
||||
'logo' => Setting::getValue('school_logo', ''),
|
||||
'kop_logo' => Setting::getValue('kop_logo', ''),
|
||||
'government' => Setting::getValue('school_government', 'PEMERINTAH PROVINSI JAWA TIMUR'),
|
||||
'agency' => Setting::getValue('school_agency', 'DINAS PENDIDIKAN'),
|
||||
'full_name' => Setting::getValue('school_full_name', Setting::getValue('school_name', 'SMK')),
|
||||
'address_detail' => Setting::getValue('school_address_detail', ''),
|
||||
'website_email' => Setting::getValue('school_website_email', ''),
|
||||
'postal' => Setting::getValue('school_postal', ''),
|
||||
'kepala_sekolah' => Setting::getValue('kepala_sekolah_name', ''),
|
||||
'kepala_sekolah_nip' => Setting::getValue('kepala_sekolah_nip', ''),
|
||||
];
|
||||
|
||||
@@ -6,11 +6,15 @@
|
||||
<style>
|
||||
* { box-sizing: border-box; }
|
||||
body { font-family: 'DejaVu Sans', sans-serif; font-size: 9px; color: #1a1a1a; margin: 0; padding: 0; }
|
||||
.kop { display: flex; align-items: center; gap: 12px; border-bottom: 3px double #1e3a8a; padding-bottom: 10px; margin-bottom: 14px; }
|
||||
.kop img { width: 62px; height: 62px; object-fit: contain; }
|
||||
.kop .nama-sekolah { font-size: 15px; font-weight: bold; color: #1e3a8a; text-transform: uppercase; letter-spacing: 0.5px; }
|
||||
.kop .alamat { font-size: 8px; color: #444; margin-top: 2px; }
|
||||
.kop .sub { font-size: 8px; color: #666; }
|
||||
.kop { width: 100%; border-collapse: collapse; margin-bottom: 0; }
|
||||
.kop td { border: none; padding: 0; }
|
||||
.kop-logo { width: 96px; text-align: center; vertical-align: middle; }
|
||||
.kop-logo img { height: 72px; width: auto; max-width: 88px; object-fit: contain; }
|
||||
.kop-text { text-align: center; vertical-align: middle; }
|
||||
.kop-1, .kop-2 { font-size: 12px; font-weight: bold; color: #000; }
|
||||
.kop-3 { font-size: 14.5px; font-weight: bold; color: #000; margin: 2px 0; }
|
||||
.kop-4, .kop-5, .kop-6 { font-size: 8.5px; color: #000; }
|
||||
.kop-line { border-bottom: 2.5px solid #000; margin: 8px 0 14px; }
|
||||
.judul { text-align: center; margin: 12px 0 4px; }
|
||||
.judul h2 { font-size: 13px; margin: 0; text-transform: uppercase; letter-spacing: 1px; }
|
||||
.judul p { font-size: 9px; margin: 3px 0 0; color: #444; }
|
||||
@@ -39,17 +43,27 @@
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{-- Kop Sekolah --}}
|
||||
<div class="kop">
|
||||
@if (! empty($school['logo']) && file_exists(public_path('storage/'.$school['logo'])))
|
||||
{{-- Kop Surat (format resmi: logo kiri + teks tengah + garis tebal) --}}
|
||||
<table class="kop">
|
||||
<tr>
|
||||
<td class="kop-logo">
|
||||
@if (! empty($school['kop_logo']) && file_exists(public_path('storage/'.$school['kop_logo'])))
|
||||
<img src="{{ public_path('storage/'.$school['kop_logo']) }}" alt="logo">
|
||||
@elseif (! empty($school['logo']) && file_exists(public_path('storage/'.$school['logo'])))
|
||||
<img src="{{ public_path('storage/'.$school['logo']) }}" alt="logo">
|
||||
@endif
|
||||
<div>
|
||||
<div class="nama-sekolah">{{ $school['name'] }}</div>
|
||||
<div class="alamat">{{ $school['address'] }}</div>
|
||||
<div class="sub">Telp. {{ $school['phone'] }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="kop-text">
|
||||
<div class="kop-1">{{ $school['government'] }}</div>
|
||||
<div class="kop-2">{{ $school['agency'] }}</div>
|
||||
<div class="kop-3">{{ $school['full_name'] }}</div>
|
||||
<div class="kop-4">{{ $school['address_detail'] }}</div>
|
||||
<div class="kop-5">{{ $school['website_email'] }}</div>
|
||||
<div class="kop-6">{{ $school['postal'] }}</div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="kop-line"></div>
|
||||
|
||||
{{-- Judul --}}
|
||||
<div class="judul">
|
||||
|
||||
@@ -50,6 +50,57 @@
|
||||
|
||||
<hr class="border-gray-200">
|
||||
|
||||
{{-- ===== Kop Surat ===== --}}
|
||||
<div class="pt-2">
|
||||
<h3 class="text-sm font-bold text-gray-800 mb-1">Kop Surat (format resmi)</h3>
|
||||
<p class="text-xs text-gray-400 mb-4">Baris kop yang tampil di dokumen laporan — mengikuti format kop resmi sekolah.</p>
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Baris 1 (pemerintah)</label>
|
||||
<input type="text" name="school_government" value="{{ old('school_government', $settings->get('school_government')?->value ?? 'PEMERINTAH PROVINSI JAWA TIMUR') }}"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Baris 2 (dinas)</label>
|
||||
<input type="text" name="school_agency" value="{{ old('school_agency', $settings->get('school_agency')?->value ?? 'DINAS PENDIDIKAN') }}"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Baris 3 (nama resmi sekolah)</label>
|
||||
<input type="text" name="school_full_name" value="{{ old('school_full_name', $settings->get('school_full_name')?->value ?? '') }}"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Baris 4 (alamat & telp)</label>
|
||||
<input type="text" name="school_address_detail" value="{{ old('school_address_detail', $settings->get('school_address_detail')?->value ?? '') }}"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
<div class="md:col-span-2">
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Baris 5 (website & email)</label>
|
||||
<input type="text" name="school_website_email" value="{{ old('school_website_email', $settings->get('school_website_email')?->value ?? '') }}"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Baris 6 (kode pos)</label>
|
||||
<input type="text" name="school_postal" value="{{ old('school_postal', $settings->get('school_postal')?->value ?? '') }}"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-blue-500 focus:border-blue-500">
|
||||
</div>
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Logo Kop Surat</label>
|
||||
@if($settings->get('kop_logo')?->value)
|
||||
<div class="mb-2">
|
||||
<img src="{{ asset('storage/' . $settings->get('kop_logo')->value) }}" class="h-16 object-contain">
|
||||
</div>
|
||||
@endif
|
||||
<input type="file" name="kop_logo" accept="image/*"
|
||||
class="w-full px-3 py-2 border border-gray-300 rounded-lg text-sm file:mr-3 file:py-1 file:px-3 file:border-0 file:text-sm file:font-medium file:bg-blue-50 file:text-blue-700 hover:file:bg-blue-100">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr class="border-gray-200">
|
||||
|
||||
<div>
|
||||
<label class="block text-sm font-medium text-gray-700 mb-1">Background Halaman Login</label>
|
||||
@if($settings->get('login_background')?->value)
|
||||
|
||||
Reference in New Issue
Block a user