| @@ -105,6 +105,7 @@ There are 5 ways to install Gogs: | |||
| - [Puppet](https://forge.puppetlabs.com/Siteminds/gogs) (IT) | |||
| - [Kanboard](http://kanboard.net/plugin/gogs-webhook) (Project Management) | |||
| - [BearyChat](https://bearychat.com/) (Team Communication) | |||
| - [HiWork](http://www.hiwork.cc/) (Team Communication) | |||
| ### Product Support | |||
| @@ -77,6 +77,7 @@ Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自 | |||
| - [Puppet](https://forge.puppetlabs.com/Siteminds/gogs)(IT) | |||
| - [Kanboard](http://kanboard.net/plugin/gogs-webhook)(项目管理) | |||
| - [BearyChat](https://bearychat.com/)(团队交流) | |||
| - [HiWork](http://www.hiwork.cc/)(团队交流) | |||
| ### 产品支持 | |||
| @@ -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" | |||
| "gopkg.in/macaron.v1" | |||
| "github.com/gogits/git-module" | |||
| "github.com/gogits/gogs/models" | |||
| "github.com/gogits/gogs/modules/auth" | |||
| "github.com/gogits/gogs/modules/base" | |||
| @@ -27,56 +25,6 @@ import ( | |||
| "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. | |||
| type Context struct { | |||
| *macaron.Context | |||
| @@ -90,17 +38,7 @@ type Context struct { | |||
| IsBasicAuth bool | |||
| Repo *Repository | |||
| 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 | |||
| } | |||
| Org *Organization | |||
| } | |||
| // HasError returns true if error occurs in form validation. | |||
| @@ -223,6 +161,7 @@ func Contexter() macaron.Handler { | |||
| Repo: &Repository{ | |||
| PullRequest: &PullRequest{}, | |||
| }, | |||
| Org: &Organization{}, | |||
| } | |||
| // Compute current URL for real-time change language. | |||
| ctx.Data["Link"] = setting.AppSubUrl + strings.TrimSuffix(ctx.Req.URL.Path, "/") | |||
| @@ -13,6 +13,17 @@ import ( | |||
| "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) { | |||
| var ( | |||
| requireMember bool | |||
| @@ -18,6 +18,56 @@ import ( | |||
| "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) { | |||
| // Non-fork repository will not return error in this method. | |||
| if err := repo.GetBaseRepo(); err != nil { | |||
| @@ -2376,6 +2376,9 @@ footer .container .links > *:first-child { | |||
| .user.settings .email.list .item:not(:first-child) .button { | |||
| margin-top: -10px; | |||
| } | |||
| .user.profile .ui.card #profile-avatar { | |||
| height: 290px; | |||
| } | |||
| .user.profile .ui.card .username { | |||
| display: block; | |||
| } | |||
| @@ -23,6 +23,9 @@ | |||
| &.profile { | |||
| .ui.card { | |||
| #profile-avatar { | |||
| height: 290px; | |||
| } | |||
| .username { | |||
| display: block; | |||
| } | |||