aboutsummaryrefslogtreecommitdiffstats
path: root/templates/repo/view_file.tmpl
blob: 4129a133b7e762565c881d2436c2dfe54fd88968 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<div {{if .ReadmeInList}}id="readme" {{end}}class="{{TabSizeClass .Editorconfig .FileName}} non-diff-file-content">
	{{- if .FileError}}
		<div class="ui error message">
			<div class="text left gt-whitespace-pre">{{.FileError}}</div>
		</div>
	{{end}}
	{{- if .FileWarning}}
		<div class="ui warning message">
			<div class="text left gt-whitespace-pre">{{.FileWarning}}</div>
		</div>
	{{end}}
	<h4 class="file-header ui top attached header gt-df gt-ac gt-sb gt-fw">
		<div class="file-header-left gt-df gt-ac gt-py-3 gt-pr-4">
			{{if .ReadmeInList}}
				{{svg "octicon-book" 16 "gt-mr-3"}}
				<strong><a class="default-link muted" href="#readme">{{.FileName}}</a></strong>
			{{else}}
				{{template "repo/file_info" .}}
			{{end}}
		</div>
		<div class="file-header-right file-actions gt-df gt-ac gt-fw">
			{{if .HasSourceRenderedToggle}}
				<div class="ui compact icon buttons">
					<a href="{{$.Link}}?display=source" class="ui mini basic button {{if .IsDisplayingSource}}active{{end}}" data-tooltip-content="{{ctx.Locale.Tr "repo.file_view_source"}}">{{svg "octicon-code" 15}}</a>
					<a href="{{$.Link}}" class="ui mini basic button {{if .IsDisplayingRendered}}active{{end}}" data-tooltip-content="{{ctx.Locale.Tr "repo.file_view_rendered"}}">{{svg "octicon-file" 15}}</a>
				</div>
			{{end}}
			{{if not .ReadmeInList}}
				<div class="ui buttons gt-mr-2">
					<a class="ui mini basic button" href="{{$.RawFileLink}}">{{ctx.Locale.Tr "repo.file_raw"}}</a>
					{{if not .IsViewCommit}}
						<a class="ui mini basic button" href="{{.RepoLink}}/src/commit/{{PathEscape .CommitID}}/{{PathEscapeSegments .TreePath}}">{{ctx.Locale.Tr "repo.file_permalink"}}</a>
					{{end}}
					{{if .IsRepresentableAsText}}
						<a class="ui mini basic button" href="{{.RepoLink}}/blame/{{.BranchNameSubURL}}/{{PathEscapeSegments .TreePath}}">{{ctx.Locale.Tr "repo.blame"}}</a>
					{{end}}
					<a class="ui mini basic button" href="{{.RepoLink}}/commits/{{.BranchNameSubURL}}/{{PathEscapeSegments .TreePath}}">{{ctx.Locale.Tr "repo.file_history"}}</a>
					{{if .EscapeStatus.Escaped}}
						<button class="ui mini basic button unescape-button gt-hidden">{{ctx.Locale.Tr "repo.unescape_control_characters"}}</button>
						<button class="ui mini basic button escape-button">{{ctx.Locale.Tr "repo.escape_control_characters"}}</button>
					{{end}}
				</div>
				<a download href="{{$.RawFileLink}}"><span class="btn-octicon" data-tooltip-content="{{ctx.Locale.Tr "repo.download_file"}}">{{svg "octicon-download"}}</span></a>
				<a id="copy-content" class="btn-octicon {{if not .CanCopyContent}} disabled{{end}}"{{if or .IsImageFile (and .HasSourceRenderedToggle (not .IsDisplayingSource))}} data-link="{{$.RawFileLink}}"{{end}} data-tooltip-content="{{if .CanCopyContent}}{{ctx.Locale.Tr "copy_content"}}{{else}}{{ctx.Locale.Tr "copy_type_unsupported"}}{{end}}">{{svg "octicon-copy" 14}}</a>
				{{if .EnableFeed}}
				<a class="btn-octicon" href="{{$.FeedURL}}/rss/{{$.BranchNameSubURL}}/{{PathEscapeSegments .TreePath}}" data-tooltip-content="{{ctx.Locale.Tr "rss_feed"}}">
					{{svg "octicon-rss" 14}}
				</a>
				{{end}}
				{{if .Repository.CanEnableEditor}}
					{{if .CanEditFile}}
						<a href="{{.RepoLink}}/_edit/{{PathEscapeSegments .BranchName}}/{{PathEscapeSegments .TreePath}}"><span class="btn-octicon" data-tooltip-content="{{.EditFileTooltip}}">{{svg "octicon-pencil"}}</span></a>
					{{else}}
						<span class="btn-octicon disabled" data-tooltip-content="{{.EditFileTooltip}}">{{svg "octicon-pencil"}}</span>
					{{end}}
					{{if .CanDeleteFile}}
						<a href="{{.RepoLink}}/_delete/{{PathEscapeSegments .BranchName}}/{{PathEscapeSegments .TreePath}}"><span class="btn-octicon btn-octicon-danger"  data-tooltip-content="{{.DeleteFileTooltip}}">{{svg "octicon-trash"}}</span></a>
					{{else}}
						<span class="btn-octicon disabled" data-tooltip-content="{{.DeleteFileTooltip}}">{{svg "octicon-trash"}}</span>
					{{end}}
				{{end}}
			{{else if .EscapeStatus.Escaped}}
				<button class="ui mini basic button unescape-button gt-mr-2 gt-hidden">{{ctx.Locale.Tr "repo.unescape_control_characters"}}</button>
				<button class="ui mini basic button escape-button gt-mr-2">{{ctx.Locale.Tr "repo.escape_control_characters"}}</button>
			{{end}}
			{{if and .ReadmeInList .CanEditReadmeFile}}
				<a class="btn-octicon" data-tooltip-content="{{ctx.Locale.Tr "repo.editor.edit_this_file"}}" href="{{.RepoLink}}/_edit/{{PathEscapeSegments .BranchName}}/{{PathEscapeSegments .TreePath}}/{{PathEscapeSegments .FileName}}">{{svg "octicon-pencil"}}</a>
			{{end}}
		</div>
	</h4>
	<div class="ui attached table unstackable segment">
		{{if not (or .IsMarkup .IsRenderedHTML)}}
			{{template "repo/unicode_escape_prompt" dict "EscapeStatus" .EscapeStatus "root" $}}
		{{end}}
		<div class="file-view{{if .IsMarkup}} markup {{.MarkupType}}{{else if .IsPlainText}} plain-text{{else if .IsTextSource}} code-view{{end}}">
			{{if .IsMarkup}}
				{{if .FileContent}}{{.FileContent | Safe}}{{end}}
			{{else if .IsPlainText}}
				<pre>{{if .FileContent}}{{.FileContent | Safe}}{{end}}</pre>
			{{else if not .IsTextSource}}
				<div class="view-raw">
					{{if .IsImageFile}}
						<img src="{{$.RawFileLink}}">
					{{else if .IsVideoFile}}
						<video controls src="{{$.RawFileLink}}">
							<strong>{{ctx.Locale.Tr "repo.video_not_supported_in_browser"}}</strong>
						</video>
					{{else if .IsAudioFile}}
						<audio controls src="{{$.RawFileLink}}">
							<strong>{{ctx.Locale.Tr "repo.audio_not_supported_in_browser"}}</strong>
						</audio>
					{{else if .IsPDFFile}}
						<div class="pdf-content is-loading" data-src="{{$.RawFileLink}}" data-fallback-button-text="{{ctx.Locale.Tr "repo.diff.view_file"}}"></div>
					{{else}}
						<a href="{{$.RawFileLink}}" rel="nofollow" class="btn btn-gray btn-radius">{{ctx.Locale.Tr "repo.file_view_raw"}}</a>
					{{end}}
				</div>
			{{else if .FileSize}}
				{{if .IsFileTooLarge}}
				<table>
					<tbody>
						<tr>
							<td><strong>{{ctx.Locale.Tr "repo.file_too_large"}}</strong></td>
						</tr>
					</tbody>
				</table>
				{{else}}
				<table>
					<tbody>
						{{range $idx, $code := .FileContent}}
						{{$line := Eval $idx "+" 1}}
						<tr>
							<td id="L{{$line}}" class="lines-num"><span id="L{{$line}}" data-line-number="{{$line}}"></span></td>
							{{if $.EscapeStatus.Escaped}}
								<td class="lines-escape">{{if (index $.LineEscapeStatus $idx).Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{if (index $.LineEscapeStatus $idx).HasInvisible}}{{ctx.Locale.Tr "repo.invisible_runes_line"}} {{end}}{{if (index $.LineEscapeStatus $idx).HasAmbiguous}}{{ctx.Locale.Tr "repo.ambiguous_runes_line"}}{{end}}"></button>{{end}}</td>
							{{end}}
							<td rel="L{{$line}}" class="lines-code chroma"><code class="code-inner">{{$code | Safe}}</code></td>
						</tr>
						{{end}}
					</tbody>
				</table>
				<div class="code-line-menu ui vertical pointing menu tippy-target">
					{{if $.Permission.CanRead $.UnitTypeIssues}}
						<a class="item ref-in-new-issue" data-url-issue-new="{{.RepoLink}}/issues/new" data-url-param-body-link="{{.Repository.Link}}/src/commit/{{PathEscape .CommitID}}/{{PathEscapeSegments .TreePath}}{{if $.HasSourceRenderedToggle}}?display=source{{end}}" rel="nofollow noindex">{{ctx.Locale.Tr "repo.issues.context.reference_issue"}}</a>
					{{end}}
					<a class="item view_git_blame" href="{{.Repository.Link}}/blame/commit/{{PathEscape .CommitID}}/{{PathEscapeSegments .TreePath}}">{{ctx.Locale.Tr "repo.view_git_blame"}}</a>
					<a class="item copy-line-permalink" data-url="{{.Repository.Link}}/src/commit/{{PathEscape .CommitID}}/{{PathEscapeSegments .TreePath}}{{if $.HasSourceRenderedToggle}}?display=source{{end}}">{{ctx.Locale.Tr "repo.file_copy_permalink"}}</a>
				</div>
				{{end}}
			{{end}}
		</div>
	</div>
</div>