From db4da7beecd6a8f65bfa264ba18a8cb12303921f Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sun, 13 Mar 2016 17:37:44 -0400 Subject: [PATCH] Add APIContext --- README.md | 1 + README_ZH.md | 1 + modules/context/api.go | 22 +++++++++++++ modules/context/context.go | 65 ++------------------------------------ modules/context/org.go | 11 +++++++ modules/context/repo.go | 50 +++++++++++++++++++++++++++++ public/css/gogs.css | 3 ++ public/less/_user.less | 3 ++ 8 files changed, 93 insertions(+), 63 deletions(-) create mode 100644 modules/context/api.go diff --git a/README.md b/README.md index 1bd7fcb37..ff571bcf7 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/README_ZH.md b/README_ZH.md index 7787a073d..e2fec31ee 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -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/)(团队交流) ### 产品支持 diff --git a/modules/context/api.go b/modules/context/api.go new file mode 100644 index 000000000..0c0cce8ca --- /dev/null +++ b/modules/context/api.go @@ -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) + } +} diff --git a/modules/context/context.go b/modules/context/context.go index 0c1ec520c..faff52f2c 100644 --- a/modules/context/context.go +++ b/modules/context/context.go @@ -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 // [:] -} - -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, "/") diff --git a/modules/context/org.go b/modules/context/org.go index 0f691fcdd..4cacdf4a1 100644 --- a/modules/context/org.go +++ b/modules/context/org.go @@ -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 diff --git a/modules/context/repo.go b/modules/context/repo.go index 547ed4ed8..a330da5c3 100644 --- a/modules/context/repo.go +++ b/modules/context/repo.go @@ -18,6 +18,56 @@ import ( "github.com/gogits/gogs/modules/setting" ) +type PullRequest struct { + BaseRepo *models.Repository + Allowed bool + SameRepo bool + HeadInfo string // [:] +} + +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 { diff --git a/public/css/gogs.css b/public/css/gogs.css index 3a04a140d..7c7ea83c6 100644 --- a/public/css/gogs.css +++ b/public/css/gogs.css @@ -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; } diff --git a/public/less/_user.less b/public/less/_user.less index 3e37011cf..7cb95ab4f 100644 --- a/public/less/_user.less +++ b/public/less/_user.less @@ -23,6 +23,9 @@ &.profile { .ui.card { + #profile-avatar { + height: 290px; + } .username { display: block; }