<tal:block i18n:domain="nive">
<div tal:condition="field.widget.hidden">
  <span tal:replace="structure field.serialize(cstruct)"/>
</div>

<div tal:condition="not field.widget.hidden"
    title="${field.description}"
    id="item-${field.name}" 
    class="${field.error and field.widget.error_class} control-group" 
    i18n:domain="nive">
  <!-- mapping_item -->
  <label tal:condition="field.widget.category != 'structural'"
         tal:content="field.title"
         class="control-label ${'required' if field.required else ''}"
         title="${field.description}"
         for="${field.oid}"></label>
  <div class="controls">
    <span tal:replace="structure field.serialize(cstruct)"/>
    <span tal:condition="field.error"
          tal:repeat="msg field.error.messages()"
          class="help-inline">${msg}</span>
  </div>
  <span tal:condition="field.widget.category not in ('structural','full-width')"
        tal:content="structure field.description" class="help-block"></span>
  <!-- /mapping_item -->
</div>
<div tal:condition="field.widget.category == 'full-width' and not field.widget.hidden"
     tal:content="structure field.description" class="help-block-br"></div>
</tal:block>