layout.html 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. {% set user = session_user () %}
  2. {# Number of new messages #}
  3. {% if user %}
  4. {% set unread_messages = new_messages (user.id) %}
  5. {% endif %}
  6. <!DOCTYPE html>
  7. <html lang="en">
  8. <head>
  9. <meta charset="utf-8">
  10. <meta name="viewport" content="width=device-width, initial-scale=1">
  11. <link href="/css/freepost.css" rel="stylesheet">
  12. <title>{{ title ~ ' - ' if title else '' }}freepost</title>
  13. </head>
  14. <body>
  15. <div class="container">
  16. <div class="header">
  17. <div class="title-small">
  18. {% if topic %}
  19. <a href="{{ url ('topic', name=topic) }}" class="flex-item logo">
  20. topic / {{ topic }}
  21. </a>
  22. {% else %}
  23. <a href="{{ url ('homepage') }}{{ '?sort=new' if user and user.preferred_feed == 'new' }}" class="flex-item logo">
  24. free
  25. <img alt="🐵&nbsp;" title="freepost" src="/images/freepost.svg" class="monkey" />
  26. post
  27. </a>
  28. {% endif %}
  29. <div class="burger-icon {{ 'notify' if unread_messages }}">
  30. <div class="line1"></div>
  31. <div class="line2"></div>
  32. <div class="line3"></div>
  33. </div>
  34. </div>
  35. <div class="title-large">
  36. {% if topic %}
  37. <a href="{{ url ('topic', name=topic) }}" class="flex-item logo">
  38. topic / {{ topic }}
  39. </a>
  40. {% else %}
  41. <a href="{{ url ('homepage') }}{{ '?sort=new' if user and user.preferred_feed == 'new' }}" class="flex-item logo">
  42. freepost
  43. </a>
  44. {% endif %}
  45. <a href="{{ url ('homepage') }}{{ '?sort=new' if user and user.preferred_feed == 'new' }}" class="flex-item logo">
  46. <img alt="🐵&nbsp;" title="freepost" src="/images/freepost.svg" class="monkey" />
  47. </a>
  48. </div>
  49. <div class="menu" id="menu">
  50. <a href="{{ url ('topic', name=topic) if topic else url ('homepage') }}" class="flex-item {{ 'active_page' if active_page == 'hot' }}">
  51. Hot
  52. </a>
  53. <a href="{{ url ('topic', name=topic) if topic else url ('homepage') }}?sort=new" class="flex-item {{ 'active_page' if active_page == 'new' }}">
  54. New
  55. </a>
  56. {% if user %}
  57. <a href="{{ url ('submit') }}{{ '?topic=' ~ topic if topic }}" class="flex-item {{ 'active_page' if active_page == 'submit' }}">
  58. Submit
  59. </a>
  60. {% endif %}
  61. <a href="{{ url ('search') }}" class="flex-item {{ 'active_page' if active_page == 'search' }}">Search</a>
  62. <a href="{{ url ('about') }}" class="flex-item {{ 'active_page' if active_page == 'about' }}">About</a>
  63. {% if user %}
  64. {% if unread_messages %}
  65. <a href="{{ url ('user_replies') }}" class="new_messages flex-item">
  66. {{ user.username }} ({{ unread_messages }})
  67. </a>
  68. {% else %}
  69. <a href="{{ url ('user_settings') }}" class="flex-item {{ 'active_page' if active_page == 'user' }}">
  70. {{ user.username }}
  71. </a>
  72. {% endif %}
  73. <a href="{{ url ('logout') }}" class="flex-item">Log out</a>
  74. {% else %}
  75. <a href="{{ url ('login') }}" class="flex-item {{ 'active_page' if active_page == 'login' }}">Log in</a>
  76. {% endif %}
  77. </div>
  78. </div>
  79. <div class="content">
  80. {% block content %}{% endblock %}
  81. </div>
  82. <footer>
  83. <ul>
  84. <li>
  85. <img alt="RSS" title="" src="/images/rss.png" />
  86. <a href="/rss/hot">Hot</a> •
  87. <a href="/rss/new">New</a> •
  88. <a href="/rss_comments">Comments</a>
  89. </li>
  90. <li>
  91. <img alt="Source" title="" src="/images/source.png" />
  92. <a href="https://clif.peers.community/zplus/freepost.git">Source code</a>
  93. </li>
  94. <li>
  95. <img alt="Peers" title="" src="/images/peers.png" />
  96. <a href="http://peers.community">Peers</a>
  97. <a href="https://dokk.org/The_Peers_Community">Community</a>
  98. </li>
  99. <li>
  100. <img alt="TuxFamily" title="" src="/images/tuxfamily.png" />
  101. Hosted at <a href="https://dokk.org/TuxFamily">TuxFamily</a>
  102. </li>
  103. </ul>
  104. </footer>
  105. </div>
  106. {# When users vote, this <iframe/> is used as target, such that
  107. # the page is not reloaded
  108. #}
  109. <iframe name="vote_sink" class="vote_sink"></iframe>
  110. <script src="/javascript/freepost.js"></script>
  111. </body>
  112. </html>