mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-22 21:35:35 +03:00
6a6dc97b0f
# Description Previously, to make the date range understood by all, we used the format "2006-01-02" for the dates as it's locale-generic. This commit changes the rendering logic. Instead of rendering the date on the server, we send a formatted computer-readable timestamp. The client's javascript then renders it according to the user's locale. This approach is reusable across the codebase, any `<time></time>` tag with the data-format="date" attribute would get rendered according to the user's chosen locale. ## Previous View ![image](https://user-images.githubusercontent.com/20454870/195099143-e1c5df86-282a-42f1-898f-a36bb5fe7c2f.png) ## New View ### English ![image](https://user-images.githubusercontent.com/20454870/195099301-5cda4eab-4012-49d5-97e5-b1f9cada9c06.png) ### French ![image](https://user-images.githubusercontent.com/20454870/195099434-ce23e394-8d65-4c4c-8ac8-8b96bc9044f3.png) ### Portuguese ![image](https://user-images.githubusercontent.com/20454870/195099559-9a7aed28-944a-45ec-bedb-64403e3faede.png) ### Italian ![image](https://user-images.githubusercontent.com/20454870/195099661-17758d55-3fe0-4797-879b-d45de0ee8ba3.png) # References * #21380 * #21387 * #21396 Inspiration: I think either differentiating by class, or probably better by a custom attribute such as `data-format` or similar, is the best course of action. _Originally posted by @delvh in https://github.com/go-gitea/gitea/issues/21396#issuecomment-1274424788_ Resolves #21380 Signed-off-by: Yarden Shoham <hrsi88@gmail.com> Co-authored-by: silverwind <me@silverwind.io>
241 lines
12 KiB
Handlebars
241 lines
12 KiB
Handlebars
{{template "base/head" .}}
|
|
<div class="page-content repository commits">
|
|
{{template "repo/header" .}}
|
|
<div class="ui container">
|
|
<h2 class="ui header"><time data-format="date" datetime="{{.DateFrom}}">{{.DateFrom}}</time> - <time data-format="date" datetime="{{.DateUntil}}">{{.DateUntil}}</time>
|
|
<div class="ui right">
|
|
<!-- Period -->
|
|
<div class="ui floating dropdown jump filter">
|
|
<div class="ui basic compact button">
|
|
<span class="text">
|
|
{{.locale.Tr "repo.activity.period.filter_label"}} <strong>{{.PeriodText}}</strong>
|
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
|
</span>
|
|
</div>
|
|
<div class="menu">
|
|
<a class="{{if eq .Period "daily"}}active {{end}}item" href="{{$.RepoLink}}/activity/daily">{{.locale.Tr "repo.activity.period.daily"}}</a>
|
|
<a class="{{if eq .Period "halfweekly"}}active {{end}}item" href="{{$.RepoLink}}/activity/halfweekly">{{.locale.Tr "repo.activity.period.halfweekly"}}</a>
|
|
<a class="{{if eq .Period "weekly"}}active {{end}}item" href="{{$.RepoLink}}/activity/weekly">{{.locale.Tr "repo.activity.period.weekly"}}</a>
|
|
<a class="{{if eq .Period "monthly"}}active {{end}}item" href="{{$.RepoLink}}/activity/monthly">{{.locale.Tr "repo.activity.period.monthly"}}</a>
|
|
<a class="{{if eq .Period "quarterly"}}active {{end}}item" href="{{$.RepoLink}}/activity/quarterly">{{.locale.Tr "repo.activity.period.quarterly"}}</a>
|
|
<a class="{{if eq .Period "semiyearly"}}active {{end}}item" href="{{$.RepoLink}}/activity/semiyearly">{{.locale.Tr "repo.activity.period.semiyearly"}}</a>
|
|
<a class="{{if eq .Period "yearly"}}active {{end}}item" href="{{$.RepoLink}}/activity/yearly">{{.locale.Tr "repo.activity.period.yearly"}}</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</h2>
|
|
<div class="ui divider"></div>
|
|
|
|
{{if (or (.Permission.CanRead $.UnitTypeIssues) (.Permission.CanRead $.UnitTypePullRequests))}}
|
|
<h4 class="ui top attached header">{{.locale.Tr "repo.activity.overview"}}</h4>
|
|
<div class="ui attached segment two column grid">
|
|
{{if .Permission.CanRead $.UnitTypePullRequests}}
|
|
<div class="column">
|
|
{{if gt .Activity.ActivePRCount 0}}
|
|
<div class="stats-table">
|
|
<a href="#merged-pull-requests" class="table-cell tiny background purple" style="width: {{.Activity.MergedPRPerc}}{{if ne .Activity.MergedPRPerc 0}}%{{end}}"></a>
|
|
<a href="#proposed-pull-requests" class="table-cell tiny background green"></a>
|
|
</div>
|
|
{{else}}
|
|
<div class="stats-table">
|
|
<a class="table-cell tiny background light grey"></a>
|
|
</div>
|
|
{{end}}
|
|
{{.locale.TrN .Activity.ActivePRCount "repo.activity.active_prs_count_1" "repo.activity.active_prs_count_n" .Activity.ActivePRCount | Safe}}
|
|
</div>
|
|
{{end}}
|
|
{{if .Permission.CanRead $.UnitTypeIssues}}
|
|
<div class="column">
|
|
{{if gt .Activity.ActiveIssueCount 0}}
|
|
<div class="stats-table">
|
|
<a href="#closed-issues" class="table-cell tiny background red" style="width: {{.Activity.ClosedIssuePerc}}{{if ne .Activity.ClosedIssuePerc 0}}%{{end}}"></a>
|
|
<a href="#new-issues" class="table-cell tiny background green"></a>
|
|
</div>
|
|
{{else}}
|
|
<div class="stats-table">
|
|
<a class="table-cell tiny background light grey"></a>
|
|
</div>
|
|
{{end}}
|
|
{{.locale.TrN .Activity.ActiveIssueCount "repo.activity.active_issues_count_1" "repo.activity.active_issues_count_n" .Activity.ActiveIssueCount | Safe}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
<div class="ui attached segment horizontal segments">
|
|
{{if .Permission.CanRead $.UnitTypePullRequests}}
|
|
<a href="#merged-pull-requests" class="ui attached segment text center">
|
|
<span class="text purple">{{svg "octicon-git-pull-request"}}</span> <strong>{{.Activity.MergedPRCount}}</strong><br>
|
|
{{.locale.TrN .Activity.MergedPRCount "repo.activity.merged_prs_count_1" "repo.activity.merged_prs_count_n"}}
|
|
</a>
|
|
<a href="#proposed-pull-requests" class="ui attached segment text center">
|
|
<span class="text green">{{svg "octicon-git-branch"}}</span> <strong>{{.Activity.OpenedPRCount}}</strong><br>
|
|
{{.locale.TrN .Activity.OpenedPRCount "repo.activity.opened_prs_count_1" "repo.activity.opened_prs_count_n"}}
|
|
</a>
|
|
{{end}}
|
|
{{if .Permission.CanRead $.UnitTypeIssues}}
|
|
<a href="#closed-issues" class="ui attached segment text center">
|
|
<span class="text red">{{svg "octicon-issue-closed"}}</span> <strong>{{.Activity.ClosedIssueCount}}</strong><br>
|
|
{{.locale.TrN .Activity.ClosedIssueCount "repo.activity.closed_issues_count_1" "repo.activity.closed_issues_count_n"}}
|
|
</a>
|
|
<a href="#new-issues" class="ui attached segment text center">
|
|
<span class="text green">{{svg "octicon-issue-opened"}}</span> <strong>{{.Activity.OpenedIssueCount}}</strong><br>
|
|
{{.locale.TrN .Activity.OpenedIssueCount "repo.activity.new_issues_count_1" "repo.activity.new_issues_count_n"}}
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if .Permission.CanRead $.UnitTypeCode}}
|
|
{{if eq .Activity.Code.CommitCountInAllBranches 0}}
|
|
<div class="ui center aligned segment">
|
|
<h4 class="ui header">{{.locale.Tr "repo.activity.no_git_activity"}}</h4>
|
|
</div>
|
|
{{end}}
|
|
{{if gt .Activity.Code.CommitCountInAllBranches 0}}
|
|
<div class="ui attached segment horizontal segments">
|
|
<div class="ui attached segment text">
|
|
{{.locale.Tr "repo.activity.git_stats_exclude_merges"}}
|
|
<strong>{{.locale.TrN .Activity.Code.AuthorCount "repo.activity.git_stats_author_1" "repo.activity.git_stats_author_n" .Activity.Code.AuthorCount}}</strong>
|
|
{{.locale.TrN .Activity.Code.AuthorCount "repo.activity.git_stats_pushed_1" "repo.activity.git_stats_pushed_n"}}
|
|
<strong>{{.locale.TrN .Activity.Code.CommitCount "repo.activity.git_stats_commit_1" "repo.activity.git_stats_commit_n" .Activity.Code.CommitCount}}</strong>
|
|
{{.locale.Tr "repo.activity.git_stats_push_to_branch" .Repository.DefaultBranch}}
|
|
<strong>{{.locale.TrN .Activity.Code.CommitCountInAllBranches "repo.activity.git_stats_commit_1" "repo.activity.git_stats_commit_n" .Activity.Code.CommitCountInAllBranches}}</strong>
|
|
{{.locale.Tr "repo.activity.git_stats_push_to_all_branches"}}
|
|
{{.locale.Tr "repo.activity.git_stats_on_default_branch" .Repository.DefaultBranch}}
|
|
<strong>{{.locale.TrN .Activity.Code.ChangedFiles "repo.activity.git_stats_file_1" "repo.activity.git_stats_file_n" .Activity.Code.ChangedFiles}}</strong>
|
|
{{.locale.TrN .Activity.Code.ChangedFiles "repo.activity.git_stats_files_changed_1" "repo.activity.git_stats_files_changed_n"}}
|
|
{{.locale.Tr "repo.activity.git_stats_additions"}}
|
|
<strong class="text green">{{.locale.TrN .Activity.Code.Additions "repo.activity.git_stats_addition_1" "repo.activity.git_stats_addition_n" .Activity.Code.Additions}}</strong>
|
|
{{.locale.Tr "repo.activity.git_stats_and_deletions"}}
|
|
<strong class="text red">{{.locale.TrN .Activity.Code.Deletions "repo.activity.git_stats_deletion_1" "repo.activity.git_stats_deletion_n" .Activity.Code.Deletions}}</strong>.
|
|
</div>
|
|
<div class="ui attached segment">
|
|
<div id="repo-activity-top-authors-chart"></div>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
|
|
{{if gt .Activity.PublishedReleaseCount 0}}
|
|
<h4 class="ui horizontal divider header" id="published-releases">
|
|
<span class="text">{{svg "octicon-tag"}}</span>
|
|
{{.locale.Tr "repo.activity.title.releases_published_by"
|
|
(.locale.TrN .Activity.PublishedReleaseCount "repo.activity.title.releases_1" "repo.activity.title.releases_n" .Activity.PublishedReleaseCount)
|
|
(.locale.TrN .Activity.PublishedReleaseAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n" .Activity.PublishedReleaseAuthorCount)
|
|
}}
|
|
</h4>
|
|
<div class="list">
|
|
{{range .Activity.PublishedReleases}}
|
|
<p class="desc">
|
|
<span class="ui green label">{{$.locale.Tr "repo.activity.published_release_label"}}</span>
|
|
{{.TagName}}
|
|
{{if not .IsTag}}
|
|
<a class="title" href="{{$.RepoLink}}/src/{{.TagName | PathEscapeSegments}}">{{.Title | RenderEmoji}}</a>
|
|
{{end}}
|
|
{{TimeSinceUnix .CreatedUnix $.locale}}
|
|
</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if gt .Activity.MergedPRCount 0}}
|
|
<h4 class="ui horizontal divider header" id="merged-pull-requests">
|
|
<span class="text">{{svg "octicon-git-pull-request"}}</span>
|
|
{{.locale.Tr "repo.activity.title.prs_merged_by"
|
|
(.locale.TrN .Activity.MergedPRCount "repo.activity.title.prs_1" "repo.activity.title.prs_n" .Activity.MergedPRCount)
|
|
(.locale.TrN .Activity.MergedPRAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n" .Activity.MergedPRAuthorCount)
|
|
}}
|
|
</h4>
|
|
<div class="list">
|
|
{{range .Activity.MergedPRs}}
|
|
<p class="desc">
|
|
<span class="ui purple label">{{$.locale.Tr "repo.activity.merged_prs_label"}}</span>
|
|
#{{.Index}} <a class="title" href="{{$.RepoLink}}/pulls/{{.Index}}">{{.Issue.Title | RenderEmoji}}</a>
|
|
{{TimeSinceUnix .MergedUnix $.locale}}
|
|
</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if gt .Activity.OpenedPRCount 0}}
|
|
<h4 class="ui horizontal divider header" id="proposed-pull-requests">
|
|
<span class="text">{{svg "octicon-git-branch"}}</span>
|
|
{{.locale.Tr "repo.activity.title.prs_opened_by"
|
|
(.locale.TrN .Activity.OpenedPRCount "repo.activity.title.prs_1" "repo.activity.title.prs_n" .Activity.OpenedPRCount)
|
|
(.locale.TrN .Activity.OpenedPRAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n" .Activity.OpenedPRAuthorCount)
|
|
}}
|
|
</h4>
|
|
<div class="list">
|
|
{{range .Activity.OpenedPRs}}
|
|
<p class="desc">
|
|
<span class="ui green label">{{$.locale.Tr "repo.activity.opened_prs_label"}}</span>
|
|
#{{.Index}} <a class="title" href="{{$.RepoLink}}/pulls/{{.Index}}">{{.Issue.Title | RenderEmoji}}</a>
|
|
{{TimeSinceUnix .Issue.CreatedUnix $.locale}}
|
|
</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if gt .Activity.ClosedIssueCount 0}}
|
|
<h4 class="ui horizontal divider header" id="closed-issues">
|
|
<span class="text">{{svg "octicon-issue-closed"}}</span>
|
|
{{.locale.Tr "repo.activity.title.issues_closed_from"
|
|
(.locale.TrN .Activity.ClosedIssueCount "repo.activity.title.issues_1" "repo.activity.title.issues_n" .Activity.ClosedIssueCount)
|
|
(.locale.TrN .Activity.ClosedIssueAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n" .Activity.ClosedIssueAuthorCount)
|
|
}}
|
|
</h4>
|
|
<div class="list">
|
|
{{range .Activity.ClosedIssues}}
|
|
<p class="desc">
|
|
<span class="ui red label">{{$.locale.Tr "repo.activity.closed_issue_label"}}</span>
|
|
#{{.Index}} <a class="title" href="{{$.RepoLink}}/issues/{{.Index}}">{{.Title | RenderEmoji}}</a>
|
|
{{TimeSinceUnix .ClosedUnix $.locale}}
|
|
</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if gt .Activity.OpenedIssueCount 0}}
|
|
<h4 class="ui horizontal divider header" id="new-issues">
|
|
<span class="text">{{svg "octicon-issue-opened"}}</span>
|
|
{{.locale.Tr "repo.activity.title.issues_created_by"
|
|
(.locale.TrN .Activity.OpenedIssueCount "repo.activity.title.issues_1" "repo.activity.title.issues_n" .Activity.OpenedIssueCount)
|
|
(.locale.TrN .Activity.OpenedIssueAuthorCount "repo.activity.title.user_1" "repo.activity.title.user_n" .Activity.OpenedIssueAuthorCount)
|
|
}}
|
|
</h4>
|
|
<div class="list">
|
|
{{range .Activity.OpenedIssues}}
|
|
<p class="desc">
|
|
<span class="ui green label">{{$.locale.Tr "repo.activity.new_issue_label"}}</span>
|
|
#{{.Index}} <a class="title" href="{{$.RepoLink}}/issues/{{.Index}}">{{.Title | RenderEmoji}}</a>
|
|
{{TimeSinceUnix .CreatedUnix $.locale}}
|
|
</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
|
|
{{if gt .Activity.UnresolvedIssueCount 0}}
|
|
<h4 class="ui horizontal divider header" id="unresolved-conversations">
|
|
<span class="text">{{svg "octicon-comment-discussion"}}</span>
|
|
{{.locale.TrN .Activity.UnresolvedIssueCount "repo.activity.title.unresolved_conv_1" "repo.activity.title.unresolved_conv_n" .Activity.UnresolvedIssueCount}}
|
|
</h4>
|
|
<div class="text center desc">
|
|
{{.locale.Tr "repo.activity.unresolved_conv_desc"}}
|
|
</div>
|
|
<div class="list">
|
|
{{range .Activity.UnresolvedIssues}}
|
|
<p class="desc">
|
|
<span class="ui green label">{{$.locale.Tr "repo.activity.unresolved_conv_label"}}</span>
|
|
#{{.Index}}
|
|
{{if .IsPull}}
|
|
<a class="title" href="{{$.RepoLink}}/pulls/{{.Index}}">{{.Title | RenderEmoji}}</a>
|
|
{{else}}
|
|
<a class="title" href="{{$.RepoLink}}/issues/{{.Index}}">{{.Title | RenderEmoji}}</a>
|
|
{{end}}
|
|
{{TimeSinceUnix .UpdatedUnix $.locale}}
|
|
</p>
|
|
{{end}}
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{template "base/footer" .}}
|