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.

footer.tmpl 4.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. {{/*
  2. <html>
  3. <body>
  4. <div>
  5. */}}
  6. {{template "custom/body_inner_post" .}}
  7. </div>
  8. {{template "custom/body_outer_post" .}}
  9. <footer>
  10. <div class="ui container">
  11. <div class="ui left">
  12. © Gitea {{if (or .ShowFooterVersion .PageIsAdmin)}}{{.i18n.Tr "version"}}: {{AppVer}}{{end}} {{if ShowFooterTemplateLoadTime}}{{.i18n.Tr "page"}}: <strong>{{LoadTimes .PageStartTime}}</strong> {{.i18n.Tr "template"}}: <strong>{{call .TmplLoadTimes}}</strong>{{end}}
  13. </div>
  14. <div class="ui right links">
  15. {{if .ShowFooterBranding}}
  16. <a target="_blank" rel="noopener" href="https://github.com/go-gitea/gitea"><i class="fa fa-github-square"></i><span class="sr-only">GitHub</span></a>
  17. {{end}}
  18. <div class="ui language bottom floating slide up dropdown link item">
  19. <i class="world icon"></i>
  20. <div class="text">{{.LangName}}</div>
  21. <div class="menu">
  22. {{range .AllLangs}}
  23. <a class="item {{if eq $.Lang .Lang}}active selected{{end}}" href="{{if eq $.Lang .Lang}}#{{else}}{{$.Link}}?lang={{.Lang}}{{end}}">{{.Name}}</a>
  24. {{end}}
  25. </div>
  26. </div>
  27. <a href="{{AppSubUrl}}/vendor/librejs.html" data-jslicense="1">JavaScript licenses</a>
  28. {{if .EnableSwaggerEndpoint}}<a href="{{AppSubUrl}}/api/swagger">API</a>{{end}}
  29. <a target="_blank" rel="noopener" href="https://gitea.io">{{.i18n.Tr "website"}}</a>
  30. {{if (or .ShowFooterVersion .PageIsAdmin)}}<span class="version">{{GoVer}}</span>{{end}}
  31. </div>
  32. </div>
  33. </footer>
  34. <script src="{{AppSubUrl}}/vendor/plugins/jquery/jquery.min.js"></script>
  35. <script src="{{AppSubUrl}}/vendor/plugins/jquery.areyousure/jquery.are-you-sure.js"></script>
  36. {{if .RequireSimpleMDE}}
  37. <script src="{{AppSubUrl}}/vendor/plugins/simplemde/simplemde.min.js"></script>
  38. <script src="{{AppSubUrl}}/vendor/plugins/codemirror/addon/mode/loadmode.js"></script>
  39. <script src="{{AppSubUrl}}/vendor/plugins/codemirror/mode/meta.js"></script>
  40. <script>
  41. CodeMirror.modeURL = "{{AppSubUrl}}/vendor/plugins/codemirror/mode/%N/%N.js";
  42. </script>
  43. {{end}}
  44. {{if .RequireGitGraph}}
  45. <!-- graph -->
  46. <script src="{{AppSubUrl}}/vendor/plugins/gitgraph/gitgraph.js"></script>
  47. <script src="{{AppSubUrl}}/js/draw.js"></script>
  48. {{end}}
  49. <!-- Third-party libraries -->
  50. {{if .RequireHighlightJS}}
  51. <script src="{{AppSubUrl}}/vendor/plugins/highlight/highlight.pack.js"></script>
  52. {{end}}
  53. {{if .RequireMinicolors}}
  54. <script src="{{AppSubUrl}}/vendor/plugins/jquery.minicolors/jquery.minicolors.min.js"></script>
  55. {{end}}
  56. {{if .RequireDatetimepicker}}
  57. <script src="{{AppSubUrl}}/vendor/plugins/jquery.datetimepicker/jquery.datetimepicker.js"></script>
  58. {{end}}
  59. {{if .RequireDropzone}}
  60. <script src="{{AppSubUrl}}/vendor/plugins/dropzone/dropzone.js"></script>
  61. {{end}}
  62. {{if .RequireU2F}}
  63. <script src="{{AppSubUrl}}/vendor/plugins/u2f/index.js"></script>
  64. {{end}}
  65. {{if .RequireTribute}}
  66. <script src="{{AppSubUrl}}/vendor/plugins/tribute/tribute.min.js"></script>
  67. {{if .Assignees}}
  68. <script>
  69. var issuesTribute = new Tribute({
  70. values: [
  71. {{ range .Assignees }}
  72. {key: '{{.Name}} {{.FullName}}', value: '{{.Name}}',
  73. name: '{{.Name}}', fullname: '{{.FullName}}', avatar: '{{.RelAvatarLink}}'},
  74. {{ end }}
  75. ],
  76. noMatchTemplate: function () { return null },
  77. menuItemTemplate: function (item) {
  78. var user = item.original;
  79. var itemStr = '<img src="' + user.avatar + '"/><span class="name">' + user.name + '</span>';
  80. if (user.fullname && user.fullname != '') {
  81. itemStr += '<span class="fullname">' + user.fullname + '</span>';
  82. }
  83. return itemStr;
  84. }
  85. })
  86. issuesTribute.attach(document.getElementById('content'))
  87. </script>
  88. {{end}}
  89. <script>
  90. var emojiTribute = new Tribute({
  91. collection: [{
  92. trigger: ':',
  93. requireLeadingSpace: true,
  94. values: function (text, cb) {
  95. var array = emojify.emojiNames;
  96. var data = [];
  97. for(var j=0; j<array.length; j++) {
  98. if(array[j].indexOf(text) !== -1) {
  99. data.push(array[j]);
  100. if(data.length > 5) {
  101. break;
  102. }
  103. }
  104. }
  105. cb(data);
  106. },
  107. lookup: function (item) {
  108. return item;
  109. },
  110. selectTemplate: function (item) {
  111. if (typeof item === 'undefinied') return null;
  112. return ':' + item.original + ':';
  113. },
  114. menuItemTemplate: function (item) {
  115. return '<img class="emoji" src="{{AppSubUrl}}/vendor/plugins/emojify/images/' + item.original + '.png"/>' + item.original;
  116. }
  117. }]
  118. });
  119. emojiTribute.attach(document.getElementById('content'))
  120. </script>
  121. {{end}}
  122. <script src="{{AppSubUrl}}/vendor/plugins/emojify/emojify.min.js"></script>
  123. <script src="{{AppSubUrl}}/vendor/plugins/clipboard/clipboard.min.js"></script>
  124. <script src="{{AppSubUrl}}/vendor/plugins/vue/vue.min.js"></script>
  125. <!-- JavaScript -->
  126. <script src="{{AppSubUrl}}/vendor/plugins/semantic/semantic.min.js"></script>
  127. <script src="{{AppSubUrl}}/js/index.js?v={{MD5 AppVer}}"></script>
  128. {{template "custom/footer" .}}
  129. </body>
  130. </html>