summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2015-11-24 19:14:00 -0500
committerUnknwon <u@gogs.io>2015-11-24 19:14:00 -0500
commit3ca544912fe84f5a3202855037a110af40809d43 (patch)
tree545d50b94b764380919b3408e7acef1b2105039d
parent7f9598141bd7b0200d9342f01243228eab3061ba (diff)
downloadgitea-3ca544912fe84f5a3202855037a110af40809d43.tar.gz
gitea-3ca544912fe84f5a3202855037a110af40809d43.zip
#1944 Drop /org/ URL path prefix in organization home page
-rw-r--r--README.md2
-rw-r--r--cmd/web.go7
-rw-r--r--gogs.go2
-rw-r--r--models/user.go3
-rw-r--r--modules/middleware/org.go149
-rw-r--r--routers/org/org.go27
-rw-r--r--routers/user/home.go35
-rw-r--r--templates/.VERSION2
-rw-r--r--templates/org/header.tmpl2
-rw-r--r--templates/org/home.tmpl10
-rw-r--r--templates/org/settings/navbar.tmpl6
-rw-r--r--templates/user/dashboard/navbar.tmpl2
12 files changed, 122 insertions, 125 deletions
diff --git a/README.md b/README.md
index ba27503717..a2e06c6fc7 100644
--- a/README.md
+++ b/README.md
@@ -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 *****
diff --git a/gogs.go b/gogs.go
index 5814599407..47649e2cb7 100644
--- a/gogs.go
+++ b/gogs.go
@@ -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>