| @@ -16,16 +16,15 @@ import ( | |||||
| "strings" | "strings" | ||||
| "time" | "time" | ||||
| "github.com/microcosm-cc/bluemonday" | |||||
| "golang.org/x/net/html/charset" | |||||
| "golang.org/x/text/transform" | |||||
| "gopkg.in/editorconfig/editorconfig-core-go.v1" | |||||
| "code.gitea.io/gitea/models" | "code.gitea.io/gitea/models" | ||||
| "code.gitea.io/gitea/modules/base" | "code.gitea.io/gitea/modules/base" | ||||
| "code.gitea.io/gitea/modules/log" | "code.gitea.io/gitea/modules/log" | ||||
| "code.gitea.io/gitea/modules/markup" | "code.gitea.io/gitea/modules/markup" | ||||
| "code.gitea.io/gitea/modules/setting" | "code.gitea.io/gitea/modules/setting" | ||||
| "golang.org/x/net/html/charset" | |||||
| "golang.org/x/text/transform" | |||||
| "gopkg.in/editorconfig/editorconfig-core-go.v1" | |||||
| ) | ) | ||||
| // NewFuncMap returns functions for injecting to templates | // NewFuncMap returns functions for injecting to templates | ||||
| @@ -67,7 +66,6 @@ func NewFuncMap() []template.FuncMap { | |||||
| "AvatarLink": base.AvatarLink, | "AvatarLink": base.AvatarLink, | ||||
| "Safe": Safe, | "Safe": Safe, | ||||
| "SafeJS": SafeJS, | "SafeJS": SafeJS, | ||||
| "Sanitize": bluemonday.UGCPolicy().Sanitize, | |||||
| "Str2html": Str2html, | "Str2html": Str2html, | ||||
| "TimeSince": base.TimeSince, | "TimeSince": base.TimeSince, | ||||
| "RawTimeSince": base.RawTimeSince, | "RawTimeSince": base.RawTimeSince, | ||||
| @@ -35,7 +35,7 @@ | |||||
| <div class="menu"> | <div class="menu"> | ||||
| <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a> | <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_label_no_select"}}</a> | ||||
| {{range .Labels}} | {{range .Labels}} | ||||
| <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}"><span class="octicon {{if eq $.SelectLabels .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name | Sanitize}}</a> | |||||
| <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}"><span class="octicon {{if eq $.SelectLabels .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}}</a> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -49,7 +49,7 @@ | |||||
| <div class="menu"> | <div class="menu"> | ||||
| <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_select"}}</a> | <a class="item" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{.SelectLabels}}&assignee={{$.AssigneeID}}">{{.i18n.Tr "repo.issues.filter_milestone_no_select"}}</a> | ||||
| {{range .Milestones}} | {{range .Milestones}} | ||||
| <a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}">{{.Name | Sanitize}}</a> | |||||
| <a class="{{if eq $.MilestoneID .ID}}active selected{{end}} item" href="{{$.Link}}?type={{$.ViewType}}&sort={{$.SortType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.ID}}&assignee={{$.AssigneeID}}">{{.Name}}</a> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -117,7 +117,7 @@ | |||||
| <div class="menu"> | <div class="menu"> | ||||
| {{range .Labels}} | {{range .Labels}} | ||||
| <div class="item issue-action" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels"> | <div class="item issue-action" data-action="toggle" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/labels"> | ||||
| <span class="octicon {{if eq $.SelectLabels .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name | Sanitize}} | |||||
| <span class="octicon {{if eq $.SelectLabels .ID}}octicon-check{{end}}"></span><span class="label color" style="background-color: {{.Color}}"></span> {{.Name}} | |||||
| </div> | </div> | ||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| @@ -135,7 +135,7 @@ | |||||
| </div> | </div> | ||||
| {{range .Milestones}} | {{range .Milestones}} | ||||
| <div class="item issue-action" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/milestone"> | <div class="item issue-action" data-element-id="{{.ID}}" data-url="{{$.RepoLink}}/issues/milestone"> | ||||
| {{.Name | Sanitize}} | |||||
| {{.Name}} | |||||
| </div> | </div> | ||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| @@ -175,7 +175,7 @@ | |||||
| <a class="ui label" href="{{$.RepoLink}}/src/commit/{{.Ref}}">{{.Ref}}</a> | <a class="ui label" href="{{$.RepoLink}}/src/commit/{{.Ref}}">{{.Ref}}</a> | ||||
| {{end}} | {{end}} | ||||
| {{range .Labels}} | {{range .Labels}} | ||||
| <a class="ui label" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name | Sanitize}}</a> | |||||
| <a class="ui label" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{.ID}}&milestone={{$.MilestoneID}}&assignee={{$.AssigneeID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name}}</a> | |||||
| {{end}} | {{end}} | ||||
| {{if .NumComments}} | {{if .NumComments}} | ||||
| @@ -186,7 +186,7 @@ | |||||
| {{$.i18n.Tr "repo.issues.opened_by" $timeStr .Poster.HomeLink .Poster.Name | Safe}} | {{$.i18n.Tr "repo.issues.opened_by" $timeStr .Poster.HomeLink .Poster.Name | Safe}} | ||||
| {{if .Milestone}} | {{if .Milestone}} | ||||
| <a class="milestone" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.Milestone.ID}}&assignee={{$.AssigneeID}}"> | <a class="milestone" href="{{$.Link}}?q={{$.Keyword}}&type={{$.ViewType}}&state={{$.State}}&labels={{$.SelectLabels}}&milestone={{.Milestone.ID}}&assignee={{$.AssigneeID}}"> | ||||
| <span class="octicon octicon-milestone"></span> {{.Milestone.Name | Sanitize}} | |||||
| <span class="octicon octicon-milestone"></span> {{.Milestone.Name}} | |||||
| </a> | </a> | ||||
| {{end}} | {{end}} | ||||
| {{if .Assignee}} | {{if .Assignee}} | ||||
| @@ -43,7 +43,7 @@ | |||||
| <div class="milestone list"> | <div class="milestone list"> | ||||
| {{range .Milestones}} | {{range .Milestones}} | ||||
| <li class="item"> | <li class="item"> | ||||
| <i class="octicon octicon-milestone"></i> <a href="{{$.RepoLink}}/issues?state={{$.State}}&milestone={{.ID}}">{{.Name | Sanitize}}</a> | |||||
| <i class="octicon octicon-milestone"></i> <a href="{{$.RepoLink}}/issues?state={{$.State}}&milestone={{.ID}}">{{.Name}}</a> | |||||
| <div class="ui right green progress" data-percent="{{.Completeness}}"> | <div class="ui right green progress" data-percent="{{.Completeness}}"> | ||||
| <div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}> | <div class="bar" {{if not .Completeness}}style="background-color: transparent"{{end}}> | ||||
| <div class="progress"></div> | <div class="progress"></div> | ||||
| @@ -18,7 +18,7 @@ | |||||
| <span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span> | <span class="no-select item {{if .HasSelectedLabel}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_label"}}</span> | ||||
| {{range .Labels}} | {{range .Labels}} | ||||
| <div class="item"> | <div class="item"> | ||||
| <a class="ui label {{if not .IsChecked}}hide{{end}}" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name | Sanitize}}</a> | |||||
| <a class="ui label {{if not .IsChecked}}hide{{end}}" id="label_{{.ID}}" href="{{$.RepoLink}}/issues?labels={{.ID}}" style="color: {{.ForegroundColor}}; background-color: {{.Color}}">{{.Name}}</a> | |||||
| </div> | </div> | ||||
| {{end}} | {{end}} | ||||
| @@ -40,7 +40,7 @@ | |||||
| {{.i18n.Tr "repo.issues.new.open_milestone"}} | {{.i18n.Tr "repo.issues.new.open_milestone"}} | ||||
| </div> | </div> | ||||
| {{range .OpenMilestones}} | {{range .OpenMilestones}} | ||||
| <div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name | Sanitize}}</div> | |||||
| <div class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</div> | |||||
| {{end}} | {{end}} | ||||
| {{end}} | {{end}} | ||||
| {{if .ClosedMilestones}} | {{if .ClosedMilestones}} | ||||
| @@ -50,7 +50,7 @@ | |||||
| {{.i18n.Tr "repo.issues.new.closed_milestone"}} | {{.i18n.Tr "repo.issues.new.closed_milestone"}} | ||||
| </div> | </div> | ||||
| {{range .ClosedMilestones}} | {{range .ClosedMilestones}} | ||||
| <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name | Sanitize}}</a> | |||||
| <a class="item" data-id="{{.ID}}" data-href="{{$.RepoLink}}/issues?milestone={{.ID}}"> {{.Name}}</a> | |||||
| {{end}} | {{end}} | ||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| @@ -59,7 +59,7 @@ | |||||
| <span class="no-select item {{if .Issue.Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span> | <span class="no-select item {{if .Issue.Milestone}}hide{{end}}">{{.i18n.Tr "repo.issues.new.no_milestone"}}</span> | ||||
| <div class="selected"> | <div class="selected"> | ||||
| {{if .Issue.Milestone}} | {{if .Issue.Milestone}} | ||||
| <a class="item" href="{{.RepoLink}}/issues?milestone={{.Issue.Milestone.ID}}"> {{.Issue.Milestone.Name | Sanitize}}</a> | |||||
| <a class="item" href="{{.RepoLink}}/issues?milestone={{.Issue.Milestone.ID}}"> {{.Issue.Milestone.Name}}</a> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||
| @@ -1,7 +1,7 @@ | |||||
| {{template "base/head" .}} | {{template "base/head" .}} | ||||
| <div class="repository wiki view"> | <div class="repository wiki view"> | ||||
| {{template "repo/header" .}} | {{template "repo/header" .}} | ||||
| {{ $title := .title | Sanitize}} | |||||
| {{ $title := .title}} | |||||
| <div class="ui container"> | <div class="ui container"> | ||||
| <div class="ui grid"> | <div class="ui grid"> | ||||
| <div class="ui ten wide column"> | <div class="ui ten wide column"> | ||||
| @@ -21,7 +21,7 @@ | |||||
| </div> | </div> | ||||
| <div class="scrolling menu"> | <div class="scrolling menu"> | ||||
| {{range .Pages}} | {{range .Pages}} | ||||
| <div class="item {{if eq $.Title .Name}}selected{{end}}" data-url="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name | Sanitize}}</div> | |||||
| <div class="item {{if eq $.Title .Name}}selected{{end}}" data-url="{{$.RepoLink}}/wiki/{{.URL}}">{{.Name}}</div> | |||||
| {{end}} | {{end}} | ||||
| </div> | </div> | ||||
| </div> | </div> | ||||