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 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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 noreferrer" 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 .EnableSwagger}}<a href="{{AppSubUrl}}/api/swagger">API</a>{{end}}
  29. <a target="_blank" rel="noopener noreferrer" 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 .EnableCaptcha}}
  66. {{if eq .CaptchaType "recaptcha"}}
  67. <script src="https://www.google.com/recaptcha/api.js" async></script>
  68. {{end}}
  69. {{end}}
  70. {{if .RequireTribute}}
  71. <script src="{{AppSubUrl}}/vendor/plugins/tribute/tribute.min.js"></script>
  72. {{if .Assignees}}
  73. <script>
  74. var issuesTribute = new Tribute({
  75. values: [
  76. {{ range .Assignees }}
  77. {key: '{{.Name}} {{.FullName}}', value: '{{.Name}}',
  78. name: '{{.Name}}', fullname: '{{.FullName}}', avatar: '{{.RelAvatarLink}}'},
  79. {{ end }}
  80. ],
  81. noMatchTemplate: function () { return null },
  82. menuItemTemplate: function (item) {
  83. var user = item.original;
  84. var itemStr = '<img src="' + user.avatar + '"/><span class="name">' + user.name + '</span>';
  85. if (user.fullname && user.fullname != '') {
  86. itemStr += '<span class="fullname">' + user.fullname + '</span>';
  87. }
  88. return itemStr;
  89. }
  90. })
  91. issuesTribute.attach(document.getElementById('content'))
  92. </script>
  93. {{end}}
  94. <script>
  95. var emojiTribute = new Tribute({
  96. collection: [{
  97. trigger: ':',
  98. requireLeadingSpace: true,
  99. values: function (text, cb) {
  100. var array = emojify.emojiNames;
  101. var data = [];
  102. for(var j=0; j<array.length; j++) {
  103. if(array[j].indexOf(text) !== -1) {
  104. data.push(array[j]);
  105. if(data.length > 5) {
  106. break;
  107. }
  108. }
  109. }
  110. cb(data);
  111. },
  112. lookup: function (item) {
  113. return item;
  114. },
  115. selectTemplate: function (item) {
  116. if (typeof item === 'undefinied') return null;
  117. return ':' + item.original + ':';
  118. },
  119. menuItemTemplate: function (item) {
  120. return '<img class="emoji" src="{{AppSubUrl}}/vendor/plugins/emojify/images/' + item.original + '.png"/>' + item.original;
  121. }
  122. }]
  123. });
  124. emojiTribute.attach(document.getElementById('content'))
  125. </script>
  126. {{end}}
  127. <script src="{{AppSubUrl}}/vendor/plugins/emojify/emojify.min.js"></script>
  128. <script src="{{AppSubUrl}}/vendor/plugins/clipboard/clipboard.min.js"></script>
  129. <script src="{{AppSubUrl}}/vendor/plugins/vue/vue.min.js"></script>
  130. <!-- JavaScript -->
  131. <script src="{{AppSubUrl}}/vendor/plugins/semantic/semantic.min.js"></script>
  132. <script src="{{AppSubUrl}}/js/index.js?v={{MD5 AppVer}}"></script>
  133. {{template "custom/footer" .}}
  134. </body>
  135. </html>