Source code for pyams_skin.interfaces.viewlet

#
# Copyright (c) 2008-2015 Thierry Florac <tflorac AT ulthar.net>
# 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_viewlet.interfaces import IViewlet, IViewletManager

# import packages
from zope.interface import Interface, Attribute
from zope.schema import Text, TextLine, List, Object, Dict, Bool

from pyams_skin import _


#
# Top links viewlet manager
#

[docs]class ITopLinksViewletManager(IViewletManager): """Topo links viewlet manager interface"""
# # Top drop-down menus viewlet #
[docs]class ITopLinksMenu(IViewlet): """Top link menu""" css_class = TextLine(title="Menu CSS class", required=False) label = TextLine(title="Menu label") click_handler = TextLine(title="Menu click handler", description="Name of a Javascript function handling menu click", required=False) url = TextLine(title="Menu link target") data = Dict(title="Menu data attributes", key_type=TextLine(), value_type=TextLine())
[docs]class ITopLinksViewlet(IViewlet): """Top links viewlet""" label = TextLine(title="Main label") dropdown_label = TextLine(title="Drop-down menu label") css_class = TextLine(title="Main CSS class") viewlets = List(title="Top links menu", value_type=Object(schema=ITopLinksMenu))
# # Top tabs viewlet #
[docs]class ITopTabsTab(IViewlet): """Top tabs tab""" css_class = TextLine(title="Tab CSS class", required=False) label = TextLine(title="Tab label") click_handler = TextLine(title="Tab click handler", description="Name of a Javascript function handling tab click", required=False) url = TextLine(title="Tab link target") data = Dict(title="Tab data attribrutes", key_type=TextLine(), value_type=TextLine())
[docs]class ITopTabsViewlet(IViewlet): """Top tabs viewlet""" label = TextLine(title="Main label") css_class = TextLine(title="Main CSS class") viewlets = List(title="Top tabs items", value_type=Object(schema=ITopTabsTab))
# # Shortcuts viewlet manager #
[docs]class IShortcutsViewletManager(IViewletManager): """Shortcuts viewlet manager"""
[docs]class IShortcut(IViewlet): """Shortcut viewlet interface""" bg_color_class = TextLine(title="Shortcut CSS class") icon_class = TextLine(title="Shortcut icon class") label = TextLine(title="Shortcut title") url = TextLine(title="Shortcut target URL") target = TextLine(title="Window target", required=False) modal_target = Bool(title="Modal target", required=True, default=True) checked = TextLine(title="Checked shortcut class", required=False) def get_url(self): """Return shortcut absolute URL"""
# # Menus viewlet manager #
[docs]class IMainMenusViewletManager(IViewletManager): """Main menus viewlet manager"""
[docs]class IUserMenusViewletManager(IViewletManager): """User menus viewlet manager"""
[docs]class IMenu(IViewlet): """Menu interface""" header = TextLine(title="Menu header", required=False)
[docs]class IMenuHeader(Interface): """Menu header interface""" header = TextLine(title="Menu header", required=False)
[docs]class IMenuItem(IViewlet): """Menu item interface A menu is a viewlet as well as a viewlets manager, containing sub-menus """ css_class = TextLine(title="CSS class", required=False) icon_class = TextLine(title="Icon CSS class", required=False) label = TextLine(title="Menu title", required=False) badge = TextLine(title="Badge text", required=False) badge_class = TextLine(title="Badge CSS class", required=False) notice = TextLine(title="Notice text", required=False) notice_class = TextLine(title="Notice CSS class", required=False) click_handler = TextLine(title="Menu click handler", required=False) url = TextLine(title="Menu link location", required=False, default=u'#') target = TextLine(title="Menu link window target", required=False) modal_target = Bool(title="Modal target", required=False, default=False) data = Dict(title="Menu data attributes", key_type=TextLine(), value_type=TextLine(), required=False) def get_url(self): """Get menu target URL""" def get_data_attributes(self): """Get data attributes"""
# # Breadcrumbs interfaces #
[docs]class IBreadcrumbs(Interface): """Main breadcrumbs interface""" items = Attribute("Breadcrumbs items iterator attribute")
[docs]class IBreadcrumbItem(Interface): """Breadcrumb item interface""" label = TextLine(title="Item label") view_name = TextLine(title="Link view name") css_class = TextLine(title="CSS class") url = Attribute("Link absolute target URL")
# # Extensions viewlet manager #
[docs]class IJSExtensionsViewletManager(IViewletManager): """Javascript extensions viewlet manager These extensions (like Google Analytics tracking code for example) can be included into layouts footer """
# # Activity viewlet manager #
[docs]class IActivityViewletManager(IViewletManager): """User activity viewlet manager""" header = TextLine(title="Initial header message") message = Text(title="Initial message") loading_text = TextLine(title="Tab loading text", default=_("&lt;i class=&#39;fa fa-refresh fa-spin&#39;&gt;&lt;/i&gt;")) refresh_handler = TextLine(title="Refresh button click handler", default="MyAMS.skin.refreshNotificationsPanel") def get_last_update(self): """Get last update time"""
[docs]class IActivityViewlet(IViewlet): """User activity panel viewlet""" name = TextLine(title="Tab input value") label = TextLine(title="Tab label") click_handler = TextLine(title="Tab click handler", required=False) url = TextLine(title="Tab content loading URL", required=False) def get_url(self): """Get menu target URL"""
# # Widget title extensions viewlet manager #
[docs]class IWidgetTitleViewletManager(IViewletManager): """Widget title viewlet manager"""
# # Toolbar viewlet manager #
[docs]class IToolbarViewletManager(IViewletManager): """Toolbar viewlet manager"""
[docs]class IToolbarViewlet(IViewlet): """Base interface for all toolbar viewlet"""
[docs]class IToolbarAction(IToolbarViewlet): """Toolbar action viewlet""" label = TextLine(title="Button label") label_css_class = TextLine(title="Label icon CSS class", default='fa fa-fw fa-plus') css_class = TextLine(title="Button CSS class", default='btn btn-xs btn-success') click_handler = TextLine(title="Button click handler", required=False) url = TextLine(title="Button target URL") modal_target = Bool(title="Modal target?", required=False, default=False) def get_url(self): """Get menu target URL"""
[docs]class IToolbarMenu(IToolbarAction): """Toolbar actions menu""" label_css_class = TextLine(title="Label icon CSS class", default='fa fa-fw fa-plus') css_class = TextLine(title="Button CSS class", default='btn btn-xs btn-primary dropdown-toggle') menu_css_class = TextLine(title="Menu CSS class", default='dropdown-menu pull-right')
[docs]class IToolbarAddingMenu(IToolbarMenu): """Toolbar adding actions menu"""
[docs]class ITableItemColumnActionsMenu(IViewletManager, IToolbarMenu): """Table item actions viewlet manager"""
[docs]class IToolbarActionItem(IToolbarAction): """Toolbar action menu item""" css_class = TextLine(title="Menu CSS class", default='') hint_gravity = TextLine(title="Hint gravity", default='sw') stop_propagation = Bool(title="Stop click event propagation", required=True, default=True)
[docs]class IToolbarMenuItem(IToolbarActionItem): """Toolbar menu item"""
[docs]class IContextActions(IViewletManager, IToolbarMenu): """Context actions viewlet manager""" css_class = TextLine(title="Button CSS class", default='btn btn-xs btn-default dropdown-toggle')