Skip to content

Commit 7e7528f

Browse files
committed
Create My Entries page
1 parent a4eb0de commit 7e7528f

File tree

6 files changed

+229
-148
lines changed

6 files changed

+229
-148
lines changed

admin.go

+59-2
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ func NewAdminHandler(app *ZerodropApp) (*AdminHandler, error) {
8181
handler.HandleFunc("/admin/login", handler.ServeLogin)
8282
handler.HandleFunc("/admin/logout", handler.ServeLogout)
8383
handler.HandleFunc("/admin/new", handler.ServeNew)
84+
handler.HandleFunc("/admin/my", handler.ServeMy)
8485
handler.HandleFunc("/admin/", handler.ServeMain)
8586

8687
return handler, nil
@@ -293,6 +294,62 @@ func (a *AdminHandler) ServeNew(w http.ResponseWriter, r *http.Request) {
293294
}
294295
}
295296

297+
// ServeMain serves the entry list.
298+
func (a *AdminHandler) ServeMy(w http.ResponseWriter, r *http.Request) {
299+
claims, _ := a.verify(r)
300+
data := &AdminPageData{Title: "Zerodrop Admin", Claims: claims, Config: a.App.Config}
301+
302+
if r.Method == "POST" {
303+
r.ParseForm()
304+
305+
switch r.FormValue("action") {
306+
307+
case "train":
308+
name := r.FormValue("name")
309+
entry, err := a.App.DB.Get(name)
310+
if err != nil {
311+
log.Println(err)
312+
} else {
313+
entry.SetTraining(!entry.AccessTrain)
314+
if err := a.App.DB.Update(entry); err != nil {
315+
log.Println(err)
316+
}
317+
}
318+
319+
case "delete":
320+
name := r.FormValue("name")
321+
if name != "" {
322+
err := a.App.DB.Remove(name)
323+
if err != nil {
324+
log.Println(err)
325+
} else {
326+
log.Printf("Removed entry: %s", name)
327+
}
328+
}
329+
330+
case "clear":
331+
err := a.App.DB.Clear()
332+
if err != nil {
333+
log.Println(err)
334+
} else {
335+
log.Println("Cleared all entries")
336+
}
337+
338+
}
339+
340+
http.Redirect(w, r, a.App.Config.Base+"admin/", 302)
341+
return
342+
}
343+
344+
var err error
345+
data.Entries, err = a.App.DB.List()
346+
347+
interfaceTmpl := a.Templates.Lookup("my.tmpl")
348+
if interfaceTmpl.ExecuteTemplate(w, "my", data) != nil {
349+
log.Println(err)
350+
}
351+
}
352+
296353
// ServeMain serves the entry list.
297354
func (a *AdminHandler) ServeMain(w http.ResponseWriter, r *http.Request) {
298355
claims, _ := a.verify(r)
@@ -343,8 +400,8 @@ func (a *AdminHandler) ServeMain(w http.ResponseWriter, r *http.Request) {
343400
var err error
344401
data.Entries, err = a.App.DB.List()
345402

346-
interfaceTmpl := a.Templates.Lookup("main.tmpl")
347-
if interfaceTmpl.ExecuteTemplate(w, "main", data) != nil {
403+
interfaceTmpl := a.Templates.Lookup("all.tmpl")
404+
if interfaceTmpl.ExecuteTemplate(w, "all", data) != nil {
348405
log.Println(err)
349406
}
350407
}

templates/all.tmpl

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{define "all"}}
2+
{{template "header" $}}
3+
<ul class="nav nav-pills mb-3">
4+
<li class="nav-item">
5+
<a class="nav-link active" href="{{$.Config.Base}}admin/">All Entries</a>
6+
</li>
7+
<li class="nav-item">
8+
<a class="nav-link" href="{{$.Config.Base}}admin/my">My Entries</a>
9+
</li>
10+
<li class="nav-item">
11+
<a class="nav-link" href="{{$.Config.Base}}admin/new">New</a>
12+
</li>
13+
</ul>
14+
{{template "entries" $}}
15+
{{template "footer" $}}
16+
{{end}}

templates/main.tmpl renamed to templates/entries.tmpl

+1-11
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,4 @@
1-
{{define "main"}}
2-
{{template "header" $}}
3-
<ul class="nav nav-pills mb-3">
4-
<li class="nav-item">
5-
<a class="nav-link active" href="{{$.Config.Base}}admin/">My Entries</a>
6-
</li>
7-
<li class="nav-item">
8-
<a class="nav-link" href="{{$.Config.Base}}admin/new">New</a>
9-
</li>
10-
</ul>
1+
{{define "entries"}}
112
{{if $.Error}}
123
<div class="alert alert-danger" role="alert">{{$.Error}}</div>
134
{{end}}
@@ -65,5 +56,4 @@
6556
</form>
6657
</div>
6758
</div>
68-
{{template "footer" $}}
6959
{{end}}

templates/my.tmpl

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{{define "my"}}
2+
{{template "header" $}}
3+
<ul class="nav nav-pills mb-3">
4+
<li class="nav-item">
5+
<a class="nav-link" href="{{$.Config.Base}}admin/">All Entries</a>
6+
</li>
7+
<li class="nav-item">
8+
<a class="nav-link active" href="{{$.Config.Base}}admin/my">My Entries</a>
9+
</li>
10+
<li class="nav-item">
11+
<a class="nav-link" href="{{$.Config.Base}}admin/new">New</a>
12+
</li>
13+
</ul>
14+
{{template "entries" $}}
15+
{{template "footer" $}}
16+
{{end}}

0 commit comments

Comments
 (0)