File size: 2,565 Bytes
d3295cf
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
{# Renders every listing content field. Expects `values` and `errors`. #}
{% for f in CONTENT_FIELDS %}
  {% set err = errors.get(f.key) %}
  {% set described = [] %}
  {% if f.help %}{% do described.append('help-' ~ f.key) %}{% endif %}
  {% if err %}{% do described.append('err-' ~ f.key) %}{% endif %}
  <div class="form-row {% if err %}has-error{% endif %}">
    {% if f.kind == 'choices' %}
      <fieldset class="choice-group" id="{{ f.key }}" tabindex="-1" {% if described %}aria-describedby="{{ described|join(' ') }}"{% endif %} {% if err %}aria-invalid="true"{% endif %}>
        <legend class="group-label">{{ f.label }}{% if f.required %} <span class="req">(required)</span>{% endif %}</legend>
        {% if f.help %}<p class="help" id="help-{{ f.key }}">{{ f.help }}</p>{% endif %}
        {% set state = values.get(f.key ~ '__selected') %}
        {% if state is none %}
          {% set known, other = split_known(values.get(f.key), f.choices) %}
        {% else %}
          {% set known = state %}{% set other = values.get(f.key ~ '__other', '') %}
        {% endif %}
        <div class="choices">
          {% for option in f.choices %}
            <label><input type="checkbox" name="{{ f.key }}" value="{{ option }}" {% if option in known %}checked{% endif %}> {{ option }}</label>
          {% endfor %}
        </div>
        <div class="other-row">
          <label for="{{ f.key }}_other">Other (describe)</label>
          <input type="text" id="{{ f.key }}_other" name="{{ f.key }}_other" value="{{ other }}" maxlength="{{ f.maxlen }}">
        </div>
      </fieldset>
    {% else %}
      <label for="{{ f.key }}">{{ f.label }}{% if f.required %} <span class="req">(required)</span>{% endif %}</label>
      {% if f.help %}<p class="help" id="help-{{ f.key }}">{{ f.help }}</p>{% endif %}
      {% if f.kind == 'textarea' %}
        <textarea id="{{ f.key }}" name="{{ f.key }}" maxlength="{{ f.maxlen }}" {% if described %}aria-describedby="{{ described|join(' ') }}"{% endif %} {% if err %}aria-invalid="true"{% endif %}>{{ values.get(f.key) or '' }}</textarea>
      {% else %}
        <input type="text" id="{{ f.key }}" name="{{ f.key }}" value="{{ values.get(f.key) or '' }}" maxlength="{{ f.maxlen }}" {% if f.placeholder %}placeholder="{{ f.placeholder }}"{% endif %} {% if described %}aria-describedby="{{ described|join(' ') }}"{% endif %} {% if err %}aria-invalid="true"{% endif %}>
      {% endif %}
    {% endif %}
    {% if err %}<p class="field-error" id="err-{{ f.key }}">{{ err }}</p>{% endif %}
  </div>
{% endfor %}