summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--system/admin/handlers.go28
1 files changed, 21 insertions, 7 deletions
diff --git a/system/admin/handlers.go b/system/admin/handlers.go
index 2378136..cca1d64 100644
--- a/system/admin/handlers.go
+++ b/system/admin/handlers.go
@@ -289,7 +289,9 @@ func postsHandler(res http.ResponseWriter, req *http.Request) {
return
}
- posts := db.ContentAll(t)
+ order := strings.ToLower(q.Get("order"))
+
+ posts := db.ContentAll(t + "_sorted")
b := &bytes.Buffer{}
p, ok := content.Types[t]().(editor.Editable)
if !ok {
@@ -363,12 +365,24 @@ func postsHandler(res http.ResponseWriter, req *http.Request) {
</div>
<ul class="posts row">`
- for i := range posts {
- json.Unmarshal(posts[i], &p)
- post := `<li class="col s12"><a href="/admin/edit?type=` +
- t + `&id=` + fmt.Sprintf("%d", p.ContentID()) +
- `">` + p.ContentName() + `</a></li>`
- b.Write([]byte(post))
+ if order == "desc" || order == "" {
+ // keep natural order of posts slice, as returned from sorted bucket
+ for i := range posts {
+ json.Unmarshal(posts[i], &p)
+ post := `<li class="col s12"><a href="/admin/edit?type=` +
+ t + `&id=` + fmt.Sprintf("%d", p.ContentID()) +
+ `">` + p.ContentName() + `</a></li>`
+ b.Write([]byte(post))
+ }
+ } else if order == "asc" {
+ // reverse the order of posts slice
+ for i := len(posts) - 1; i >= 0; i-- {
+ json.Unmarshal(posts[i], &p)
+ post := `<li class="col s12"><a href="/admin/edit?type=` +
+ t + `&id=` + fmt.Sprintf("%d", p.ContentID()) +
+ `">` + p.ContentName() + `</a></li>`
+ b.Write([]byte(post))
+ }
}
b.Write([]byte(`</ul></div></div>`))