@extends('layouts.master') @section('title') {{ __('Comments') }} — {{ $requestItem->document_name }} @endsection @section('css') @endsection @section('content') @php $authUser = Auth::user(); $from = request()->query('from'); $viewerDashboardContext = strtolower(trim((string) request()->query('view', ''))); $documentViewerQuery = in_array($viewerDashboardContext, ['work', 'requests'], true) ? ['view' => $viewerDashboardContext] : []; $backUrl = route('document-viewer.show', array_merge(['id' => $requestItem->id], $documentViewerQuery)); $backLabel = __('Back to Document'); $commentFormUrl = route('document-viewer.comment', array_merge(['id' => $requestItem->id], $documentViewerQuery)); $currentState = $requestItem->workflow_state ?? 'submitted'; $stateBadgeColor = match($currentState) { 'completed' => 'success', 'rejected' => 'danger', 'v_rector_processing' => 'primary', default => 'info', }; $ext = strtolower((string) ($mainFile['extension'] ?? '')); $mime = strtolower((string) ($mainFile['mime_type'] ?? '')); $isPdfPreview = $ext === 'pdf' || $mime === 'application/pdf'; $isImagePreview = in_array($ext, ['jpg','jpeg','png','gif','webp'], true) || str_starts_with($mime, 'image/'); $currentUserId = (int) ($authUser->id ?? 0); $builderTemplateUrl = $builderTemplateUrl ?? null; $builderTemplateIsImage = (bool) ($builderTemplateIsImage ?? false); $builderSchemaFields = is_array($builderSchemaFields ?? null) ? $builderSchemaFields : []; $builderSubmittedData = is_array($builderSubmittedData ?? null) ? $builderSubmittedData : []; $hasTemplateFilledData = !empty($builderTemplateUrl) && is_array($builderSubmittedData) && count($builderSubmittedData) > 0; $filledPreviewUrl = $hasTemplateFilledData ? route('document-viewer.main-file.preview', $requestItem->id) : null; $filledDownloadUrl = $hasTemplateFilledData ? route('document-viewer.filled-pdf.export', ['id' => $requestItem->id, 'action' => 'download']) : null; $originalOpenUrl = null; $originalDownloadUrl = null; if ($hasTemplateFilledData && !empty($filledPreviewUrl)) { $originalOpenUrl = $filledPreviewUrl; $originalDownloadUrl = $filledDownloadUrl; } elseif ($mainFile && ($mainFile['exists'] ?? false)) { $originalOpenUrl = $mainFile['preview_url'] ?? $mainFile['url'] ?? null; $originalDownloadUrl = $mainFile['download_url'] ?? $mainFile['url'] ?? null; } elseif (!empty($builderTemplateUrl)) { $originalOpenUrl = $builderTemplateUrl; $originalDownloadUrl = null; } $avatarColors = [ 'bg-primary-subtle text-primary', 'bg-success-subtle text-success', 'bg-danger-subtle text-danger', 'bg-warning-subtle text-warning', 'bg-info-subtle text-info', 'bg-secondary-subtle text-secondary', ]; $userAvatarHtml = function (?\App\Models\User $actor) use ($avatarColors) { if (!$actor) { return 'S'; } $colorClass = $avatarColors[$actor->id % count($avatarColors)]; $initial = strtoupper(substr($actor->name ?? 'S', 0, 1)); return '' . e($initial) . ''; }; $roleDisplayLabel = fn (string $role): string => \App\Support\RoleDisplay::label($role); $initialOpenUrl = null; $initialDownloadUrl = null; if ($hasTemplateFilledData && !empty($filledPreviewUrl)) { $initialOpenUrl = $filledPreviewUrl; $initialDownloadUrl = !empty($filledDownloadUrl) ? $filledDownloadUrl : null; } elseif ($mainFile && ($mainFile['exists'] ?? false)) { $initialOpenUrl = $mainFile['preview_url'] ?? $mainFile['url'] ?? null; $initialDownloadUrl = $mainFile['download_url'] ?? $mainFile['url'] ?? null; } elseif (!empty($builderTemplateUrl)) { $initialOpenUrl = $builderTemplateUrl; $initialDownloadUrl = null; } $documentVersionName = function (?string $name): string { $name = trim((string) $name); return $name !== '' ? $name : __('Document'); }; $originalVersionName = $documentVersionName( $mainFile['name'] ?? (!empty($builderTemplateUrl) ? __('Template Preview') : __('Document')) ); $commentDateTime = function ($date): string { if (!$date) { return __('N/A'); } return \App\Support\DateFormatter::localized($date, 'F j') . ' ' . __('time') . ' ' . \App\Support\DateFormatter::localized($date, 'g:i A'); }; $translateSystemText = function ($value): string { $value = trim((string) $value); return $value !== '' ? __($value) : ''; }; @endphp @component('components.breadcrumb') @slot('li_1') {{ __('Documents') }} @endslot @slot('li_2') {{ $requestItem->document_name }} @endslot @slot('title') {{ __('Comments') }} @endslot @endcomponent @if(session('success'))
{{ __('Document Version Control') }}
{{ strtoupper($ext) }} — {{ __('No inline preview available.') }}
{{ __('Download to View') }}{{ __('No document file attached.') }}
{{ strtoupper($ext) }} — {{ __('No inline preview available.') }}
{{ __('Download to View') }}{{ __('No document file attached.') }}
{{ $entry->actor->name ?? __('System') }} @php $entryRole = strtolower((string) ($entry->actor_role ?? '')); @endphp
{{ $translateSystemText($entry->note) }}
@php $entryAttachment = data_get($entry->meta, 'attachment'); @endphp @if(is_array($entryAttachment) && !empty($entryAttachment['url'])){{ $reply->actor->name ?? __('System') }} @php $replyRole = strtolower((string) ($reply->actor_role ?? '')); @endphp
{{ $translateSystemText($reply->note) }}
@php $replyAttachment = data_get($reply->meta, 'attachment'); @endphp @if(is_array($replyAttachment) && !empty($replyAttachment['url'])){{ __('No comments yet. Be the first to comment.') }}