您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

138 行
6.0KB

  1. <!--
  2. # @name: base.html
  3. # @version: 0.1
  4. # @creation_date: 2021-10-20
  5. # @license: The MIT License <https://opensource.org/licenses/MIT>
  6. # @author: Simon Bowie <ad7588@coventry.ac.uk>
  7. # @purpose: Basic layout for all pages
  8. # @acknowledgements:
  9. # https://www.digitalocean.com/community/tutorials/how-to-make-a-web-application-using-flask-in-python-3
  10. # Bootstrap 5.1.3: https://getbootstrap.com/
  11. # Flask-Moment: https://flask-moment.readthedocs.io/en/latest/
  12. # Boostrap select: https://stackoverflow.com/questions/67942546/bootstrap-5-select-dropdown-with-the-multiple-attribute-collapsed
  13. -->
  14. <!DOCTYPE html>
  15. <html>
  16. <head>
  17. {{ moment.include_moment() }}
  18. <meta charset="utf-8">
  19. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  20. <meta name="viewport" content="width=device-width, initial-scale=1">
  21. <title>ExPub Compendium</title>
  22. <!-- Bootstrap CSS -->
  23. <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
  24. <link href="{{ url_for('static',filename='styles/custom.css') }}" rel="stylesheet">
  25. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/css/bootstrap-select.min.css" integrity="sha512-mR/b5Y7FRsKqrYZou7uysnOdCIJib/7r5QeJMFvLNHNhtye3xJp1TdJVPLtetkukFn227nKpXD9OjUc09lx97Q==" crossorigin="anonymous" referrerpolicy="no-referrer" />
  26. </head>
  27. <body class="d-flex flex-column min-vh-100">
  28. <header>
  29. <!-- Fixed navbar -->
  30. <nav class="navbar navbar-expand-md navbar-light sticky-top">
  31. <a class="navbar-brand" href="{{ url_for('main.index')}}">ExPub Compendium</a>
  32. <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
  33. <span class="navbar-toggler-icon"></span>
  34. </button>
  35. <div class="collapse navbar-collapse" id="navbarSupportedContent">
  36. <ul class="navbar-nav ms-auto">
  37. <li class="nav-item">
  38. <a href="{{ url_for('main.about') }}" class="nav-link">
  39. About
  40. </a>
  41. </li>
  42. <li class="nav-item">
  43. <a href="{{ url_for('tool.get_tools') }}" class="nav-link">
  44. Tools
  45. </a>
  46. </li>
  47. <li class="nav-item">
  48. <a href="{{ url_for('practice.get_practices') }}" class="nav-link">
  49. Practices
  50. </a>
  51. </li>
  52. <li class="nav-item">
  53. <a href="{{ url_for('book.get_books') }}" class="nav-link">
  54. Books
  55. </a>
  56. </li>
  57. <li class="nav-item">
  58. <a href="{{ url_for('publisher.get_publishers') }}" class="nav-link">
  59. Publishers
  60. </a>
  61. </li>
  62. {% if current_user.is_authenticated %}
  63. <li class="nav-item">
  64. <a href="{{ url_for('create.create_resource') }}" class="nav-link">
  65. Add resource
  66. </a>
  67. </li>
  68. {% endif %}
  69. {% if current_user.is_authenticated %}
  70. <li class="nav-item">
  71. <a href="{{ url_for('main.profile') }}" class="nav-link">
  72. Profile
  73. </a>
  74. </li>
  75. {% endif %}
  76. {% if not current_user.is_authenticated %}
  77. <li class="nav-item">
  78. <a href="{{ url_for('auth.login') }}" class="nav-link">
  79. Login
  80. </a>
  81. </li>
  82. <li class="nav-item">
  83. <a href="{{ url_for('auth.signup') }}" class="nav-link">
  84. Sign Up
  85. </a>
  86. </li>
  87. {% endif %}
  88. {% if current_user.is_authenticated %}
  89. <li class="nav-item">
  90. <a href="{{ url_for('auth.logout') }}" class="nav-link">
  91. Logout
  92. </a>
  93. </li>
  94. {% endif %}
  95. </ul>
  96. </div>
  97. </nav>
  98. </header>
  99. <!-- Begin page content -->
  100. <main class="flex-shrink-0">
  101. <div class="layer-bg w-100">
  102. <img class="img-fluid w-100" src="{{ url_for('static',filename='images/dots-bg.png') }}" alt="bg-shape">
  103. </div>
  104. <div class="container">
  105. {% with messages = get_flashed_messages() %}
  106. {% if messages %}
  107. <div class="alert alert-danger">
  108. {{ messages[0] }}
  109. </div>
  110. {% endif %}
  111. {% endwith %}
  112. {% block content %}
  113. {% endblock %}
  114. </div>
  115. </main>
  116. <!-- Sticky footer-->
  117. <footer class="footer py-3 mt-auto" style="background-color: #dcddde;">
  118. <div class="container">
  119. <span class="text-muted">© 2022–{{ moment().format('YYYY') }} <a href="https://copim.ac.uk/">COPIM</a> and licensed under a <a href="https://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License (CC BY 4.0)</a>.</span>
  120. </div>
  121. </footer>
  122. <!-- JavaScript -->
  123. <!-- jQuery first, then Popper JS, then Bootstrap JS -->
  124. <script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script>
  125. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
  126. <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-select/1.14.0-beta2/js/bootstrap-select.min.js" integrity="sha512-FHZVRMUW9FsXobt+ONiix6Z0tIkxvQfxtCSirkKc5Sb4TKHmqq1dZa8DphF0XqKb3ldLu/wgMa8mT6uXiLlRlw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
  127. <script src="{{ url_for('static',filename='js/main.js') }}"></script>
  128. </body>
  129. </html>