mapping_item.pt 4.1 KB
<div
  tal:define="error_class error_class|field.widget.error_class;
    description description|field.description;
    field_title field_title|field.title;
    oid oid|field.oid;
    hidden hidden|field.widget.hidden;
    category category|field.widget.category;
    structural hidden or category == 'structural';
    required required|field.required;
    field_readonly field_readonly|field.widget.readonly;
    form_readonly readonly|readonly"
  class="form-group ${field.error and 'has-error' or ''} ${field.widget.item_css_class or ''} ${field.default_item_css_class()}"
  title="${description}"
  id="item-${oid}"
  tal:omit-tag="structural"
  i18n:domain="deform"
>
  <div class="row">
    <div class="col-md-12 col-lg-12 col-sm-12">
      <label
        for="${oid}"
        class="control-label col-sm-3 col-md-2 col-lg-2 ${required and 'required' or ''}"
        tal:condition="not structural"
        id="req-${oid}"
        >${field_title}
      </label>
      <div
        class="col-sm-9 col-md-10 col-lg-10"
        tal:condition="not field.children"
      >
        <div
          tal:define="input_prepend field.widget.input_prepend | None;
            input_append field.widget.input_append  | None"
          tal:omit-tag="not (input_prepend or input_append)"
          class="input-group"
        >
          <span class="input-group-addon" tal:condition="input_prepend"
            >${input_prepend}</span
          >
          <span
            tal:condition="python:readonly or field_readonly"
            tal:replace="structure field.serialize(readonly=True).strip()"
          />
          <span
            tal:condition="python: not readonly and not field_readonly"
            tal:replace="structure field.serialize().strip()"
          />
          <span class="input-group-addon" tal:condition="input_append"
            >${input_append}</span
          >
        </div>

        <p
          class="help-block"
          tal:define="errstr 'error-%s' % field.oid"
          tal:repeat="msg field.error.messages()"
          i18n:translate=""
          tal:attributes="id repeat.msg.index==0 and errstr or
                ('%s-%s' % (errstr, repeat.msg.index))"
          tal:condition="field.error and not field.widget.hidden and not field.typ.__class__.__name__=='Mapping'"
        >
          ${msg}
        </p>

        <p
          tal:condition="field.description and not field.widget.hidden"
          class="help-block"
        >
          ${field.description}
        </p>
      </div>
      <div class="col-sm-12 col-md-12 col-lg-12" tal:condition="field.children">
        <div
          tal:define="input_prepend field.widget.input_prepend | None;
            input_append field.widget.input_append  | None"
          tal:omit-tag="not (input_prepend or input_append)"
          class="input-group"
        >
          <span class="input-group-addon" tal:condition="input_prepend"
            >${input_prepend}</span
          >
          <span
            tal:condition="python:readonly or field_readonly"
            tal:replace="structure field.serialize(readonly=True).strip()"
          />
          <span
            tal:condition="python: not readonly and not field_readonly"
            tal:replace="structure field.serialize().strip()"
          />
          <span class="input-group-addon" tal:condition="input_append"
            >${input_append}</span
          >
        </div>

        <p
          class="help-block"
          tal:define="errstr 'error-%s' % field.oid"
          tal:repeat="msg field.error.messages()"
          i18n:translate=""
          tal:attributes="id repeat.msg.index==0 and errstr or
                ('%s-%s' % (errstr, repeat.msg.index))"
          tal:condition="field.error and not field.widget.hidden and not field.typ.__class__.__name__=='Mapping'"
        >
          ${msg}
        </p>

        <p
          tal:condition="field.description and not field.widget.hidden"
          class="help-block"
        >
          ${field.description}
        </p>
      </div>
    </div>
  </div>
</div>