diff options
author | Unknwon <u@gogs.io> | 2015-11-24 19:14:00 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2015-11-24 19:14:00 -0500 |
commit | 3ca544912fe84f5a3202855037a110af40809d43 (patch) | |
tree | 545d50b94b764380919b3408e7acef1b2105039d | |
parent | 7f9598141bd7b0200d9342f01243228eab3061ba (diff) | |
download | gitea-3ca544912fe84f5a3202855037a110af40809d43.tar.gz gitea-3ca544912fe84f5a3202855037a110af40809d43.zip |
#1944 Drop /org/ URL path prefix in organization home page
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | cmd/web.go | 7 | ||||
-rw-r--r-- | gogs.go | 2 | ||||
-rw-r--r-- | models/user.go | 3 | ||||
-rw-r--r-- | modules/middleware/org.go | 149 | ||||
-rw-r--r-- | routers/org/org.go | 27 | ||||
-rw-r--r-- | routers/user/home.go | 35 | ||||
-rw-r--r-- | templates/.VERSION | 2 | ||||
-rw-r--r-- | templates/org/header.tmpl | 2 | ||||
-rw-r--r-- | templates/org/home.tmpl | 10 | ||||
-rw-r--r-- | templates/org/settings/navbar.tmpl | 6 | ||||
-rw-r--r-- | templates/user/dashboard/navbar.tmpl | 2 |
12 files changed, 122 insertions, 125 deletions
@@ -5,7 +5,7 @@ Gogs - Go Git Service [![Build Status](https://travis-ci.org/gogits/gogs.svg?bra ![](public/img/gogs-large-resize.png) -##### Current version: 0.7.21 Beta +##### Current version: 0.7.22 Beta <table> <tr> diff --git a/cmd/web.go b/cmd/web.go index bf94ad1955..791183fdb4 100644 --- a/cmd/web.go +++ b/cmd/web.go @@ -395,7 +395,7 @@ func runWeb(ctx *cli.Context) { m.Get("/teams/:team/repositories", org.TeamRepositories) m.Route("/teams/:team/action/:action", "GET,POST", org.TeamsAction) m.Route("/teams/:team/action/repo/:action", "GET,POST", org.TeamsRepoAction) - }, middleware.OrgAssignment(true, true)) + }, middleware.OrgAssignment(true)) m.Group("/:org", func() { m.Get("/teams/new", org.NewTeam) @@ -424,11 +424,8 @@ func runWeb(ctx *cli.Context) { }) m.Route("/invitations/new", "GET,POST", org.Invitation) - }, middleware.OrgAssignment(true, true, true)) + }, middleware.OrgAssignment(true, true)) }, reqSignIn) - m.Group("/org", func() { - m.Get("/:org", org.Home) - }, ignSignIn, middleware.OrgAssignment(true)) // ***** END: Organization ***** // ***** START: Repository ***** @@ -17,7 +17,7 @@ import ( "github.com/gogits/gogs/modules/setting" ) -const APP_VER = "0.7.21.1124 Beta" +const APP_VER = "0.7.22.1124 Beta" func init() { runtime.GOMAXPROCS(runtime.NumCPU()) diff --git a/models/user.go b/models/user.go index 892399c961..fa19e0c4b4 100644 --- a/models/user.go +++ b/models/user.go @@ -145,9 +145,6 @@ func (u *User) DashboardLink() string { // HomeLink returns the user or organization home page link. func (u *User) HomeLink() string { - if u.IsOrganization() { - return setting.AppSubUrl + "/org/" + u.Name - } return setting.AppSubUrl + "/" + u.Name } diff --git a/modules/middleware/org.go b/modules/middleware/org.go index 1e7d4a6797..29754bb929 100644 --- a/modules/middleware/org.go +++ b/modules/middleware/org.go @@ -8,97 +8,94 @@ import ( "gopkg.in/macaron.v1" "github.com/gogits/gogs/models" - "github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/setting" ) -func OrgAssignment(redirect bool, args ...bool) macaron.Handler { - return func(ctx *Context) { - var ( - requireMember bool - requireOwner bool - requireAdminTeam bool - ) - if len(args) >= 1 { - requireMember = args[0] - } - if len(args) >= 2 { - requireOwner = args[1] - } - if len(args) >= 3 { - requireAdminTeam = args[2] - } +func HandleOrgAssignment(ctx *Context, args ...bool) { + var ( + requireMember bool + requireOwner bool + requireAdminTeam bool + ) + if len(args) >= 1 { + requireMember = args[0] + } + if len(args) >= 2 { + requireOwner = args[1] + } + if len(args) >= 3 { + requireAdminTeam = args[2] + } - orgName := ctx.Params(":org") + orgName := ctx.Params(":org") - var err error - ctx.Org.Organization, err = models.GetUserByName(orgName) - if err != nil { - if models.IsErrUserNotExist(err) { - ctx.Handle(404, "GetUserByName", err) - } else if redirect { - log.Error(4, "GetUserByName", err) - ctx.Redirect(setting.AppSubUrl + "/") - } else { - ctx.Handle(500, "GetUserByName", err) - } - return + var err error + ctx.Org.Organization, err = models.GetUserByName(orgName) + if err != nil { + if models.IsErrUserNotExist(err) { + ctx.Handle(404, "GetUserByName", err) + } else { + ctx.Handle(500, "GetUserByName", err) } - org := ctx.Org.Organization - ctx.Data["Org"] = org + return + } + org := ctx.Org.Organization + ctx.Data["Org"] = org - // Force redirection when username is actually a user. - if !org.IsOrganization() { - ctx.Redirect("/" + org.Name) - return - } + // Force redirection when username is actually a user. + if !org.IsOrganization() { + ctx.Redirect("/" + org.Name) + return + } - if ctx.IsSigned { - ctx.Org.IsOwner = org.IsOwnedBy(ctx.User.Id) - if ctx.Org.IsOwner { + if ctx.IsSigned { + ctx.Org.IsOwner = org.IsOwnedBy(ctx.User.Id) + if ctx.Org.IsOwner { + ctx.Org.IsMember = true + ctx.Org.IsAdminTeam = true + } else { + if org.IsOrgMember(ctx.User.Id) { ctx.Org.IsMember = true - ctx.Org.IsAdminTeam = true - } else { - if org.IsOrgMember(ctx.User.Id) { - ctx.Org.IsMember = true - } } - } else { - // Fake data. - ctx.Data["SignedUser"] = &models.User{} - } - if (requireMember && !ctx.Org.IsMember) || - (requireOwner && !ctx.Org.IsOwner) { - ctx.Handle(404, "OrgAssignment", err) - return } - ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner + } else { + // Fake data. + ctx.Data["SignedUser"] = &models.User{} + } + if (requireMember && !ctx.Org.IsMember) || + (requireOwner && !ctx.Org.IsOwner) { + ctx.Handle(404, "OrgAssignment", err) + return + } + ctx.Data["IsOrganizationOwner"] = ctx.Org.IsOwner - ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + org.Name - ctx.Data["OrgLink"] = ctx.Org.OrgLink + ctx.Org.OrgLink = setting.AppSubUrl + "/org/" + org.Name + ctx.Data["OrgLink"] = ctx.Org.OrgLink - // Team. - teamName := ctx.Params(":team") - if len(teamName) > 0 { - ctx.Org.Team, err = org.GetTeam(teamName) - if err != nil { - if err == models.ErrTeamNotExist { - ctx.Handle(404, "GetTeam", err) - } else if redirect { - log.Error(4, "GetTeam", err) - ctx.Redirect(setting.AppSubUrl + "/") - } else { - ctx.Handle(500, "GetTeam", err) - } - return + // Team. + teamName := ctx.Params(":team") + if len(teamName) > 0 { + ctx.Org.Team, err = org.GetTeam(teamName) + if err != nil { + if err == models.ErrTeamNotExist { + ctx.Handle(404, "GetTeam", err) + } else { + ctx.Handle(500, "GetTeam", err) } - ctx.Data["Team"] = ctx.Org.Team - ctx.Org.IsAdminTeam = ctx.Org.Team.IsOwnerTeam() || ctx.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN - } - ctx.Data["IsAdminTeam"] = ctx.Org.IsAdminTeam - if requireAdminTeam && !ctx.Org.IsAdminTeam { - ctx.Handle(404, "OrgAssignment", err) return } + ctx.Data["Team"] = ctx.Org.Team + ctx.Org.IsAdminTeam = ctx.Org.Team.IsOwnerTeam() || ctx.Org.Team.Authorize >= models.ACCESS_MODE_ADMIN + } + ctx.Data["IsAdminTeam"] = ctx.Org.IsAdminTeam + if requireAdminTeam && !ctx.Org.IsAdminTeam { + ctx.Handle(404, "OrgAssignment", err) + return + } +} + +func OrgAssignment(args ...bool) macaron.Handler { + return func(ctx *Context) { + HandleOrgAssignment(ctx, args...) } } diff --git a/routers/org/org.go b/routers/org/org.go index d1c1940cb9..dff11be47f 100644 --- a/routers/org/org.go +++ b/routers/org/org.go @@ -14,36 +14,9 @@ import ( ) const ( - HOME base.TplName = "org/home" CREATE base.TplName = "org/create" ) -func Home(ctx *middleware.Context) { - org := ctx.Org.Organization - ctx.Data["Title"] = org.FullName - - repos, err := models.GetRepositories(org.Id, ctx.IsSigned && org.IsOrgMember(ctx.User.Id)) - if err != nil { - ctx.Handle(500, "GetRepositories", err) - return - } - ctx.Data["Repos"] = repos - - if err = org.GetMembers(); err != nil { - ctx.Handle(500, "GetMembers", err) - return - } - ctx.Data["Members"] = org.Members - - if err = org.GetTeams(); err != nil { - ctx.Handle(500, "GetTeams", err) - return - } - ctx.Data["Teams"] = org.Teams - - ctx.HTML(200, HOME) -} - func Create(ctx *middleware.Context) { ctx.Data["Title"] = ctx.Tr("new_org") ctx.HTML(200, CREATE) diff --git a/routers/user/home.go b/routers/user/home.go index 39ceaed2e4..df567eaf2c 100644 --- a/routers/user/home.go +++ b/routers/user/home.go @@ -23,6 +23,7 @@ const ( ISSUES base.TplName = "user/dashboard/issues" STARS base.TplName = "user/stars" PROFILE base.TplName = "user/profile" + ORG_HOME base.TplName = "org/home" ) func getDashboardContextUser(ctx *middleware.Context) *models.User { @@ -305,6 +306,38 @@ func ShowSSHKeys(ctx *middleware.Context, uid int64) { ctx.PlainText(200, buf.Bytes()) } +func showOrgProfile(ctx *middleware.Context) { + ctx.SetParams(":org", ctx.Params(":username")) + middleware.HandleOrgAssignment(ctx) + if ctx.Written() { + return + } + + org := ctx.Org.Organization + ctx.Data["Title"] = org.FullName + + repos, err := models.GetRepositories(org.Id, ctx.IsSigned && org.IsOrgMember(ctx.User.Id)) + if err != nil { + ctx.Handle(500, "GetRepositories", err) + return + } + ctx.Data["Repos"] = repos + + if err = org.GetMembers(); err != nil { + ctx.Handle(500, "GetMembers", err) + return + } + ctx.Data["Members"] = org.Members + + if err = org.GetTeams(); err != nil { + ctx.Handle(500, "GetTeams", err) + return + } + ctx.Data["Teams"] = org.Teams + + ctx.HTML(200, ORG_HOME) +} + func Profile(ctx *middleware.Context) { ctx.Data["Title"] = "Profile" ctx.Data["PageIsUserProfile"] = true @@ -342,7 +375,7 @@ func Profile(ctx *middleware.Context) { } if u.IsOrganization() { - ctx.Redirect(setting.AppSubUrl + "/org/" + u.Name) + showOrgProfile(ctx) return } ctx.Data["Owner"] = u diff --git a/templates/.VERSION b/templates/.VERSION index 5ca4043c1f..06ee4e4704 100644 --- a/templates/.VERSION +++ b/templates/.VERSION @@ -1 +1 @@ -0.7.21.1124 Beta
\ No newline at end of file +0.7.22.1124 Beta
\ No newline at end of file diff --git a/templates/org/header.tmpl b/templates/org/header.tmpl index 68c25a9865..c30433d96b 100644 --- a/templates/org/header.tmpl +++ b/templates/org/header.tmpl @@ -4,7 +4,7 @@ <div class="column"> <div class="ui header"> <img class="ui image" src="{{.AvatarLink}}?s=100"> - <span class="text thin grey"><a href="{{AppSubUrl}}/org/{{.Name}}">{{.DisplayName}}</a></span> + <span class="text thin grey"><a href="{{.HomeLink}}">{{.DisplayName}}</a></span> <div class="ui right"> <div class="ui menu"> diff --git a/templates/org/home.tmpl b/templates/org/home.tmpl index 9f64f30259..f1e19e30dc 100644 --- a/templates/org/home.tmpl +++ b/templates/org/home.tmpl @@ -40,7 +40,7 @@ <strong>{{.i18n.Tr "org.people"}}</strong> {{if $isMember}} <div class="ui right"> - <a class="text grey" href="{{.Org.HomeLink}}/members"><strong>{{.Org.NumMembers}}</strong><span class="octicon octicon-chevron-right"></span></a> + <a class="text grey" href="{{.OrgLink}}/members"><strong>{{.Org.NumMembers}}</strong><span class="octicon octicon-chevron-right"></span></a> </div> {{end}} </h4> @@ -53,7 +53,7 @@ </div> {{if .IsOrganizationOwner}} <div class="ui bottom attached segment"> - <a class="ui blue small button" href="{{.Org.HomeLink}}/invitations/new">{{.i18n.Tr "org.invite_someone"}}</a> + <a class="ui blue small button" href="{{.OrgLink}}/invitations/new">{{.i18n.Tr "org.invite_someone"}}</a> </div> {{end}} @@ -61,20 +61,20 @@ <div class="ui top attached header"> <strong>{{.i18n.Tr "org.teams"}}</strong> <div class="ui right"> - <a class="text grey" href="{{.Org.HomeLink}}/teams"><strong>{{.Org.NumTeams}}</strong><span class="octicon octicon-chevron-right"></span></a> + <a class="text grey" href="{{.OrgLink}}/teams"><strong>{{.Org.NumTeams}}</strong><span class="octicon octicon-chevron-right"></span></a> </div> </div> <div class="ui attached table segment teams"> {{range .Teams}} <div class="item"> - <a href="{{$.Org.HomeLink}}/teams/{{.LowerName}}"><strong class="team-name">{{.Name}}</strong></a> + <a href="{{$.OrgLink}}/teams/{{.LowerName}}"><strong class="team-name">{{.Name}}</strong></a> <p class="text grey">{{.NumMembers}} {{$.i18n.Tr "org.lower_members"}} ยท {{.NumRepos}} {{$.i18n.Tr "org.lower_repositories"}}</p> </div> {{end}} </div> {{if .IsOrganizationOwner}} <div class="ui bottom attached segment"> - <a class="ui blue small button" href="{{.Org.HomeLink}}/teams/new">{{.i18n.Tr "org.create_new_team"}}</a> + <a class="ui blue small button" href="{{.OrgLink}}/teams/new">{{.i18n.Tr "org.create_new_team"}}</a> </div> {{end}} {{end}} diff --git a/templates/org/settings/navbar.tmpl b/templates/org/settings/navbar.tmpl index 30f5818768..d6bfe04145 100644 --- a/templates/org/settings/navbar.tmpl +++ b/templates/org/settings/navbar.tmpl @@ -1,13 +1,13 @@ <div class="four wide column"> <div class="ui vertical menu"> <div class="header item">{{.i18n.Tr "org.settings"}}</div> - <a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.Org.HomeLink}}/settings"> + <a class="{{if .PageIsSettingsOptions}}active{{end}} item" href="{{.OrgLink}}/settings"> {{.i18n.Tr "org.settings.options"}} </a> - <a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.Org.HomeLink}}/settings/hooks"> + <a class="{{if .PageIsSettingsHooks}}active{{end}} item" href="{{.OrgLink}}/settings/hooks"> {{.i18n.Tr "repo.settings.hooks"}} </a> - <a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{.Org.HomeLink}}/settings/delete"> + <a class="{{if .PageIsSettingsDelete}}active{{end}} item" href="{{.OrgLink}}/settings/delete"> {{.i18n.Tr "org.settings.delete"}} </a> </div> diff --git a/templates/user/dashboard/navbar.tmpl b/templates/user/dashboard/navbar.tmpl index 7d9c999507..eb74191702 100644 --- a/templates/user/dashboard/navbar.tmpl +++ b/templates/user/dashboard/navbar.tmpl @@ -41,7 +41,7 @@ </a> <div class="right menu"> <div class="item"> - <a class="ui blue basic button" href="{{AppSubUrl}}/org/{{.ContextUser.Name}}"> + <a class="ui blue basic button" href="{{.ContextUser.HomeLink}}"> {{.i18n.Tr "home.view_home" (.ContextUser.ShortName 10)}} </a> </div> |