diff options
Diffstat (limited to 'internal/route/admin/repos.go')
-rw-r--r-- | internal/route/admin/repos.go | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/internal/route/admin/repos.go b/internal/route/admin/repos.go new file mode 100644 index 00000000..c5f3469d --- /dev/null +++ b/internal/route/admin/repos.go @@ -0,0 +1,87 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package admin + +import ( + "github.com/unknwon/paginater" + log "gopkg.in/clog.v1" + + "gogs.io/gogs/internal/context" + "gogs.io/gogs/internal/db" + "gogs.io/gogs/internal/setting" +) + +const ( + REPOS = "admin/repo/list" +) + +func Repos(c *context.Context) { + c.Data["Title"] = c.Tr("admin.repositories") + c.Data["PageIsAdmin"] = true + c.Data["PageIsAdminRepositories"] = true + + page := c.QueryInt("page") + if page <= 0 { + page = 1 + } + + var ( + repos []*db.Repository + count int64 + err error + ) + + keyword := c.Query("q") + if len(keyword) == 0 { + repos, err = db.Repositories(page, setting.UI.Admin.RepoPagingNum) + if err != nil { + c.Handle(500, "Repositories", err) + return + } + count = db.CountRepositories(true) + } else { + repos, count, err = db.SearchRepositoryByName(&db.SearchRepoOptions{ + Keyword: keyword, + OrderBy: "id ASC", + Private: true, + Page: page, + PageSize: setting.UI.Admin.RepoPagingNum, + }) + if err != nil { + c.Handle(500, "SearchRepositoryByName", err) + return + } + } + c.Data["Keyword"] = keyword + c.Data["Total"] = count + c.Data["Page"] = paginater.New(int(count), setting.UI.Admin.RepoPagingNum, page, 5) + + if err = db.RepositoryList(repos).LoadAttributes(); err != nil { + c.Handle(500, "LoadAttributes", err) + return + } + c.Data["Repos"] = repos + + c.HTML(200, REPOS) +} + +func DeleteRepo(c *context.Context) { + repo, err := db.GetRepositoryByID(c.QueryInt64("id")) + if err != nil { + c.Handle(500, "GetRepositoryByID", err) + return + } + + if err := db.DeleteRepository(repo.MustOwner().ID, repo.ID); err != nil { + c.Handle(500, "DeleteRepository", err) + return + } + log.Trace("Repository deleted: %s/%s", repo.MustOwner().Name, repo.Name) + + c.Flash.Success(c.Tr("repo.settings.deletion_success")) + c.JSON(200, map[string]interface{}{ + "redirect": setting.AppSubURL + "/admin/repos?page=" + c.Query("page"), + }) +} |