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'],
|
'kepala_sekolah_nip' => ['nullable', 'string', 'max:50'],
|
||||||
'bk_koordinator_name' => ['nullable', 'string', 'max:255'],
|
'bk_koordinator_name' => ['nullable', 'string', 'max:255'],
|
||||||
'wa_notification_template' => ['nullable', 'string', 'max:3000'],
|
'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) {
|
foreach ($validated as $key => $value) {
|
||||||
@@ -39,6 +46,11 @@ class SettingsController extends Controller
|
|||||||
Setting::setValue('school_logo', $path, 'school', 'Logo sekolah');
|
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')) {
|
if ($request->hasFile('login_background')) {
|
||||||
$path = $request->file('login_background')->store('school', 'public');
|
$path = $request->file('login_background')->store('school', 'public');
|
||||||
Setting::setValue('login_background', $path, 'school', 'Background halaman login');
|
Setting::setValue('login_background', $path, 'school', 'Background halaman login');
|
||||||
|
|||||||
@@ -72,6 +72,13 @@ class ViolationReportController extends Controller
|
|||||||
'address' => Setting::getValue('school_address', ''),
|
'address' => Setting::getValue('school_address', ''),
|
||||||
'phone' => Setting::getValue('school_phone', ''),
|
'phone' => Setting::getValue('school_phone', ''),
|
||||||
'logo' => Setting::getValue('school_logo', ''),
|
'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' => Setting::getValue('kepala_sekolah_name', ''),
|
||||||
'kepala_sekolah_nip' => Setting::getValue('kepala_sekolah_nip', ''),
|
'kepala_sekolah_nip' => Setting::getValue('kepala_sekolah_nip', ''),
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -6,11 +6,15 @@
|
|||||||
<style>
|
<style>
|
||||||
* { box-sizing: border-box; }
|
* { box-sizing: border-box; }
|
||||||
body { font-family: 'DejaVu Sans', sans-serif; font-size: 9px; color: #1a1a1a; margin: 0; padding: 0; }
|
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 { width: 100%; border-collapse: collapse; margin-bottom: 0; }
|
||||||
.kop img { width: 62px; height: 62px; object-fit: contain; }
|
.kop td { border: none; padding: 0; }
|
||||||
.kop .nama-sekolah { font-size: 15px; font-weight: bold; color: #1e3a8a; text-transform: uppercase; letter-spacing: 0.5px; }
|
.kop-logo { width: 96px; text-align: center; vertical-align: middle; }
|
||||||
.kop .alamat { font-size: 8px; color: #444; margin-top: 2px; }
|
.kop-logo img { height: 72px; width: auto; max-width: 88px; object-fit: contain; }
|
||||||
.kop .sub { font-size: 8px; color: #666; }
|
.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 { text-align: center; margin: 12px 0 4px; }
|
||||||
.judul h2 { font-size: 13px; margin: 0; text-transform: uppercase; letter-spacing: 1px; }
|
.judul h2 { font-size: 13px; margin: 0; text-transform: uppercase; letter-spacing: 1px; }
|
||||||
.judul p { font-size: 9px; margin: 3px 0 0; color: #444; }
|
.judul p { font-size: 9px; margin: 3px 0 0; color: #444; }
|
||||||
@@ -39,17 +43,27 @@
|
|||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
{{-- Kop Sekolah --}}
|
{{-- Kop Surat (format resmi: logo kiri + teks tengah + garis tebal) --}}
|
||||||
<div class="kop">
|
<table class="kop">
|
||||||
@if (! empty($school['logo']) && file_exists(public_path('storage/'.$school['logo'])))
|
<tr>
|
||||||
<img src="{{ public_path('storage/'.$school['logo']) }}" alt="logo">
|
<td class="kop-logo">
|
||||||
@endif
|
@if (! empty($school['kop_logo']) && file_exists(public_path('storage/'.$school['kop_logo'])))
|
||||||
<div>
|
<img src="{{ public_path('storage/'.$school['kop_logo']) }}" alt="logo">
|
||||||
<div class="nama-sekolah">{{ $school['name'] }}</div>
|
@elseif (! empty($school['logo']) && file_exists(public_path('storage/'.$school['logo'])))
|
||||||
<div class="alamat">{{ $school['address'] }}</div>
|
<img src="{{ public_path('storage/'.$school['logo']) }}" alt="logo">
|
||||||
<div class="sub">Telp. {{ $school['phone'] }}</div>
|
@endif
|
||||||
</div>
|
</td>
|
||||||
</div>
|
<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 --}}
|
{{-- Judul --}}
|
||||||
<div class="judul">
|
<div class="judul">
|
||||||
|
|||||||
@@ -50,6 +50,57 @@
|
|||||||
|
|
||||||
<hr class="border-gray-200">
|
<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>
|
<div>
|
||||||
<label class="block text-sm font-medium text-gray-700 mb-1">Background Halaman Login</label>
|
<label class="block text-sm font-medium text-gray-700 mb-1">Background Halaman Login</label>
|
||||||
@if($settings->get('login_background')?->value)
|
@if($settings->get('login_background')?->value)
|
||||||
|
|||||||
Reference in New Issue
Block a user