2025-12-06 07:47:30 +00:00
{{ define "content" }}
2025-12-06 09:06:39 +00:00
< div class = "max-w-6xl mx-auto" >
< h1 class = "text-3xl font-bold mb-6" > URL Blocklists</ h1 >
<!-- Add New URL Form -->
< div class = "bg-gray-800 p-6 rounded mb-6" >
< h2 class = "text-xl font-bold mb-4" > Add New Blocklist</ h2 >
< form method = "POST" class = "space-y-4" >
< input type = "hidden" name = "csrf_token" value = "{{ .CSRFToken }}" >
< input type = "hidden" name = "action" value = "add" >
< div class = "grid grid-cols-1 md:grid-cols-2 gap-4" >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > Name *</ label >
< input type = "text" name = "name" placeholder = "e.g., AdGuard Default" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" required >
</ div >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > Group</ label >
< input type = "text" name = "group" placeholder = "e.g., Adblock, Malware" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" >
</ div >
2025-12-06 08:09:31 +00:00
</ div >
2025-12-06 09:06:39 +00:00
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > URL *</ label >
< input type = "text" name = "url" placeholder = "https://example.com/blocklist.txt" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" required >
</ div >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > Note</ label >
< textarea name = "note" placeholder = "Optional notes about this blocklist" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" rows = "2" ></ textarea >
</ div >
< button type = "submit" class = "bg-blue-600 hover:bg-blue-700 text-white font-bold px-4 py-2 rounded transition" > Add Blocklist</ button >
</ form >
</ div >
<!-- Blocklists Table -->
< div class = "bg-gray-800 rounded overflow-hidden" >
< table class = "w-full" >
< thead class = "bg-gray-700" >
< tr >
< th class = "px-4 py-3 text-left text-sm font-bold text-gray-300" > Status</ th >
< th class = "px-4 py-3 text-left text-sm font-bold text-gray-300" > Name</ th >
< th class = "px-4 py-3 text-left text-sm font-bold text-gray-300" > Group</ th >
< th class = "px-4 py-3 text-left text-sm font-bold text-gray-300" > URL</ th >
< th class = "px-4 py-3 text-left text-sm font-bold text-gray-300" > Note</ th >
< th class = "px-4 py-3 text-left text-sm font-bold text-gray-300" > Actions</ th >
</ tr >
</ thead >
< tbody >
{{ range $i, $item := .PageData.Items }}
< tr class = "border-t border-gray-700 hover:bg-gray-750 transition" >
< td class = "px-4 py-3 text-center" >
< form method = "POST" class = "inline" >
< input type = "hidden" name = "csrf_token" value = "{{ $.CSRFToken }}" >
< input type = "hidden" name = "action" value = "toggle" >
< input type = "hidden" name = "index" value = "{{ $i }}" >
< button type = "submit" class = "px-3 py-1 rounded text-sm font-bold transition {{ if $item.Enabled }}bg-green-600 hover:bg-green-700 text-white{{ else }}bg-gray-600 hover:bg-gray-700 text-gray-200{{ end }}" >
{{ if $item.Enabled }}Enabled{{ else }}Disabled{{ end }}
</ button >
</ form >
</ td >
< td class = "px-4 py-3 text-sm text-gray-300" > {{ $item.Name }}</ td >
< td class = "px-4 py-3 text-sm text-gray-400" > {{ if $item.Group }}{{ $item.Group }}{{ else }}< span class = "text-gray-600" > -</ span > {{ end }}</ td >
< td class = "px-4 py-3 text-sm text-gray-400 max-w-xs truncate" title = "{{ $item.URL }}" > {{ $item.URL }}</ td >
< td class = "px-4 py-3 text-sm text-gray-400 max-w-xs truncate" title = "{{ $item.Note }}" > {{ if $item.Note }}{{ $item.Note }}{{ else }}< span class = "text-gray-600" > -</ span > {{ end }}</ td >
< td class = "px-4 py-3 text-sm space-x-2" >
< button onclick = "openEditModal('{{ $i }}', '{{ $item.Name }}', '{{ $item.URL }}', '{{ $item.Group }}', '{{ $item.Note }}')" class = "bg-blue-600 hover:bg-blue-700 text-white font-bold px-2 py-1 rounded transition" >
Edit
</ button >
< form method = "POST" class = "inline" >
< input type = "hidden" name = "csrf_token" value = "{{ $.CSRFToken }}" >
< input type = "hidden" name = "action" value = "remove" >
< input type = "hidden" name = "index" value = "{{ $i }}" >
< button type = "submit" onclick = "return confirm('Are you sure you want to delete this blocklist?')" class = "bg-red-600 hover:bg-red-700 text-white font-bold px-2 py-1 rounded transition" >
Delete
</ button >
</ form >
</ td >
</ tr >
{{ end }}
</ tbody >
</ table >
</ div >
{{ if not .PageData.Items }}
< div class = "text-center text-gray-400 py-8" >
No blocklists configured. Add one to get started.
</ div >
{{ end }}
2025-12-06 08:09:31 +00:00
</ div >
2025-12-06 09:06:39 +00:00
<!-- Edit Modal -->
< div id = "editModal" class = "hidden fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50" >
< div class = "bg-gray-800 rounded-lg shadow-lg max-w-md w-full mx-4 p-6" >
< h2 class = "text-xl font-bold mb-4" > Edit Blocklist</ h2 >
< form method = "POST" class = "space-y-4" >
< input type = "hidden" name = "csrf_token" value = "{{ .CSRFToken }}" >
< input type = "hidden" name = "action" value = "edit" >
< input type = "hidden" name = "index" id = "modalIndex" value = "" >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > Name *</ label >
< input type = "text" name = "name" id = "modalName" placeholder = "Name" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" required >
</ div >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > Group</ label >
< input type = "text" name = "group" id = "modalGroup" placeholder = "Group" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" >
</ div >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > URL *</ label >
< input type = "text" name = "url" id = "modalURL" placeholder = "URL" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" required >
</ div >
< div >
< label class = "block text-sm font-medium text-gray-300 mb-1" > Note</ label >
< textarea name = "note" id = "modalNote" placeholder = "Note" class = "w-full p-2 bg-gray-700 rounded text-white placeholder-gray-400" rows = "2" ></ textarea >
</ div >
< div class = "flex gap-2 justify-end" >
< button type = "button" onclick = "closeEditModal()" class = "px-4 py-2 bg-gray-600 hover:bg-gray-700 text-white rounded font-medium transition" >
Cancel
</ button >
< button type = "submit" class = "px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded font-medium transition" >
Save Changes
</ button >
</ div >
</ form >
</ div >
</ div >
< script >
function openEditModal ( index , name , url , group , note ) {
document . getElementById ( 'modalIndex' ). value = index ;
document . getElementById ( 'modalName' ). value = name ;
document . getElementById ( 'modalURL' ). value = url ;
document . getElementById ( 'modalGroup' ). value = group ;
document . getElementById ( 'modalNote' ). value = note ;
document . getElementById ( 'editModal' ). classList . remove ( 'hidden' );
}
function closeEditModal () {
document . getElementById ( 'editModal' ). classList . add ( 'hidden' );
}
// Close modal when clicking outside
document . getElementById ( 'editModal' ). addEventListener ( 'click' , function ( event ) {
if ( event . target === this ) {
closeEditModal ();
}
});
</ script >
2025-12-06 07:47:30 +00:00
{{ end }}