 dc56486b1f
			
		
	
	
	dc56486b1f
	
	
	
		
			
			This implements milestones 1. and 4. from **Task F. Moderation features: Reporting** (part of [amendment of the workplan](https://codeberg.org/forgejo/sustainability/src/branch/main/2022-12-01-nlnet/2025-02-07-extended-workplan.md#task-f-moderation-features-reporting) for NLnet 2022-12-035): > 1. A reporting feature is implemented in the database. It ensures that content remains available for review, even if a user deletes it after a report was sent. > 4. Users can report the most relevant content types (at least: issue comments, repositories, users) ### See also: - forgejo/discussions#291 - forgejo/discussions#304 - forgejo/design#30 Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6977 Reviewed-by: Gusted <gusted@noreply.codeberg.org> Reviewed-by: Otto <otto@codeberg.org> Co-authored-by: floss4good <floss4good@disroot.org> Co-committed-by: floss4good <floss4good@disroot.org>
		
			
				
	
	
		
			209 lines
		
	
	
	
		
			9.8 KiB
		
	
	
	
		
			Go HTML Template
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
	
		
			9.8 KiB
		
	
	
	
		
			Go HTML Template
		
	
	
	
	
	
| <div class="secondary-nav">
 | |
| {{with .Repository}}
 | |
| 	<div class="ui container">
 | |
| 		<div class="repo-header">
 | |
| 			<div class="flex-item tw-items-center">
 | |
| 				<div class="flex-item-leading">
 | |
| 					{{template "repo/icon" .}}
 | |
| 				</div>
 | |
| 				<div class="flex-item-main">
 | |
| 					<div class="flex-item-title gt-font-18">
 | |
| 						<a class="muted gt-font-normal" href="{{.Owner.HomeLink}}">{{.Owner.Name}}</a>/<a class="muted" href="{{$.RepoLink}}">{{.Name}}</a>
 | |
| 					</div>
 | |
| 				</div>
 | |
| 				<div class="flex-item-trailing">
 | |
| 					{{if .IsArchived}}
 | |
| 						<span class="ui label not-mobile">{{ctx.Locale.Tr "repo.desc.archived"}}</span>
 | |
| 						<div class="repo-icon only-mobile" data-tooltip-content="{{ctx.Locale.Tr "repo.desc.archived"}}">{{svg "octicon-archive" 18}}</div>
 | |
| 					{{end}}
 | |
| 					{{if .IsPrivate}}
 | |
| 						<span class="ui label not-mobile">{{ctx.Locale.Tr "repo.desc.private"}}</span>
 | |
| 						<div class="repo-icon only-mobile" data-tooltip-content="{{ctx.Locale.Tr "repo.desc.private"}}">{{svg "octicon-lock" 18}}</div>
 | |
| 					{{else}}
 | |
| 						{{if .Owner.Visibility.IsPrivate}}
 | |
| 							<span class="ui label not-mobile">{{ctx.Locale.Tr "repo.desc.internal"}}</span>
 | |
| 							<div class="repo-icon only-mobile" data-tooltip-content="{{ctx.Locale.Tr "repo.desc.internal"}}">{{svg "octicon-shield-lock" 18}}</div>
 | |
| 						{{end}}
 | |
| 					{{end}}
 | |
| 					{{if .IsTemplate}}
 | |
| 						<span class="ui label not-mobile">{{ctx.Locale.Tr "repo.desc.template"}}</span>
 | |
| 						<div class="repo-icon only-mobile" data-tooltip-content="{{ctx.Locale.Tr "repo.desc.template"}}">{{svg "octicon-repo-template" 18}}</div>
 | |
| 					{{end}}
 | |
| 					{{if eq .ObjectFormatName "sha256"}}
 | |
| 						<span class="ui label">{{ctx.Locale.Tr "repo.desc.sha256"}}</span>
 | |
| 					{{end}}
 | |
| 				</div>
 | |
| 			</div>
 | |
| 			{{if not (or .IsBeingCreated .IsBroken)}}
 | |
| 				<div class="repo-buttons button-row">
 | |
| 					{{if $.RepoTransfer}}
 | |
| 						<form method="post" action="{{$.RepoLink}}/action/accept_transfer?redirect_to={{$.RepoLink}}">
 | |
| 							{{$.CsrfTokenHtml}}
 | |
| 							<div data-tooltip-content="{{if $.CanUserAcceptTransfer}}{{ctx.Locale.Tr "repo.transfer.accept_desc" $.RepoTransfer.Recipient.DisplayName}}{{else}}{{ctx.Locale.Tr "repo.transfer.no_permission_to_accept"}}{{end}}">
 | |
| 								<button type="submit" class="ui basic button {{if $.CanUserAcceptTransfer}}primary {{end}} ok small"{{if not $.CanUserAcceptTransfer}} disabled{{end}}>
 | |
| 									{{ctx.Locale.Tr "repo.transfer.accept"}}
 | |
| 								</button>
 | |
| 							</div>
 | |
| 						</form>
 | |
| 						<form method="post" action="{{$.RepoLink}}/action/reject_transfer?redirect_to={{$.RepoLink}}">
 | |
| 							{{$.CsrfTokenHtml}}
 | |
| 							<div data-tooltip-content="{{if $.CanUserAcceptTransfer}}{{ctx.Locale.Tr "repo.transfer.reject_desc" $.RepoTransfer.Recipient.DisplayName}}{{else}}{{ctx.Locale.Tr "repo.transfer.no_permission_to_reject"}}{{end}}">
 | |
| 								<button type="submit" class="ui basic button {{if $.CanUserAcceptTransfer}}red {{end}}ok small"{{if not $.CanUserAcceptTransfer}} disabled{{end}}>
 | |
| 									{{ctx.Locale.Tr "repo.transfer.reject"}}
 | |
| 								</button>
 | |
| 							</div>
 | |
| 						</form>
 | |
| 					{{end}}
 | |
| 					{{if $.EnableFeed}}
 | |
| 					{{/* An extra div-element is not necessary here, as this button does not secretly contain two buttons. */}}
 | |
| 					<a class="ui compact small basic button" href="{{$.RepoLink}}.rss" data-tooltip-content="{{ctx.Locale.Tr "rss_feed"}}">
 | |
| 						{{svg "octicon-rss" 16}}
 | |
| 					</a>
 | |
| 					{{end}}
 | |
| 					{{template "repo/watch_unwatch" $}}
 | |
| 					{{if not $.DisableStars}}
 | |
| 					{{template "repo/star_unstar" $}}
 | |
| 					{{end}}
 | |
| 					{{if not $.DisableForks}}
 | |
| 					{{template "repo/header_fork" $}}
 | |
| 					{{end}}
 | |
| 					{{if and $.IsModerationEnabled $.IsSigned (not $.IsRepositoryAdmin)}}
 | |
| 					<button class="ui small compact jump dropdown icon button" data-tooltip-content="{{ctx.Locale.Tr "repo.more_operations"}}" aria-label="{{ctx.Locale.Tr "toggle_menu"}}">
 | |
| 						{{svg "octicon-kebab-horizontal"}}
 | |
| 						<div class="menu top left">
 | |
| 							<a class="item context" href="{{AppSubUrl}}/report_abuse?type=repo&id={{$.Repository.ID}}">{{ctx.Locale.Tr "moderation.report_content"}}</a>
 | |
| 						</div>
 | |
| 					</button>
 | |
| 					{{end}}
 | |
| 				</div>
 | |
| 			{{end}}
 | |
| 		</div>
 | |
| 		{{if $.PullMirror}}
 | |
| 			<div class="fork-flag">
 | |
| 				{{ctx.Locale.Tr "repo.mirror_from"}}
 | |
| 				<a target="_blank" rel="noopener noreferrer" href="{{$.PullMirror.RemoteAddress}}">{{$.PullMirror.RemoteAddress}}</a>
 | |
| 				{{if $.PullMirror.UpdatedUnix}}{{ctx.Locale.Tr "repo.mirror_sync"}} {{DateUtils.TimeSince $.PullMirror.UpdatedUnix}}{{end}}
 | |
| 			</div>
 | |
| 		{{end}}
 | |
| 		{{if .IsFork}}<div class="fork-flag">{{ctx.Locale.Tr "repo.forked_from"}} <a href="{{.BaseRepo.Link}}">{{.BaseRepo.FullName}}</a></div>{{end}}
 | |
| 		{{if .IsGenerated}}<div class="fork-flag">{{ctx.Locale.Tr "repo.generated_from"}} <a href="{{(.TemplateRepo ctx).Link}}">{{(.TemplateRepo ctx).FullName}}</a></div>{{end}}
 | |
| 	</div>
 | |
| {{end}}
 | |
| 	<overflow-menu class="ui container secondary pointing tabular top attached borderless menu tw-pt-0 tw-my-0">
 | |
| 		{{if not (or .Repository.IsBeingCreated .Repository.IsBroken)}}
 | |
| 			<div class="overflow-menu-items">
 | |
| 				{{if .Permission.CanRead $.UnitTypeCode}}
 | |
| 					<a class="{{if .PageIsViewCode}}active {{end}}item" href="{{.RepoLink}}{{if and (ne .BranchName .Repository.DefaultBranch) (not $.PageIsWiki)}}/src/{{.BranchNameSubURL}}{{end}}">
 | |
| 						{{svg "octicon-code"}} {{ctx.Locale.Tr "repo.code"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if .Permission.CanRead $.UnitTypeIssues}}
 | |
| 					<a class="{{if .PageIsIssueList}}active {{end}}item" href="{{.RepoLink}}/issues">
 | |
| 						{{svg "octicon-issue-opened"}} {{ctx.Locale.Tr "repo.issues"}}
 | |
| 						{{if .Repository.NumOpenIssues}}
 | |
| 							<span class="ui small label">{{CountFmt .Repository.NumOpenIssues}}</span>
 | |
| 						{{end}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if .Permission.CanRead $.UnitTypeExternalTracker}}
 | |
| 					<a class="{{if .PageIsIssueList}}active {{end}}item" href="{{.RepoExternalIssuesLink}}" target="_blank" rel="noopener noreferrer">
 | |
| 						{{svg "octicon-link-external"}} {{ctx.Locale.Tr "repo.issues"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if and .Repository.CanEnablePulls (.Permission.CanRead $.UnitTypePullRequests)}}
 | |
| 					<a class="{{if .PageIsPullList}}active {{end}}item" href="{{.RepoLink}}/pulls">
 | |
| 						{{svg "octicon-git-pull-request"}} {{ctx.Locale.Tr "repo.pulls"}}
 | |
| 						{{if .Repository.NumOpenPulls}}
 | |
| 							<span class="ui small label">{{CountFmt .Repository.NumOpenPulls}}</span>
 | |
| 						{{end}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if and (not .UnitProjectsGlobalDisabled) (.Permission.CanRead $.UnitTypeProjects)}}
 | |
