mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Add APIContext
This commit is contained in:
		@@ -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 New Issue
	
	Block a user