view sat_templates/templates/bulma/forum/categories.html @ 413:0190a0d32909 default tip

Forum: Major redesign of forums: Forums have been redesigned. They follow the new general design with 2 or 3 panels, allowing to have directly a forum if one is found/set up, and a panel on the left to search/discover other ones. Categories have been rewritten to be usable with pubsub relationships, a XEP-0277 type node is used for topics, and each item has a comments node for the threads. The thread view is set in `forum/show_messages.html` template. It has a header with a search box and a button to (un)subscribe. Items are displayed with the same macros as for the blog items. Below a room is set for editor, tags and attachments. rel 463
author Goffi <goffi@goffi.org>
date Fri, 05 Sep 2025 21:54:09 +0200
parents sat_templates/templates/bulma/forum/overview.html@1928ba66c194
children
line wrap: on
line source

{% if not embedded %}{% extends 'base/base.html' %}{% endif %}

{% macro generate_forums(forums_data, level=0) %}
  <div class="forum-list">
    {% for forum in forums_data %}
      <div class="forum-item mb-4">
        {% if forum.forum_type == "main_category" %}

          {# Main Categories #}
          <div class="forum-category box has-background-primary">
          <div class="media {% if level == 0 %}is-aligned-center{% else %}is-aligned-left{% endif %}">
            <div class="media-left">
            <span class="icon {% if level == 0 %}is-large{% else %}is-medium{% endif %} has-text-white">
              <i class="fas fa-layer-group {% if level == 0 %}fa-2x{% endif %}"></i>
            </span>
            </div>
            <div class="media-content">
              {% if 'http_url' in forum %}
                <a href="{{ forum.http_url }}" class="has-text-white">
                {% endif %}
              <h3 class="title {% if level == 0 %}is-3{% else %}is-4{% endif %} has-text-white">
                {{ forum.title }}
              </h3>
              {% if forum.description %}
                <p class="subtitle is-5 has-text-white-bis">{{ forum.description }}</p>
              {% endif %}
              {% if 'http_url' in forum %}
                  </a>
                {% endif %}
            </div>
            {% if level == 0 %}
              <div class="media-right">
                <span class="tag is-light is-medium">
                  <span class="icon"><i class="fas fa-folder"></i></span>
                  <span>{{ forum.children|length }} Forums</span>
                </span>
              </div>
            {% endif %}
          </div>
          </div>

          {% if forum.children %}
            <div class="forum-children pl-5 pr-3 mt-2">
              {{ generate_forums(forum.children, level+1) }}
            </div>
          {% endif %}

        {% else %}

          {# Subcategories #}
          <a {% if 'http_url' in forum %}href="{{ forum.http_url }}"{% endif %}
                 class="forum-subcategory box is-hoverable">
            <div class="media">
              <div class="media-left">
                <span class="icon is-medium has-text-primary">
                  <i class="fas fa-folder fa-2x"></i>
                </span>
              </div>
              <div class="media-content">
                <div class="content">
                  <strong class="title is-4 mb-1">{{ forum.title }}</strong>
                  {% if forum.description %}
                    <p class="subtitle is-6 has-text-grey">{{ forum.description }}</p>
                  {% endif %}
                </div>
                <div class="forum-stats">
                  {% if 'nb_items' in forum %}
                    <span class="tag is-light is-rounded">
                      <span class="icon"><i class="fas fa-comment"></i></span>
                      <span>{{ forum.nb_items }} Topics</span>
                    </span>
                  {% endif %}
                  {% if forum.last_activity %}
                    <span class="tag is-light is-rounded ml-2">
                      <span class="icon"><i class="fas fa-clock"></i></span>
                      <span>{{ forum.last_activity|date_fmt('short', tz_name=tz_name)}}</span>
                    </span>
                  {% endif %}
                </div>
              </div>
              <div class="media-right">
                {% if 'http_url' in forum %}
                  <span class="icon has-text-info">
                    <i class="fas fa-chevron-right"></i>
                  </span>
                {% endif %}
              </div>
            </div>
          </a>
        {% endif %}
      </div>
    {% endfor %}
  </div>
{% endmacro %}

{% block body %}
  <div class="container forums px-4 py-2">
    {% if not forums %}
      <div class="message is-info">
        <div class="message-body has-text-centered">
          <span class="icon is-large mb-3">
            <i class="fas fa-comments fa-2x"></i>
          </span>
          <h3 class="title is-4">{% trans %}No forums found{% endtrans %}</h3>
          <p class="subtitle is-6">{% trans %}You may ask your service administrator to create some.{% endtrans %}</p>
        </div>
      </div>
    {% else %}
      {{ generate_forums(forums) }}
    {% endif %}
  </div>
{% endblock body %}