Add APIContext
This commit is contained in:
parent
b4f47a7623
commit
db4da7beec
8 changed files with 93 additions and 63 deletions
|
@ -105,6 +105,7 @@ There are 5 ways to install Gogs:
|
||||||
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs) (IT)
|
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs) (IT)
|
||||||
- [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management)
|
- [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management)
|
||||||
- [BearyChat](https://bearychat.com/) (Team Communication)
|
- [BearyChat](https://bearychat.com/) (Team Communication)
|
||||||
|
- [HiWork](http://www.hiwork.cc/) (Team Communication)
|
||||||
|
|
||||||
### Product Support
|
### Product Support
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自
|
||||||
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT)
|
- [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT)
|
||||||
- [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理)
|
- [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理)
|
||||||
- [BearyChat](https://bearychat.com/)(团队交流)
|
- [BearyChat](https://bearychat.com/)(团队交流)
|
||||||
|
- [HiWork](http://www.hiwork.cc/)(团队交流)
|
||||||
|
|
||||||
### 产品支持
|
### 产品支持
|
||||||
|
|
||||||
|
|
22
modules/context/api.go
Normal file
22
modules/context/api.go
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2016 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 context
|
||||||
|
|
||||||
|
import (
|
||||||
|
"gopkg.in/macaron.v1"
|
||||||
|
)
|
||||||
|
|
||||||
|
type APIContext struct {
|
||||||
|
*Context
|
||||||
|
}
|
||||||
|
|
||||||
|
func APIContexter() macaron.Handler {
|
||||||
|
return func(c *Context) {
|
||||||
|
ctx := &APIContext{
|
||||||
|
Context: c,
|
||||||
|
}
|
||||||
|
c.Map(ctx)
|
||||||
|
}
|
||||||
|
}
|
|
@ -18,8 +18,6 @@ import (
|
||||||
"github.com/go-macaron/session"
|
"github.com/go-macaron/session"
|
||||||
"gopkg.in/macaron.v1"
|
"gopkg.in/macaron.v1"
|
||||||
|
|
||||||
"github.com/gogits/git-module"
|
|
||||||
|
|
||||||
"github.com/gogits/gogs/models"
|
"github.com/gogits/gogs/models"
|
||||||
"github.com/gogits/gogs/modules/auth"
|
"github.com/gogits/gogs/modules/auth"
|
||||||
"github.com/gogits/gogs/modules/base"
|
"github.com/gogits/gogs/modules/base"
|
||||||
|
@ -27,56 +25,6 @@ import (
|
||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
type PullRequest struct {
|
|
||||||
BaseRepo *models.Repository
|
|
||||||
Allowed bool
|
|
||||||
SameRepo bool
|
|
||||||
HeadInfo string // [<user>:]<branch>
|
|
||||||
}
|
|
||||||
|
|
||||||
type Repository struct {
|
|
||||||
AccessMode models.AccessMode
|
|
||||||
IsWatching bool
|
|
||||||
IsViewBranch bool
|
|
||||||
IsViewTag bool
|
|
||||||
IsViewCommit bool
|
|
||||||
Repository *models.Repository
|
|
||||||
Owner *models.User
|
|
||||||
Commit *git.Commit
|
|
||||||
Tag *git.Tag
|
|
||||||
GitRepo *git.Repository
|
|
||||||
BranchName string
|
|
||||||
TagName string
|
|
||||||
TreeName string
|
|
||||||
CommitID string
|
|
||||||
RepoLink string
|
|
||||||
CloneLink models.CloneLink
|
|
||||||
CommitsCount int64
|
|
||||||
Mirror *models.Mirror
|
|
||||||
|
|
||||||
PullRequest *PullRequest
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsOwner returns true if current user is the owner of repository.
|
|
||||||
func (r *Repository) IsOwner() bool {
|
|
||||||
return r.AccessMode >= models.ACCESS_MODE_OWNER
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsAdmin returns true if current user has admin or higher access of repository.
|
|
||||||
func (r *Repository) IsAdmin() bool {
|
|
||||||
return r.AccessMode >= models.ACCESS_MODE_ADMIN
|
|
||||||
}
|
|
||||||
|
|
||||||
// IsWriter returns true if current user has write or higher access of repository.
|
|
||||||
func (r *Repository) IsWriter() bool {
|
|
||||||
return r.AccessMode >= models.ACCESS_MODE_WRITE
|
|
||||||
}
|
|
||||||
|
|
||||||
// HasAccess returns true if the current user has at least read access for this repository
|
|
||||||
func (r *Repository) HasAccess() bool {
|
|
||||||
return r.AccessMode >= models.ACCESS_MODE_READ
|
|
||||||
}
|
|
||||||
|
|
||||||
// Context represents context of a request.
|
// Context represents context of a request.
|
||||||
type Context struct {
|
type Context struct {
|
||||||
*macaron.Context
|
*macaron.Context
|
||||||
|
@ -90,17 +38,7 @@ type Context struct {
|
||||||
IsBasicAuth bool
|
IsBasicAuth bool
|
||||||
|
|
||||||
Repo *Repository
|
Repo *Repository
|
||||||
|
Org *Organization
|
||||||
Org struct {
|
|
||||||
IsOwner bool
|
|
||||||
IsMember bool
|
|
||||||
IsTeamMember bool // Is member of team.
|
|
||||||
IsTeamAdmin bool // In owner team or team that has admin permission level.
|
|
||||||
Organization *models.User
|
|
||||||
OrgLink string
|
|
||||||
|
|
||||||
Team *models.Team
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// HasError returns true if error occurs in form validation.
|
// HasError returns true if error occurs in form validation.
|
||||||
|
@ -223,6 +161,7 @@ func Contexter() macaron.Handler {
|
||||||
Repo: &Repository{
|
Repo: &Repository{
|
||||||
PullRequest: &PullRequest{},
|
PullRequest: &PullRequest{},
|
||||||
},
|
},
|
||||||
|
Org: &Organization{},
|
||||||
}
|
}
|
||||||
// Compute current URL for real-time change language.
|
// Compute current URL for real-time change language.
|
||||||
ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/")
|
ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/")
|
||||||
|
|
|
@ -13,6 +13,17 @@ import (
|
||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type Organization struct {
|
||||||
|
IsOwner bool
|
||||||
|
IsMember bool
|
||||||
|
IsTeamMember bool // Is member of team.
|
||||||
|
IsTeamAdmin bool // In owner team or team that has admin permission level.
|
||||||
|
Organization *models.User
|
||||||
|
OrgLink string
|
||||||
|
|
||||||
|
Team *models.Team
|
||||||
|
}
|
||||||
|
|
||||||
func HandleOrgAssignment(ctx *Context, args ...bool) {
|
func HandleOrgAssignment(ctx *Context, args ...bool) {
|
||||||
var (
|
var (
|
||||||
requireMember bool
|
requireMember bool
|
||||||
|
|
|
@ -18,6 +18,56 @@ import (
|
||||||
"github.com/gogits/gogs/modules/setting"
|
"github.com/gogits/gogs/modules/setting"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type PullRequest struct {
|
||||||
|
BaseRepo *models.Repository
|
||||||
|
Allowed bool
|
||||||
|
SameRepo bool
|
||||||
|
HeadInfo string // [<user>:]<branch>
|
||||||
|
}
|
||||||
|
|
||||||
|
type Repository struct {
|
||||||
|
AccessMode models.AccessMode
|
||||||
|
IsWatching bool
|
||||||
|
IsViewBranch bool
|
||||||
|
IsViewTag bool
|
||||||
|
IsViewCommit bool
|
||||||
|
Repository *models.Repository
|
||||||
|
Owner *models.User
|
||||||
|
Commit *git.Commit
|
||||||
|
Tag *git.Tag
|
||||||
|
GitRepo *git.Repository
|
||||||
|
BranchName string
|
||||||
|
TagName string
|
||||||
|
TreeName string
|
||||||
|
CommitID string
|
||||||
|
RepoLink string
|
||||||
|
CloneLink models.CloneLink
|
||||||
|
CommitsCount int64
|
||||||
|
Mirror *models.Mirror
|
||||||
|
|
||||||
|
PullRequest *PullRequest
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsOwner returns true if current user is the owner of repository.
|
||||||
|
func (r *Repository) IsOwner() bool {
|
||||||
|
return r.AccessMode >= models.ACCESS_MODE_OWNER
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsAdmin returns true if current user has admin or higher access of repository.
|
||||||
|
func (r *Repository) IsAdmin() bool {
|
||||||
|
return r.AccessMode >= models.ACCESS_MODE_ADMIN
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsWriter returns true if current user has write or higher access of repository.
|
||||||
|
func (r *Repository) IsWriter() bool {
|
||||||
|
return r.AccessMode >= models.ACCESS_MODE_WRITE
|
||||||
|
}
|
||||||
|
|
||||||
|
// HasAccess returns true if the current user has at least read access for this repository
|
||||||
|
func (r *Repository) HasAccess() bool {
|
||||||
|
return r.AccessMode >= models.ACCESS_MODE_READ
|
||||||
|
}
|
||||||
|
|
||||||
func RetrieveBaseRepo(ctx *Context, repo *models.Repository) {
|
func RetrieveBaseRepo(ctx *Context, repo *models.Repository) {
|
||||||
// Non-fork repository will not return error in this method.
|
// Non-fork repository will not return error in this method.
|
||||||
if err := repo.GetBaseRepo(); err != nil {
|
if err := repo.GetBaseRepo(); err != nil {
|
||||||
|
|
|
@ -2376,6 +2376,9 @@ footer .container .links > *:first-child {
|
||||||
.user.settings .email.list .item:not(:first-child) .button {
|
.user.settings .email.list .item:not(:first-child) .button {
|
||||||
margin-top: -10px;
|
margin-top: -10px;
|
||||||
}
|
}
|
||||||
|
.user.profile .ui.card #profile-avatar {
|
||||||
|
height: 290px;
|
||||||
|
}
|
||||||
.user.profile .ui.card .username {
|
.user.profile .ui.card .username {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@
|
||||||
|
|
||||||
&.profile {
|
&.profile {
|
||||||
.ui.card {
|
.ui.card {
|
||||||
|
#profile-avatar {
|
||||||
|
height: 290px;
|
||||||
|
}
|
||||||
.username {
|
.username {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue