mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 08:30:25 +08:00 
			
		
		
		
	Paging function for users and repositories
This commit is contained in:
		
							
								
								
									
										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>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user