view sat_templates/templates/default/input/field.html @ 209:d586ea13cfed

blog: fixed setting of title: title was not show when embedded was True, but this is always the case (articles.html template is always shown in base.html). A new "blog_page" boolean is set when articles.html is the main page displayed (i.e. blog posts are not embedded in an other page like events), and use to display the title, fixing the originally intented behaviour. fix 298
author Goffi <goffi@goffi.org>
date Fri, 14 Jun 2019 12:49:04 +0200
parents bdc578994b97
children aa37750c2617
line wrap: on
line source

{# macros to create form fields #}

{% macro field(type, name, label="", required=false) %}
    {# generic field
       "class" keyword can be used to add classes
       additional kwargs will be passed as attributes #}
    <span class="form_input {{kwargs.pop('class', '')}}">
        {% set cur_id = name|next_gidx %}
        {% if label %}
            <label for="{{cur_id}}" {{'class="required"'|safe if required}}>{{label}}</label>
        {% endif %}
        <input id="{{cur_id}}" type="{{type}}" name="{{name}}" {{"required" if required}} {{kwargs|xmlattr}}>
    </span>
{% endmacro %}

{% macro select(name, options_list, selected=none, required=false, multiple=false) %}
    {# selection of elements with <select>

    @param name: name of the field
    @param options_list(list[str, str]): list of name, label of options
    @param selected(none, list): list of select elements
    @param required(bool): true this field is required
    @param multiple(bool): true is multiple selection is possible
    #}
    <select name="{{name}}" class="form_input {{kwargs.pop('class', '')}}" {{"required" if required}}>
    {% for value, label in options_list %}
         <option value="{{value}}" {{'selected' if selected and value in selected}}>{{label}}</option>
    {% endfor %}
    </select>
{% endmacro %}

{% macro choices(name, choices_list, checked=none) %}
    {% for choice, label in choices_list %}
        <div class="form_input {{kwargs.pop('class', '')}}">
            <input id="{{name|next_gidx}}" type="radio" name="{{name}}" value="{{choice}}"{{" checked" if checked==choice}}><label for="{{name|cur_gidx}}">{{label}}</label>
        </div>
    {% endfor %}
{% endmacro %}

{% macro int(name, label="", init=0) %}
    {{ field("number", name=name, label=label, value=init, step=1, min=0, **kwargs) }}
{% endmacro %}

{% macro checkbox(name, label="", checked=false) %}
    {% if checked %}
        {{ field("checkbox", name=name, label=label, checked="checked", **kwargs) }}
    {% else %}
        {{ field("checkbox", name=name, label=label, **kwargs) }}
    {% endif %}
{% endmacro %}

{% macro text(name, label="", placeholder="", required=false) %}
    {{ field("text", name=name, label=label, required=required, placeholder=placeholder, **kwargs) }}
{% endmacro %}

{% macro password(name, label="", required=false) %}
    {{ field("password", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro email(name, label="", required=false) %}
    {{ field("email", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro date(name, label="", required=false) %}
    {{ field("date", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro url(name, label="", required=false) %}
    {{ field("url", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro file(name, label="", required=false) %}
    {{ field("file", name=name, label=label, required=required, **kwargs) }}
{% endmacro %}

{% macro textarea(name, label="", rows=10, cols=50, placeholder='', required=false) %}
    <div class="form_input {{kwargs.pop('class', '')}}">
        {% set cur_id = name|next_gidx %}
        {% if label %}
            <label for="{{cur_id}}" {{'class="required"'|safe if required}}>{{label}}</label>
        {% endif %}
        <textarea id="{{cur_id}}" name="{{name}}" rows="{{rows}}" cols="{{cols}}" placeholder="{{placeholder}}" {{"required" if required}} class="{{kwargs.pop('class', '')}}"></textarea>
    </div>
{% endmacro %}

{% macro meta(name, value) %}
    <input type="hidden" name="{{name}}" value="{{value}}">
{% endmacro %}

{% macro submit(text=_("Send"), id=none) %}
    {# submit button

    @param text(str): label of the button
    @param id(none, str): id of the element
    #}
    <input {{ 'id="{id}"'.format(id=id)|safe if id }} class="form_submit btn" type="submit" value="{{text}}" class="{{kwargs.pop('class', '')}}">
{% endmacro %}