@@ -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> | ||||