Paging function for users and repositories
This commit is contained in:
parent
7ffdabb28f
commit
63cc14062a
9 changed files with 71 additions and 7 deletions
2
gogs.go
2
gogs.go
|
@ -17,7 +17,7 @@ import (
|
|||
"github.com/gogits/gogs/modules/setting"
|
||||
)
|
||||
|
||||
const APP_VER = "0.4.5.0706 Alpha"
|
||||
const APP_VER = "0.4.5.0707 Alpha"
|
||||
|
||||
func init() {
|
||||
runtime.GOMAXPROCS(runtime.NumCPU())
|
||||
|
|
|
@ -148,9 +148,9 @@ type Statistic struct {
|
|||
}
|
||||
|
||||
func GetStatistic() (stats Statistic) {
|
||||
stats.Counter.User, _ = x.Count(new(User))
|
||||
stats.Counter.User = CountUsers()
|
||||
stats.Counter.Repo = CountRepositories()
|
||||
stats.Counter.PublicKey, _ = x.Count(new(PublicKey))
|
||||
stats.Counter.Repo, _ = x.Count(new(Repository))
|
||||
stats.Counter.Watch, _ = x.Count(new(Watch))
|
||||
stats.Counter.Action, _ = x.Count(new(Action))
|
||||
stats.Counter.Access, _ = x.Count(new(Access))
|
||||
|
|
|
@ -589,6 +589,12 @@ func CreateRepository(u *User, name, desc, lang, license string, private, mirror
|
|||
return repo, nil
|
||||
}
|
||||
|
||||
// CountRepositories returns number of repositories.
|
||||
func CountRepositories() int64 {
|
||||
count, _ := x.Count(new(Repository))
|
||||
return count
|
||||
}
|
||||
|
||||
// GetRepositoriesWithUsers returns given number of repository objects with offset.
|
||||
// It also auto-gets corresponding users.
|
||||
func GetRepositoriesWithUsers(num, offset int) ([]*Repository, error) {
|
||||
|
|
|
@ -212,6 +212,12 @@ func CreateUser(u *User) (*User, error) {
|
|||
return u, err
|
||||
}
|
||||
|
||||
// CountUsers returns number of users.
|
||||
func CountUsers() int64 {
|
||||
count, _ := x.Where("type=0").Count(new(User))
|
||||
return count
|
||||
}
|
||||
|
||||
// GetUsers returns given number of user objects with offset.
|
||||
func GetUsers(num, offset int) ([]User, error) {
|
||||
users := make([]User, 0, num)
|
||||
|
|
|
@ -458,6 +458,16 @@ func (f StrTo) Int64() (int64, error) {
|
|||
return int64(v), err
|
||||
}
|
||||
|
||||
func (f StrTo) MustInt() int {
|
||||
v, _ := f.Int()
|
||||
return v
|
||||
}
|
||||
|
||||
func (f StrTo) MustInt64() int64 {
|
||||
v, _ := f.Int64()
|
||||
return v
|
||||
}
|
||||
|
||||
func (f StrTo) String() string {
|
||||
if f.Exist() {
|
||||
return string(f)
|
||||
|
|
|
@ -30,7 +30,9 @@ const (
|
|||
MONITOR_CRON base.TplName = "admin/monitor/cron"
|
||||
)
|
||||
|
||||
var startTime = time.Now()
|
||||
var (
|
||||
startTime = time.Now()
|
||||
)
|
||||
|
||||
var sysStatus struct {
|
||||
Uptime string
|
||||
|
@ -157,8 +159,24 @@ func Users(ctx *middleware.Context) {
|
|||
ctx.Data["Title"] = "User Management"
|
||||
ctx.Data["PageIsUsers"] = true
|
||||
|
||||
p := base.StrTo(ctx.Query("p")).MustInt()
|
||||
if p < 1 {
|
||||
p = 1
|
||||
}
|
||||
pageNum := 100
|
||||
count := models.CountUsers()
|
||||
curCount := int64((p-1)*pageNum + pageNum)
|
||||
if curCount > count {
|
||||
p = int(count) / pageNum
|
||||
} else if count > curCount {
|
||||
ctx.Data["NextPageNum"] = p + 1
|
||||
}
|
||||
if p > 1 {
|
||||
ctx.Data["LastPageNum"] = p - 1
|
||||
}
|
||||
|
||||
var err error
|
||||
ctx.Data["Users"], err = models.GetUsers(200, 0)
|
||||
ctx.Data["Users"], err = models.GetUsers(pageNum, (p-1)*pageNum)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "admin.Users(GetUsers)", err)
|
||||
return
|
||||
|
@ -170,8 +188,24 @@ func Repositories(ctx *middleware.Context) {
|
|||
ctx.Data["Title"] = "Repository Management"
|
||||
ctx.Data["PageIsRepos"] = true
|
||||
|
||||
p := base.StrTo(ctx.Query("p")).MustInt()
|
||||
if p < 1 {
|
||||
p = 1
|
||||
}
|
||||
pageNum := 2
|
||||
count := models.CountRepositories()
|
||||
curCount := int64((p-1)*pageNum + pageNum)
|
||||
if curCount > count {
|
||||
p = int(count) / pageNum
|
||||
} else if count > curCount {
|
||||
ctx.Data["NextPageNum"] = p + 1
|
||||
}
|
||||
if p > 1 {
|
||||
ctx.Data["LastPageNum"] = p - 1
|
||||
}
|
||||
|
||||
var err error
|
||||
ctx.Data["Repos"], err = models.GetRepositoriesWithUsers(200, 0)
|
||||
ctx.Data["Repos"], err = models.GetRepositoriesWithUsers(pageNum, (p-1)*pageNum)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "admin.Repositories", err)
|
||||
return
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.4.5.0706 Alpha
|
||||
0.4.5.0707 Alpha
|
|
@ -37,6 +37,10 @@
|
|||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="pagination">
|
||||
{{if .LastPageNum}}<li><a href="/admin/repos?p={{.LastPageNum}}">« Prev.</a></li>{{end}}
|
||||
{{if .NextPageNum}}<li><a href="/admin/repos?p={{.NextPageNum}}">» Next</a></li>{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -38,6 +38,10 @@
|
|||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
<ul class="pagination">
|
||||
{{if .LastPageNum}}<li><a href="/admin/users?p={{.LastPageNum}}">« Prev.</a></li>{{end}}
|
||||
{{if .NextPageNum}}<li><a href="/admin/users?p={{.NextPageNum}}">» Next</a></li>{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue