mailwolt/resources/views/livewire/ui/nx/mail/modal/quarantine-message-modal.bl...

112 lines
4.2 KiB
PHP

<div class="mw-modal-frame">
<div class="mw-modal-head">
<div class="mw-modal-title-wrap">
<h2 class="mw-modal-title">Nachrichtendetails</h2>
<span class="mw-modal-sub">Rspamd · {{ $message['msg_id'] ?? $msgId }}</span>
</div>
<button wire:click="$dispatch('closeModal')" class="mw-modal-close">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none"><path d="M2 2l10 10M12 2L2 12" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>
</button>
</div>
<div class="mw-modal-body">
@php
$actionClass = match($message['action'] ?? '') {
'reject' => 'off',
'add header' => 'warn',
'greylist' => 'na',
default => 'ok',
};
@endphp
{{-- Score bar --}}
@php
$ratio = ($message['required'] ?? 0) > 0
? min(100, round(($message['score'] ?? 0) / $message['required'] * 100))
: 0;
@endphp
<div class="mq-score-block">
<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;">
<span style="font-size:12px;color:var(--mw-t3);">Spam-Score</span>
<span class="mq-score-big {{ $actionClass }}">{{ $message['score'] ?? 0 }} / {{ $message['required'] ?? '—' }}</span>
</div>
<div class="mq-score-track">
<div class="mq-score-fill {{ $actionClass }}" style="width:{{ $ratio }}%;transition:width .3s;"></div>
</div>
</div>
<div class="mw-modal-grid2">
<div class="mq-detail-row">
<span class="mq-detail-label">Aktion</span>
@if($message['action'] === 'reject')
<span class="mq-badge off">Reject</span>
@elseif($message['action'] === 'add header')
<span class="mq-badge warn">Tagged</span>
@elseif($message['action'] === 'greylist')
<span class="mq-badge na">Greylist</span>
@else
<span class="mq-badge ok">{{ $message['action'] ?? '—' }}</span>
@endif
</div>
<div class="mq-detail-row">
<span class="mq-detail-label">IP</span>
<code style="font-size:12px;">{{ $message['ip'] ?? '—' }}</code>
</div>
</div>
<div class="mq-detail-row">
<span class="mq-detail-label">Von</span>
<span class="mq-detail-val">{{ $message['from'] ?? '—' }}</span>
</div>
<div class="mq-detail-row">
<span class="mq-detail-label">An</span>
<span class="mq-detail-val">{{ $message['rcpt'] ?? '—' }}</span>
</div>
<div class="mq-detail-row">
<span class="mq-detail-label">Betreff</span>
<span class="mq-detail-val">{{ $message['subject'] ?? '—' }}</span>
</div>
<div class="mw-modal-grid2">
@if(($message['time'] ?? 0) > 0)
<div class="mq-detail-row">
<span class="mq-detail-label">Zeitpunkt</span>
<span>{{ date('d.m.Y H:i:s', $message['time']) }}</span>
</div>
@endif
@if(($message['size'] ?? 0) > 0)
<div class="mq-detail-row">
<span class="mq-detail-label">Größe</span>
<span>{{ number_format($message['size'] / 1024, 1) }} KB</span>
</div>
@endif
</div>
{{-- Triggered symbols --}}
@if(!empty($message['symbols']))
<div>
<span class="mq-detail-label" style="margin-bottom:8px;display:block;">Ausgelöste Regeln ({{ count($message['symbols']) }})</span>
<div class="mq-symbols">
@foreach($message['symbols'] as $sym)
<div class="mq-symbol {{ $sym['score'] > 0 ? 'pos' : ($sym['score'] < 0 ? 'neg' : '') }}">
<span class="mq-sym-name">{{ $sym['name'] }}</span>
<span class="mq-sym-score">{{ $sym['score'] > 0 ? '+' : '' }}{{ $sym['score'] }}</span>
@if($sym['description'])
<span class="mq-sym-desc">{{ $sym['description'] }}</span>
@endif
</div>
@endforeach
</div>
</div>
@endif
</div>
<div class="mw-modal-foot">
<button wire:click="$dispatch('closeModal')" class="mw-btn-cancel">Schließen</button>
</div>
</div>