{#
# GNU MediaGoblin -- federated, autonomous media hosting
# Copyright (C) 2011 MediaGoblin contributors.  See AUTHORS.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# 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.name }}">{{ _(field.label.text) }}</label></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) }}</p>
    {%- endif %}
  </div>
{%- endmacro %}

{# Auto-render a form as a series of divs #}
{% macro render_divs(form) -%}
  {% for field in form %}
    {{ render_field_div(field) }}
  {% 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>
  {% endfor %}
{%- endmacro %}
