diff -r 000000000000 -r 7c0001cacf8e src/pyams_content/component/theme/zmi/manager.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/component/theme/zmi/manager.py Thu Oct 08 13:37:29 2015 +0200 @@ -0,0 +1,76 @@ +# +# Copyright (c) 2008-2015 Thierry Florac +# All Rights Reserved. +# +# This software is subject to the provisions of the Zope Public License, +# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution. +# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED +# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS +# FOR A PARTICULAR PURPOSE. +# + +__docformat__ = 'restructuredtext' + + +# import standard library + +# import interfaces +from pyams_content.component.theme.interfaces import IThemesManagerTarget, IThemesManager +from pyams_content.interfaces import MANAGE_TOOL_PERMISSION +from pyams_skin.layer import IPyAMSLayer +from pyams_utils.interfaces import VIEW_SYSTEM_PERMISSION +from pyams_utils.interfaces.data import IObjectData +from pyams_zmi.interfaces.menu import IPropertiesMenu +from pyams_zmi.layer import IAdminLayer + +# import packages +from pyams_form.form import AJAXEditForm +from pyams_pagelet.pagelet import pagelet_config +from pyams_skin.viewlet.menu import MenuItem +from pyams_viewlet.viewlet import viewlet_config +from pyams_zmi.form import AdminDialogEditForm +from pyramid.view import view_config +from z3c.form import field +from zope.interface import alsoProvides + +from pyams_content import _ + + +@viewlet_config(name='themes-manager.menu', context=IThemesManagerTarget, layer=IAdminLayer, + manager=IPropertiesMenu, permission=VIEW_SYSTEM_PERMISSION, weight=200) +class ThemesManagerMenu(MenuItem): + """Themes menu""" + + label = _("Themes...") + icon_class = 'fa-tags' + url = 'themes.html' + modal_target = True + + +@pagelet_config(name='themes.html', context=IThemesManagerTarget, layer=IPyAMSLayer, + permission=VIEW_SYSTEM_PERMISSION) +class ThemesManagerEditForm(AdminDialogEditForm): + """Themes manager edit form""" + + legend = _("Selected themes") + + fields = field.Fields(IThemesManager) + ajax_handler = 'themes.json' + edit_permission = MANAGE_TOOL_PERMISSION + + def updateWidgets(self, prefix=None): + super(ThemesManagerEditForm, self).updateWidgets(prefix) + widget = self.widgets['extract_name'] + widget.object_data = {'ams-plugins': 'pyams_content', + 'ams-plugin-pyams_content-src': + '/--static--/pyams_content/js/pyams_content{MyAMS.devext}.js', + 'ams-plugin-pyams_content-callback': 'PyAMS_content.themes.initExtracts', + 'ams-plugin-pyams_content-async': 'false'} + alsoProvides(widget, IObjectData) + + +@view_config(name='themes.json', context=IThemesManagerTarget, request_type=IPyAMSLayer, + permission=MANAGE_TOOL_PERMISSION, renderer='json', xhr=True) +class ThemesManagerAJAXEditForm(AJAXEditForm, ThemesManagerEditForm): + """Themes manager edit form, JSON renderer"""