| 					<a href="{{.RepoLink}}/projects" class="{{if .IsProjectsPage}}active {{end}}item">
 | |
| 						{{svg "octicon-project"}} {{ctx.Locale.Tr "repo.project"}}
 | |
| 						{{if .Repository.NumOpenProjects}}
 | |
| 							<span class="ui small label">{{CountFmt .Repository.NumOpenProjects}}</span>
 | |
| 						{{end}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if and (.Permission.CanRead $.UnitTypeReleases) (not .IsEmptyRepo)}}
 | |
| 					<a class="{{if or .PageIsReleaseList .PageIsTagList}}active {{end}}item" href="{{.RepoLink}}/releases">
 | |
| 						{{svg "octicon-tag"}} {{ctx.Locale.Tr "repo.releases"}}
 | |
| 						{{if .NumReleases}}
 | |
| 							<span class="ui small label">{{CountFmt .NumReleases}}</span>
 | |
| 						{{end}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if .Permission.CanRead $.UnitTypePackages}}
 | |
| 					<a href="{{.RepoLink}}/packages" class="{{if .IsPackagesPage}}active {{end}}item">
 | |
| 						{{svg "octicon-package"}} {{ctx.Locale.Tr "packages.title"}}
 | |
| 						{{if .NumPackages}}
 | |
