{{-- Görev quick-view (drawer içeriği — layout'suz partial) --}} @php $statusMeta = $task->statusMeta(); $priorityMeta = $task->priorityMeta(); $isOpen = in_array($task->status, ['pending', 'in_progress'], true); $isAwaiting = $task->status === \App\Models\Task\Task::STATUS_AWAITING_APPROVAL; $isArchived = $task->isArchived(); $canArchive = $canAssign || $task->created_by === auth()->id(); $canApprove = $canApprove ?? false; $checklist = $task->checklistItems; $checklistDone = $checklist->whereNotNull('done_at')->count(); $uid = 'tqv' . $task->id; @endphp {{-- Görev başlığı gerçek bir kolon → ortak tıkla-düzenle başlık kalıbı --}} {{ $statusMeta['label'] }} {{ $priorityMeta['label'] }} Öncelik @if($task->is_auto) Otomatik Görev @endif @if($isArchived) Arşivde @endif due_date) hidden @endif> {{ $task->dueLabel('d M Y') }} @if(($canTouch && $isOpen && ! $isArchived) || $canArchive) @if($isArchived) @if($canArchive) @endif @else @if($canTouch && $isOpen) @endif @if($canArchive) @endif @endif @endif
{{-- ── ONAY BANDI: atanan tamamladı, atayanın onayı bekleniyor ── --}} @if($isAwaiting)
Tamamlama onayı bekleniyor {{ $task->submitter?->full_name ?? 'Atanan kişi' }}, {{ $task->submitted_at?->translatedFormat('d M Y H:i') ?? '' }} tarihinde görevi tamamlandı olarak işaretledi. {{ $canApprove ? 'Kontrol edip onaylayın veya reddedin.' : 'Görevi atayan kişinin onayı bekleniyor.' }} @if($canApprove)
@endif
@endif
@foreach(\App\Models\Task\Task::STATUSES as $key => $meta) @endforeach
due_date ? '' : 'disabled' }}>
@if($canAssign) @endif
@forelse($task->assignees as $user)
{{ $user->initials }} {{ $user->full_name }}
@empty Atanan yok @endforelse
@if($canAssign) @endif
{{ $task->is_auto ? 'Sistem (otomatik)' : ($task->creator?->full_name ?? '—') }}
@if($task->requires_approval) Atayanın onayı gerekir @else Onaysız tamamlanabilir @endif
{{ $task->created_at->translatedFormat('d M Y, H:i') }}
@if($task->submitted_at && $isAwaiting)
{{ $task->submitter?->full_name ?? '—' }} · {{ $task->submitted_at->translatedFormat('d M Y, H:i') }}
@endif @if($task->completed_at)
{{ $task->completed_at->translatedFormat('d M Y, H:i') }} · {{ $task->completer?->full_name ?? '—' }}
@endif @if($task->approved_at)
{{ $task->approver?->full_name ?? '—' }} · {{ $task->approved_at->translatedFormat('d M Y, H:i') }}
@endif
@if($task->is_auto) {{-- Otomatik görev açıklaması şablondan gelir (zengin metin olabilir; değerler üretimde escape edilir) --}}
{!! $task->description ?: '—' !!}
@elseif($canTouch) @else

{{ $task->description ?: '—' }}

@endif
{{-- ── Kontrol Listesi (checklist) ── --}}
isEmpty()) hidden @endif>
@foreach($checklist as $item)
{{ $item->title }} @if($item->isDone()) {{ $item->doneBy?->full_name ?? '—' }} · {{ $item->done_at->translatedFormat('d M Y, H:i') }} @endif
@if($canTouch) @endif
@endforeach
@if($canTouch && ! $isArchived)
@elseif($checklist->isEmpty())

Kontrol listesi yok.

@endif
@if($task->relations->isNotEmpty())
@foreach($task->relations as $rel)
quickViewUrl()) onclick="openQuickView('{{ $rel->quickViewUrl() }}')" @endif>
{{ $rel->label() }} {{ $rel->meta()['label'] }}{{ $rel->is_primary ? ' · Ana kayıt' : '' }}
@endforeach
@else

İlişkili kayıt yok.

@endif
{{-- ── Zaman Tüneli: notlar, güncellemeler + sistem olayları ── --}} @php $timeline = collect(); foreach ($task->comments as $c) { $timeline->push(['type' => 'note', 'time' => $c->created_at, 'comment' => $c]); } $timeline->push([ 'type' => 'system', 'time' => $task->created_at, 'icon' => $task->is_auto ? 'fa-robot' : 'fa-plus', 'color' => '#4f46e5', 'text' => $task->is_auto ? 'Görev sistem tarafından otomatik oluşturuldu' : 'Görev ' . ($task->creator?->full_name ?? '—') . ' tarafından oluşturuldu', ]); if ($task->submitted_at) { $timeline->push([ 'type' => 'system', 'time' => $task->submitted_at, 'icon' => 'fa-user-check', 'color' => '#0ea5e9', 'text' => ($task->submitter?->full_name ?? '—') . ' görevi tamamlandı olarak işaretledi (onay bekliyor)', ]); } if ($task->completed_at) { $timeline->push([ 'type' => 'system', 'time' => $task->completed_at, 'icon' => 'fa-check', 'color' => '#16a34a', 'text' => 'Görev ' . ($task->completer?->full_name ?? '—') . ' tarafından tamamlandı' . ($task->approved_at ? ' — ' . ($task->approver?->full_name ?? '—') . ' onayladı' : ''), ]); } if ($task->archived_at) { $timeline->push([ 'type' => 'system', 'time' => $task->archived_at, 'icon' => 'fa-box-archive', 'color' => '#64748b', 'text' => 'Görev ' . ($task->archiver?->full_name ?? '—') . ' tarafından arşive alındı', ]); } $timeline = $timeline->sortByDesc('time')->values(); @endphp
@if($canTouch)
{{ auth()->user()->initials }}
{{-- Seçilen dosya + referans chip'leri --}}
{{-- Modül referansı seçici (chat'teki gibi arama) --}}
Ctrl + Enter ile hızlı kaydet
@endif
@foreach($timeline as $item) @if($item['type'] === 'note') @php $c = $item['comment']; @endphp
{{ $c->user?->initials ?? '?' }}
{{ $c->user?->full_name ?? 'Silinmiş kullanıcı' }} {{ $c->created_at->translatedFormat('d M Y, H:i') }} @if($c->user_id === auth()->id() || $canAssign) @endif
@if($c->body !== '' && $c->body !== null)

{{ $c->body }}

@endif @if($c->attachments->isNotEmpty())
@foreach($c->attachments as $a) @if($a->kind === 'image') {{ $a->original_name }} @else {{ $a->original_name }} {{ $a->human_size }} @endif @endforeach
@endif @if(is_array($c->links) && count($c->links)) @endif
@else
{{ $item['text'] }} {{ $item['time']->translatedFormat('d M Y, H:i') }}
@endif @endforeach
@if($task->is_auto && $task->context)
@if($triggerDef = \App\Services\Task\TaskTriggerCatalog::get($task->trigger_key ?? ''))
Tetikleyici{{ $triggerDef['label'] }}
@endif @foreach($task->context as $key => $value) @if(is_scalar($value) && $value !== '' && $value !== null)
{{ \Illuminate\Support\Str::of($key)->replace('_', ' ')->title() }}{{ $value }}
@endif @endforeach
@endif