* 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.tags/v1.21.12.1
| @@ -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 { | ||||
| @@ -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 []string | |||||
| // LabelTemplates contains the label template files and the list of labels for each file | |||||
| 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)) | ||||
| @@ -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}} | |||||
| <div class="item" data-value="{{.}}">{{.}}</div> | |||||
| {{range $template, $labels := .LabelTemplates}} | |||||
| <div class="item" data-value="{{$template}}">{{$template}}<br/><i>({{$labels}})</i></div> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -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}} | |||||
| <div class="item" data-value="{{.}}">{{.}}</div> | |||||
| {{range $template, $labels := .LabelTemplates}} | |||||
| <div class="item" data-value="{{$template}}">{{$template}}<br/><i>({{$labels}})</i></div> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||