From 14a11011390000cc21d134c3e612dda0fb9f490c Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Fri, 25 Sep 2015 18:13:38 +0200 Subject: [PATCH] New admin notice UI based on user list example --- conf/app.ini | 4 +- models/admin.go | 9 ++- modules/setting/setting.go | 2 + routers/admin/notice.go | 17 ++++-- templates/admin/notice.tmpl | 114 ++++++++++++++++++++---------------- 5 files changed, 83 insertions(+), 63 deletions(-) diff --git a/conf/app.ini b/conf/app.ini index 0970475459..21464edd0f 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -19,8 +19,10 @@ EXPLORE_PAGING_NUM = 20 ISSUE_PAGING_NUM = 10 [ui.admin] -; Numer of users that are showed in one page +; Number of users that are showed in one page USER_PAGING_NUM = 50 +; Number of notices that are showed in one page +NOTICE_PAGING_NUM = 50 [markdown] ; Enable hard line break extension diff --git a/models/admin.go b/models/admin.go index 493cc7afc8..e24e0026b8 100644 --- a/models/admin.go +++ b/models/admin.go @@ -50,11 +50,10 @@ func CountNotices() int64 { return count } -// GetNotices returns given number of notices with offset. -func GetNotices(num, offset int) ([]*Notice, error) { - notices := make([]*Notice, 0, num) - err := x.Limit(num, offset).Desc("id").Find(¬ices) - return notices, err +// Notices returns number of notices in given page. +func Notices(page, pageSize int) ([]*Notice, error) { + notices := make([]*Notice, 0, pageSize) + return notices, x.Limit(pageSize, (page-1)*pageSize).Desc("id").Find(¬ices) } // DeleteNotice deletes a system notice by given ID. diff --git a/modules/setting/setting.go b/modules/setting/setting.go index c326ed3794..1d6bf4d62b 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -94,6 +94,7 @@ var ( ExplorePagingNum int IssuePagingNum int AdminUserPagingNum int + AdminNoticePagingNum int // Markdown sttings. Markdown struct { @@ -370,6 +371,7 @@ func NewContext() { sec = Cfg.Section("ui.admin") AdminUserPagingNum = sec.Key("USER_PAGING_NUM").MustInt(50) + AdminNoticePagingNum = sec.Key("NOTICE_PAGING_NUM").MustInt(50) sec = Cfg.Section("picture") PictureService = sec.Key("SERVICE").In("server", []string{"server"}) diff --git a/routers/admin/notice.go b/routers/admin/notice.go index b431946366..b3cadc254d 100644 --- a/routers/admin/notice.go +++ b/routers/admin/notice.go @@ -6,11 +6,13 @@ package admin import ( "github.com/Unknwon/com" + "github.com/Unknwon/paginater" "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/middleware" + "github.com/gogits/gogs/modules/setting" ) const ( @@ -22,15 +24,20 @@ func Notices(ctx *middleware.Context) { ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminNotices"] = true - pageNum := 50 - p := pagination(ctx, models.CountNotices(), pageNum) - - notices, err := models.GetNotices(pageNum, (p-1)*pageNum) + total := models.CountNotices() + page := ctx.QueryInt("page") + if page <= 1 { + page = 1 + } + ctx.Data["Page"] = paginater.New(int(total), setting.AdminNoticePagingNum, page, 5) + + notices, err := models.Notices(page, setting.AdminNoticePagingNum) if err != nil { - ctx.Handle(500, "GetNotices", err) + ctx.Handle(500, "Notices", err) return } ctx.Data["Notices"] = notices + ctx.Data["Total"] = total ctx.HTML(200, NOTICES) } diff --git a/templates/admin/notice.tmpl b/templates/admin/notice.tmpl index a3ae2a10dd..d32b4c9814 100644 --- a/templates/admin/notice.tmpl +++ b/templates/admin/notice.tmpl @@ -1,54 +1,64 @@ -{{template "ng/base/head" .}} -{{template "ng/base/header" .}} -
-
-
- {{template "admin/nav" .}} -
-
- {{template "ng/base/alert" .}} -
-
-
- {{.i18n.Tr "admin.notices.system_notice_list"}} -
-
-
- - - - - - - - - - - - {{range .Notices}} - - - - - - - - {{end}} - -
Id{{.i18n.Tr "admin.notices.type"}}{{.i18n.Tr "admin.notices.desc"}}{{.i18n.Tr "admin.users.created"}}{{.i18n.Tr "admin.notices.op"}}
{{.Id}}{{$.i18n.Tr .TrStr}}{{.Description}}{{.Created}}
- {{if or .LastPageNum .NextPageNum}} - - {{end}} -
-
-
-
-
-
-
+{{template "base/head" .}} +
+
+
+ {{template "admin/navbar" .}} +
+ {{template "base/alert" .}} +

+ {{.i18n.Tr "admin.notices.system_notice_list"}} +

+
+ + + + + + + + + + + + {{range .Notices}} + + + + + + + + {{end}} + +
ID{{.i18n.Tr "admin.notices.type"}}{{.i18n.Tr "admin.notices.desc"}}{{.i18n.Tr "admin.users.created"}}{{.i18n.Tr "admin.notices.op"}}
{{.Id}}{{$.i18n.Tr .TrStr}}{{.Description}}{{.Created}}
+
+ + {{with .Page}} + {{if gt .TotalPages 1}} + + {{end}} + {{end}} + +
+
-{{template "ng/base/footer" .}} \ No newline at end of file +{{template "base/footer" .}}