source: trunk/skins/lemill/field.pt @ 2782

Revision 2782, 5.8 KB checked in by jukka, 11 years ago (diff)

Simplified handling fields that should be copied in translations and wrote some tests related to them and translations in general.

Line 
1<html xmlns="http://www.w3.org/1999/xhtml"
2      xml:lang="en"
3      lang="en"
4      xmlns:tal="http://xml.zope.org/namespaces/tal"
5      xmlns:metal="http://xml.zope.org/namespaces/metal"
6      xmlns:i18n="http://xml.zope.org/namespaces/i18n"
7      i18n:domain="plone">
8  <head><title></title></head>
9  <body>
10
11    <!-- Base Field Widgets -->
12    <metal:base_view_macro
13        define-macro="base_view"
14        tal:define="widget_view python:here.widget(field.getName(), mode=mode, use_label=1);
15                    field_macros here/widgets/field/macros;
16                    label_macro view_macros/label | label_macro | field_macros/label;
17                    data_macro view_macros/data | data_macro | field_macros/data;
18                    visState python:widget.isVisible(here, mode);
19                    visCondition python:field.widget.testCondition(here, portal, template);
20                    ">
21      <tal:condition
22          condition="python:visState == 'visible' and visCondition">
23        <tal:if_perm
24            condition="python:'view' in widget.modes and 'r' in field.mode and field.checkPermission('r',here)">
25          <tal:if_use_label condition="use_label | nothing">
26            <metal:use_label use-macro="label_macro" />
27          </tal:if_use_label>
28          <metal:use_data use-macro="data_macro|default" />
29        </tal:if_perm>
30      </tal:condition>
31    </metal:base_view_macro>
32
33    <metal:label_macro define-macro="label">
34      <label><span i18n:translate="" tal:content="python:widget.Label(here)">Field</span>:</label>
35      <br />
36    </metal:label_macro>
37
38    <metal:data_macro define-macro="data">
39      <metal:block use-macro="widget_view" />
40    </metal:data_macro>
41
42    <div metal:define-macro="view" tal:define="fieldtypename python:field.getType().split('.')[-1]"
43        tal:attributes="class string:field ArchetypesField-${fieldtypename};
44                          id string:archetypes-fieldname-${field/getName}">
45          <metal:use_base_view use-macro="here/widgets/field/macros/base_view" />
46    </div>
47
48    <metal:define
49        define-macro="edit"
50        tal:define="visState python:widget.isVisible(here, mode);
51                    edit_accessor python:field.getEditAccessor(here);
52                    getMethod python:(widget.populate and (edit_accessor or accessor)) or None;
53                    value python:getMethod and getMethod();
54                    value python:widget.postback and request.get(fieldName, here.session_restore_value(fieldName, value)) or value;
55                    visCondition python:field.widget.testCondition(here, portal, template);
56                    error_id python:errors.get(fieldName);
57                    copied_in_translation field/copied_in_translation | nothing;
58                    translation translation | nothing;">
59      <tal:condition
60          condition="python:visState == 'visible' and visCondition">
61        <div class="field"
62             tal:condition="python:('edit' in widget.modes and 'w' in field.mode and field.checkPermission('w',here))
63                                    or (mode=='search' and field.checkPermission('r',here))"
64             tal:attributes="class python: test(error_id, 'field error ' + 'Archetypes' + widget.getName(), 'field ' + 'Archetypes' + widget.getName());
65                             id python: 'archetypes-fieldname-' + field.getName()">
66          <span metal:define-slot="widget_body_label_prefix"></span>
67
68          <div class="translatedText"
69              tal:condition="python: translation and not copied_in_translation">
70              <label i18n:translate="original_label">
71              Original
72                     <span i18n:name="field_label" tal:replace="python:widget.Label(here).lower()" />
73              </label>
74              <div tal:define="transfield python:source.getField(fieldName)" class="text_to_translate">
75                  <span tal:replace="structure python:path('source/%s' %transfield.accessor)" />           
76              </div>
77          </div>
78
79
80          <label i18n:translate=""
81                 tal:content="python:widget.Label(here)"
82                 tal:attributes="for python:field.getName()">
83          </label>
84          <span class="fieldRequired"
85                tal:condition="field/required"
86                title="Required"
87                i18n:translate="label_required"
88                i18n:attributes="title title_required;">
89            (Required)
90          </span>
91          <div class="formHelp"
92               tal:define="description python:widget.Description(here)"
93               tal:content="structure description"
94               tal:attributes="id string:${fieldName}_help"
95               i18n:translate="">
96            Help
97          </div>
98          <span tal:omit-tag=""
99                tal:define="error python:errors.get(fieldName)">
100            <div tal:condition="error_id"
101                 tal:content="error_id" i18n:translate="">Validation Error</div>
102            <div metal:define-slot="widget_body"></div>
103          </span>
104        </div>
105      </tal:condition>
106
107      <tal:condition condition="python: visState == 'hidden'">
108        <metal:hiddenmacro
109            tal:define="widget_macro python:path('here/%s/macros' % widget.macro);
110                        default_hidden_macro here/widgets/field/macros/hidden;
111                        hidden_macro widget_macro/hidden | default_hidden_macro;
112                        ">
113          <metal:use use-macro="hidden_macro" />
114        </metal:hiddenmacro>
115      </tal:condition>
116
117    </metal:define>
118
119    <metal:hidden_macro define-macro="hidden">
120      <input type="hidden"
121             name=""
122             value=""
123             tabindex="#"
124             tal:attributes="name fieldName;
125                             value value;
126                             tabindex tabindex/next;" />
127    </metal:hidden_macro>
128
129  </body>
130</html>
Note: See TracBrowser for help on using the repository browser.