mirror of
1
Fork 0

Show label list on label set (#9251)

* Showing the list of labels of template files #7812

* Returning and logging errors when loading labels

* Commenting public method

* Change log level in case of error loading labels.
This commit is contained in:
Oscar Costa 2019-12-06 18:13:19 -08:00 committed by techknowlogick
parent eba816e826
commit 1583c48e3a
4 changed files with 37 additions and 8 deletions

View File

@ -132,6 +132,25 @@ func (label *Label) ForegroundColor() template.CSS {
return template.CSS("#000") return template.CSS("#000")
} }
func loadLabels(labelTemplate string) ([]string, error) {
list, err := GetLabelTemplateFile(labelTemplate)
if err != nil {
return nil, ErrIssueLabelTemplateLoad{labelTemplate, err}
}
labels := make([]string, len(list))
for i := 0; i < len(list); i++ {
labels[i] = list[i][0]
}
return labels, nil
}
// LoadLabelsFormatted loads the labels' list of a template file as a string separated by comma
func LoadLabelsFormatted(labelTemplate string) (string, error) {
labels, err := loadLabels(labelTemplate)
return strings.Join(labels, ", "), err
}
func initalizeLabels(e Engine, repoID int64, labelTemplate string) error { func initalizeLabels(e Engine, repoID int64, labelTemplate string) error {
list, err := GetLabelTemplateFile(labelTemplate) list, err := GetLabelTemplateFile(labelTemplate)
if err != nil { if err != nil {

View File

@ -64,8 +64,8 @@ var (
// Readmes contains the readme files // Readmes contains the readme files
Readmes []string Readmes []string
// LabelTemplates contains the label template files // LabelTemplates contains the label template files and the list of labels for each file
LabelTemplates []string LabelTemplates map[string]string
// ItemsPerPage maximum items per page in forks, watchers and stars of a repo // ItemsPerPage maximum items per page in forks, watchers and stars of a repo
ItemsPerPage = 40 ItemsPerPage = 40
@ -100,11 +100,21 @@ func loadRepoConfig() {
Gitignores = typeFiles[0] Gitignores = typeFiles[0]
Licenses = typeFiles[1] Licenses = typeFiles[1]
Readmes = typeFiles[2] Readmes = typeFiles[2]
LabelTemplates = typeFiles[3] LabelTemplatesFiles := typeFiles[3]
sort.Strings(Gitignores) sort.Strings(Gitignores)
sort.Strings(Licenses) sort.Strings(Licenses)
sort.Strings(Readmes) sort.Strings(Readmes)
sort.Strings(LabelTemplates) sort.Strings(LabelTemplatesFiles)
// Load label templates
LabelTemplates = make(map[string]string)
for _, templateFile := range LabelTemplatesFiles {
labels, err := LoadLabelsFormatted(templateFile)
if err != nil {
log.Error("Failed to load labels: %v", err)
}
LabelTemplates[templateFile] = labels
}
// Filter out invalid names and promote preferred licenses. // Filter out invalid names and promote preferred licenses.
sortedLicenses := make([]string, 0, len(Licenses)) sortedLicenses := make([]string, 0, len(Licenses))

View File

@ -109,8 +109,8 @@
<div class="default text">{{.i18n.Tr "repo.issue_labels_helper"}}</div> <div class="default text">{{.i18n.Tr "repo.issue_labels_helper"}}</div>
<div class="menu"> <div class="menu">
<div class="item" data-value="">{{.i18n.Tr "repo.issue_labels_helper"}}</div> <div class="item" data-value="">{{.i18n.Tr "repo.issue_labels_helper"}}</div>
{{range .LabelTemplates}} {{range $template, $labels := .LabelTemplates}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{$template}}">{{$template}}<br/><i>({{$labels}})</i></div>
{{end}} {{end}}
</div> </div>
</div> </div>

View File

@ -79,8 +79,8 @@
<input type="hidden" name="template_name" value="Default"> <input type="hidden" name="template_name" value="Default">
<div class="default text">{{.i18n.Tr "repo.issues.label_templates.helper"}}</div> <div class="default text">{{.i18n.Tr "repo.issues.label_templates.helper"}}</div>
<div class="menu"> <div class="menu">
{{range .LabelTemplates}} {{range $template, $labels := .LabelTemplates}}
<div class="item" data-value="{{.}}">{{.}}</div> <div class="item" data-value="{{$template}}">{{$template}}<br/><i>({{$labels}})</i></div>
{{end}} {{end}}
</div> </div>
</div> </div>