# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
-{# Generically render a field #}
-{% macro render_field_div(field) %}
- {% if field.label.text -%}
- <p class="form_field_label"><label for="{{ field.label.field_id }}">{{ _(field.label.text) }}</label></p>
+{# Render the label for a field #}
+{% macro render_label(field) %}
+ {%- if field.label.text -%}
+ <label for="{{ field.label.field_id }}">{{ field.label.text }}</label>
+ {%- endif -%}
+{%- endmacro %}
+
+{# Render the label in a <p> for a field #}
+{% macro render_label_p(field) %}
+ {%- if field.label.text %}
+ <p class="form_field_label">
+ {{- render_label(field) -}}
+ </p>
{%- endif %}
- <div class="form_field_input">
- {{ field }}
- {%- if field.errors -%}
- {% for error in field.errors %}
- <p class="form_field_error">{{ _(error) }}</p>
- {% endfor %}
- {%- endif %}
- {% if field.description -%}
- <p class="form_field_description">{{ _(field.description)|safe }}</p>
- {%- endif %}
- </div>
+{%- endmacro %}
+
+{# Generically render a field #}
+{% macro render_field_div(field, autofocus_first=False) %}
+ {% if field.type == 'BooleanField' %}
+ {{ render_bool(field) }}
+ {% else %}
+ {{- render_label_p(field) }}
+ <div class="form_field_input">
+ {% if autofocus_first %}
+ {{ field(autofocus=True, style="width:100%;") }}
+ {% else %}
+ {{ field(style="width:100%;") }}
+ {% endif %}
+ {%- if field.errors -%}
+ {% for error in field.errors %}
+ <p class="form_field_error">{{ error }}</p>
+ {% endfor %}
+ {%- endif %}
+ {%- if field.description %}
+ <p class="form_field_description">{{ field.description|safe }}</p>
+ {%- endif %}
+ </div>
+ {% endif %}
{%- endmacro %}
{# Auto-render a form as a series of divs #}
-{% macro render_divs(form) -%}
+{% macro render_divs(form, autofocus_first=False) -%}
{% for field in form %}
- {{ render_field_div(field) }}
+ {% if autofocus_first and loop.first %}
+ {{ render_field_div(field, True) }}
+ {% else %}
+ {{ render_field_div(field) }}
+ {% endif %}
{% endfor %}
{%- endmacro %}
{# Auto-render a form as a table #}
{% macro render_table(form) -%}
{% for field in form %}
- <tr>
- <th>{{ _(field.label.text) }}</th>
- <td>
- {{field}}
- {% if field.errors %}
- <br />
- <ul class="errors">
- {% for error in field.errors %}
- <li>{{error}}</li>
- {% endfor %}
- </ul>
- {% endif %}
- </td>
- </tr>
+ render_field_as_table_row(field)
{% endfor %}
{%- endmacro %}
+
+{% macro render_form_as_table_row(form) %}
+ <tr>
+ {%- for field in form %}
+ <td class="form_field_input">
+ {{field}}
+ </td>
+ {%- endfor %}
+ </tr>
+ <tr>
+ {%- for field in form %}
+ {% for error in field.errors %}
+ <tr>
+ <td>
+ <p class="form_field_error">{{error}}</p>
+ </td>
+ </tr>
+ {%- endfor %}
+ {%- endfor %}
+{%- endmacro %}
+
+{% macro render_field_as_table_row(field) %}
+ <tr>
+ <th>{{ field.label.text }}</th>
+ <td>
+ {{field}}
+ </td>
+ </tr>
+ {% for error in field.errors %}
+ <tr>
+ <td>
+ <p class="form_field_error">{{error}}</p>
+ </td>
+ </tr>
+ {%- endfor %}
+{% endmacro %}
+
+{% macro render_fieldlist_as_table_rows(fieldlist) %}
+ {% for field in fieldlist -%}
+ {%- if field.type == 'FormField' %}
+ {{ render_form_as_table_row(field) }}
+ {%- else %}
+ {{ render_field_as_table_row(field) }}
+ {%- endif %}
+ {% endfor -%}
+{% endmacro %}
+
+{# Render a boolean field #}
+{% macro render_bool(field) %}
+ <div class="boolean">
+ <label for="{{ field.label.field_id }}">
+ {{ field }}</input>
+ {{ field.description|safe }}
+ </label>
+ {%- if field.errors -%}
+ {% for error in field.errors %}
+ <p class="form_field_error">{{ error }}</p>
+ {% endfor %}
+ {% endif %}
+ </div>
+{% endmacro %}
+