diff options
author | Unknwon <joe2010xtmf@163.com> | 2014-08-26 18:11:15 +0800 |
---|---|---|
committer | Unknwon <joe2010xtmf@163.com> | 2014-08-26 18:11:15 +0800 |
commit | 74b31566cf5caaf6bf73584e621d56ca99c048d1 (patch) | |
tree | 078a8428e5241d13600482301444684720a77283 /routers | |
parent | f2c263c54facdcbc9375a47535c0389fd7d05875 (diff) |
Finsih add/remove repo in organization
Diffstat (limited to 'routers')
-rw-r--r-- | routers/api/v1/repos.go | 57 | ||||
-rw-r--r-- | routers/api/v1/repositories.go | 13 | ||||
-rw-r--r-- | routers/api/v1/users.go | 22 | ||||
-rw-r--r-- | routers/org/teams.go | 51 |
4 files changed, 120 insertions, 23 deletions
diff --git a/routers/api/v1/repos.go b/routers/api/v1/repos.go new file mode 100644 index 00000000..67cf9e65 --- /dev/null +++ b/routers/api/v1/repos.go @@ -0,0 +1,57 @@ +// 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 v1 + +import ( + "path" + + "github.com/Unknwon/com" + + "github.com/gogits/gogs/models" + "github.com/gogits/gogs/modules/middleware" +) + +type repo struct { + RepoLink string `json:"repolink"` +} + +func SearchRepos(ctx *middleware.Context) { + opt := models.SearchOption{ + Keyword: path.Base(ctx.Query("q")), + Uid: com.StrTo(ctx.Query("uid")).MustInt64(), + Limit: com.StrTo(ctx.Query("limit")).MustInt(), + } + if opt.Limit == 0 { + opt.Limit = 10 + } + + repos, err := models.SearchRepositoryByName(opt) + if err != nil { + ctx.JSON(500, map[string]interface{}{ + "ok": false, + "error": err.Error(), + }) + return + } + + results := make([]*repo, len(repos)) + for i := range repos { + if err = repos[i].GetOwner(); err != nil { + ctx.JSON(500, map[string]interface{}{ + "ok": false, + "error": err.Error(), + }) + return + } + results[i] = &repo{ + RepoLink: path.Join(repos[i].Owner.Name, repos[i].Name), + } + } + + ctx.Render.JSON(200, map[string]interface{}{ + "ok": true, + "data": results, + }) +} diff --git a/routers/api/v1/repositories.go b/routers/api/v1/repositories.go deleted file mode 100644 index 11c8b6b2..00000000 --- a/routers/api/v1/repositories.go +++ /dev/null @@ -1,13 +0,0 @@ -// 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 v1 - -import ( - "github.com/gogits/gogs/modules/middleware" -) - -func SearchOrgRepositoreis(ctx *middleware.Context) { - -} diff --git a/routers/api/v1/users.go b/routers/api/v1/users.go index fe670337..062c3680 100644 --- a/routers/api/v1/users.go +++ b/routers/api/v1/users.go @@ -17,21 +17,29 @@ type user struct { } func SearchUsers(ctx *middleware.Context) { - q := ctx.Query("q") - limit, err := com.StrTo(ctx.Query("limit")).Int() - if err != nil { - limit = 10 + opt := models.SearchOption{ + Keyword: ctx.Query("q"), + Limit: com.StrTo(ctx.Query("limit")).MustInt(), + } + if opt.Limit == 0 { + opt.Limit = 10 } - us, err := models.SearchUserByName(q, limit) + us, err := models.SearchUserByName(opt) if err != nil { - ctx.JSON(500, nil) + ctx.JSON(500, map[string]interface{}{ + "ok": false, + "error": err.Error(), + }) return } results := make([]*user, len(us)) for i := range us { - results[i] = &user{us[i].Name, us[i].AvatarLink()} + results[i] = &user{ + UserName: us[i].Name, + AvatarLink: us[i].AvatarLink(), + } } ctx.Render.JSON(200, map[string]interface{}{ diff --git a/routers/org/teams.go b/routers/org/teams.go index 4c986d4a..b0a69da7 100644 --- a/routers/org/teams.go +++ b/routers/org/teams.go @@ -5,6 +5,8 @@ package org import ( + "path" + "github.com/Unknwon/com" "github.com/gogits/gogs/models" @@ -15,9 +17,10 @@ import ( ) const ( - TEAMS base.TplName = "org/team/teams" - TEAM_NEW base.TplName = "org/team/new" - TEAM_MEMBERS base.TplName = "org/team/members" + TEAMS base.TplName = "org/team/teams" + TEAM_NEW base.TplName = "org/team/new" + TEAM_MEMBERS base.TplName = "org/team/members" + TEAM_REPOSITORIES base.TplName = "org/team/repositories" ) func Teams(ctx *middleware.Context) { @@ -108,6 +111,38 @@ func TeamsAction(ctx *middleware.Context) { } } +func TeamsRepoAction(ctx *middleware.Context) { + if !ctx.Org.IsOwner { + ctx.Error(404) + return + } + + var err error + switch ctx.Params(":action") { + case "add": + repoName := path.Base(ctx.Query("repo-name")) + var repo *models.Repository + repo, err = models.GetRepositoryByName(ctx.Org.Organization.Id, repoName) + if err != nil { + ctx.Handle(500, "GetRepositoryByName", err) + return + } + err = ctx.Org.Team.AddRepository(repo) + case "remove": + err = ctx.Org.Team.RemoveRepository(com.StrTo(ctx.Query("repoid")).MustInt64()) + } + + if err != nil { + log.Error(4, "Action(%s): %v", ctx.Params(":action"), err) + ctx.JSON(200, map[string]interface{}{ + "ok": false, + "err": err.Error(), + }) + return + } + ctx.Redirect(ctx.Org.OrgLink + "/teams/" + ctx.Org.Team.LowerName + "/repositories") +} + func NewTeam(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Org.Organization.FullName ctx.Data["PageIsOrgTeams"] = true @@ -176,6 +211,16 @@ func TeamMembers(ctx *middleware.Context) { ctx.HTML(200, TEAM_MEMBERS) } +func TeamRepositories(ctx *middleware.Context) { + ctx.Data["Title"] = ctx.Org.Team.Name + ctx.Data["PageIsOrgTeams"] = true + if err := ctx.Org.Team.GetRepositories(); err != nil { + ctx.Handle(500, "GetRepositories", err) + return + } + ctx.HTML(200, TEAM_REPOSITORIES) +} + func EditTeam(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Org.Organization.FullName ctx.Data["PageIsOrgTeams"] = true |