forgejo-tickets/web/templates/pages/admin/tickets/detail.html

65 lines
3.0 KiB
HTML

{{define "title"}}Ticket Detail{{end}}
{{define "content"}}
{{with .Data}}
<div class="mb-4">
<a href="/tickets" class="text-sm text-blue-600 hover:text-blue-500">&larr; Back to tickets</a>
</div>
<div class="bg-white p-6 rounded-lg shadow ring-1 ring-gray-200">
<div class="flex items-start justify-between">
<div>
<h1 class="text-xl font-bold text-gray-900">{{.Ticket.Title}}</h1>
<p class="mt-1 text-sm text-gray-500">
{{if .Repo}}{{.Repo.Name}} &middot; {{end}}
{{if .User}}by {{.User.Email}} &middot; {{end}}
Created {{formatDate .Ticket.CreatedAt}}
{{if .Ticket.ForgejoIssueNumber}} &middot; Forgejo #{{.Ticket.ForgejoIssueNumber}}{{end}}
</p>
</div>
{{statusBadge (print .Ticket.Status)}}
</div>
<div class="mt-6 prose prose-sm max-w-none text-gray-700">
<p class="whitespace-pre-wrap">{{.Ticket.Description}}</p>
</div>
<!-- Status Update -->
<div class="mt-6 pt-4 border-t border-gray-200">
<form method="POST" action="/tickets/{{.Ticket.ID}}/status" class="flex items-center gap-3">
<label for="status" class="text-sm font-medium text-gray-700">Update Status:</label>
<select name="status" id="status" class="rounded-md border border-gray-300 px-3 py-1.5 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500">
<option value="open" {{if eq (print .Ticket.Status) "open"}}selected{{end}}>Open</option>
<option value="in_progress" {{if eq (print .Ticket.Status) "in_progress"}}selected{{end}}>In Progress</option>
<option value="closed" {{if eq (print .Ticket.Status) "closed"}}selected{{end}}>Closed</option>
</select>
<button type="submit" class="rounded-md bg-gray-900 px-3 py-1.5 text-sm font-semibold text-white shadow hover:bg-gray-800">Update</button>
</form>
</div>
</div>
<!-- Comments -->
<div class="mt-8">
<h2 class="text-lg font-semibold text-gray-900 mb-4">Comments</h2>
{{if .Comments}}
<div class="space-y-4">
{{range .Comments}}
<div class="{{if .IsTeam}}bg-blue-50 ring-blue-200{{else}}bg-white ring-gray-200{{end}} p-4 rounded-lg shadow ring-1">
<div class="flex items-center justify-between mb-2">
<div class="flex items-center gap-2">
<span class="text-sm font-medium text-gray-900">{{.AuthorName}}</span>
{{if .IsTeam}}<span class="inline-flex items-center px-2 py-0.5 rounded-full text-xs font-medium bg-blue-100 text-blue-800">Team</span>{{end}}
</div>
<span class="text-xs text-gray-500">{{formatDateTime .CreatedAt}}</span>
</div>
<p class="text-sm text-gray-700 whitespace-pre-wrap">{{.Body}}</p>
</div>
{{end}}
</div>
{{else}}
<p class="text-sm text-gray-500">No comments.</p>
{{end}}
</div>
{{end}}
{{end}}