src/pyams_content/shared/form/zmi/summary.py
changeset 170 26aefef3d0aa
child 174 3e6b4514cacb
equal deleted inserted replaced
169:483b0f16e9a6 170:26aefef3d0aa
       
     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'