| 							<span class="ui small label">{{CountFmt .NumPackages}}</span>
 | |
| 						{{end}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if .Permission.CanRead $.UnitTypeWiki}}
 | |
| 					<a class="{{if .PageIsWiki}}active {{end}}item" href="{{.RepoLink}}/wiki">
 | |
| 						{{svg "octicon-book"}} {{ctx.Locale.Tr "repo.wiki"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if .Permission.CanRead $.UnitTypeExternalWiki}}
 | |
| 					<a class="item" href="{{(.Repository.MustGetUnit $.Context $.UnitTypeExternalWiki).ExternalWikiConfig.ExternalWikiURL}}" target="_blank" rel="noopener noreferrer">
 | |
| 						{{svg "octicon-link-external"}} {{ctx.Locale.Tr "repo.wiki"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if and (.Permission.CanReadAny $.UnitTypeCode $.UnitTypePullRequests $.UnitTypeIssues $.UnitTypeReleases)}}
 | |
| 					<a class="{{if .PageIsActivity}}active {{end}}item" href="{{.RepoLink}}/activity">
 | |
| 						{{svg "octicon-pulse"}} {{ctx.Locale.Tr "repo.activity"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if and .EnableActions (not .UnitActionsGlobalDisabled) (.Permission.CanRead $.UnitTypeActions)}}
 | |
