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.

head.tmpl 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <!DOCTYPE html>
  2. <html lang="{{.i18n.Lang}}" class="theme-{{.SignedUser.Theme}}">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <title>{{if .Title}}{{.Title | RenderEmojiPlain}} - {{end}} {{if .Repository.Name}}{{.Repository.Name}} - {{end}}{{AppName}}</title>
  7. <link rel="manifest" href="data:{{.ManifestData}}"/>
  8. <meta name="theme-color" content="{{ThemeColorMetaTag}}">
  9. <meta name="default-theme" content="{{DefaultTheme}}" />
  10. <meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}{{MetaAuthor}}{{end}}" />
  11. <meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}{{MetaDescription}}{{end}}" />
  12. <meta name="keywords" content="{{MetaKeywords}}">
  13. <meta name="referrer" content="no-referrer" />
  14. {{if .GoGetImport}}
  15. <meta name="go-import" content="{{.GoGetImport}} git {{.CloneLink.HTTPS}}">
  16. <meta name="go-source" content="{{.GoGetImport}} _ {{.GoDocDirectory}} {{.GoDocFile}}">
  17. {{end}}
  18. {{if .FeedURL}}
  19. <link rel="alternate" type="application/atom+xml" title="" href="{{.FeedURL}}.atom">
  20. <link rel="alternate" type="application/rss+xml" title="" href="{{.FeedURL}}.rss">
  21. {{end}}
  22. <script>
  23. <!-- /* eslint-disable */ -->
  24. window.config = {
  25. appVer: '{{AppVer}}',
  26. appSubUrl: '{{AppSubUrl}}',
  27. assetUrlPrefix: '{{AssetUrlPrefix}}',
  28. runModeIsProd: {{.RunModeIsProd}},
  29. customEmojis: {{CustomEmojis}},
  30. useServiceWorker: {{UseServiceWorker}},
  31. csrfToken: '{{.CsrfToken}}',
  32. pageData: {{.PageData}},
  33. requireTribute: {{.RequireTribute}},
  34. notificationSettings: {{NotificationSettings}}, {{/*a map provided by NewFuncMap in helper.go*/}}
  35. enableTimeTracking: {{EnableTimetracking}},
  36. {{if .RequireTribute}}
  37. tributeValues: Array.from(new Map([
  38. {{ range .Participants }}
  39. ['{{.Name}}', {key: '{{.Name}} {{.FullName}}', value: '{{.Name}}',
  40. name: '{{.Name}}', fullname: '{{.FullName}}', avatar: '{{.AvatarLink}}'}],
  41. {{ end }}
  42. {{ range .Assignees }}
  43. ['{{.Name}}', {key: '{{.Name}} {{.FullName}}', value: '{{.Name}}',
  44. name: '{{.Name}}', fullname: '{{.FullName}}', avatar: '{{.AvatarLink}}'}],
  45. {{ end }}
  46. {{ range .MentionableTeams }}
  47. ['{{$.MentionableTeamsOrg}}/{{.Name}}', {key: '{{$.MentionableTeamsOrg}}/{{.Name}}', value: '{{$.MentionableTeamsOrg}}/{{.Name}}',
  48. name: '{{$.MentionableTeamsOrg}}/{{.Name}}', avatar: '{{$.MentionableTeamsOrgAvatar}}'}],
  49. {{ end }}
  50. ]).values()),
  51. {{end}}
  52. mermaidMaxSourceCharacters: {{MermaidMaxSourceCharacters}},
  53. {{/* this global i18n object should only contain general texts. for specialized texts, it should be provided inside the related modules by: (1) API response (2) HTML data-attribute (3) PageData */}}
  54. i18n: {
  55. copy_success: '{{.i18n.Tr "copy_success"}}',
  56. copy_error: '{{.i18n.Tr "copy_error"}}',
  57. error_occurred: '{{.i18n.Tr "error.occurred"}}',
  58. network_error: '{{.i18n.Tr "error.network_error"}}',
  59. },
  60. };
  61. {{/* in case some pages don't render the pageData, we make sure it is an object to prevent null access */}}
  62. window.config.pageData = window.config.pageData || {};
  63. </script>
  64. <link rel="icon" href="{{AssetUrlPrefix}}/img/logo.svg" type="image/svg+xml">
  65. <link rel="alternate icon" href="{{AssetUrlPrefix}}/img/favicon.png" type="image/png">
  66. <link rel="stylesheet" href="{{AssetUrlPrefix}}/css/index.css?v={{MD5 AppVer}}">
  67. <noscript>
  68. <style>
  69. .dropdown:hover > .menu { display: block; }
  70. .ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
  71. </style>
  72. </noscript>
  73. {{if .PageIsUserProfile}}
  74. <meta property="og:title" content="{{.Owner.Name}}" />
  75. <meta property="og:type" content="profile" />
  76. <meta property="og:image" content="{{.Owner.AvatarLink}}" />
  77. <meta property="og:url" content="{{.Owner.HTMLURL}}" />
  78. {{if .Owner.Description}}
  79. <meta property="og:description" content="{{.Owner.Description}}">
  80. {{end}}
  81. {{else if .Repository}}
  82. {{if .Issue}}
  83. <meta property="og:title" content="{{.Issue.Title}}" />
  84. <meta property="og:url" content="{{.Issue.HTMLURL}}" />
  85. {{if .Issue.Content}}
  86. <meta property="og:description" content="{{.Issue.Content}}" />
  87. {{end}}
  88. {{else}}
  89. <meta property="og:title" content="{{.Repository.Name}}" />
  90. <meta property="og:url" content="{{.Repository.HTMLURL}}" />
  91. {{if .Repository.Description}}
  92. <meta property="og:description" content="{{.Repository.Description}}" />
  93. {{end}}
  94. {{end}}
  95. <meta property="og:type" content="object" />
  96. {{if .Repository.AvatarLink}}
  97. <meta property="og:image" content="{{.Repository.AvatarLink}}" />
  98. {{else}}
  99. <meta property="og:image" content="{{.Repository.Owner.AvatarLink}}" />
  100. {{end}}
  101. {{else}}
  102. <meta property="og:title" content="{{AppName}}">
  103. <meta property="og:type" content="website" />
  104. <meta property="og:image" content="{{AssetUrlPrefix}}/img/logo.png" />
  105. <meta property="og:url" content="{{AppUrl}}" />
  106. <meta property="og:description" content="{{MetaDescription}}">
  107. {{end}}
  108. <meta property="og:site_name" content="{{AppName}}" />
  109. {{if .IsSigned }}
  110. {{ if ne .SignedUser.Theme "gitea" }}
  111. <link rel="stylesheet" href="{{AssetUrlPrefix}}/css/theme-{{.SignedUser.Theme | PathEscape}}.css?v={{MD5 AppVer}}">
  112. {{end}}
  113. {{else if ne DefaultTheme "gitea"}}
  114. <link rel="stylesheet" href="{{AssetUrlPrefix}}/css/theme-{{DefaultTheme | PathEscape}}.css?v={{MD5 AppVer}}">
  115. {{end}}
  116. {{template "custom/header" .}}
  117. </head>
  118. <body>
  119. {{template "custom/body_outer_pre" .}}
  120. <div class="full height">
  121. <noscript>{{.i18n.Tr "enable_javascript"}}</noscript>
  122. {{template "custom/body_inner_pre" .}}
  123. {{if not .PageIsInstall}}
  124. <div class="ui top secondary stackable main menu following bar light">
  125. {{template "base/head_navbar" .}}
  126. </div><!-- end bar -->
  127. {{end}}
  128. {{if false}}
  129. {{/* to make html structure "likely" complete to prevent IDE warnings */}}
  130. </div>
  131. </body>
  132. </html>
  133. {{end}}