Платформа ЦРНП "Мирокод" для разработки проектов
https://git.mirocod.ru
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
2.8 KiB
139 lines
2.8 KiB
// Copyright 2017 The Gitea 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 models |
|
|
|
// UnitType is Unit's Type |
|
type UnitType int |
|
|
|
// Enumerate all the unit types |
|
const ( |
|
UnitTypeCode UnitType = iota + 1 // 1 code |
|
UnitTypeIssues // 2 issues |
|
UnitTypePullRequests // 3 PRs |
|
UnitTypeReleases // 4 Releases |
|
UnitTypeWiki // 5 Wiki |
|
UnitTypeExternalWiki // 6 ExternalWiki |
|
UnitTypeExternalTracker // 7 ExternalTracker |
|
) |
|
|
|
var ( |
|
// allRepUnitTypes contains all the unit types |
|
allRepUnitTypes = []UnitType{ |
|
UnitTypeCode, |
|
UnitTypeIssues, |
|
UnitTypePullRequests, |
|
UnitTypeReleases, |
|
UnitTypeWiki, |
|
UnitTypeExternalWiki, |
|
UnitTypeExternalTracker, |
|
} |
|
|
|
// defaultRepoUnits contains the default unit types |
|
defaultRepoUnits = []UnitType{ |
|
UnitTypeCode, |
|
UnitTypeIssues, |
|
UnitTypePullRequests, |
|
UnitTypeReleases, |
|
UnitTypeWiki, |
|
} |
|
|
|
// MustRepoUnits contains the units could not be disabled currently |
|
MustRepoUnits = []UnitType{ |
|
UnitTypeCode, |
|
UnitTypeReleases, |
|
} |
|
) |
|
|
|
// Unit is a section of one repository |
|
type Unit struct { |
|
Type UnitType |
|
NameKey string |
|
URI string |
|
DescKey string |
|
Idx int |
|
} |
|
|
|
// CanDisable returns if this unit could be disabled. |
|
func (u *Unit) CanDisable() bool { |
|
return true |
|
} |
|
|
|
// IsLessThan compares order of two units |
|
func (u Unit) IsLessThan(unit Unit) bool { |
|
if (u.Type == UnitTypeExternalTracker || u.Type == UnitTypeExternalWiki) && unit.Type != UnitTypeExternalTracker && unit.Type != UnitTypeExternalWiki { |
|
return false |
|
} |
|
return u.Idx < unit.Idx |
|
} |
|
|
|
// Enumerate all the units |
|
var ( |
|
UnitCode = Unit{ |
|
UnitTypeCode, |
|
"repo.code", |
|
"/", |
|
"repo.code.desc", |
|
0, |
|
} |
|
|
|
UnitIssues = Unit{ |
|
UnitTypeIssues, |
|
"repo.issues", |
|
"/issues", |
|
"repo.issues.desc", |
|
1, |
|
} |
|
|
|
UnitExternalTracker = Unit{ |
|
UnitTypeExternalTracker, |
|
"repo.ext_issues", |
|
"/issues", |
|
"repo.ext_issues.desc", |
|
1, |
|
} |
|
|
|
UnitPullRequests = Unit{ |
|
UnitTypePullRequests, |
|
"repo.pulls", |
|
"/pulls", |
|
"repo.pulls.desc", |
|
2, |
|
} |
|
|
|
UnitReleases = Unit{ |
|
UnitTypeReleases, |
|
"repo.releases", |
|
"/releases", |
|
"repo.releases.desc", |
|
3, |
|
} |
|
|
|
UnitWiki = Unit{ |
|
UnitTypeWiki, |
|
"repo.wiki", |
|
"/wiki", |
|
"repo.wiki.desc", |
|
4, |
|
} |
|
|
|
UnitExternalWiki = Unit{ |
|
UnitTypeExternalWiki, |
|
"repo.ext_wiki", |
|
"/wiki", |
|
"repo.ext_wiki.desc", |
|
4, |
|
} |
|
|
|
// Units contains all the units |
|
Units = map[UnitType]Unit{ |
|
UnitTypeCode: UnitCode, |
|
UnitTypeIssues: UnitIssues, |
|
UnitTypeExternalTracker: UnitExternalTracker, |
|
UnitTypePullRequests: UnitPullRequests, |
|
UnitTypeReleases: UnitReleases, |
|
UnitTypeWiki: UnitWiki, |
|
UnitTypeExternalWiki: UnitExternalWiki, |
|
} |
|
)
|
|
|