Merge commit 'refs/merge-requests/59' of git://gitorious.org/mediagoblin/mediagoblin...
[mediagoblin.git] / mediagoblin / templates / mediagoblin / utils / wtforms.html
1 {#
2 # GNU MediaGoblin -- federated, autonomous media hosting
3 # Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
4 #
5 # This program is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Affero General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Affero General Public License for more details.
14 #
15 # You should have received a copy of the GNU Affero General Public License
16 # along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #}
18
19 {# Render the label for a field #}
20 {% macro render_label(field) %}
21 {%- if field.label.text -%}
22 <label for="{{ field.label.field_id }}">{{ field.label.text }}</label>
23 {%- endif -%}
24 {%- endmacro %}
25
26 {# Render the label in a <p> for a field #}
27 {% macro render_label_p(field) %}
28 {%- if field.label.text %}
29 <p class="form_field_label">
30 {{- render_label(field) -}}
31 </p>
32 {%- endif %}
33 {%- endmacro %}
34
35 {# Generically render a field #}
36 {% macro render_field_div(field, autofocus_first=False) %}
37 {% if field.type == 'BooleanField' %}
38 {{ render_bool(field) }}
39 {% else %}
40 {{- render_label_p(field) }}
41 <div class="form_field_input">
42 {% if autofocus_first %}
43 {{ field(autofocus=True) }}
44 {% else %}
45 {{ field }}
46 {% endif %}
47 {%- if field.errors -%}
48 {% for error in field.errors %}
49 <p class="form_field_error">{{ error }}</p>
50 {% endfor %}
51 {%- endif %}
52 {%- if field.description %}
53 <p class="form_field_description">{{ field.description|safe }}</p>
54 {%- endif %}
55 </div>
56 {% endif %}
57 {%- endmacro %}
58
59 {# Auto-render a form as a series of divs #}
60 {% macro render_divs(form, autofocus_first=False) -%}
61 {% for field in form %}
62 {% if autofocus_first and loop.first %}
63 {{ render_field_div(field, True) }}
64 {% else %}
65 {{ render_field_div(field) }}
66 {% endif %}
67 {% endfor %}
68 {%- endmacro %}
69
70 {# Auto-render a form as a table #}
71 {% macro render_table(form) -%}
72 {% for field in form %}
73 <tr>
74 <th>{{ field.label.text }}</th>
75 <td>
76 {{field}}
77 {% if field.errors %}
78 <br />
79 <ul class="errors">
80 {% for error in field.errors %}
81 <li>{{error}}</li>
82 {% endfor %}
83 </ul>
84 {% endif %}
85 </td>
86 </tr>
87 {% endfor %}
88 {%- endmacro %}
89
90 {# Render a boolean field #}
91 {% macro render_bool(field) %}
92 <div class="boolean">
93 <label for="{{ field.label.field_id }}">
94 {{ field }}</input>
95 {{ field.description|safe }}
96 </label>
97 {%- if field.errors -%}
98 {% for error in field.errors %}
99 <p class="form_field_error">{{ error }}</p>
100 {% endfor %}
101 {% endif %}
102 </div>
103 {% endmacro %}
104