65 lines
3.0 KiB
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">← 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}} · {{end}}
|
|
{{if .User}}by {{.User.Email}} · {{end}}
|
|
Created {{formatDate .Ticket.CreatedAt}}
|
|
{{if .Ticket.ForgejoIssueNumber}} · 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}}
|