You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

view_file.tmpl 6.9KB

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