From c98dad1cf3b068f6bbb52a9cd791f2bd180731f2 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Fri, 25 Sep 2015 19:54:52 +0200 Subject: [PATCH 1/2] New admin organization UI --- conf/app.ini | 2 + models/org.go | 9 ++- modules/setting/setting.go | 2 + routers/admin/orgs.go | 25 +++++-- templates/admin/org/list.tmpl | 122 ++++++++++++++++++---------------- 5 files changed, 92 insertions(+), 68 deletions(-) diff --git a/conf/app.ini b/conf/app.ini index 21464edd0f..f767be5518 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -23,6 +23,8 @@ ISSUE_PAGING_NUM = 10 USER_PAGING_NUM = 50 ; Number of notices that are showed in one page NOTICE_PAGING_NUM = 50 +; Number of organization that are showed in one page +ORG_PAGING_NUM = 50 [markdown] ; Enable hard line break extension diff --git a/models/org.go b/models/org.go index b45dcafb21..5c3b0d12a1 100644 --- a/models/org.go +++ b/models/org.go @@ -184,11 +184,10 @@ func CountOrganizations() int64 { return count } -// GetOrganizations returns given number of organizations with offset. -func GetOrganizations(num, offset int) ([]*User, error) { - orgs := make([]*User, 0, num) - err := x.Limit(num, offset).Where("type=1").Asc("id").Find(&orgs) - return orgs, err +// Organizations returns number of organizations in given page. +func Organizations(page, pageSize int) ([]*User, error) { + orgs := make([]*User, 0, pageSize) + return orgs, x.Limit(pageSize, (page-1)*pageSize).Where("type=1").Asc("id").Find(&orgs) } // DeleteOrganization completely and permanently deletes everything of organization. diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 1d6bf4d62b..e004b35b47 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -95,6 +95,7 @@ var ( IssuePagingNum int AdminUserPagingNum int AdminNoticePagingNum int + AdminOrgPagingNum int // Markdown sttings. Markdown struct { @@ -372,6 +373,7 @@ func NewContext() { sec = Cfg.Section("ui.admin") AdminUserPagingNum = sec.Key("USER_PAGING_NUM").MustInt(50) AdminNoticePagingNum = sec.Key("NOTICE_PAGING_NUM").MustInt(50) + AdminOrgPagingNum = sec.Key("ORG_PAGING_NUM").MustInt(50) sec = Cfg.Section("picture") PictureService = sec.Key("SERVICE").In("server", []string{"server"}) diff --git a/routers/admin/orgs.go b/routers/admin/orgs.go index 54d7af5cb3..ae68b872d0 100644 --- a/routers/admin/orgs.go +++ b/routers/admin/orgs.go @@ -5,9 +5,12 @@ package admin import ( + "github.com/Unknwon/paginater" + "github.com/gogits/gogs/models" "github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/middleware" + "github.com/gogits/gogs/modules/setting" ) const ( @@ -15,18 +18,26 @@ const ( ) func Organizations(ctx *middleware.Context) { - ctx.Data["Title"] = ctx.Tr("admin.orgs") + ctx.Data["Title"] = ctx.Tr("admin.organizations") ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminOrganizations"] = true - pageNum := 50 - p := pagination(ctx, models.CountOrganizations(), pageNum) - - var err error - ctx.Data["Orgs"], err = models.GetOrganizations(pageNum, (p-1)*pageNum) + total := models.CountOrganizations() + page := ctx.QueryInt("page") + if page <= 1 { + page = 1 + } + ctx.Data["Page"] = paginater.New(int(total), setting.AdminOrgPagingNum, page, 5) + + orgs, err := models.Organizations(page, setting.AdminOrgPagingNum) + if err != nil { - ctx.Handle(500, "GetOrganizations", err) + ctx.Handle(500, "Organizations", err) return } + + ctx.Data["Orgs"] = orgs + ctx.Data["Total"] = total + ctx.HTML(200, ORGS) } diff --git a/templates/admin/org/list.tmpl b/templates/admin/org/list.tmpl index ce5083a0ae..1ca61dd5c2 100644 --- a/templates/admin/org/list.tmpl +++ b/templates/admin/org/list.tmpl @@ -1,58 +1,68 @@ -{{template "ng/base/head" .}} -{{template "ng/base/header" .}} -
-
-
- {{template "admin/nav" .}} -
-
- {{template "ng/base/alert" .}} -
-
-
- {{.i18n.Tr "admin.orgs.org_manage_panel"}} -
-
-
- - - - - - - - - - - - - - {{range .Orgs}} - - - - - - - - - - {{end}} - -
Id{{.i18n.Tr "admin.orgs.name"}}{{.i18n.Tr "email"}}{{.i18n.Tr "admin.orgs.teams"}}{{.i18n.Tr "admin.orgs.members"}}{{.i18n.Tr "admin.users.repos"}}{{.i18n.Tr "admin.users.created"}}
{{.Id}}{{.Name}}{{.Email}}{{.NumTeams}}{{.NumMembers}}{{.NumRepos}}{{DateFmtShort .Created}}
- {{if or .LastPageNum .NextPageNum}} - - {{end}} -
-
-
-
-
-
-
+{{template "base/head" .}} +
+
+
+ {{template "admin/navbar" .}} +
+ {{template "base/alert" .}} +

+ {{.i18n.Tr "admin.orgs.org_manage_panel"}} ({{.i18n.Tr "admin.total" .Total}}) +

+
+ + + + + + + + + + + + + + {{range .Orgs}} + + + + + + + + + + {{end}} + +
ID{{.i18n.Tr "admin.orgs.name"}}{{.i18n.Tr "email"}}{{.i18n.Tr "admin.orgs.teams"}}{{.i18n.Tr "admin.orgs.members"}}{{.i18n.Tr "admin.users.repos"}}{{.i18n.Tr "admin.users.created"}}
{{.Id}}{{.Name}}{{.Email}}{{.NumTeams}}{{.NumMembers}}{{.NumRepos}}{{DateFmtShort .Created}}
+
+ + {{with .Page}} + {{if gt .TotalPages 1}} + + {{end}} + {{end}} + +
+
-{{template "ng/base/footer" .}} \ No newline at end of file +{{template "base/footer" .}} \ No newline at end of file From a8fd615adc73bc5d37c753f14ec9738d1590e363 Mon Sep 17 00:00:00 2001 From: Antoine GIRARD Date: Fri, 25 Sep 2015 19:56:23 +0200 Subject: [PATCH 2/2] Fix indent in notice router --- routers/admin/notice.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/admin/notice.go b/routers/admin/notice.go index 164badda7b..9a121ecb27 100644 --- a/routers/admin/notice.go +++ b/routers/admin/notice.go @@ -24,14 +24,14 @@ func Notices(ctx *middleware.Context) { ctx.Data["PageIsAdmin"] = true ctx.Data["PageIsAdminNotices"] = true - total := models.CountNotices() + 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) + + notices, err := models.Notices(page, setting.AdminNoticePagingNum) if err != nil { ctx.Handle(500, "Notices", err) return