| 					<a class="{{if .PageIsActions}}active {{end}}item" href="{{.RepoLink}}/actions">
 | |
| 						{{svg "octicon-play"}} {{ctx.Locale.Tr "actions.actions"}}
 | |
| 						{{if .Repository.NumOpenActionRuns}}
 | |
| 							<span class="ui small label">{{CountFmt .Repository.NumOpenActionRuns}}</span>
 | |
| 						{{end}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{template "custom/extra_tabs" .}}
 | |
| 
 | |
| 				{{if and RepoFlagsEnabled .SignedUser.IsAdmin}}
 | |
| 					<a class="{{if .IsRepoFlagsPage}}active {{end}}item" href="{{.RepoLink}}/flags">
 | |
| 						{{svg "octicon-milestone"}} {{ctx.Locale.Tr "repo.admin.manage_flags"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 
 | |
| 				{{if .Permission.IsAdmin}}
 | |
| 					{{$highlightSettings := true}}
 | |
| 					{{if and .SignedUser.EnableRepoUnitHints (not (.Repository.AllUnitsEnabled ctx))}}
 | |
| 						{{$highlightSettings = false}}
 | |
| 						<a class="{{if .PageIsRepoSettingsUnits}}active {{end}}item" href="{{.RepoLink}}/settings/units">
 | |
| 							{{svg "octicon-plus"}} {{ctx.Locale.Tr "repo.settings.units.add_more"}}
 | |
| 						</a>
 | |
| 					{{end}}
 | |
| 					<a id="settings-btn" class="{{if and .PageIsRepoSettings (or $highlightSettings (not .PageIsRepoSettingsUnits))}}active {{end}}right item" href="{{.RepoLink}}/settings">
 | |
| 						{{svg "octicon-tools"}} {{ctx.Locale.Tr "repo.settings"}}
 | |
| 					</a>
 | |
| 				{{end}}
 | |
| 			</div>
 | |
| 		{{else if .Permission.IsAdmin}}
 | |
| 			<div class="overflow-menu-items">
 | |
| 				<a id="settings-btn" class="{{if .PageIsRepoSettings}}active {{end}}right item" href="{{.RepoLink}}/settings">
 | |
| 					{{svg "octicon-tools"}} {{ctx.Locale.Tr "repo.settings"}}
 | |
| 				</a>
 | |
| 			</div>
 | |
| 		{{end}}
 | |
| 	</overflow-menu>
 | |
| 	<div class="ui tabs divider"></div>
 | |
| </div>
 |