view sat_templates/templates/bulma/input/textbox.html @ 295:1de599c5a68f

bulma (base): loading screen: when the `loading_screen` variable is set before extending `base/base.html`, a loading modal is shown (and must be removed via JavaScript). This avoids the user to try to use an interface which is not reactive or working normally because JS is not fully loaded yet.
author Goffi <goffi@goffi.org>
date Fri, 27 Nov 2020 12:24:03 +0100
parents 80cfec962b1e
children fbea1b9a558f
line wrap: on
line source

{% import 'input/form.html' as form with context %}
{% import 'input/field.html' as field with context %}

{% macro head(service, node, type="textbox") %}
    {# include data needed to identify the node to use for commenting #}
    <input type="hidden" name="type" value="{{type}}">
    <input type="hidden" name="service" value="{{service}}">
    <input type="hidden" name="node" value="{{node}}">
{% endmacro %}

{% macro textbox(service, node, action='', placeholder='',
                 submit_label=_("Send"), type="textbox",
                 class='', ta_class='') %}
    {# generic content area for comments/blog posts/etc.
       Only a body by default, but new elements can be
       added by using this macro with call #}
    {% set extra_content = caller() if caller is defined else '' %}
    {% call form.form(action=action, class="textbox " + class) %}
        {{ head(service, node, type) }}
        {{ extra_content }}
        <article class="media px-4 py-3">
          {% if identities is defined and own_jid is defined %}
              {% if avatar is defined %}
                  <div class="media-left">
                      {{ avatar.avatar(own_jid.userhost()) }}
                  </div>
              {% endif %}
          {% endif %}
          <div class="media-content">
            {{ field.textarea("body", placeholder=placeholder, required=True) }}
            <nav class="level">
              <div class="level-left">
                <div class="level-item">
                   {{ field.submit() }}
                </div>
              </div>
            </nav>
          </div>
        </article>
        {# {{ field.textarea("body", placeholder=placeholder, required=True,
                          class=ta_class) }}
        {{ submit(label=submit_label) }} #}
    {% endcall %}
{% endmacro %}

{% macro blog_text(service, node, action='', placeholder=_("Your comment")) %}
    {{ textbox(service, node, action=action, placeholder=placeholder, type="comment") }}
{% endmacro %}

{% macro comment(service, node, action='', placeholder=_("Your comment"), class='box--medium') %}
    {{ textbox(service, node, action=action, placeholder=placeholder, type="comment", class=class) }}
{% endmacro %}

{% macro comment_or_login(service, node, action='', placeholder=none) %}
    {# show comment form a a message asking to log in
       login is checked using profile #}
    {% if profile %}
        {% if placeholder is none %}
            {{ comment(service, node, action) }}
        {% else %}
            {{ comment(service, node, action, placeholder=placeholder) }}
        {% endif %}
    {% else %}
        <div class="container">
            <article class="message">
                <div class="message-body">
                    <p>{% trans %}You are not logged. You need to log in to comment.{% endtrans %}</p>
                    {% if login_url is defined %}
                        <p class="log_in_url">
                        {% trans link_start=('<a href="',login_url,'">')|join|safe, link_end='</a>'|safe %}
                        To log in {{link_start}}follow this link{{link_end}}
                        {% endtrans %}
                        </p>
                    {% endif %}
                </div>
            </article>
        </div>
    {% endif %}
{% endmacro %}