|
1 # |
|
2 # Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net> |
|
3 # All Rights Reserved. |
|
4 # |
|
5 # This software is subject to the provisions of the Zope Public License, |
|
6 # Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. |
|
7 # THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED |
|
8 # WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
|
9 # WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS |
|
10 # FOR A PARTICULAR PURPOSE. |
|
11 # |
|
12 |
|
13 __docformat__ = 'restructuredtext' |
|
14 |
|
15 |
|
16 # import standard library |
|
17 |
|
18 # import interfaces |
|
19 from pyams_content.shared.common.interfaces.zmi import IInnerSummaryView |
|
20 from pyams_content.shared.form.interfaces import IFormFieldContainerTarget, IFormFieldContainer |
|
21 from pyams_form.interfaces.form import IInnerTabForm, IFormHelp |
|
22 from pyams_i18n.interfaces import II18n |
|
23 from pyams_skin.layer import IPyAMSLayer |
|
24 from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION |
|
25 |
|
26 # import packages |
|
27 from pyams_content.shared.common.zmi.summary import SharedContentSummaryForm |
|
28 from pyams_form.help import FormHelp |
|
29 from pyams_pagelet.pagelet import pagelet_config |
|
30 from pyams_utils.adapter import adapter_config |
|
31 from pyams_zmi.form import InnerAdminDisplayForm, InnerAdminAddForm |
|
32 from z3c.form import field, button |
|
33 from zope.interface import implementer, Interface |
|
34 |
|
35 from pyams_content import _ |
|
36 |
|
37 |
|
38 @adapter_config(name='form-fields-summary', |
|
39 context=(IFormFieldContainerTarget, IPyAMSLayer, SharedContentSummaryForm), |
|
40 provides=IInnerTabForm) |
|
41 class FormFieldContainerSummary(InnerAdminDisplayForm): |
|
42 """Form fields container summary""" |
|
43 |
|
44 weight = 20 |
|
45 tab_label = _("Quick preview") |
|
46 tab_target = 'form-fields-summary.html' |
|
47 |
|
48 fields = field.Fields(Interface) |
|
49 |
|
50 |
|
51 @pagelet_config(name='form-fields-summary.html', context=IFormFieldContainerTarget, layer=IPyAMSLayer, |
|
52 permission=VIEW_SYSTEM_PERMISSION) |
|
53 @implementer(IInnerSummaryView) |
|
54 class FormFieldContainerSummaryView(InnerAdminAddForm): |
|
55 """Form fields container summary view""" |
|
56 |
|
57 @property |
|
58 def legend(self): |
|
59 return II18n(self.context).query_attribute('user_title', request=self.request) |
|
60 |
|
61 @property |
|
62 def fields(self): |
|
63 fields = field.Fields(*IFormFieldContainer(self.context).get_fields()) |
|
64 if self.context.use_captcha: |
|
65 # TODO: add captcha |
|
66 # fields += field.Fields(Captcha(title='', description='', required=True)) |
|
67 pass |
|
68 return fields |
|
69 |
|
70 buttons = button.Buttons(Interface) |
|
71 |
|
72 def updateWidgets(self, prefix=None): |
|
73 super(FormFieldContainerSummaryView, self).updateWidgets(prefix) |
|
74 for widget in self.widgets.values(): |
|
75 field = IFormFieldContainer(self.context).get(widget.field.__name__) |
|
76 if field is not None: |
|
77 widget.placeholder = field.placeholder |
|
78 |
|
79 |
|
80 @adapter_config(context=(IFormFieldContainerTarget, IPyAMSLayer, FormFieldContainerSummaryView), provides=IFormHelp) |
|
81 class FormFieldContainerSummaryHelp(FormHelp): |
|
82 """Form field container summary help adapter""" |
|
83 |
|
84 def __new__(cls, context, request, view): |
|
85 if not context.header: |
|
86 return None |
|
87 return FormHelp.__new__(cls) |
|
88 |
|
89 @property |
|
90 def message(self): |
|
91 return II18n(self.context).query_attribute('header', request=self.request) |
|
92 |
|
93 message_format = 'text' |