<tal:comment replace="nothing">View macro for a String.</tal:comment>
<metal:view define-macro="view"
       tal:define="fmt widget/format">
  <span tal:condition="python: fmt in (0, 3)">
    <ul tal:condition="python: value and isMultiple">
      <li tal:repeat="sv value"><i tal:content="structure sv"></i></li>
    </ul>
    <tal:singleValue condition="python: value and not isMultiple">
      <span tal:condition="python: fmt != 3" tal:replace="structure value"/>
      <span tal:condition="python: fmt == 3">********</span>
    </tal:singleValue>
  </span>
  <tal:comment replace="nothing">Text</tal:comment>
  <span tal:condition="python: value and (fmt == 1)"
        tal:replace="structure python: contextObj.formatText(value, format='html')"/>
  <tal:comment replace="nothing">XHTML text</tal:comment>
  <div tal:condition="python: value and (fmt == 2)" class="xhtml">
    <span tal:replace="structure value"/>
  </div>
  <input type="hidden" tal:condition="masterCss"
         tal:attributes="class masterCss; value rawValue; name name; id name"/>
</metal:view>

<tal:comment replace="nothing">Edit macro for a String.</tal:comment>
<metal:edit define-macro="edit"
            tal:define="fmt widget/format;
                        isSelect widget/isSelect;
                        isMaster widget/slaves;
                        isOneLine python: fmt in (0,3,4);
                        maxChars python: test(widget['maxChars'], widget['maxChars'], '')">

  <tal:choice condition="isSelect">
  <select tal:define="possibleValues python:contextObj.getPossibleValues(name, withTranslations=True, withBlankValue=True)"
          tal:attributes="name name;
                          id name;
                          multiple python: isMultiple and 'multiple' or '';
                          onchange python: isMaster and 'updateSlaves(this)' or '';
                          class    masterCss;
                          size     python: isMultiple and widget['height'] or 1">
    <option tal:repeat="possibleValue possibleValues"
            tal:attributes="value python: possibleValue[0];
                            selected python:contextObj.fieldValueSelected(name, possibleValue[0], rawValue);
                            title python: possibleValue[1]"
            tal:content="python:tool.truncateValue(possibleValue[1], widget)"></option>
  </select>
  </tal:choice>
  <tal:line condition="python: isOneLine and not isSelect">
    <input tal:attributes="id name; name name; size widget/width; maxlength maxChars;
                           value python: test(inRequest, requestValue, value);
                           style python: 'text-transform:%s' % widget['transform'];
                           type  python: (widget['format'] == 3) and 'password' or 'text'"/>
    <tal:comment replace="nothing">Display a captcha if required</tal:comment>
    <tal:captcha condition="python: widget['format'] == 4">
     <span tal:define="challenge python: contextObj.getCaptchaChallenge(name)"
           tal:content="python: _('captcha_text', mapping=challenge)">
     </span>
    </tal:captcha>
  </tal:line>
  <tal:textarea condition="python: fmt in (1,2)">
    <textarea tal:attributes="id name; name name;
                              cols widget/width;
                              rows widget/height;
                              style python: 'text-transform:%s' % widget['transform'];
                              class python: (fmt==2) and ('rich_%s' % name) or ''"
              tal:content="python: test(inRequest, requestValue, value)">
    </textarea>
    <script type="text/javascript" tal:condition="python: fmt == 2"
            tal:content="python: contextObj.getEditorInit(name)">
    </script>
  </tal:textarea>
</metal:edit>

<tal:comment replace="nothing">Cell macro for a String.</tal:comment>
<metal:cell define-macro="cell"
            tal:define="multipleValues python: value and isMultiple">
  <tal:multiple condition="multipleValues"
                content="python: ', '.join(value)">
  </tal:multiple>
  <tal:notMultiple condition="not: multipleValues">
    <metal:call use-macro="app/ui/widgets/string/macros/view"/>
  </tal:notMultiple>
</metal:cell>

<tal:comment replace="nothing">Search macro for a String.</tal:comment>
<metal:search define-macro="search">
  <label tal:attributes="for widgetName" tal:content="python: _(widget['labelId'])"></label><br>&nbsp;&nbsp;
  <tal:comment replace="nothing">Show a simple search field for most String fields.</tal:comment>
  <tal:simpleSearch condition="not: widget/isSelect">
    <input type="text" tal:define="maxChars python: test(widget['maxChars'], widget['maxChars'], '')"
                       tal:attributes="name python: '%s*string-%s' % (widgetName, widget['transform']);
                                       maxlength maxChars;
                                       style python: 'text-transform:%s' % widget['transform']"/>
  </tal:simpleSearch>
  <tal:comment replace="nothing">Show a multi-selection box for fields whose
    validator defines a list of values, with a "AND/OR" checkbox.</tal:comment>
  <tal:selectSearch condition="widget/isSelect">
    <tal:comment replace="nothing">The "and" / "or" radio buttons</tal:comment>
    <tal:operator define="operName python: 'o_%s'   % name;
                          orName   python: '%s_or'  % operName;
                          andName  python: '%s_and' % operName;"
                  condition="python: widget['multiplicity'][1]!=1">
    <input type="radio" tal:attributes="name operName; id orName" checked="checked" value="or"/>
    <label tal:attributes="for orName" tal:content="python: _('search_or')"></label>
    <input type="radio" tal:attributes="name operName; id andName" value="and"/>
    <label tal:attributes="for andName" tal:content="python: _('search_and')"></label><br/>
    </tal:operator>
    <tal:comment replace="nothing">The list of values</tal:comment>
    <select tal:attributes="name widgetName; size widget/height" multiple="multiple">
      <option tal:repeat="v python:tool.getPossibleValues(name, withTranslations=True, withBlankValue=False, className=className)"
              tal:attributes="value python:v[0]; title python: v[1]"
              tal:content="python: tool.truncateValue(v[1], widget)">
      </option>
    </select>
  </tal:selectSearch><br/>
</metal:search>
