summaryrefslogtreecommitdiffstats
path: root/internal/admin
diff options
context:
space:
mode:
authorivar <i@oiee.no>2026-04-04 16:34:46 +0200
committerivar <i@oiee.no>2026-04-04 16:34:46 +0200
commita6355e7a6530af3335c4cd8af05f1e9c8b978169 (patch)
treec9d920d1e996ef1c42d3455825731598df6b56c2 /internal/admin
parent8a093aacd162d3fd9f142b53aab9edfa061fd66a (diff)
downloadnebbet.no-a6355e7a6530af3335c4cd8af05f1e9c8b978169.tar.xz
nebbet.no-a6355e7a6530af3335c4cd8af05f1e9c8b978169.zip
.
Diffstat (limited to 'internal/admin')
-rw-r--r--internal/admin/auth/auth.go3
-rw-r--r--internal/admin/templates/base.html5
-rw-r--r--internal/admin/templates/list.html21
3 files changed, 21 insertions, 8 deletions
diff --git a/internal/admin/auth/auth.go b/internal/admin/auth/auth.go
index b0de7d9..33f13bc 100644
--- a/internal/admin/auth/auth.go
+++ b/internal/admin/auth/auth.go
@@ -25,6 +25,9 @@ func (a *Auth) AddUser(username string) error {
if err != nil && !os.IsNotExist(err) {
return err
}
+ if users == nil {
+ users = make(map[string]string)
+ }
if _, exists := users[username]; exists {
return fmt.Errorf("user %q already exists", username)
}
diff --git a/internal/admin/templates/base.html b/internal/admin/templates/base.html
index f88bba6..083d04b 100644
--- a/internal/admin/templates/base.html
+++ b/internal/admin/templates/base.html
@@ -6,12 +6,11 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin — {{.Title}}</title>
- <link rel="stylesheet" href="/styles/admin.css">
- <link rel="stylesheet" href="/lib/milkdown-crepe/style.css">
+ <link rel="stylesheet" href="/assets/styles/admin.css">
<script type="importmap">
{
"imports": {
- "@milkdown/crepe": "/lib/node_modules/@milkdown/crepe"
+ "editorjs-bundle": "/assets/admin/lib/dist/build.js"
}
}
</script>
diff --git a/internal/admin/templates/list.html b/internal/admin/templates/list.html
index 561e317..b8a3a74 100644
--- a/internal/admin/templates/list.html
+++ b/internal/admin/templates/list.html
@@ -7,6 +7,7 @@
<th>Title</th>
<th>Date</th>
<th>Tags</th>
+ <th>Status</th>
<th></th>
</tr>
</thead>
@@ -18,16 +19,17 @@
<td>
{{if .Tags}}
<div class="tags">
- {{range (splitTags .Tags)}}<span class="tag">{{.}}</span>{{end}}
+ {{range .Tags}}<span class="tag">{{.}}</span>{{end}}
</div>
{{end}}
</td>
<td>
+ {{if .Draft}}<span class="badge badge-draft">Draft</span>{{else}}<span class="badge badge-published">Published</span>{{end}}
+ </td>
+ <td>
<div class="actions">
- <a href="/admin/{{.Slug}}/edit" class="btn btn-secondary">Edit</a>
- <form method="POST" action="/admin/{{.Slug}}/delete" onsubmit="return confirm('Delete {{.Title}}?')">
- <button type="submit" class="btn btn-danger">Delete</button>
- </form>
+ <a href="/admin/{{.Slug}}" class="btn btn-secondary">Edit</a>
+ <button class="btn btn-danger" onclick="deletePost('{{.Slug}}', '{{.Title}}')">Delete</button>
</div>
</td>
</tr>
@@ -37,4 +39,13 @@
{{else}}
<div class="empty">No posts yet. <a href="/admin/new">Create one.</a></div>
{{end}}
+
+ <script>
+ function deletePost(slug, title) {
+ if (!confirm('Delete "' + title + '"?')) return;
+ fetch('/admin/' + slug, { method: 'DELETE' })
+ .then(() => window.location.href = '/admin/')
+ .catch(err => alert('Delete failed: ' + err));
+ }
+ </script>
{{end}}