be5411d6b5
Backport #21225, fix for #21128 (also in 1.17.3), close #21224 The indent was incorrect before, so this PR did some formatting work. Bypass Golang's template bug for JS string interpolation. And since there are JS lint rules for templates, so the string interpolation is also a must.
150 lines
7.9 KiB
Handlebars
150 lines
7.9 KiB
Handlebars
{{template "base/head" .}}
|
|
<div class="page-content repository file list {{if .IsBlame}}blame{{end}}">
|
|
{{template "repo/header" .}}
|
|
<div class="ui container {{if .IsBlame}}fluid padded{{end}}">
|
|
{{template "base/alert" .}}
|
|
<div class="ui repo-description">
|
|
<div id="repo-desc">
|
|
{{ $description := .Repository.DescriptionHTML $.Context}}
|
|
{{if $description}}<span class="description">{{$description}}</span>{{else if .IsRepositoryAdmin}}<span class="no-description text-italic">{{.i18n.Tr "repo.no_desc"}}</span>{{end}}
|
|
<a class="link" href="{{.Repository.Website}}">{{.Repository.Website}}</a>
|
|
</div>
|
|
{{if .RepoSearchEnabled}}
|
|
<div class="ui repo-search">
|
|
<form class="ui form ignore-dirty" action="{{.RepoLink}}/search" method="get">
|
|
<div class="field">
|
|
<div class="ui action input{{if .CodeIndexerUnavailable }} disabled left icon tooltip{{end}}"{{if .CodeIndexerUnavailable }} data-content="{{.i18n.Tr "repo.search.code_search_unavailable"}}"{{end}}>
|
|
<input name="q" value="{{.Keyword}}"{{if .CodeIndexerUnavailable }} disabled{{end}} placeholder="{{.i18n.Tr "repo.search.search_repo"}}">
|
|
{{if .CodeIndexerUnavailable }}
|
|
<i class="icon df ac jc">{{svg "octicon-alert"}}</i>
|
|
{{end}}
|
|
<button class="ui icon button"{{if .CodeIndexerUnavailable }} disabled{{end}} type="submit">
|
|
{{svg "octicon-search"}}
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
<div class="mt-3" id="repo-topics">
|
|
{{range .Topics}}<a class="ui repo-topic large label topic" href="{{AppSubUrl}}/explore/repos?q={{.Name}}&topic=1">{{.Name}}</a>{{end}}
|
|
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}<a id="manage_topic" class="muted">{{.i18n.Tr "repo.topic.manage_topics"}}</a>{{end}}
|
|
</div>
|
|
{{if and .Permission.IsAdmin (not .Repository.IsArchived)}}
|
|
<div class="ui repo-topic-edit grid form" id="topic_edit" style="display:none">
|
|
<div class="fourteen wide column">
|
|
<div class="field">
|
|
<div class="ui fluid multiple search selection dropdown">
|
|
<input type="hidden" name="topics" value="{{range $i, $v := .Topics}}{{.Name}}{{if lt (Add $i 1) (len $.Topics)}},{{end}}{{end}}">
|
|
{{range .Topics}}
|
|
<div class="ui small label topic transition visible" data-value="{{.Name}}" style="display: inline-block !important; cursor: default;">{{.Name}}{{svg "octicon-x" 16 "delete icon ml-3 mt-1"}}</div>
|
|
{{end}}
|
|
<div class="text"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="two wide column">
|
|
<a class="ui button primary" href="javascript:;" id="save_topic"
|
|
data-link="{{.RepoLink}}/topics">{{.i18n.Tr "repo.topic.done"}}</a>
|
|
</div>
|
|
</div>
|
|
{{end}}
|
|
<div class="hide" id="validate_prompt">
|
|
<span id="count_prompt">{{.i18n.Tr "repo.topic.count_prompt"}}</span>
|
|
<span id="format_prompt">{{.i18n.Tr "repo.topic.format_prompt"}}</span>
|
|
</div>
|
|
{{if .Repository.IsArchived}}
|
|
<div class="ui warning message">
|
|
{{.i18n.Tr "repo.archive.title"}}
|
|
</div>
|
|
{{end}}
|
|
{{template "repo/sub_menu" .}}
|
|
<div class="repo-button-row df ac sb fw">
|
|
<div class="df ac">
|
|
{{template "repo/branch_dropdown" dict "root" .}}
|
|
{{ $n := len .TreeNames}}
|
|
{{ $l := Subtract $n 1}}
|
|
<!-- If home page, show new PR. If not, show breadcrumb -->
|
|
{{if eq $n 0}}
|
|
{{if and .CanCompareOrPull .IsViewBranch (not .Repository.IsArchived)}}
|
|
<a href="{{.BaseRepo.Link}}/compare/{{PathEscapeSegments .BaseRepo.DefaultBranch}}...{{if ne .Repository.Owner.Name .BaseRepo.Owner.Name}}{{PathEscape .Repository.Owner.Name}}{{if .BaseRepo.IsFork}}/{{PathEscape .Repository.Name}}{{end}}:{{end}}{{PathEscapeSegments .BranchName}}">
|
|
<button id="new-pull-request" class="ui compact basic button tooltip" data-content="{{if .PullRequestCtx.Allowed}}{{.i18n.Tr "repo.pulls.compare_changes"}}{{else}}{{.i18n.Tr "action.compare_branch"}}{{end}}"><span class="text">{{svg "octicon-git-pull-request"}}</span></button>
|
|
</a>
|
|
{{end}}
|
|
<a href="{{.Repository.Link}}/find/{{.BranchNameSubURL}}" class="ui compact basic button tooltip" data-content="{{.i18n.Tr "repo.find_file.go_to_file"}}">{{svg "octicon-file-moved" 15}}</a>
|
|
{{end}}
|
|
{{if or .CanAddFile .CanUploadFile}}
|
|
<button class="ui basic small compact dropdown jump icon button mr-2">
|
|
<span class="text">{{.i18n.Tr "repo.editor.add_file"}}</span>
|
|
<div class="menu">
|
|
{{if .Repository.CanEnableEditor}}
|
|
{{if .CanAddFile}}
|
|
<a class="item" href="{{.RepoLink}}/_new/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
|
|
{{.i18n.Tr "repo.editor.new_file"}}
|
|
</a>
|
|
{{end}}
|
|
{{if .CanUploadFile}}
|
|
<a class="item" href="{{.RepoLink}}/_upload/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
|
|
{{.i18n.Tr "repo.editor.upload_file"}}
|
|
</a>
|
|
{{end}}
|
|
{{if .CanAddFile}}
|
|
<a class="item" href="{{.RepoLink}}/_diffpatch/{{.BranchName | PathEscapeSegments}}/{{.TreePath | PathEscapeSegments}}">
|
|
{{.i18n.Tr "repo.editor.patch"}}
|
|
</a>
|
|
{{end}}
|
|
{{end}}
|
|
</div>
|
|
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
|
</button>
|
|
{{end}}
|
|
{{if ne $n 0}}
|
|
<span class="ui breadcrumb repo-path"><a class="section" href="{{.RepoLink}}/src/{{.BranchNameSubURL}}" title="{{.Repository.Name}}">{{EllipsisString .Repository.Name 30}}</a>{{range $i, $v := .TreeNames}}<span class="divider">/</span>{{if eq $i $l}}<span class="active section" title="{{$v}}">{{EllipsisString $v 30}}</span>{{else}}{{$p := index $.Paths $i}}<span class="section"><a href="{{$.BranchLink}}/{{PathEscapeSegments $p}}" title="{{$v}}">{{EllipsisString $v 30}}</a></span>{{end}}{{end}}</span>
|
|
{{end}}
|
|
</div>
|
|
<div class="df ac">
|
|
{{if eq $n 0}}
|
|
{{if .Repository.IsTemplate}}
|
|
<div class="ui tiny primary buttons">
|
|
<a href="{{AppSubUrl}}/repo/create?template_id={{.Repository.ID}}" class="ui button">
|
|
{{.i18n.Tr "repo.use_template"}}
|
|
</a>
|
|
</div>
|
|
{{end}}
|
|
{{end}}
|
|
<!-- Only show clone panel in repository home page -->
|
|
{{if eq $n 0}}
|
|
<div class="ui action tiny input" id="clone-panel">
|
|
{{template "repo/clone_buttons" .}}
|
|
<button id="download-btn" class="ui basic small compact jump dropdown icon button tooltip" data-content="{{.i18n.Tr "repo.download_archive"}}" data-position="top right">
|
|
{{svg "octicon-download"}}
|
|
<div class="menu">
|
|
{{if not $.DisableDownloadSourceArchives}}
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.zip" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-3"}}{{.i18n.Tr "repo.download_zip"}}</a>
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.tar.gz" rel="nofollow">{{svg "octicon-file-zip" 16 "mr-3"}}{{.i18n.Tr "repo.download_tar"}}</a>
|
|
<a class="item archive-link" href="{{$.RepoLink}}/archive/{{PathEscapeSegments $.RefName}}.bundle" rel="nofollow">{{svg "octicon-package" 16 "mr-3"}}{{.i18n.Tr "repo.download_bundle"}}</a>
|
|
{{end}}
|
|
<a class="item js-clone-url-vsc" href="vscode://vscode.git/clone?url={{.CloneButtonOriginLink.HTTPS}}">{{svg "gitea-vscode" 16 "mr-3"}}{{.i18n.Tr "repo.clone_in_vsc"}}</a>
|
|
</div>
|
|
</button>
|
|
{{template "repo/clone_script" .}}{{/* the script will update `.js-clone-url` and related elements */}}
|
|
</div>
|
|
{{end}}
|
|
{{if and (ne $n 0) (not .IsViewFile) (not .IsBlame) }}
|
|
<a class="ui button" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}/{{.TreePath | PathEscapeSegments}}">
|
|
{{svg "octicon-history" 16 "mr-3"}}{{.i18n.Tr "repo.file_history"}}
|
|
</a>
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{if .IsViewFile}}
|
|
{{template "repo/view_file" .}}
|
|
{{else if .IsBlame}}
|
|
{{template "repo/blame" .}}
|
|
{{else}}
|
|
{{template "repo/view_list" .}}
|
|
{{end}}
|
|
</div>
|
|
</div>
|
|
{{template "base/footer" .}}
|