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:
@@ -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;
|
||||
|
||||
|
||||
@@ -119,6 +119,69 @@
|
||||
}
|
||||
@endphp
|
||||
|
||||
<!-- Staj Bitirme Belgeleri & Transkript Showcase Card -->
|
||||
@if($intern->certificate_code && ($intern->notebook_approved || $intern->status === 'accepted'))
|
||||
<div class="bg-gradient-to-br from-slate-900 via-slate-800 to-indigo-950 rounded-3xl p-6 md:p-8 shadow-2xl text-white mb-8 relative overflow-hidden border border-slate-700/50">
|
||||
<!-- Glow accents -->
|
||||
<div class="absolute -right-20 -top-20 w-80 h-80 bg-blue-500/20 rounded-full blur-3xl pointer-events-none"></div>
|
||||
<div class="absolute -left-20 -bottom-20 w-80 h-80 bg-emerald-500/20 rounded-full blur-3xl pointer-events-none"></div>
|
||||
|
||||
<div class="relative z-10 flex flex-col lg:flex-row justify-between items-start lg:items-center gap-6">
|
||||
<div class="space-y-3 max-w-2xl">
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<span class="px-3 py-1 rounded-full bg-emerald-500/20 border border-emerald-400/40 text-emerald-300 text-xs font-extrabold uppercase tracking-wider flex items-center gap-1.5">
|
||||
<i class="uil uil-shield-check text-sm"></i> Resmi Onaylı Staj Belgesi
|
||||
</span>
|
||||
@if($intern->notebook_supervisor_signed)
|
||||
<span class="px-3 py-1 rounded-full bg-blue-500/20 border border-blue-400/40 text-blue-300 text-xs font-extrabold uppercase tracking-wider">
|
||||
Sorumlu Onayladı: {{ $intern->notebook_supervisor_name ?: 'Alperen Trunç' }}
|
||||
</span>
|
||||
@endif
|
||||
@if($intern->notebook_approved)
|
||||
<span class="px-3 py-1 rounded-full bg-purple-500/20 border border-purple-400/40 text-purple-300 text-xs font-extrabold uppercase tracking-wider">
|
||||
Defter Genel Onaylı
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<h2 class="text-2xl md:text-3xl font-extrabold text-white tracking-tight">
|
||||
Staj Bitirme Sertifikası & Akademik Transkriptiniz Hazır!
|
||||
</h2>
|
||||
<p class="text-sm text-slate-300 leading-relaxed">
|
||||
Trunçgil Teknoloji bünyesinde başarıyla tamamladığınız staj dönemi için resmi staj bitirme sertifikanız, detaylı akademik performans transkriptiniz ve onaylı staj defteriniz sistemde aktif edilmiştir.
|
||||
</p>
|
||||
<div class="text-xs text-slate-400 font-mono flex items-center gap-2">
|
||||
<span>Doğrulama No:</span>
|
||||
<strong class="text-emerald-400 bg-slate-800/90 px-3 py-1 rounded-lg border border-slate-700 font-bold tracking-wider">{{ $intern->certificate_code }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Action Buttons -->
|
||||
<div class="flex flex-col sm:flex-row lg:flex-col gap-2.5 w-full lg:w-auto flex-shrink-0">
|
||||
<a href="{{ route('internship.verify', $intern->certificate_code) }}" target="_blank" class="px-6 py-3.5 bg-gradient-to-r from-emerald-500 to-teal-500 hover:from-emerald-600 hover:to-teal-600 text-white font-extrabold text-sm rounded-2xl transition-all shadow-lg shadow-emerald-500/20 flex items-center justify-center gap-2 text-center">
|
||||
<i class="uil uil-award text-lg"></i>
|
||||
<span>Sertifika & Transkripti Aç</span>
|
||||
</a>
|
||||
|
||||
<div class="grid grid-cols-2 gap-2">
|
||||
<a href="{{ route('intern.print-journal') }}?size=a4" target="_blank" class="px-3.5 py-2.5 bg-white/10 hover:bg-white/20 text-white font-bold text-xs rounded-xl transition-all flex items-center justify-center gap-1.5 border border-white/10 text-center">
|
||||
<i class="uil uil-print"></i> A4 Defter
|
||||
</a>
|
||||
<a href="{{ route('intern.print-journal') }}?size=a5" target="_blank" class="px-3.5 py-2.5 bg-white/10 hover:bg-white/20 text-white font-bold text-xs rounded-xl transition-all flex items-center justify-center gap-1.5 border border-white/10 text-center">
|
||||
<i class="uil uil-print"></i> A5 Defter
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@if($intern->github_repo)
|
||||
<a href="{{ route('intern.download-journal') }}" class="px-4 py-2.5 bg-blue-600/80 hover:bg-blue-600 text-white font-bold text-xs rounded-xl transition-all flex items-center justify-center gap-1.5 border border-blue-500/30 text-center">
|
||||
<i class="uil uil-arrow-down-tray"></i> Günlüğü İndir (.md)
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<!-- Stage Timeline Card -->
|
||||
<div class="bg-white rounded-3xl p-6 md:p-8 shadow-xl border border-slate-100/50 mb-8">
|
||||
<h3 class="font-bold text-slate-800 text-lg mb-6 pb-2 border-b border-slate-100 flex items-center gap-2">
|
||||
@@ -394,6 +457,22 @@
|
||||
<span class="block text-xs text-slate-400 font-semibold mt-0.5">Sitede yayınlanacak bloglar</span>
|
||||
</div>
|
||||
</button>
|
||||
|
||||
<!-- Menu Item 5: Sertifika & Transkript -->
|
||||
<button type="button" role="tab" aria-selected="false" data-tab-target="transcript" class="tab-btn w-full flex items-center gap-4 p-3 rounded-2xl text-left transition-all border border-transparent">
|
||||
<div class="w-10 h-10 rounded-xl bg-slate-50 text-slate-500 flex items-center justify-center text-xl flex-shrink-0 tab-icon">
|
||||
<i class="uil uil-award"></i>
|
||||
</div>
|
||||
<div class="flex-grow">
|
||||
<div class="flex items-center justify-between">
|
||||
<span class="block text-sm font-extrabold text-slate-800">Sertifika & Transkript</span>
|
||||
@if($intern->certificate_code && ($intern->notebook_approved || $intern->status === 'accepted'))
|
||||
<span class="text-[10px] font-extrabold px-2 py-0.5 rounded-full bg-emerald-100 text-emerald-700">Hazır</span>
|
||||
@endif
|
||||
</div>
|
||||
<span class="block text-xs text-slate-400 font-semibold mt-0.5">Akademik rapor & onay</span>
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -644,9 +723,73 @@
|
||||
<i class="uil uil-hourglass"></i>
|
||||
<span>Bekleniyor</span>
|
||||
</button>
|
||||
@endif
|
||||
@if($intern->certificate_code && ($intern->notebook_approved || $intern->status === 'accepted'))
|
||||
<!-- Certificate & Transcript Document Card -->
|
||||
<div class="p-5 rounded-2xl border border-emerald-200 bg-gradient-to-r from-emerald-50/70 to-teal-50/50 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:border-emerald-300 transition-all">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-12 h-12 rounded-xl bg-emerald-600 text-white flex items-center justify-center text-2xl flex-shrink-0 shadow-md shadow-emerald-600/20">
|
||||
<i class="uil uil-award"></i>
|
||||
</div>
|
||||
<div>
|
||||
<div class="flex items-center gap-2">
|
||||
<h4 class="font-bold text-slate-800 text-base">Staj Bitirme Sertifikası & Akademik Transkript</h4>
|
||||
<span class="px-2 py-0.5 rounded-md bg-emerald-100 text-emerald-800 text-[10px] font-extrabold uppercase">Onaylı</span>
|
||||
</div>
|
||||
<p class="text-xs text-slate-500 mt-0.5">Dijital imzalı staj sertifikanız, akademik transkriptiniz ve performans değerlendirme raporunuz.</p>
|
||||
<span class="text-[11px] font-mono text-emerald-700 font-bold mt-1 block">Kod: {{ $intern->certificate_code }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 w-full sm:w-auto">
|
||||
<a href="{{ route('internship.verify', $intern->certificate_code) }}" target="_blank" class="w-full sm:w-auto px-5 py-2.5 bg-emerald-600 hover:bg-emerald-700 text-white font-bold rounded-xl text-sm transition-all flex items-center justify-center gap-2 shadow-md shadow-emerald-600/10">
|
||||
<i class="uil uil-external-link-alt"></i>
|
||||
<span>Görüntüle / Doğrula</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Approved Notebook Card -->
|
||||
<div class="p-5 rounded-2xl border border-slate-100 bg-slate-50/50 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:border-slate-200 transition-all">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-12 h-12 rounded-xl bg-blue-50 text-blue-600 flex items-center justify-center text-2xl flex-shrink-0">
|
||||
<i class="uil uil-book-alt"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h4 class="font-bold text-slate-800 text-base">Onaylı Staj Defteri Raporu</h4>
|
||||
<p class="text-xs text-slate-400 mt-0.5">Sorumlu ve birim imzalarıyla onaylanmış günlük staj defteri çıktısı.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex items-center gap-2 w-full sm:w-auto">
|
||||
<a href="{{ route('intern.print-journal') }}?size=a4" target="_blank" class="px-4 py-2.5 bg-blue-600 hover:bg-blue-700 text-white font-bold rounded-xl text-xs transition-all flex items-center justify-center gap-1.5 shadow-sm">
|
||||
<i class="uil uil-print"></i>
|
||||
<span>A4 Yazdır</span>
|
||||
</a>
|
||||
<a href="{{ route('intern.print-journal') }}?size=a5" target="_blank" class="px-4 py-2.5 bg-slate-800 hover:bg-slate-900 text-white font-bold rounded-xl text-xs transition-all flex items-center justify-center gap-1.5 shadow-sm">
|
||||
<i class="uil uil-print"></i>
|
||||
<span>A5 Yazdır</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if($intern->github_repo)
|
||||
<!-- Markdown Journal Download Card -->
|
||||
<div class="p-5 rounded-2xl border border-slate-100 bg-slate-50/50 flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 hover:border-slate-200 transition-all">
|
||||
<div class="flex items-center gap-4">
|
||||
<div class="w-12 h-12 rounded-xl bg-purple-50 text-purple-600 flex items-center justify-center text-2xl flex-shrink-0">
|
||||
<i class="uil uil-file-download-alt"></i>
|
||||
</div>
|
||||
<div>
|
||||
<h4 class="font-bold text-slate-800 text-base">Staj Günlüğü Markdown Dosyası (.md)</h4>
|
||||
<p class="text-xs text-slate-400 mt-0.5">GitHub deponuzdaki commitler ve günlük defter kayıtlarınızla derlenmiş markdown çıktısı.</p>
|
||||
</div>
|
||||
</div>
|
||||
<a href="{{ route('intern.download-journal') }}" class="w-full sm:w-auto px-5 py-2.5 bg-purple-600 hover:bg-purple-700 text-white font-bold rounded-xl text-sm transition-all flex items-center justify-center gap-2 shadow-sm">
|
||||
<i class="uil uil-arrow-down-tray"></i>
|
||||
<span>İndir (.md)</span>
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1018,6 +1161,82 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Panel 5: Sertifika & Akademik Transkript -->
|
||||
<div id="transcript-panel" class="tab-panel hidden space-y-6">
|
||||
<div class="bg-white rounded-3xl p-6 md:p-8 shadow-xl border border-slate-100/50">
|
||||
|
||||
<div class="flex flex-col sm:flex-row justify-between items-start sm:items-center gap-4 mb-6 pb-4 border-b border-slate-100">
|
||||
<div>
|
||||
<h3 class="font-bold text-slate-800 text-lg flex items-center gap-2">
|
||||
<i class="uil uil-award text-emerald-600 text-xl"></i>
|
||||
<span>Staj Bitirme Sertifikası & Akademik Transkript</span>
|
||||
</h3>
|
||||
<p class="text-xs text-slate-400 mt-0.5">Trunçgil Teknoloji staj programı kapsamında elde ettiğiniz kazanımlar, teknik değerlendirme ve resmi transkriptiniz.</p>
|
||||
</div>
|
||||
@if($intern->certificate_code)
|
||||
<a href="{{ route('internship.verify', $intern->certificate_code) }}" target="_blank" class="px-5 py-2.5 bg-emerald-600 hover:bg-emerald-700 text-white font-extrabold text-xs rounded-xl transition-all shadow-md shadow-emerald-600/20 flex items-center justify-center gap-1.5 whitespace-nowrap">
|
||||
<i class="uil uil-external-link-alt"></i>
|
||||
<span>Doğrulama Sayfasını Aç</span>
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<!-- Official Verification Status Header -->
|
||||
<div class="bg-gradient-to-r from-slate-900 to-indigo-950 text-white rounded-2xl p-6 mb-6 shadow-md relative overflow-hidden">
|
||||
<div class="relative z-10 flex flex-col md:flex-row justify-between items-start md:items-center gap-6">
|
||||
<div>
|
||||
<div class="flex flex-wrap items-center gap-2 mb-2">
|
||||
<span class="px-3 py-1 bg-emerald-500/20 border border-emerald-400/30 text-emerald-300 text-[10px] font-extrabold uppercase rounded-full tracking-wider flex items-center gap-1">
|
||||
<i class="uil uil-check-circle"></i> Onaylı Belge
|
||||
</span>
|
||||
@if($intern->notebook_supervisor_signed)
|
||||
<span class="px-3 py-1 bg-blue-500/20 border border-blue-400/30 text-blue-300 text-[10px] font-extrabold uppercase rounded-full tracking-wider">
|
||||
Sorumlu: {{ $intern->notebook_supervisor_name ?: 'Alperen Trunç' }}
|
||||
</span>
|
||||
@endif
|
||||
</div>
|
||||
<h4 class="text-lg font-extrabold text-white">{{ $intern->name }}</h4>
|
||||
<p class="text-xs text-slate-300 mt-0.5">{{ \Carbon\Carbon::parse($intern->internship_start_date)->format('d.m.Y') }} - {{ \Carbon\Carbon::parse($intern->internship_end_date)->format('d.m.Y') }} ({{ $intern->internship_total_days }} İş Günü)</p>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col items-start md:items-end">
|
||||
<span class="text-[10px] text-slate-400 font-extrabold uppercase tracking-wider block">Güvenli Doğrulama Kodu</span>
|
||||
<span class="text-sm font-mono font-extrabold text-emerald-400 bg-slate-800/90 px-3 py-1 rounded-lg border border-slate-700 mt-1">{{ $intern->certificate_code }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Quick Export Buttons Bar -->
|
||||
<div class="p-4 rounded-2xl bg-slate-50 border border-slate-100 flex flex-wrap gap-2.5 items-center justify-between mb-6">
|
||||
<div class="text-xs font-bold text-slate-600 flex items-center gap-1.5">
|
||||
<i class="uil uil-print text-base text-blue-600"></i>
|
||||
<span>Hızlı Belge ve Rapor Çıktıları:</span>
|
||||
</div>
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<a href="{{ route('intern.print-journal') }}?size=a4" target="_blank" class="px-3 py-1.5 bg-white hover:bg-slate-100 border border-slate-200 text-slate-700 font-bold text-xs rounded-xl transition-all flex items-center gap-1">
|
||||
<i class="uil uil-print"></i> A4 Defter
|
||||
</a>
|
||||
<a href="{{ route('intern.print-journal') }}?size=a5" target="_blank" class="px-3 py-1.5 bg-white hover:bg-slate-100 border border-slate-200 text-slate-700 font-bold text-xs rounded-xl transition-all flex items-center gap-1">
|
||||
<i class="uil uil-print"></i> A5 Defter
|
||||
</a>
|
||||
@if($intern->github_repo)
|
||||
<a href="{{ route('intern.download-journal') }}" class="px-3 py-1.5 bg-purple-50 hover:bg-purple-100 text-purple-700 border border-purple-200 font-bold text-xs rounded-xl transition-all flex items-center gap-1">
|
||||
<i class="uil uil-arrow-down-tray"></i> Markdown (.md)
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rendered Transcript Markdown Content -->
|
||||
<div class="transcript-markdown-wrapper p-6 md:p-8 rounded-2xl bg-white border border-slate-200/80 shadow-inner">
|
||||
<div class="prose max-w-none text-slate-700 leading-relaxed">
|
||||
{!! new \Illuminate\Support\HtmlString(\Illuminate\Support\Str::markdown($intern->transcript_markdown ?? '')) !!}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
@@ -1924,9 +2143,86 @@
|
||||
.no-scrollbar::-webkit-scrollbar {
|
||||
display: none;
|
||||
}
|
||||
.no-scrollbar {
|
||||
-ms-overflow-style: none;
|
||||
scrollbar-width: none;
|
||||
.transcript-markdown-wrapper table {
|
||||
width: 100%;
|
||||
margin-top: 0.75rem;
|
||||
margin-bottom: 1.25rem;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
.transcript-markdown-wrapper th {
|
||||
background-color: #f8fafc;
|
||||
border: 1px solid #e2e8f0;
|
||||
padding: 8px 12px;
|
||||
font-size: 12px;
|
||||
font-weight: 700;
|
||||
color: #1e293b;
|
||||
text-align: left;
|
||||
}
|
||||
.transcript-markdown-wrapper td {
|
||||
border: 1px solid #e2e8f0;
|
||||
padding: 8px 12px;
|
||||
font-size: 13px;
|
||||
color: #334155;
|
||||
}
|
||||
.transcript-markdown-wrapper h3 {
|
||||
font-size: 16px;
|
||||
font-weight: 800;
|
||||
color: #0f172a;
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0.75rem;
|
||||
padding-bottom: 0.5rem;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
}
|
||||
.transcript-markdown-wrapper h4 {
|
||||
font-size: 14px;
|
||||
font-weight: 700;
|
||||
color: #1e293b;
|
||||
margin-top: 1.25rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.transcript-markdown-wrapper blockquote {
|
||||
border-left: 4px solid #f97316;
|
||||
padding-left: 1rem;
|
||||
font-style: italic;
|
||||
color: #475569;
|
||||
background: #fff7ed;
|
||||
padding: 12px;
|
||||
border-radius: 0 12px 12px 0;
|
||||
margin: 1rem 0;
|
||||
}
|
||||
|
||||
/* 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-purple, .btn-doc-purple {
|
||||
color: #ffffff !important;
|
||||
}
|
||||
a.btn-doc-purple:hover, a.btn-doc-purple:focus, .btn-doc-purple:hover {
|
||||
color: #ffffff !important;
|
||||
background-color: #7e22ce !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@@ -89,22 +89,37 @@
|
||||
|
||||
<!-- Documents -->
|
||||
<td class="py-4 space-y-1">
|
||||
<div class="flex flex-wrap gap-1">
|
||||
<div class="flex flex-wrap gap-1.5 max-w-[220px]">
|
||||
@if($intern->certificate_code && ($intern->notebook_approved || $intern->status === 'accepted'))
|
||||
<a href="{{ route('internship.verify', $intern->certificate_code) }}" target="_blank" class="btn-doc-emerald px-2 py-1 bg-emerald-600 hover:bg-emerald-700 text-white hover:text-white font-extrabold text-[10px] rounded-lg transition-all flex items-center gap-1 shadow-sm" title="Sertifika ve Akademik Transkript Doğrulama">
|
||||
<i class="uil uil-award text-xs"></i> Sertifika & Transkript
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if($intern->internship_total_days)
|
||||
<a href="{{ route('intern.print-journal') }}?size=a4&intern_id={{ $intern->id }}" target="_blank" class="btn-doc-blue px-2 py-1 bg-blue-50 hover:bg-blue-100 text-blue-700 hover:text-blue-800 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1" title="A4 Staj Defterini Yazdır">
|
||||
<i class="uil uil-print text-xs"></i> A4 Defter
|
||||
</a>
|
||||
<a href="{{ route('intern.print-journal') }}?size=a5&intern_id={{ $intern->id }}" target="_blank" class="btn-doc-slate px-2 py-1 bg-slate-100 hover:bg-slate-200 text-slate-700 hover:text-slate-900 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1" title="A5 Staj Defterini Yazdır">
|
||||
<i class="uil uil-print text-xs"></i> A5 Defter
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if($intern->cv_path)
|
||||
<a href="{{ Storage::disk('public')->url($intern->cv_path) }}" target="_blank" class="px-2 py-1 bg-slate-100 hover:bg-slate-200 text-slate-600 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1">
|
||||
<i class="uil uil-file-alt"></i> CV
|
||||
<a href="{{ Storage::disk('public')->url($intern->cv_path) }}" target="_blank" class="btn-doc-slate px-2 py-1 bg-slate-100 hover:bg-slate-200 text-slate-600 hover:text-slate-800 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1" title="CV İndir">
|
||||
<i class="uil uil-file-alt text-xs"></i> CV
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if($intern->to_be_signed_internship_form_path)
|
||||
<a href="{{ Storage::disk('public')->url($intern->to_be_signed_internship_form_path) }}" target="_blank" class="px-2 py-1 bg-blue-50 hover:bg-blue-100 text-blue-600 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1">
|
||||
<i class="uil uil-file-upload"></i> İmzalanacak Form
|
||||
<a href="{{ Storage::disk('public')->url($intern->to_be_signed_internship_form_path) }}" target="_blank" class="btn-doc-amber px-2 py-1 bg-amber-50 hover:bg-amber-100 text-amber-700 hover:text-amber-800 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1" title="Stajyerin Yüklediği İmzalanacak Form">
|
||||
<i class="uil uil-file-upload text-xs"></i> Başvuru Formu
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if($intern->signed_internship_form_path)
|
||||
<a href="{{ Storage::disk('public')->url($intern->signed_internship_form_path) }}" target="_blank" class="px-2 py-1 bg-green-50 hover:bg-green-100 text-green-600 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1">
|
||||
<i class="uil uil-file-check-alt"></i> İmzalı Form
|
||||
<a href="{{ Storage::disk('public')->url($intern->signed_internship_form_path) }}" target="_blank" class="btn-doc-green px-2 py-1 bg-green-50 hover:bg-green-100 text-green-700 hover:text-green-800 font-bold text-[10px] rounded-lg transition-all flex items-center gap-1" title="Kurum Tarafından İmzalanmış Staj Formu">
|
||||
<i class="uil uil-file-check-alt text-xs"></i> İmzalı Form
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
@@ -114,11 +129,11 @@
|
||||
<td class="py-4">
|
||||
@if($intern->github_repo)
|
||||
<div class="flex flex-col gap-1">
|
||||
<a href="{{ $intern->github_repo }}" target="_blank" class="text-blue-600 hover:text-blue-800 font-extrabold text-xs inline-flex items-center gap-1">
|
||||
<a href="{{ $intern->github_repo }}" target="_blank" class="btn-doc-repo text-blue-600 hover:text-blue-800 font-extrabold text-xs inline-flex items-center gap-1">
|
||||
<i class="uil uil-github"></i> Depoyu Aç
|
||||
</a>
|
||||
<!-- If they have repo, we can fetch their journal commits or trigger the controller download markdown -->
|
||||
<a href="{{ route('intern.download-journal') }}?intern_id={{ $intern->id }}" class="px-2 py-1 bg-emerald-50 hover:bg-emerald-100 text-emerald-600 font-bold text-[10px] rounded-lg transition-all flex items-center justify-center gap-1 w-max">
|
||||
<a href="{{ route('intern.download-journal') }}?intern_id={{ $intern->id }}" class="btn-doc-md px-2 py-1 bg-emerald-50 hover:bg-emerald-100 text-emerald-600 hover:text-emerald-700 font-bold text-[10px] rounded-lg transition-all flex items-center justify-center gap-1 w-max">
|
||||
<i class="uil uil-arrow-down-tray"></i> Günlüğü İndir (.md)
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
@section('content')
|
||||
<link href="https://fonts.googleapis.com/css2?family=Cinzel:wght@500;700;800;900&family=Inter:wght@300;400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,700;1,400&display=swap" rel="stylesheet">
|
||||
|
||||
@if($application->status === 'accepted' && $application->notebook_approved)
|
||||
@if($application->status === 'accepted' && ($application->notebook_approved || $application->notebook_supervisor_signed || !empty($application->transcript_markdown)))
|
||||
<div class="bg-slate-100 py-12 no-print">
|
||||
<div class="container max-w-6xl mx-auto px-4">
|
||||
<!-- Verification Banner (e-Devlet Style) -->
|
||||
@@ -17,11 +17,18 @@
|
||||
<span class="text-slate-600 ml-1">Bu staj sertifikası ve transkripti, Trunçgil Teknopark sistemi üzerinden dijital olarak imzalanıp onaylanmıştır.</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-shrink-0">
|
||||
<div class="flex-shrink-0 flex items-center gap-2">
|
||||
<!-- Print Journal Buttons -->
|
||||
<a href="{{ route('intern.print-journal') }}?size=a4&intern_id={{ $application->id }}" target="_blank" class="px-3.5 py-2 bg-white hover:bg-slate-50 text-slate-700 border border-slate-200 text-xs font-bold rounded-lg transition-all shadow-sm flex items-center gap-1.5 whitespace-nowrap">
|
||||
<i class="uil uil-print text-sm"></i>
|
||||
<span>A4 Defter</span>
|
||||
</a>
|
||||
<!-- PDF Download Button -->
|
||||
<button onclick="downloadPDF()" id="pdf-btn" class="px-4 py-2 bg-orange-600 hover:bg-orange-700 text-white text-sm font-bold rounded-lg transition-all shadow-sm flex items-center gap-1.5 whitespace-nowrap">
|
||||
<button onclick="downloadPDF()" id="pdf-btn" class="px-4 py-2 bg-orange-600 hover:bg-orange-700 text-white text-sm font-bold rounded-lg transition-all shadow-sm flex items-center gap-1.5 whitespace-nowrap cursor-pointer">
|
||||
<i class="uil uil-file-download text-base" id="pdf-icon"></i>
|
||||
<span class="spinner-border spinner-border-sm hidden animate-spin w-3.5 h-3.5 border-2 border-white border-t-transparent rounded-full" id="pdf-spinner" role="status"></span>
|
||||
<span id="pdf-btn-text">PDF Olarak İndir</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -261,6 +268,11 @@
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
|
||||
<style>
|
||||
/* Prevent red text on button hover */
|
||||
.no-print a:hover, .no-print a:focus {
|
||||
color: inherit !important;
|
||||
text-decoration: none !important;
|
||||
}
|
||||
:root {
|
||||
/* Global scale factor for transcript page fonts. Adjust this easily (e.g. 1.0, 1.10, 1.20) */
|
||||
--transcript-font-scale: 1.30;
|
||||
|
||||
Reference in New Issue
Block a user