diff options
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/models/repo.go b/models/repo.go index eecc36377b..1f544f1e8c 100644 --- a/models/repo.go +++ b/models/repo.go @@ -173,8 +173,8 @@ type Repository struct { *Mirror `xorm:"-"` Status RepositoryStatus `xorm:"NOT NULL DEFAULT 0"` - ExternalMetas map[string]string `xorm:"-"` - Units []*RepoUnit `xorm:"-"` + RenderingMetas map[string]string `xorm:"-"` + Units []*RepoUnit `xorm:"-"` IsFork bool `xorm:"INDEX NOT NULL DEFAULT false"` ForkID int64 `xorm:"INDEX"` @@ -559,27 +559,39 @@ func (repo *Repository) mustOwnerName(e Engine) string { // ComposeMetas composes a map of metas for properly rendering issue links and external issue trackers. func (repo *Repository) ComposeMetas() map[string]string { - if repo.ExternalMetas == nil { - repo.ExternalMetas = map[string]string{ + if repo.RenderingMetas == nil { + metas := map[string]string{ "user": repo.MustOwner().Name, "repo": repo.Name, "repoPath": repo.RepoPath(), } + unit, err := repo.GetUnit(UnitTypeExternalTracker) - if err != nil { - return repo.ExternalMetas + if err == nil { + metas["format"] = unit.ExternalTrackerConfig().ExternalTrackerFormat + switch unit.ExternalTrackerConfig().ExternalTrackerStyle { + case markup.IssueNameStyleAlphanumeric: + metas["style"] = markup.IssueNameStyleAlphanumeric + default: + metas["style"] = markup.IssueNameStyleNumeric + } } - repo.ExternalMetas["format"] = unit.ExternalTrackerConfig().ExternalTrackerFormat - switch unit.ExternalTrackerConfig().ExternalTrackerStyle { - case markup.IssueNameStyleAlphanumeric: - repo.ExternalMetas["style"] = markup.IssueNameStyleAlphanumeric - default: - repo.ExternalMetas["style"] = markup.IssueNameStyleNumeric + if repo.Owner.IsOrganization() { + teams := make([]string, 0, 5) + _ = x.Table("team_repo"). + Join("INNER", "team", "team.id = team_repo.team_id"). + Where("team_repo.repo_id = ?", repo.ID). + Select("team.lower_name"). + OrderBy("team.lower_name"). + Find(&teams) + metas["teams"] = "," + strings.Join(teams, ",") + "," + metas["org"] = repo.Owner.LowerName } + repo.RenderingMetas = metas } - return repo.ExternalMetas + return repo.RenderingMetas } // DeleteWiki removes the actual and local copy of repository wiki. |