mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-02-11 19:14:46 -05:00
![0ko](/assets/img/avatar_default.png)
[skip ci] no relevant tests Followup to https://codeberg.org/forgejo/forgejo/pulls/6459. This PR applies the new switch design to areas where it is simple to apply and no other interventions are needed other than switching classes. Also, added back the utility class `list-header-toggle` to a few places where it was removed in https://codeberg.org/forgejo/forgejo/pulls/6459. It is used for item reordering on smaller screens and it isn't actually needed in those areas (does nothing because of too wide elements), but it wasn't supposed to be removed. The affected areas also include the menus in notifications. This is a followup to https://codeberg.org/forgejo/forgejo/pulls/3175 which should make the unchosen item look more obviously as an interactive element. ## Preview |Area|Before|After| |-|-|-| |`projects/list.tmpl`|![](https://codeberg.org/attachments/e6977cbd-6fcc-400b-9f8a-1107b9ac5b54)|![](https://codeberg.org/attachments/8bd8ddb3-caf5-4f1b-aa3a-1942b9ea7f4a)| |`repo/issue/navbar.tmp`||No visible change| |`repo/issue/openclose.tmpl`||No visible change| |`.../dashboard/issues.tmpl`|![](https://codeberg.org/attachments/5bc431aa-c522-4813-8d0f-b52e8c035dd0)|![](https://codeberg.org/attachments/a397be12-d8dc-434a-b109-2ba3521b36e6)| |`.../dashboard/milestones.tmpl`|![](https://codeberg.org/attachments/211d76fc-c5e5-40f5-ade9-96e7bf56526e)|![](https://codeberg.org/attachments/760b0a3b-bd14-43ef-bb2b-21da426e91a3)| |`.../notification_div.tmpl`|![](https://codeberg.org/attachments/822cfda7-e66d-47cf-9436-e20f392df2ce)|![](https://codeberg.org/attachments/07587fe5-454d-474c-8c39-e1331ff4deb5)| |`.../notification_subscriptions.tmpl`|![](https://codeberg.org/attachments/960ac65a-f3a3-4385-b8fc-7bbf44c21bee)|![](https://codeberg.org/attachments/880bbcad-605b-4fbf-92e3-a0b270a40725)| Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6542 Reviewed-by: Otto <otto@codeberg.org> Co-authored-by: 0ko <0ko@noreply.codeberg.org> Co-committed-by: 0ko <0ko@noreply.codeberg.org>
155 lines
7.6 KiB
Go HTML Template
155 lines
7.6 KiB
Go HTML Template
{{template "base/head" .}}
|
|
<div role="main" aria-label="{{.Title}}" class="page-content dashboard issues repository milestones">
|
|
{{template "user/dashboard/navbar" .}}
|
|
<div class="ui container">
|
|
<div class="flex-container">
|
|
<div class="flex-container-nav">
|
|
<div class="ui secondary vertical filter menu tw-bg-transparent">
|
|
<div class="item">
|
|
{{ctx.Locale.Tr "home.issues.in_your_repos"}}
|
|
<strong>{{.Total}}</strong>
|
|
</div>
|
|
<div class="divider"></div>
|
|
{{range .Repos}}
|
|
{{with $Repo := .}}
|
|
<a class="{{range $.RepoIDs}}{{if eq . $Repo.ID}}active{{end}}{{end}} repo name item" href="?repos=[
|
|
{{- with $include := true -}}
|
|
{{- range $.RepoIDs -}}
|
|
{{- if eq . $Repo.ID -}}
|
|
{{$include = false}}
|
|
{{- else -}}
|
|
{{.}}%2C
|
|
{{- end -}}
|
|
{{- end -}}
|
|
{{- if eq $include true -}}
|
|
{{$Repo.ID}}%2C
|
|
{{- end -}}
|
|
{{- end -}}
|
|
]&sort={{$.SortType}}&state={{$.State}}&q={{$.Keyword}}" title="{{.FullName}}">
|
|
<span class="text truncate">{{$Repo.FullName}}</span>
|
|
<div class="ui {{if $.IsShowClosed}}red{{else}}green{{end}} label">{{index $.Counts $Repo.ID}}</div>
|
|
</a>
|
|
{{end}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
<div class="flex-container-main content">
|
|
<div class="list-header">
|
|
<div class="switch list-header-toggle">
|
|
<a class="item{{if not .IsShowClosed}} active{{end}}" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state=open&q={{$.Keyword}}">
|
|
{{svg "octicon-milestone" 16 "tw-mr-2"}}
|
|
{{ctx.Locale.PrettyNumber .MilestoneStats.OpenCount}} {{ctx.Locale.Tr "repo.issues.open_title"}}
|
|
</a>
|
|
<a class="item{{if .IsShowClosed}} active{{end}}" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort={{$.SortType}}&state=closed&q={{$.Keyword}}">
|
|
{{svg "octicon-check" 16 "tw-mr-2"}}
|
|
{{ctx.Locale.PrettyNumber .MilestoneStats.ClosedCount}} {{ctx.Locale.Tr "repo.issues.closed_title"}}
|
|
</a>
|
|
</div>
|
|
<form class="list-header-search ui form ignore-dirty">
|
|
<input type="hidden" name="type" value="{{$.ViewType}}">
|
|
<input type="hidden" name="repos" value="[{{range $.RepoIDs}}{{.}},{{end}}]">
|
|
<input type="hidden" name="sort" value="{{$.SortType}}">
|
|
<input type="hidden" name="state" value="{{$.State}}">
|
|
{{template "shared/search/combo" dict "Value" $.Keyword}}
|
|
</form>
|
|
<!-- Sort -->
|
|
<div class="list-header-sort ui dropdown type jump item">
|
|
<span class="text">
|
|
{{ctx.Locale.Tr "repo.issues.filter_sort"}}
|
|
</span>
|
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
|
<div class="menu">
|
|
<a class="{{if or (eq .SortType "closestduedate") (not .SortType)}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=closestduedate&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.earliest_due_data"}}</a>
|
|
<a class="{{if eq .SortType "furthestduedate"}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=furthestduedate&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.latest_due_date"}}</a>
|
|
<a class="{{if eq .SortType "leastcomplete"}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=leastcomplete&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.least_complete"}}</a>
|
|
<a class="{{if eq .SortType "mostcomplete"}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=mostcomplete&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.most_complete"}}</a>
|
|
<a class="{{if eq .SortType "mostissues"}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=mostissues&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.most_issues"}}</a>
|
|
<a class="{{if eq .SortType "leastissues"}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=leastissues&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.least_issues"}}</a>
|
|
<a class="{{if eq .SortType "name"}}active {{end}}item" href="?repos=[{{range $.RepoIDs}}{{.}}%2C{{end}}]&sort=name&state={{$.State}}&q={{$.Keyword}}">{{ctx.Locale.Tr "repo.milestones.filter_sort.name"}}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="milestone-list">
|
|
{{range .Milestones}}
|
|
<li class="milestone-card">
|
|
<div class="milestone-header">
|
|
<h3 class="flex-text-block tw-m-0">
|
|
<span class="ui large label">
|
|
{{.Repo.FullName}}
|
|
</span>
|
|
{{svg "octicon-milestone" 16}}
|
|
<a class="muted" href="{{.Repo.Link}}/milestone/{{.ID}}">{{.Name}}</a>
|
|
</h3>
|
|
<div class="tw-flex tw-items-center">
|
|
<span class="tw-mr-2">{{.Completeness}}%</span>
|
|
<progress value="{{.Completeness}}" max="100"></progress>
|
|
</div>
|
|
</div>
|
|
<div class="milestone-toolbar">
|
|
<div class="group">
|
|
<div class="flex-text-block">
|
|
{{svg "octicon-issue-opened" 14}}
|
|
{{ctx.Locale.PrettyNumber .NumOpenIssues}} {{ctx.Locale.Tr "repo.issues.open_title"}}
|
|
</div>
|
|
<div class="flex-text-block">
|
|
{{svg "octicon-check" 14}}
|
|
{{ctx.Locale.PrettyNumber .NumClosedIssues}} {{ctx.Locale.Tr "repo.issues.closed_title"}}
|
|
</div>
|
|
{{if .TotalTrackedTime}}
|
|
<div class="flex-text-block">
|
|
{{svg "octicon-clock"}}
|
|
{{.TotalTrackedTime|Sec2Time}}
|
|
</div>
|
|
{{end}}
|
|
{{if .UpdatedUnix}}
|
|
<div class="flex-text-block">
|
|
{{svg "octicon-clock"}}
|
|
{{ctx.Locale.Tr "repo.milestones.update_ago" (DateUtils.TimeSince .UpdatedUnix)}}
|
|
</div>
|
|
{{end}}
|
|
<div class="flex-text-block">
|
|
{{if .IsClosed}}
|
|
{{$closedDate:= DateUtils.TimeSince .ClosedDateUnix}}
|
|
{{svg "octicon-clock" 14}}
|
|
{{ctx.Locale.Tr "repo.milestones.closed" $closedDate}}
|
|
{{else}}
|
|
{{if .DeadlineString}}
|
|
<span{{if .IsOverdue}} class="text red"{{end}}>
|
|
{{svg "octicon-calendar" 14}}
|
|
{{DateUtils.AbsoluteShort (.DeadlineString|DateUtils.ParseLegacy)}}
|
|
</span>
|
|
{{else}}
|
|
{{svg "octicon-calendar" 14}}
|
|
{{ctx.Locale.Tr "repo.milestones.no_due_date"}}
|
|
{{end}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}}
|
|
<div class="group">
|
|
<a class="flex-text-inline" href="{{$.Link}}/{{.ID}}/edit">{{svg "octicon-pencil" 14}}{{ctx.Locale.Tr "repo.issues.label_edit"}}</a>
|
|
{{if .IsClosed}}
|
|
<a class="link-action flex-text-inline" href data-url="{{$.Link}}/{{.ID}}/open">{{svg "octicon-check" 14}}{{ctx.Locale.Tr "repo.milestones.open"}}</a>
|
|
{{else}}
|
|
<a class="link-action flex-text-inline" href data-url="{{$.Link}}/{{.ID}}/close">{{svg "octicon-x" 14}}{{ctx.Locale.Tr "repo.milestones.close"}}</a>
|
|
{{end}}
|
|
<a class="delete-button flex-text-inline" href="#" data-url="{{$.RepoLink}}/milestones/delete" data-id="{{.ID}}">{{svg "octicon-trash" 14}}{{ctx.Locale.Tr "repo.issues.label_delete"}}</a>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
{{if .Content}}
|
|
<div class="markup content">
|
|
{{.RenderedContent}}
|
|
</div>
|
|
{{end}}
|
|
</li>
|
|
{{end}}
|
|
|
|
{{template "base/paginate" .}}
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{{template "base/footer" .}}
|