head.tmpl 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <!DOCTYPE html>
  2. <html>
  3. <head data-suburl="{{AppSubURL}}">
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  6. {{if not .PageIsAdmin}}
  7. <meta name="author" content="{{if .Repository}}{{.Owner.Name}}{{else}}Gogs{{end}}" />
  8. <meta name="description" content="{{if .Repository}}{{.Repository.Name}}{{if .Repository.Description}} - {{.Repository.Description}}{{end}}{{else}}Gogs is a painless self-hosted Git service{{end}}" />
  9. <meta name="keywords" content="go, git, self-hosted, gogs">
  10. {{end}}
  11. <meta name="referrer" content="no-referrer" />
  12. <meta name="_csrf" content="{{.CSRFToken}}" />
  13. <meta name="_suburl" content="{{AppSubURL}}" />
  14. <!-- Open Graph Tags -->
  15. {{if .PageIsAdmin}}
  16. {{else if .PageIsUserProfile}}
  17. <meta property="og:url" content="{{.Owner.HTMLURL}}" />
  18. <meta property="og:type" content="profile" />
  19. <meta property="og:title" content="{{.Owner.Name}}{{if .Owner.FullName}} ({{.Owner.FullName}}){{end}}">
  20. <meta property="og:description" content="{{.Owner.Name}} has {{.Owner.NumFollowers}} followers and is following {{.Owner.NumFollowing}} people.">
  21. <meta property="og:image" content="{{.Owner.AvatarLink}}" />
  22. {{else if .Repository}}
  23. <meta property="og:url" content="{{.Repository.HTMLURL}}" />
  24. <meta property="og:type" content="object" />
  25. <meta property="og:title" content="{{.Repository.FullName}}">
  26. <meta property="og:description" content="{{.Repository.Description}}">
  27. <meta property="og:image" content="{{.Repository.Owner.AvatarLink}}" />
  28. {{else}}
  29. <meta property="og:url" content="{{AppURL}}" />
  30. <meta property="og:type" content="website" />
  31. <meta property="og:title" content="{{AppName}}">
  32. <meta property="og:description" content="Gogs is a painless self-hosted Git service.">
  33. <meta property="og:image" content="{{AppURL}}img/favicon.png" />
  34. <meta property="og:site_name" content="Gogs">
  35. {{end}}
  36. <link rel="shortcut icon" href="{{AppSubURL}}/img/favicon.png" />
  37. <script src="{{AppSubURL}}/js/jquery-3.4.1.min.js"></script>
  38. <script src="{{AppSubURL}}/js/libs/jquery.are-you-sure.js"></script>
  39. <link rel="stylesheet" href="{{AppSubURL}}/assets/font-awesome-4.6.3/css/font-awesome.min.css">
  40. <link rel="stylesheet" href="{{AppSubURL}}/assets/octicons-4.3.0/octicons.min.css">
  41. <!-- notebook.js for rendering ipython notebooks and marked.js for rendering markdown in notebooks -->
  42. {{if .IsIPythonNotebook}}
  43. <script src="{{AppSubURL}}/plugins/notebookjs-0.4.2/notebook.min.js"></script>
  44. <script src="{{AppSubURL}}/plugins/marked-0.8.1/marked.min.js"></script>
  45. {{end}}
  46. {{if .RequireSimpleMDE}}
  47. <link rel="stylesheet" href="{{AppSubURL}}/plugins/simplemde-1.10.1/simplemde.min.css">
  48. <script src="{{AppSubURL}}/plugins/simplemde-1.10.1/simplemde.min.js"></script>
  49. <script src="{{AppSubURL}}/plugins/codemirror-5.17.0/addon/mode/loadmode.js"></script>
  50. <script src="{{AppSubURL}}/plugins/codemirror-5.17.0/mode/meta.js"></script>
  51. <script>
  52. CodeMirror.modeURL = "{{AppSubURL}}/plugins/codemirror-5.17.0/mode/%N/%N.js";
  53. </script>
  54. {{end}}
  55. <!-- Stylesheet -->
  56. <link rel="stylesheet" href="{{AppSubURL}}/css/semantic-2.4.2.min.css">
  57. <link rel="stylesheet" href="{{AppSubURL}}/css/gogs.min.css?v={{BuildCommit}}">
  58. <noscript>
  59. <style>
  60. .dropdown:hover > .menu { display: block; }
  61. .ui.secondary.menu .dropdown.item > .menu { margin-top: 0; }
  62. </style>
  63. </noscript>
  64. <!-- Endevir's stylesheet overrides -->
  65. <link rel="stylesheet" href="{{App SubURL}}/css/custom.css">
  66. <link rel="stylesheet" href="{{App SubURL}}/css/custom-1.css">
  67. <!-- JavaScript -->
  68. <script src="{{AppSubURL}}/js/semantic-2.4.2.min.js"></script>
  69. <script src="{{AppSubURL}}/js/gogs.js?v={{BuildCommit}}"></script>
  70. <title>{{if .Title}}{{.Title}} - {{end}}{{AppName}}</title>
  71. <meta name="theme-color" content="{{ThemeColorMetaTag}}">
  72. {{template "inject/head" .}}
  73. </head>
  74. <body>
  75. <div class="full height">
  76. <noscript>This website works better with JavaScript</noscript>
  77. {{if not .PageIsInstall}}
  78. <div class="following bar light">
  79. <div class="ui container">
  80. <div class="ui grid">
  81. <div class="column">
  82. <div class="ui top secondary menu">
  83. <a class="item brand" href="{{AppSubURL}}/">
  84. <img class="ui mini image" src="{{AppSubURL}}/img/favicon.png">
  85. </a>
  86. {{if .IsLogged}}
  87. <a class="item{{if .PageIsDashboard}} active{{end}}" href="{{AppSubURL}}/">{{.i18n.Tr "dashboard"}}</a>
  88. <a class="item{{if .PageIsIssues}} active{{end}}" href="{{AppSubURL}}/issues">{{.i18n.Tr "issues"}}</a>
  89. <a class="item{{if .PageIsPulls}} active{{end}}" href="{{AppSubURL}}/pulls">{{.i18n.Tr "pull_requests"}}</a>
  90. {{else}}
  91. <a class="item{{if .PageIsHome}} active{{end}}" href="{{AppSubURL}}/">{{.i18n.Tr "home"}}</a>
  92. {{end}}
  93. <a class="item{{if .PageIsExplore}} active{{end}}" href="{{AppSubURL}}/explore/repos">{{.i18n.Tr "explore"}}</a>
  94. {{/*<div class="item">
  95. <div class="ui icon input">
  96. <input class="searchbox" type="text" placeholder="{{.i18n.Tr "search_project"}}">
  97. <i class="search icon"></i>
  98. </div>
  99. </div>*/}}
  100. {{if .IsLogged}}
  101. <div class="right menu">
  102. <div class="ui dropdown head link jump item poping up" data-content="{{.i18n.Tr "create_new"}}" data-variation="tiny inverted">
  103. <span class="text">
  104. <i class="octicon octicon-plus"><span class="sr-only">{{.i18n.Tr "create_new"}}</span></i>
  105. <i class="octicon octicon-triangle-down"></i>
  106. </span>
  107. <div class="menu">
  108. <a class="item" href="{{AppSubURL}}/repo/create">
  109. <i class="octicon octicon-plus"></i> {{.i18n.Tr "new_repo"}}
  110. </a>
  111. <a class="item" href="{{AppSubURL}}/repo/migrate">
  112. <i class="octicon octicon-repo-clone"></i> {{.i18n.Tr "new_migrate"}}
  113. </a>
  114. {{if .LoggedUser.CanCreateOrganization}}
  115. <a class="item" href="{{AppSubURL}}/org/create">
  116. <i class="octicon octicon-organization"></i> {{.i18n.Tr "new_org"}}
  117. </a>
  118. {{end}}
  119. </div><!-- end content create new menu -->
  120. </div><!-- end dropdown menu create new -->
  121. <div class="ui dropdown head link jump item poping up" tabindex="-1" data-content="{{.i18n.Tr "user_profile_and_more"}}" data-variation="tiny inverted">
  122. <span class="text avatar">
  123. <img class="ui small rounded image" src="{{.LoggedUser.RelAvatarLink}}">
  124. <span class="sr-only">{{.i18n.Tr "user_profile_and_more"}}</span>
  125. <i class="octicon octicon-triangle-down" tabindex="-1"></i>
  126. </span>
  127. <div class="menu" tabindex="-1">
  128. <div class="ui header">
  129. {{.i18n.Tr "signed_in_as"}} <strong>{{.LoggedUser.Name}}</strong>
  130. </div>
  131. <div class="divider"></div>
  132. <a class="item" href="{{AppSubURL}}/{{.LoggedUser.Name}}">
  133. <i class="octicon octicon-person"></i> {{.i18n.Tr "your_profile"}}
  134. </a>
  135. <a class="{{if .PageIsUserSettings}}active{{end}} item" href="{{AppSubURL}}/user/settings">
  136. <i class="octicon octicon-settings"></i> {{.i18n.Tr "your_settings"}}
  137. </a>
  138. {{if .IsAdmin}}
  139. <div class="divider"></div>
  140. <a class="{{if .PageIsAdmin}}active{{end}} item" href="{{AppSubURL}}/admin">
  141. <i class="icon settings"></i> {{.i18n.Tr "admin_panel"}}
  142. </a>
  143. {{end}}
  144. <div class="divider"></div>
  145. <form id="logout-form" class="item" action="{{AppSubURL}}/user/logout" method="POST">
  146. {{.CSRFTokenHTML}}
  147. <div class="submit-button" data-form="#logout-form">
  148. <i class="octicon octicon-sign-out"></i> {{.i18n.Tr "sign_out"}}
  149. </div>
  150. </form>
  151. </div><!-- end content avatar menu -->
  152. </div><!-- end dropdown avatar menu -->
  153. </div><!-- end signed user right menu -->
  154. {{else}}
  155. <div class="right menu">
  156. {{if .ShowRegistrationButton}}
  157. <a class="item{{if .PageIsSignUp}} active{{end}}" href="{{AppSubURL}}/user/sign_up">
  158. <i class="octicon octicon-person"></i> {{.i18n.Tr "register"}}
  159. </a>
  160. {{end}}
  161. <a class="item{{if .PageIsSignIn}} active{{end}}" href="{{AppSubURL}}/user/login?redirect_to={{.Link}}">
  162. <i class="octicon octicon-sign-in"></i> {{.i18n.Tr "sign_in"}}
  163. </a>
  164. </div><!-- end anonymous right menu -->
  165. {{end}}
  166. </div><!-- end top menu -->
  167. </div><!-- end column -->
  168. </div><!-- end grid -->
  169. </div><!-- end container -->
  170. </div><!-- end bar -->
  171. {{end}}
  172. {{if .ServerNotice}}
  173. <div class="ui container grid warning message">
  174. <div class="content">
  175. {{.ServerNotice | Str2HTML}}
  176. </div>
  177. </div>
  178. {{end}}
  179. {{/*
  180. </div>
  181. </body>
  182. </html>
  183. */}}