equal
deleted
inserted
replaced
71 return result |
71 return result |
72 |
72 |
73 |
73 |
74 @widgettemplate_config(mode='input', template='templates/i18n-input.pt', widget=II18nWidget, layer=IFormLayer) |
74 @widgettemplate_config(mode='input', template='templates/i18n-input.pt', widget=II18nWidget, layer=IFormLayer) |
75 @widgettemplate_config(mode='display', template='templates/i18n-input.pt', widget=II18nWidget, layer=IFormLayer) |
75 @widgettemplate_config(mode='display', template='templates/i18n-input.pt', widget=II18nWidget, layer=IFormLayer) |
|
76 @widgettemplate_config(mode='hidden', template='templates/i18n-hidden.pt', widget=II18nWidget, layer=IFormLayer) |
76 @implementer_only(II18nWidget) |
77 @implementer_only(II18nWidget) |
77 class I18nWidget(HTMLInputWidget, Widget): |
78 class I18nWidget(HTMLInputWidget, Widget): |
78 """I18n base widget""" |
79 """I18n base widget""" |
79 |
80 |
|
81 widgets = None |
80 widget_factory = None |
82 widget_factory = None |
81 |
83 |
82 @reify |
84 @reify |
83 def langs(self): |
85 def langs(self): |
84 langs = [] |
86 langs = [] |
134 self.context), IErrorViewSnippet) |
136 self.context), IErrorViewSnippet) |
135 view.update() |
137 view.update() |
136 widget.error = view |
138 widget.error = view |
137 widget.value = value |
139 widget.value = value |
138 |
140 |
|
141 def set_mode(self, mode): |
|
142 if self.widgets: |
|
143 for lang in self.langs: |
|
144 self.widgets[lang].mode = mode |
|
145 self.mode = mode |
|
146 |
139 def extract(self, default=NO_VALUE): |
147 def extract(self, default=NO_VALUE): |
140 result = {} |
148 result = {} |
141 [result.setdefault(lang, self.widgets[lang].extract(default)) for lang in self.langs] |
149 [result.setdefault(lang, self.widgets[lang].extract(default)) for lang in self.langs] |
142 for value in result.values(): |
150 for value in result.values(): |
143 if value is not NO_VALUE: |
151 if value is not NO_VALUE: |