Merge remote-tracking branch 'upstream/dev'
Conflicts: models/repo.go
This commit is contained in:
commit
8d2a6fc484
79 changed files with 2539 additions and 527 deletions
46
routers/admin/notice.go
Normal file
46
routers/admin/notice.go
Normal file
|
@ -0,0 +1,46 @@
|
|||
// 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/com"
|
||||
|
||||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/modules/base"
|
||||
"github.com/gogits/gogs/modules/log"
|
||||
"github.com/gogits/gogs/modules/middleware"
|
||||
)
|
||||
|
||||
const (
|
||||
NOTICES base.TplName = "admin/notice"
|
||||
)
|
||||
|
||||
func Notices(ctx *middleware.Context) {
|
||||
ctx.Data["Title"] = ctx.Tr("admin.notices")
|
||||
ctx.Data["PageIsAdmin"] = true
|
||||
ctx.Data["PageIsAdminNotices"] = true
|
||||
|
||||
pageNum := 50
|
||||
p := pagination(ctx, models.CountNotices(), pageNum)
|
||||
|
||||
notices, err := models.GetNotices(pageNum, (p-1)*pageNum)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "GetNotices", err)
|
||||
return
|
||||
}
|
||||
ctx.Data["Notices"] = notices
|
||||
ctx.HTML(200, NOTICES)
|
||||
}
|
||||
|
||||
func DeleteNotice(ctx *middleware.Context) {
|
||||
id := com.StrTo(ctx.Params(":id")).MustInt64()
|
||||
if err := models.DeleteNotice(id); err != nil {
|
||||
ctx.Handle(500, "DeleteNotice", err)
|
||||
return
|
||||
}
|
||||
log.Trace("System notice deleted by admin(%s): %d", ctx.User.Name, id)
|
||||
ctx.Flash.Success(ctx.Tr("admin.notices.delete_success"))
|
||||
ctx.Redirect("/admin/notices")
|
||||
}
|
|
@ -25,7 +25,7 @@ func Organizations(ctx *middleware.Context) {
|
|||
var err error
|
||||
ctx.Data["Orgs"], err = models.GetOrganizations(pageNum, (p-1)*pageNum)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "GetUsers", err)
|
||||
ctx.Handle(500, "GetOrganizations", err)
|
||||
return
|
||||
}
|
||||
ctx.HTML(200, ORGS)
|
||||
|
|
|
@ -24,14 +24,14 @@ const (
|
|||
)
|
||||
|
||||
func pagination(ctx *middleware.Context, count int64, pageNum int) int {
|
||||
p := com.StrTo(ctx.Query("p")).MustInt()
|
||||
p := ctx.QueryInt("p")
|
||||
if p < 1 {
|
||||
p = 1
|
||||
}
|
||||
curCount := int64((p-1)*pageNum + pageNum)
|
||||
if curCount > count {
|
||||
if curCount >= count {
|
||||
p = int(count) / pageNum
|
||||
} else if count > curCount {
|
||||
} else {
|
||||
ctx.Data["NextPageNum"] = p + 1
|
||||
}
|
||||
if p > 1 {
|
||||
|
@ -48,12 +48,12 @@ func Users(ctx *middleware.Context) {
|
|||
pageNum := 50
|
||||
p := pagination(ctx, models.CountUsers(), pageNum)
|
||||
|
||||
var err error
|
||||
ctx.Data["Users"], err = models.GetUsers(pageNum, (p-1)*pageNum)
|
||||
users, err := models.GetUsers(pageNum, (p-1)*pageNum)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "GetUsers", err)
|
||||
return
|
||||
}
|
||||
ctx.Data["Users"] = users
|
||||
ctx.HTML(200, USERS)
|
||||
}
|
||||
|
||||
|
|
|
@ -92,7 +92,7 @@ func SettingsDelete(ctx *middleware.Context) {
|
|||
ctx.Handle(500, "DeleteOrganization", err)
|
||||
}
|
||||
} else {
|
||||
log.Trace("Organization deleted: %s", ctx.User.Name)
|
||||
log.Trace("Organization deleted: %s", org.Name)
|
||||
ctx.Redirect(setting.AppSubUrl + "/")
|
||||
}
|
||||
return
|
||||
|
|
|
@ -124,6 +124,11 @@ func TeamsRepoAction(ctx *middleware.Context) {
|
|||
var repo *models.Repository
|
||||
repo, err = models.GetRepositoryByName(ctx.Org.Organization.Id, repoName)
|
||||
if err != nil {
|
||||
if err == models.ErrRepoNotExist {
|
||||
ctx.Flash.Error(ctx.Tr("org.teams.add_nonexistent_repo"))
|
||||
ctx.Redirect(ctx.Org.OrgLink + "/teams/" + ctx.Org.Team.LowerName + "/repositories")
|
||||
return
|
||||
}
|
||||
ctx.Handle(500, "GetRepositoryByName", err)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -159,6 +159,7 @@ func Diff(ctx *middleware.Context) {
|
|||
ctx.Data["IsImageFile"] = isImageFile
|
||||
ctx.Data["Title"] = commit.Summary() + " · " + base.ShortSha(commitId)
|
||||
ctx.Data["Commit"] = commit
|
||||
ctx.Data["Author"] = models.ValidateCommitWithEmail(commit)
|
||||
ctx.Data["Diff"] = diff
|
||||
ctx.Data["Parents"] = parents
|
||||
ctx.Data["DiffNotAvailable"] = diff.NumFiles() == 0
|
||||
|
@ -212,6 +213,7 @@ func CompareDiff(ctx *middleware.Context) {
|
|||
ctx.Handle(500, "CommitsBeforeUntil", err)
|
||||
return
|
||||
}
|
||||
commits = models.ValidateCommitsWithEmails(commits)
|
||||
|
||||
ctx.Data["Commits"] = commits
|
||||
ctx.Data["CommitCount"] = commits.Len()
|
||||
|
@ -274,13 +276,15 @@ func FileHistory(ctx *middleware.Context) {
|
|||
nextPage = 0
|
||||
}
|
||||
|
||||
ctx.Data["Commits"], err = ctx.Repo.GitRepo.CommitsByFileAndRange(
|
||||
commits, err := ctx.Repo.GitRepo.CommitsByFileAndRange(
|
||||
branchName, fileName, page)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "repo.FileHistory(CommitsByRange)", err)
|
||||
return
|
||||
}
|
||||
commits = models.ValidateCommitsWithEmails(commits)
|
||||
|
||||
ctx.Data["Commits"] = commits
|
||||
ctx.Data["Username"] = userName
|
||||
ctx.Data["Reponame"] = repoName
|
||||
ctx.Data["FileName"] = fileName
|
||||
|
|
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/gogits/gogs/models"
|
||||
"github.com/gogits/gogs/modules/auth"
|
||||
"github.com/gogits/gogs/modules/base"
|
||||
"github.com/gogits/gogs/modules/git"
|
||||
"github.com/gogits/gogs/modules/log"
|
||||
"github.com/gogits/gogs/modules/mailer"
|
||||
"github.com/gogits/gogs/modules/middleware"
|
||||
|
@ -26,6 +27,8 @@ const (
|
|||
SETTINGS_OPTIONS base.TplName = "repo/settings/options"
|
||||
COLLABORATION base.TplName = "repo/settings/collaboration"
|
||||
HOOKS base.TplName = "repo/settings/hooks"
|
||||
GITHOOKS base.TplName = "repo/settings/githooks"
|
||||
GITHOOK_EDIT base.TplName = "repo/settings/githook_edit"
|
||||
HOOK_NEW base.TplName = "repo/settings/hook_new"
|
||||
ORG_HOOK_NEW base.TplName = "org/settings/hook_new"
|
||||
)
|
||||
|
@ -193,9 +196,16 @@ func SettingsCollaboration(ctx *middleware.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
// Check if user is organization member.
|
||||
if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
|
||||
ctx.Flash.Info(ctx.Tr("repo.settings.user_is_org_member"))
|
||||
ctx.Redirect(ctx.Repo.RepoLink + "/settings/collaboration")
|
||||
return
|
||||
}
|
||||
|
||||
if err = models.AddAccess(&models.Access{UserName: name, RepoName: repoLink,
|
||||
Mode: models.WRITABLE}); err != nil {
|
||||
ctx.Handle(500, "AddAccess2", err)
|
||||
ctx.Handle(500, "AddAccess", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -244,16 +254,20 @@ func SettingsCollaboration(ctx *middleware.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
us := make([]*models.User, len(names))
|
||||
for i, name := range names {
|
||||
us[i], err = models.GetUserByName(name)
|
||||
collaborators := make([]*models.User, 0, len(names))
|
||||
for _, name := range names {
|
||||
u, err := models.GetUserByName(name)
|
||||
if err != nil {
|
||||
ctx.Handle(500, "GetUserByName", err)
|
||||
return
|
||||
}
|
||||
// Does not show organization members.
|
||||
if ctx.Repo.Owner.IsOrganization() && ctx.Repo.Owner.IsOrgMember(u.Id) {
|
||||
continue
|
||||
}
|
||||
collaborators = append(collaborators, u)
|
||||
}
|
||||
|
||||
ctx.Data["Collaborators"] = us
|
||||
ctx.Data["Collaborators"] = collaborators
|
||||
ctx.HTML(200, COLLABORATION)
|
||||
}
|
||||
|
||||
|
@ -591,3 +605,54 @@ func getOrgRepoCtx(ctx *middleware.Context) (*OrgRepoCtx, error) {
|
|||
return &OrgRepoCtx{}, errors.New("Unable to set OrgRepo context")
|
||||
}
|
||||
}
|
||||
|
||||
func GitHooks(ctx *middleware.Context) {
|
||||
ctx.Data["Title"] = ctx.Tr("repo.settings")
|
||||
ctx.Data["PageIsSettingsGitHooks"] = true
|
||||
|
||||
hooks, err := ctx.Repo.GitRepo.Hooks()
|
||||
if err != nil {
|
||||
ctx.Handle(500, "Hooks", err)
|
||||
return
|
||||
}
|
||||
ctx.Data["Hooks"] = hooks
|
||||
|
||||
ctx.HTML(200, GITHOOKS)
|
||||
}
|
||||
|
||||
func GitHooksEdit(ctx *middleware.Context) {
|
||||
ctx.Data["Title"] = ctx.Tr("repo.settings")
|
||||
ctx.Data["PageIsSettingsGitHooks"] = true
|
||||
|
||||
name := ctx.Params(":name")
|
||||
hook, err := ctx.Repo.GitRepo.GetHook(name)
|
||||
if err != nil {
|
||||
if err == git.ErrNotValidHook {
|
||||
ctx.Handle(404, "GetHook", err)
|
||||
} else {
|
||||
ctx.Handle(500, "GetHook", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
ctx.Data["Hook"] = hook
|
||||
ctx.HTML(200, GITHOOK_EDIT)
|
||||
}
|
||||
|
||||
func GitHooksEditPost(ctx *middleware.Context) {
|
||||
name := ctx.Params(":name")
|
||||
hook, err := ctx.Repo.GitRepo.GetHook(name)
|
||||
if err != nil {
|
||||
if err == git.ErrNotValidHook {
|
||||
ctx.Handle(404, "GetHook", err)
|
||||
} else {
|
||||
ctx.Handle(500, "GetHook", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
hook.Content = ctx.Query("content")
|
||||
if err = hook.Update(); err != nil {
|
||||
ctx.Handle(500, "hook.Update", err)
|
||||
return
|
||||
}
|
||||
ctx.Redirect(ctx.Repo.RepoLink + "/settings/hooks/git")
|
||||
}
|
||||
|
|
|
@ -166,7 +166,7 @@ func Home(ctx *middleware.Context) {
|
|||
}
|
||||
|
||||
if readmeFile != nil {
|
||||
ctx.Data["ReadmeInHome"] = true
|
||||
ctx.Data["ReadmeInList"] = true
|
||||
ctx.Data["ReadmeExist"] = true
|
||||
if dataRc, err := readmeFile.Data(); err != nil {
|
||||
ctx.Handle(404, "repo.SinglereadmeFile.LookupBlob", err)
|
||||
|
|
|
@ -177,9 +177,13 @@ func SettingsSSHKeysPost(ctx *middleware.Context, form auth.AddSSHKeyForm) {
|
|||
cleanContent := strings.Replace(form.Content, "\n", "", -1)
|
||||
|
||||
if ok, err := models.CheckPublicKeyString(cleanContent); !ok {
|
||||
ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error()))
|
||||
ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh")
|
||||
return
|
||||
if err == models.ErrKeyUnableVerify {
|
||||
ctx.Flash.Info(ctx.Tr("form.unable_verify_ssh_key"))
|
||||
} else {
|
||||
ctx.Flash.Error(ctx.Tr("form.invalid_ssh_key", err.Error()))
|
||||
ctx.Redirect(setting.AppSubUrl + "/user/settings/ssh")
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
k := &models.PublicKey{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue