layout.html 9.9 KB

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