view sat_templates/default/input/field.html @ 153:b84d20af0ed3

macros (field, form, textbox): general improvments: - use a generic "field" macro for most fields - added "required" class on input labels if suitable - extra kw args are used as input field attributes. Same thing for forms - better handling of id if label is missing - added blog_text macro in textbox for basic text blog input - textbox is more customisable (class and textarea class can be specified)
author Goffi <goffi@goffi.org>
date Thu, 21 Jun 2018 01:09:00 +0200
parents 33c7ce833d3f
children
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 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")) %}
    <input class="form_submit button" type="submit" value="{{text}}" class="{{kwargs.pop('class', '')}}">
{% endmacro %}