diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4686488
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+**/cache
+**/config.json
+**/skunkyart
diff --git a/app/router.go b/app/router.go
index b4af3f1..e53f3ce 100644
--- a/app/router.go
+++ b/app/router.go
@@ -60,6 +60,8 @@ func Router() {
skunky.Deviation(url[:slash], url[slash+1:])
case "search":
skunky.Search()
+ case "dd":
+ skunky.DD()
case "media":
skunky.Emojitar(url)
case "about":
diff --git a/app/wraper.go b/app/wraper.go
index d8a459f..e252530 100644
--- a/app/wraper.go
+++ b/app/wraper.go
@@ -47,7 +47,77 @@ func (s skunkyart) httperr(status int) {
wr(s.Writer, msg.String())
}
-func (s skunkyart) DeviationList(devs []devianter.Deviation) string {
+// навигация по страницам
+type dlist struct {
+ Pages int
+ More bool
+}
+
+// FIXME: на некоротрых артах первая страница может вызывать полное отсутствие панели навигации.
+func (s skunkyart) NavBase(c dlist) string {
+ // TODO: сделать понятнее
+ // навигация по страницам
+ var list strings.Builder
+ list.WriteString("
")
+ p := s.Page
+
+ // функция для генерации ссылок
+ prevrev := func(msg string, page int, onpage bool) {
+ if !onpage {
+ list.WriteString(``)
+ list.WriteString(msg)
+ list.WriteString(" ")
+ } else {
+ list.WriteString(strconv.Itoa(page))
+ list.WriteString(" ")
+ }
+ }
+
+ // вперёд-назад
+ if p > 1 {
+ prevrev("<= Prev |", p-1, false)
+ } else {
+ p = 1
+ }
+
+ if c.Pages > 0 {
+ // назад
+ for x := p - 6; x < p && x > 0; x++ {
+ prevrev(strconv.Itoa(x), x, false)
+ }
+
+ // вперёд
+ for x := p; x <= p+6; x++ {
+ if x == p {
+ prevrev("", x, true)
+ x++
+ }
+
+ if x > p {
+ prevrev(strconv.Itoa(x), x, false)
+ }
+ }
+ }
+
+ // вперёд-назад
+ if c.More {
+ prevrev("| Next =>", p+1, false)
+ }
+
+ return list.String()
+}
+
+func (s skunkyart) DeviationList(devs []devianter.Deviation, content ...dlist) string {
var list strings.Builder
list.WriteString(`
0 { + cmmts.WriteString(` reply`) + } + cmmts.WriteString(`">
") + cmmts.WriteString(`">`) cmmts.WriteString(x.User.Username) cmmts.WriteString(" ") + if x.Parent > 0 { + cmmts.WriteString(` In reply to `) + if replied[x.Parent] == "" { + cmmts.WriteString("???") + } else { + cmmts.WriteString(replied[x.Parent]) + } + cmmts.WriteString("") + } + cmmts.WriteString(" [") cmmts.WriteString(x.Posted.UTC().String()) - cmmts.WriteString("
") + cmmts.WriteString("]
") cmmts.WriteString(x.Comment) cmmts.WriteString("
👍: ") cmmts.WriteString(strconv.Itoa(x.Likes)) @@ -150,7 +239,12 @@ func (s skunkyart) Deviation(author, postname string) { cmmts.WriteString(strconv.Itoa(x.Replies)) cmmts.WriteString("
No results :(
{{end}} diff --git a/main.go b/main.go index 412f4fa..eab427b 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,13 @@ package main -import "skunkyart/app" +import ( + "skunkyart/app" + + "git.macaw.me/skunky/devianter" +) func main() { + devianter.UpdateCSRF() + app.Router() }