layout.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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. {% endblock %}
  26. {# for extra stylesheets. e.q. a template has to add something #}
  27. {% block css %}
  28. {% endblock %}
  29. {# for various extra things #}
  30. {% block head_extra %}
  31. {% endblock %}
  32. </head>
  33. <body>
  34. <!-- main forum layout -->
  35. <div class="flaskbb-layout">
  36. <div class="container">
  37. <!-- forum header - place for the project title and subtitle -->
  38. {% block header %}
  39. <div class="flaskbb-header">
  40. <div class="flaskbb-meta">
  41. <div class="flaskbb-title">{{ flaskbb_config["PROJECT_TITLE"] }}</div>
  42. <div class="flaskbb-subtitle">{{ flaskbb_config["PROJECT_SUBTITLE"] }}</div>
  43. </div>
  44. </div>
  45. {% endblock %}
  46. <!-- forum menu - contains all the navigation items -->
  47. {% block navigation %}
  48. <div class="navbar navbar-default" role="navigation">
  49. <!-- Brand and toggle get grouped for better mobile display -->
  50. <div class="navbar-header">
  51. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse" aria-expanded="false">
  52. <span class="sr-only">Toggle navigation</span>
  53. <span class="icon-bar"></span>
  54. <span class="icon-bar"></span>
  55. <span class="icon-bar"></span>
  56. </button>
  57. </div>
  58. <div class="collapse navbar-collapse">
  59. <!-- navbar left -->
  60. <ul class="nav navbar-nav forum-nav">
  61. {%- from theme("macros.html") import is_active, topnav with context -%}
  62. {{ emit_event("before-first-navigation-element") }}
  63. {{ topnav(endpoint='forum.index', name=_('Forum'), icon='fa fa-comment', active=active_forum_nav) }}
  64. {{ topnav(endpoint='forum.memberlist', name=_('Memberlist'), icon='fa fa-user') }}
  65. {{ topnav(endpoint='forum.search', name=_('Search'), icon='fa fa-search') }}
  66. {{ emit_event("after-last-navigation-element") }}
  67. </ul>
  68. <!-- navbar right -->
  69. <ul class="nav navbar-nav navbar-right">
  70. {% if current_user and current_user.is_authenticated %}
  71. <!-- Inbox -->
  72. <li class="dropdown {{ is_active('message.inbox') }}">
  73. <a href="#" class="dropdown-toggle" data-toggle="dropdown">
  74. <span class="fa fa-envelope"></span> {% trans %}Inbox{% endtrans %}
  75. {% if current_user.unread_count > 0 %}
  76. <span class="label label-danger">{{ current_user.unread_count }}</span>
  77. {% else %}
  78. <span class="label label-info">{{ current_user.unread_count }}</span>
  79. {% endif %}
  80. </a>
  81. <ul class="dropdown-menu dropdown-messages">
  82. {% for message in current_user.unread_messages %}
  83. <li>
  84. <a href="{{ url_for('message.view_conversation', conversation_id=message.id) }}">
  85. <div>
  86. <span class="author-name">{{ message.from_user.username }}</span> <span class="pull-right text-muted">{{ message.last_message.date_created|time_since }}</span>
  87. <div class="message-subject">{{ message.subject }}</div>
  88. </div>
  89. </a>
  90. </li>
  91. {% else %}
  92. <li><a href="#">No unread messages.</a></li>
  93. {% endfor %}
  94. <li class="divider"></li>
  95. <li><a href="{{ url_for('message.inbox') }}"><span class="fa fa-envelope"></span> {% trans %}Inbox{% endtrans %}</a></li>
  96. <li><a href="{{ url_for('message.new_conversation') }}"><span class="fa fa-pencil"></span> {% trans %}New Message{% endtrans %}</a></li>
  97. </ul>
  98. </li>
  99. <!-- User Menu -->
  100. <li>
  101. <div class="btn-group navbar-btn user-btn">
  102. <a class="btn btn-primary" href="{{ url_for('user.profile', username=current_user.username) }}">
  103. <span class="fa fa-user"></span> {{ current_user.username }}
  104. </a>
  105. <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
  106. <ul class="dropdown-menu" role="menu">
  107. <li><a href="{{ url_for('forum.topictracker') }}"><span class="fa fa-book"></span> {% trans %}Topic Tracker{% endtrans %}</a></li>
  108. <li class="divider"></li>
  109. <li><a href="{{ url_for('user.settings') }}"><span class="fa fa-cogs"></span> {% trans %}Settings{% endtrans %}</a></li>
  110. {% if current_user|is_admin_or_moderator %}
  111. <li><a href="{{ url_for('management.overview') }}"><span class="fa fa-cog"></span> {% trans %}Management{% endtrans %}</a></li>
  112. <li class="divider"></li>
  113. {% endif %}
  114. <li><a href="{{ url_for('auth.logout') }}"><span class="fa fa-power-off"></span> {% trans %}Logout{% endtrans %}</a></li>
  115. </ul>
  116. </div>
  117. </li>
  118. {% else %}
  119. <!-- Not logged in - Login/Register -->
  120. <li>
  121. <div class="btn-group navbar-btn user-btn">
  122. <a class="btn btn-primary" href="{{ url_for('auth.login') }}">
  123. <span class="fa fa-user"></span> {% trans %}Login{% endtrans %}
  124. </a>
  125. <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>
  126. <ul class="dropdown-menu" role="menu">
  127. {% if flaskbb_config["REGISTRATION_ENABLED"] %}
  128. <li><a href="{{ url_for('auth.register') }}">{% trans %}Register{% endtrans %}</a></li>
  129. {% endif %}
  130. <li><a href="{{ url_for('auth.forgot_password') }}">{% trans %}Reset Password{% endtrans %}</a></li>
  131. </ul>
  132. </div>
  133. </li>
  134. {% endif %}
  135. </ul> <!-- end navbar right -->
  136. </div> <!-- end navbar-collapse -->
  137. </div> <!-- end navbar -->
  138. {% endblock %}
  139. <!-- Place for all the (flashed) messages -->
  140. {% block messages %}
  141. <div id="flashed-messages">
  142. {% include theme('flashed_messages.html') %}
  143. </div>
  144. {% endblock %}
  145. <!-- the actual content block -->
  146. {% block content %}
  147. {% endblock %}
  148. </div> <!-- end container -->
  149. <!-- the forum footer -->
  150. {% block footer %}
  151. <footer class="flaskbb-footer">
  152. <div class="container">
  153. <p class="text-muted pull-left">powered by <a href="http://flask.pocoo.org">Flask</a></p>
  154. <p class="text-muted pull-right">&copy; 2013 - 2015 <a href="http://flaskbb.org">FlaskBB.org</a></p>
  155. </div>
  156. </footer>
  157. {% endblock %}
  158. </div> <!-- end flaskbb-layout -->
  159. {% block javascript %}
  160. <!-- jquery and bootstrap and flaskbb.js -->
  161. <script src="{{ url_for('static', filename='js/scripts.min.js') }}"></script>
  162. {% endblock %}
  163. {# for extra scripts in other templates. #}
  164. {% block scripts %}
  165. {% endblock %}
  166. </body>
  167. </html>