Files
amsterdam/ui/views/topiclist.jet
T

174 lines
8.7 KiB
Plaintext

{*
* Amsterdam Web Communities System
* Copyright (c) 2025-2026 Erbosoft Metaverse Design Solutions, All Rights Reserved
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
*
* SPDX-License-Identifier: MPL-2.0
*}
<div class="p-4">
<!-- Page Title -->
<div class="mb-6">
<h1 class="text-blue-800 text-4xl font-bold mb-2">Topics in {{ conferenceName }}</h1>
<hr class="border-2 border-gray-400 w-4/5 mb-6">
</div>
{{ if isset(topBlock) }}
<div class="mb-6">{{ topBlock | raw }}</div>
{{ end }}
<!-- Action Buttons -->
<div class="max-w-6xl mb-6">
<div class="flex gap-2 flex-wrap mb-4">
<a href="{{ urlBack }}"
class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded text-sm font-medium transition-colors">
Conference List
</a>
{{ if canCreate }}
<a href="{{ urlStem }}/new_topic"
class="bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded text-sm font-medium transition-colors">
Add Topic
</a>
{{ end }}
{{ if isset(urlReadNew) }}
<a href="{{ urlReadNew }}"
class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded text-sm font-medium transition-colors">
Read New
</a>
{{ end }}
<a href="{{ urlStem }}/find"
class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded text-sm font-medium transition-colors">
Find
</a>
{{ if !isAnon }}
<a href="{{ urlStem }}/manage"
class="bg-gray-600 hover:bg-gray-700 text-white px-4 py-2 rounded text-sm font-medium transition-colors">
Manage
</a>
{{ end }}
{{ if showHotlist }}
<a href="{{ urlStem }}/hotlist"
class="bg-orange-600 hover:bg-orange-700 text-black px-4 py-2 rounded text-sm font-medium transition-colors">
Add to Hotlist
</a>
{{ end }}
<a class="text-xl" href="{{ permalink }}" title="Permalink to this conference">🔗</a>
</div>
</div>
<!-- Topics Table -->
<div class="max-w-7xl">
<div class="bg-white border border-gray-300 rounded-lg overflow-hidden">
<table class="w-full">
<thead class="bg-gray-100 border-b border-gray-300">
<tr>
{{ sp := iif(sort == 1, -1, 1) }}
<th class="px-4 py-3 text-left text-xs font-bold text-gray-700 uppercase tracking-wider">
<a href="{{ urlStem }}?sort={{ sp }}" class="text-blue-700 hover:text-blue-900">#</a>
{{ if sort == 1 }}🔼{{ else if sort == -1 }}🔽{{ end }}
</th>
{{ sp = iif(sort == 2, -2, 2) }}
<th class="px-4 py-3 text-left text-xs font-bold text-gray-700 uppercase tracking-wider">
<a href="{{ urlStem }}?sort={{ sp }}" class="text-blue-700 hover:text-blue-900">Topic Name</a>
{{ if sort == 2 }}🔼{{ else if sort == -2 }}🔽{{ end }}
</th>
{{ sp = iif(sort == 3, -3, 3) }}
<th class="px-4 py-3 text-right text-xs font-bold text-gray-700 uppercase tracking-wider">
<a href="{{ urlStem }}?sort={{ sp }}" class="text-blue-700 hover:text-blue-900">New</a>
{{ if sort == -3 }}🔼{{ else if sort == 3 }}🔽{{ end }}
</th>
{{ sp = iif(sort == 4, -4, 4) }}
<th class="px-4 py-3 text-right text-xs font-bold text-gray-700 uppercase tracking-wider">
<a href="{{ urlStem }}?sort={{ sp }}" class="text-blue-700 hover:text-blue-900">Total</a>
{{ if sort == -4 }}🔼{{ else if sort == 4 }}🔽{{ end }}
</th>
{{ sp = iif(sort == 5, -5, 5) }}
<th class="px-4 py-3 text-left text-xs font-bold text-gray-700 uppercase tracking-wider">
<a href="{{ urlStem }}?sort={{ sp }}" class="text-blue-700 hover:text-blue-900">Last Response</a>
{{ if sort == -5 }}🔼{{ else if sort == 5 }}🔽{{ end }}
</th>
</tr>
</thead>
<tbody class="divide-y divide-gray-200">
{{ range i, t := topics }}
<tr class="hover:bg-gray-50">
<td class="px-4 py-3 whitespace-nowrap text-sm">
<a href="{{ urlStem }}/r/{{ t.Number }}"
class="text-blue-700 hover:text-blue-900 font-medium">{{ t.Number }}</a>
</td>
<td class="px-4 py-3 text-sm">
<a href="{{ urlStem }}/r/{{ t.Number }}"
class="text-blue-700 hover:text-blue-900 font-medium">{{ t.Name | raw }}</a>
{{ if t.Sticky }}
<span class="text-lg" title="Sticky">📌</span>
{{ end }}
{{ if t.Archived && view != 5 }}
<span class="text-lg" title="Archived">🗄️</span>
{{ else if t.Frozen }}
<span class="text-lg" title="Frozen">🧊</span>
{{ end }}
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-right">
<a href="{{ urlStem }}/r/{{ t.Number }}"
class="text-blue-700 hover:text-blue-900">{{ t.Unread }}</a>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm text-right">
<a href="{{ urlStem }}/r/{{ t.Number }}?r=0,-1"
class="text-blue-700 hover:text-blue-900">{{ t.Total }}</a>
</td>
<td class="px-4 py-3 whitespace-nowrap text-sm">
<a href="{{ urlStem }}/r/{{ t.Number }}"
class="text-blue-700 hover:text-blue-900">{{ formattedDate[i] }}</a>
</td>
</tr>
{{ end }}
</tbody>
</table>
</div>
<!-- View Filter -->
<div class="mt-6 text-center">
<div class="inline-flex items-center gap-2 text-sm">
<span class="font-bold">[</span>
{{ if view == 1 }}
<span class="font-bold">New</span>
{{ else }}
<a href="{{ urlStem }}?view=1" class="text-blue-700 hover:text-blue-900">New</a>
{{ end }}
<span class="font-bold">|</span>
{{ if view == 2 }}
<span class="font-bold">Active</span>
{{ else }}
<a href="{{ urlStem }}?view=2" class="text-blue-700 hover:text-blue-900">Active</a>
{{ end }}
<span class="font-bold">|</span>
{{ if view == 3 }}
<span class="font-bold">All</span>
{{ else }}
<a href="{{ urlStem }}?view=3" class="text-blue-700 hover:text-blue-900">All</a>
{{ end }}
<span class="font-bold">|</span>
{{ if view == 4 }}
<span class="font-bold">Hidden</span>
{{ else }}
<a href="{{ urlStem }}?view=4" class="text-blue-700 hover:text-blue-900">Hidden</a>
{{ end }}
<span class="font-bold">|</span>
{{ if view == 5 }}
<span class="font-bold">Archived</span>
{{ else }}
<a href="{{ urlStem }}?view=5" class="text-blue-700 hover:text-blue-900">Archived</a>
{{ end }}
<span class="font-bold">]</span>
</div>
</div>
</div>
{{ if isset(bottomBlock) }}
<div class="mb-6">{{ bottomBlock | raw }}</div>
{{ end }}
</div>