layout.html 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta name="description" content="FlaskBB is a forum software written in Flask">
  8. <meta name="author" content="FlaskBB Team">
  9. <meta name="csrf-token" content="{{ csrf_token() }}">
  10. <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
  11. <title>
  12. {% block title %}
  13. {%- if not page_title -%}
  14. {{ flaskbb_config["PROJECT_TITLE"] }} - {{ flaskbb_config["PROJECT_SUBTITLE"] }}
  15. {%- else -%}
  16. {{ page_title }} - {{ flaskbb_config["PROJECT_TITLE"] }}
  17. {%- endif -%}
  18. {% endblock %}
  19. </title>
  20. {% block stylesheets %}
  21. <!-- syntax highlighting -->
  22. <link rel="stylesheet" href="{{ url_for('static', filename='css/pygments.css') }}">
  23. <!-- bootstrap & aurora theme -->
  24. <link rel="stylesheet" href="{{ url_for('static', filename='css/styles.css') }}">
  25. <!-- lato font -->
  26. <link href="https://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css">
  27. <!-- emoji -->
  28. <script src="https://twemoji.maxcdn.com/2/twemoji.min.js?2.5"></script>
  29. {% endblock %}
  30. {# for extra stylesheets. e.q. a template has to add something #}
  31. {% block css %}
  32. {% endblock %}
  33. {# for various extra things #}
  34. {% block head_extra %}
  35. {% endblock %}
  36. </head>
  37. <body>
  38. <!-- main forum layout -->
  39. <div class="flaskbb-layout">
  40. <div class="container">
  41. <!-- forum header - place for the project title and subtitle -->
  42. {% block header %}
  43. <div class="flaskbb-header">
  44. <div class="flaskbb-meta">
  45. <div class="flaskbb-title">{{ flaskbb_config["PROJECT_TITLE"] }}</div>
  46. <div class="flaskbb-subtitle">{{ flaskbb_config["PROJECT_SUBTITLE"] }}</div>
  47. </div>
  48. </div>
  49. {% endblock %}
  50. <!-- forum menu - contains all the navigation items -->
  51. {% block navigation %}
  52. <div class="navbar navbar-default" role="navigation">
  53. <!-- Brand and toggle get grouped for better mobile display -->
  54. <div class="navbar-header">
  55. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false">
  56. <span class="sr-only">Toggle navigation</span>
  57. <span class="icon-bar"></span>
  58. <span class="icon-bar"></span>
  59. <span class="icon-bar"></span>
  60. </button>
  61. </div>
  62. <div class="collapse navbar-collapse" id="navbar-collapse">
  63. <!-- navbar left -->
  64. <ul class="nav navbar-nav forum-nav">
  65. {%- from theme("macros.html") import is_active, topnav with context -%}
  66. {{ run_hook("flaskbb_tpl_navigation_before") }}
  67. {{ topnav(endpoint='forum.index', name=_('Forum'), icon='fa fa-comment', active=active_forum_nav) }}
  68. {{ topnav(endpoint='forum.memberlist', name=_('Memberlist'), icon='fa fa-user') }}
  69. {{ topnav(endpoint='forum.search', name=_('Search'), icon='fa fa-search') }}
  70. {{ run_hook("flaskbb_tpl_navigation_after") }}
  71. </ul>
  72. <!-- navbar right -->
  73. <ul class="nav navbar-nav navbar-right">
  74. {% if current_user and current_user.is_authenticated %}
  75. {{ run_hook("flaskbb_tpl_user_nav_loggedin_before") }}
  76. <!-- User Menu -->
  77. <li>
  78. <div class="btn-group navbar-btn user-btn">
  79. <a class="btn btn-primary" href="{{ url_for('user.profile', username=current_user.username) }}">
  80. <span class="fa fa-user fa-fw"></span> {{ current_user.username }}
  81. </a>
  82. <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
  83. <ul class="dropdown-menu" role="menu">
  84. <li><a href="{{ url_for('forum.topictracker') }}"><span class="fa fa-book fa-fw"></span> {% trans %}Topic Tracker{% endtrans %}</a></li>
  85. <li class="divider"></li>
  86. <li><a href="{{ url_for('user.settings') }}"><span class="fa fa-cogs fa-fw"></span> {% trans %}Settings{% endtrans %}</a></li>
  87. {% if current_user|is_admin_or_moderator %}
  88. <li><a href="{{ url_for('management.overview') }}"><span class="fa fa-cog fa-fw"></span> {% trans %}Management{% endtrans %}</a></li>
  89. <li class="divider"></li>
  90. {% endif %}
  91. <li><a href="{{ url_for('auth.logout') }}"><span class="fa fa-power-off fa-fw"></span> {% trans %}Logout{% endtrans %}</a></li>
  92. </ul>
  93. </div>
  94. </li>
  95. {{ run_hook("flaskbb_tpl_user_nav_loggedin_after") }}
  96. {% else %}
  97. <!-- Not logged in - Login/Register -->
  98. <li>
  99. <div class="btn-group navbar-btn user-btn">
  100. <a class="btn btn-primary" href="{{ url_for('auth.login') }}">
  101. <span class="fa fa-user fa-fw"></span> {% trans %}Login{% endtrans %}
  102. </a>
  103. <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
  104. <ul class="dropdown-menu" role="menu">
  105. {# MAYBE(anr): Move this into a hook?? #}
  106. {% if flaskbb_config["REGISTRATION_ENABLED"] %}
  107. <li><a href="{{ url_for('auth.register') }}"><span class="fa fa-user-plus fa-fw"></span> {% trans %}Register{% endtrans %}</a></li>
  108. {% endif %}
  109. <li><a href="{{ url_for('auth.forgot_password') }}"><span class="fa fa-undo fa-fw"></span> {% trans %}Reset Password{% endtrans %}</a></li>
  110. {% if flaskbb_config["ACTIVATE_ACCOUNT"] %}
  111. <li><a href="{{ url_for('auth.request_activation_token') }}"><span class="fa fa-fw fa-ticket"></span> {% trans %}Activate Account{% endtrans %}</a></li>
  112. {% endif %}
  113. </ul>
  114. </div>
  115. </li>
  116. {% endif %}
  117. </ul> <!-- end navbar right -->
  118. </div> <!-- end navbar-collapse -->
  119. </div> <!-- end navbar -->
  120. {% endblock %}
  121. <!-- Place for all the (flashed) messages -->
  122. {% block messages %}
  123. <div id="flashed-messages">
  124. {% include theme('flashed_messages.html') %}
  125. </div>
  126. {% endblock %}
  127. <!-- the actual content block -->
  128. {% block content %}
  129. {% endblock %}
  130. </div> <!-- end container -->
  131. <!-- the forum footer -->
  132. {% block footer %}
  133. <footer class="flaskbb-footer">
  134. <div class="container">
  135. <div class="row">
  136. <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
  137. <div class="text-muted text-left">{{ flaskbb_config["PROJECT_COPYRIGHT"] | safe }}</div>
  138. </div>
  139. <div class="col-lg-6 col-md-6 col-sm-6 col-xs-6">
  140. <div class="text-muted text-right">powered by <a href="https://flaskbb.org">FlaskBB</a></div>
  141. <div class="text-muted text-right">&copy; 2013 - {{ now.year }} <a href="https://flaskbb.org">FlaskBB Team</a></div>
  142. </div>
  143. </div>
  144. </div>
  145. </footer>
  146. {% endblock %}
  147. </div> <!-- end flaskbb-layout -->
  148. {% block javascript %}
  149. <!-- jquery and bootstrap and flaskbb.js -->
  150. <script src="{{ url_for('static', filename='js/scripts.min.js') }}"></script>
  151. <!-- Enable tooltips in all templates -->
  152. <script>
  153. $(function () {
  154. $('[data-toggle="tooltip"]').tooltip()
  155. })
  156. </script>
  157. {% endblock %}
  158. {# for extra scripts in other templates. #}
  159. {% block scripts %}
  160. {% endblock %}
  161. </body>
  162. </html>