src/pyams_content/features/share/zmi/container.py
changeset 1239 b6d9396beffd
parent 1138 6de2ab88b4fe
child 1247 2b1abe98ff47
equal deleted inserted replaced
1238:6c23614804f2 1239:b6d9396beffd
    15 import json
    15 import json
    16 
    16 
    17 from pyramid.decorator import reify
    17 from pyramid.decorator import reify
    18 from pyramid.exceptions import NotFound
    18 from pyramid.exceptions import NotFound
    19 from pyramid.view import view_config
    19 from pyramid.view import view_config
       
    20 from z3c.form import field
    20 from z3c.table.interfaces import IColumn, IValues
    21 from z3c.table.interfaces import IColumn, IValues
    21 
    22 from zope.interface import implementer
    22 from pyams_content.features.share.interfaces import ISocialShareManager, ISocialShareManagerTarget
    23 from zope.schema import getFieldNamesInOrder
       
    24 
       
    25 from pyams_content import _
       
    26 from pyams_content.features.share.interfaces import ISocialShareInfo, ISocialShareManager, ISocialShareManagerTarget
       
    27 from pyams_content.features.share.zmi.interfaces import ISocialShareMenu
    23 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
    28 from pyams_content.interfaces import MANAGE_SITE_ROOT_PERMISSION
    24 from pyams_content.zmi import pyams_content
    29 from pyams_content.zmi import pyams_content
       
    30 from pyams_form.form import ajax_config
       
    31 from pyams_form.group import NamedWidgetsGroup
    25 from pyams_pagelet.pagelet import pagelet_config
    32 from pyams_pagelet.pagelet import pagelet_config
    26 from pyams_skin.help import ContentHelp
    33 from pyams_skin.help import ContentHelp
    27 from pyams_skin.interfaces import IContentHelp, IPageHeader
    34 from pyams_skin.interfaces import IContentHelp, IPageHeader
    28 from pyams_skin.layer import IPyAMSLayer
    35 from pyams_skin.layer import IPyAMSLayer
    29 from pyams_skin.page import DefaultPageHeaderAdapter
    36 from pyams_skin.page import DefaultPageHeaderAdapter
    31 from pyams_skin.viewlet.menu import MenuItem
    38 from pyams_skin.viewlet.menu import MenuItem
    32 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
    39 from pyams_utils.adapter import ContextRequestViewAdapter, adapter_config
    33 from pyams_utils.fanstatic import get_resource_path
    40 from pyams_utils.fanstatic import get_resource_path
    34 from pyams_utils.url import absolute_url
    41 from pyams_utils.url import absolute_url
    35 from pyams_viewlet.viewlet import viewlet_config
    42 from pyams_viewlet.viewlet import viewlet_config
    36 from pyams_zmi.interfaces.menu import IPropertiesMenu
    43 from pyams_zmi.form import AdminDialogEditForm
       
    44 from pyams_zmi.interfaces.menu import ISiteManagementMenu
    37 from pyams_zmi.layer import IAdminLayer
    45 from pyams_zmi.layer import IAdminLayer
    38 from pyams_zmi.view import ContainerAdminView
    46 from pyams_zmi.view import ContainerAdminView
    39 
    47 
    40 from pyams_content import _
       
    41 
       
    42 
    48 
    43 @viewlet_config(name='social-share.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
    49 @viewlet_config(name='social-share.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
    44                 manager=IPropertiesMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=25)
    50                 manager=ISiteManagementMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=25)
       
    51 @implementer(ISocialShareMenu)
    45 class SocialShareMenu(MenuItem):
    52 class SocialShareMenu(MenuItem):
    46     """Social network share menu"""
    53     """Social network share menu"""
    47 
    54 
    48     label = _("Network shares...")
    55     label = _("Network shares...")
    49     icon_class = 'fa-share-alt'
    56     icon_class = 'fa-share-alt'
   182     message = _("""Social networks share items are used to define share options available on your contents.
   189     message = _("""Social networks share items are used to define share options available on your contents.
   183     
   190     
   184 **WARNING**: don't forget to include a toolbox in your presentation template to display social networks shares!!
   191 **WARNING**: don't forget to include a toolbox in your presentation template to display social networks shares!!
   185 """)
   192 """)
   186     message_format = 'rest'
   193     message_format = 'rest'
       
   194 
       
   195 
       
   196 #
       
   197 # General social share info
       
   198 #
       
   199 
       
   200 @viewlet_config(name='social-share-info.menu', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
       
   201                 manager=ISocialShareMenu, permission=MANAGE_SITE_ROOT_PERMISSION, weight=10)
       
   202 class SocialShareInfoMenu(MenuItem):
       
   203     """Social share info menu"""
       
   204 
       
   205     label = _("Social networks info...")
       
   206     icon_class = 'fa-twitter'
       
   207     url = 'social-share-info.html'
       
   208     modal_target = True
       
   209 
       
   210 
       
   211 @pagelet_config(name='social-share-info.html', context=ISocialShareManagerTarget, layer=IPyAMSLayer,
       
   212                 permission=MANAGE_SITE_ROOT_PERMISSION)
       
   213 @ajax_config(name='social-share-info.json', context=ISocialShareManagerTarget, layer=IPyAMSLayer)
       
   214 class SocialShareInfoEditForm(AdminDialogEditForm):
       
   215     """Social share info properties edit form"""
       
   216 
       
   217     legend = _("Edit social networks properties")
       
   218 
       
   219     fields = field.Fields(ISocialShareInfo)
       
   220 
       
   221     label_css_class = 'control-label col-md-4'
       
   222     input_css_class = 'col-md-8'
       
   223 
       
   224     def updateGroups(self):
       
   225         self.add_group(NamedWidgetsGroup(self, 'twitter', self.widgets,
       
   226                                          getFieldNamesInOrder(ISocialShareInfo),
       
   227                                          legend=_("Twitter account"),
       
   228                                          css_class='inner'))
       
   229         super(SocialShareInfoEditForm, self).updateGroups()