feat(career): stajyer transkripti ve resmi belgelerin admin ile stajyer panellerine entegrasyonu

- Stajı tamamlanan stajyerlerin repo ve defter tutarlılığı doğrulanarak akademik transkriptleri oluşturuldu
- Stajyer paneline resmi staj belgeleri showcase kartı, transkript sekmesi ve hızlı indirme aksiyonları eklendi
- Admin paneli listesine ve defter inceleme modalına A4/A5 defter, transkript ve repo butonları entegre edildi
- Filament InternApplicationResource tablosuna belge doğrulama ve yazdırma aksiyonları tanımlandı
- Doğrulama sayfası PDF çıktısı ve buton hover renkleri optimize edildi
This commit is contained in:
Ümit Tunç
2026-08-31 12:03:59 +03:00
parent 3747b4e44f
commit 1c002e4437
6 changed files with 510 additions and 29 deletions
@@ -137,6 +137,38 @@
</div>
</div>
<!-- Official Documents & Quick Exports Card -->
<div class="bg-slate-50 rounded-2xl p-5 border border-slate-200/50 space-y-3">
<h5 class="font-bold text-slate-700 text-xs uppercase tracking-wider flex items-center gap-1.5">
<i class="uil uil-file-download-alt text-emerald-600"></i>
<span>Resmi Belgeler & Çıktılar</span>
</h5>
<div class="space-y-2" id="ijm-documents-container">
<a href="#" id="ijm-btn-verify-cert" target="_blank" class="btn-doc-emerald w-full px-3 py-2 bg-emerald-600 hover:bg-emerald-700 text-white hover:text-white font-extrabold text-xs rounded-xl transition-all flex items-center justify-between shadow-sm">
<span class="flex items-center gap-1.5"><i class="uil uil-award"></i> Sertifika & Transkript</span>
<i class="uil uil-external-link-alt text-xs"></i>
</a>
<div class="grid grid-cols-2 gap-2">
<a href="#" id="ijm-btn-print-a4" target="_blank" class="btn-doc-slate px-3 py-2 bg-white hover:bg-slate-100 border border-slate-200 text-slate-700 hover:text-slate-900 font-bold text-xs rounded-xl transition-all flex items-center justify-center gap-1">
<i class="uil uil-print text-xs"></i> A4 Defter
</a>
<a href="#" id="ijm-btn-print-a5" target="_blank" class="btn-doc-slate px-3 py-2 bg-white hover:bg-slate-100 border border-slate-200 text-slate-700 hover:text-slate-900 font-bold text-xs rounded-xl transition-all flex items-center justify-center gap-1">
<i class="uil uil-print text-xs"></i> A5 Defter
</a>
</div>
<a href="#" id="ijm-btn-download-md" target="_blank" class="btn-doc-slate w-full px-3 py-2 bg-slate-100 hover:bg-slate-200 text-slate-700 hover:text-slate-900 font-bold text-xs rounded-xl transition-all flex items-center justify-center gap-1.5">
<i class="uil uil-arrow-down-tray"></i> Günlüğü İndir (.md)
</a>
<a href="#" id="ijm-btn-repo" target="_blank" class="hidden w-full px-3 py-2 bg-slate-900 hover:bg-black text-white hover:text-white font-bold text-xs rounded-xl transition-all items-center justify-center gap-1.5">
<i class="uil uil-github"></i> GitHub Reposu
</a>
</div>
</div>
</div>
<!-- Right Section: Carousel & Navigation (col-span-8) -->
@@ -198,7 +230,13 @@
</div>
<!-- Footer -->
<div class="px-6 py-4 bg-slate-50 border-t border-slate-100 flex items-center justify-end flex-shrink-0">
<div class="px-6 py-4 bg-slate-50 border-t border-slate-100 flex items-center justify-between flex-shrink-0">
<div class="flex items-center gap-2">
<a href="#" id="ijm-footer-verify" target="_blank" class="btn-doc-emerald px-4 py-2 bg-emerald-600 hover:bg-emerald-700 text-white hover:text-white font-bold rounded-xl text-xs transition-colors shadow-sm flex items-center gap-1.5">
<i class="uil uil-award"></i>
<span>Sertifika & Transkript Doğrula</span>
</a>
</div>
<button type="button" onclick="closeInternJournalModal()" class="px-5 py-2.5 bg-slate-800 hover:bg-slate-900 text-white font-bold rounded-xl text-xs transition-colors shadow-md cursor-pointer">Kapat</button>
</div>
</div>
@@ -217,6 +255,63 @@
border-color: #dbeafe;
color: #1e40af !important;
}
/* Prevent theme red text color on link buttons hover */
a.btn-doc-emerald, .btn-doc-emerald {
color: #ffffff !important;
}
a.btn-doc-emerald:hover, a.btn-doc-emerald:focus, .btn-doc-emerald:hover {
color: #ffffff !important;
background-color: #047857 !important;
text-decoration: none !important;
}
a.btn-doc-blue, .btn-doc-blue {
color: #1d4ed8 !important;
}
a.btn-doc-blue:hover, a.btn-doc-blue:focus, .btn-doc-blue:hover {
color: #1e40af !important;
background-color: #dbeafe !important;
text-decoration: none !important;
}
a.btn-doc-slate, .btn-doc-slate {
color: #475569 !important;
}
a.btn-doc-slate:hover, a.btn-doc-slate:focus, .btn-doc-slate:hover {
color: #0f172a !important;
background-color: #e2e8f0 !important;
text-decoration: none !important;
}
a.btn-doc-amber, .btn-doc-amber {
color: #b45309 !important;
}
a.btn-doc-amber:hover, a.btn-doc-amber:focus, .btn-doc-amber:hover {
color: #92400e !important;
background-color: #fef3c7 !important;
text-decoration: none !important;
}
a.btn-doc-green, .btn-doc-green {
color: #15803d !important;
}
a.btn-doc-green:hover, a.btn-doc-green:focus, .btn-doc-green:hover {
color: #166534 !important;
background-color: #dcfce7 !important;
text-decoration: none !important;
}
a.btn-doc-repo, .btn-doc-repo {
color: #2563eb !important;
}
a.btn-doc-repo:hover, a.btn-doc-repo:focus, .btn-doc-repo:hover {
color: #1d4ed8 !important;
text-decoration: underline !important;
}
a.btn-doc-md, .btn-doc-md {
color: #059669 !important;
}
a.btn-doc-md:hover, a.btn-doc-md:focus, .btn-doc-md:hover {
color: #047857 !important;
background-color: #d1fae5 !important;
text-decoration: none !important;
}
</style>
@endpush
@@ -318,6 +413,46 @@
updateSignatureUI('unit', data.intern.notebook_unit_signed, data.intern.notebook_unit_name);
updateSignatureUI('approved', data.intern.notebook_approved, null);
// Setup Official Document URLs
const certCode = data.intern.certificate_code;
const certBtn = document.getElementById('ijm-btn-verify-cert');
const footerCertBtn = document.getElementById('ijm-footer-verify');
if (certCode) {
const verifyUrl = `/staj-dogrulama/${certCode}`;
if (certBtn) {
certBtn.href = verifyUrl;
certBtn.classList.remove('hidden');
}
if (footerCertBtn) {
footerCertBtn.href = verifyUrl;
footerCertBtn.classList.remove('hidden');
}
} else {
if (certBtn) certBtn.classList.add('hidden');
if (footerCertBtn) footerCertBtn.classList.add('hidden');
}
const printA4Btn = document.getElementById('ijm-btn-print-a4');
if (printA4Btn) printA4Btn.href = `/stajyer/defteri-yazdir?size=a4&intern_id=${internId}`;
const printA5Btn = document.getElementById('ijm-btn-print-a5');
if (printA5Btn) printA5Btn.href = `/stajyer/defteri-yazdir?size=a5&intern_id=${internId}`;
const mdBtn = document.getElementById('ijm-btn-download-md');
if (mdBtn) mdBtn.href = `/stajyer/gunluk-indir?intern_id=${internId}`;
const repoBtn = document.getElementById('ijm-btn-repo');
if (repoBtn) {
if (data.intern.github_repo) {
repoBtn.href = data.intern.github_repo;
repoBtn.classList.remove('hidden');
repoBtn.classList.add('flex');
} else {
repoBtn.classList.add('hidden');
repoBtn.classList.remove('flex');
}
}
// Setup carousel slide data
journalEntries = data.entries;