class ServerTimezonePropertiesEditForm(AdminModalEditForm): """Server timezone properties edit form""" title = _("Server timezone") legend = _("Properties") fields = Fields(IServerTimezone) _edit_permission = MANAGE_SYSTEM_PERMISSION
class NavigationAlertMessage(AlertMessage): """Navigation alert message""" status = 'danger' icon_class = 'fas fa-exclamation-triangle' header = _("Warning!") _message = _( """Removing navigation menus will also remove access to this form...""" )
class SearchForm(AdminAddForm): """Base search form""" title = _("Search form") legend = _("Search criteria") fields = Fields(ISearchInfo) buttons = Buttons(ISearchButtons) ajax_form_handler = 'search-results.html' ajax_form_target = '#search-results'
class ZMIConfigurationForm(AdminEditForm): """ZMI configuration form""" title = _("ZMI configuration") legend = _("Interface configuration") fields = Fields(IZMIConfiguration).select('site_name', 'home_name', 'application_name', 'application_package', 'inner_package_name', 'inner_package', 'environment', 'myams_bundle', 'favicon') def get_content(self): return IZMIConfiguration(self.context)
class EnvironmentVariablesView(InnerTableAdminView, ViewContentProvider): """Environment view""" table_class = EnvironmentTable table_label = _("Environment variables") hide_section = True weight = 20
class EnvironmentNameColumn(NameColumn): """Environment name column""" i18n_header = _("Variable name") weight = 10 def get_value(self, obj): """Value getter""" return obj
class PackagesVersionsView(InnerTableAdminView, ViewContentProvider): """Packages versions view""" table_class = PackagesVersionsTable table_label = _("Packages versions") hide_section = True weight = 10
class ConfigurationView(InnerTableAdminView, ViewContentProvider): """Packages versions view""" table_class = ConfigurationTable table_label = _("Configuration settings") hide_section = True weight = 30
class UserSkinPropertiesEditForm(AdminEditForm): """User skin properties edit form""" title = _("Graphic theme") def __init__(self, context, request): super().__init__(context, request) if not IUserSkinnable(context).can_inherit_skin: alsoProvides(self, IUserSkinPropertiesForm)
class ConfigurationNameColumn(NameColumn): """Setting name column""" i18n_header = _("Setting name") weight = 10 def get_value(self, obj): """Value getter""" return obj
class EnvironmentValueColumn(NameColumn): """Environment value column""" i18n_header = _("Value") weight = 20 def get_value(self, obj): """Value getter""" environ = self.table.environ return environ.get(obj)
class PackagePathColumn(NameColumn): """Package path column""" i18n_header = _("Path") weight = 30 def get_value(self, obj): """Value getter""" environment = self.table.values return environment[obj][0].location
class PackageVersionColumn(NameColumn): """Package version column""" i18n_header = _("Version") weight = 20 def get_value(self, obj): """Value getter""" environment = self.table.values return environment[obj][0].version
class ZMIConfigurationMiscGroup(Group): """ZMI configuration misc fields""" legend = _("Custom extensions") fields = Fields(IZMIConfiguration).select('custom_stylesheet', 'base_body_css_class', 'custom_script') weight = 50
class ConfigurationValueColumn(NameColumn): """Setting value column""" i18n_header = _("Value") weight = 20 def get_value(self, obj): """Value getter""" settings = self.table.values return settings.get(obj)
class PackagesNameColumn(NameColumn): """Package name column""" i18n_header = _("Package name") weight = 10 def get_value(self, obj): """Value getter""" environment = self.table.values return environment[obj][0].project_name
class IZMIConfiguration(Interface): """Static management configuration interface""" site_name = TextLine(title=_("Site name"), default='PyAMS website', required=False) home_name = I18nTextLineField(title=_("Home name"), description=_("Label used to get access to site's root in " "breadcrumbs link"), required=False) application_name = TextLine(title=_("Application name"), default='PyAMS', required=False) application_package = TextLine(title=_("Application package"), description=_("Name of the main package used to get " "application version"), default='pyams_zmi', required=False) inner_package_name = TextLine(title=_("Secondary name"), required=False) inner_package = TextLine(title=_("Secondary package"), description=_("Name of the secondary package used to complete " "application version"), required=False) environment = TextLine(title=_("Environment name"), description=_("Short text used to describe runtime environment"), required=False) version = Attribute("Application version") myams_bundle = Choice(title=_("MyAMS bundle"), description=_("MyAMS bundle used by the application"), vocabulary=MYAMS_BUNDLES_VOCABULARY, default='full') favicon = ImageField(title=_("Icon"), description=_("Favorites icon"), required=False) include_header = Bool(title=_("Include header"), required=False, default=True) fixed_header = Bool(title=_("Fixed header"), description=_("If selected, the header will not scroll but will stay " "fixed at the top of the screen"), required=False, default=True) logo = ImageField(title=_("Logo image"), description=_("SVG or bitmap image used as logo"), required=False) include_site_search = Bool(title=_("Include site search"), description=_("Include a global site search access link " "in page header"), required=False, default=False) site_search_placeholder = I18nTextLineField(title=_("Site search placeholder"), required=False) site_search_handler = TextLine(title=_("Site search handler"), required=False, default='#search.html') include_menus = Bool(title=_("Include navigation menus"), required=False, default=True) include_minify_button = Bool(title=_("Include minify buttons"), description=_("If selected, this will provide features to " "reduce or hide navigation menus"), required=True, default=True) fixed_navigation = Bool(title=_("Fixed menus"), required=True, default=False) accordion_menus = Bool(title=_("Accordion menus"), description=_("If selected, only one navigation menu can be opened " "at a given time"), required=True, default=True) include_ribbon = Bool(title=_("Include ribbon"), description=_("Display breadcrumbs ribbon?"), required=False, default=True) fixed_ribbon = Bool(title=_("Fixed ribon"), description=_("If selected, the ribbon will not scroll but will stay " "fixed at the top of the page"), required=True, default=True) base_body_css_class = TextLine(title=_("Base body CSS class"), required=False) body_css_class = Attribute("HTML body CSS class") custom_stylesheet = FileField(title=_("Custom stylesheet"), description=_("Custom stylesheet used to override or extend " "default MyAMS management skin"), required=False) custom_script = FileField(title=_("Custom script"), description=_("Custom javascript used to override or extend " "default MyAMS modules"), required=False)
from zope.schema import Bool, Choice, TextLine from zope.schema.vocabulary import SimpleTerm, SimpleVocabulary from myams_js import emerald_core_svg_bundle, emerald_mini_svg_bundle, myams_core_svg_bundle, \ myams_full_bundle, myams_mini_svg_bundle from pyams_file.schema import FileField, ImageField from pyams_i18n.schema import I18nTextLineField __docformat__ = 'restructuredtext' from pyams_zmi import _ MYAMS_BUNDLES = OrderedDict(( ('full', (myams_full_bundle, _("MyAMS full bundle"))), ('mini+svg', (myams_mini_svg_bundle, _("MyAMS mini bundle (with SVG icons)"))), ('core+svg', (myams_core_svg_bundle, _("MyAMS core bundle (with SVG icons)"))), ('emerald-mini', (emerald_mini_svg_bundle, _("Emerald mini bundle (with SVG icons)"))), ('emerald-core', (emerald_core_svg_bundle, _("Emerald core bundle (with SVG icons)"))) )) MYAMS_BUNDLES_VOCABULARY = SimpleVocabulary( [SimpleTerm(k, title=v[1]) for k, v in MYAMS_BUNDLES.items()]) class IZMIConfiguration(Interface): """Static management configuration interface""" site_name = TextLine(title=_("Site name"), default='PyAMS website',
class UtilitiesView(TableAdminView): """Utilities view""" title = _("Control panel") table_class = UtilitiesTable table_label = _("Site utilities")
class UtilitiesMenuItem(NavigationMenuItem): """Utilities menu item""" label = _("Utilities") icon_class = 'fab fa-codepen' href = '#utilities.html'
def legend(self): if IUserSkinnable(self.context).can_inherit_skin: return None return _("Skin properties")
class ActionsViewletManager(DropdownMenu): """Custom actions menu""" label = _("Actions") css_class = 'btn-sm'
class UserSkinnablePropertiesMenuItem(NavigationMenuItem): """User skin properties menu""" label = _("Graphic theme") href = '#user-skin-properties.html'
class ConfigurationMenu(NavigationMenuItem): """Configuration menu""" label = _("Configuration") icon_class = 'fas fa-sliders-h'
class EnvironmentView(MultipleTablesAdminView): """Environment view""" table_label = _("Application runtime environment")
class EnvironmentMenu(NavigationMenuItem): """Environment menu""" label = _("Environment") href = '#environment.html'
class ZMIConfigurationMenu(NavigationMenuItem): """ZMI configuration menu""" label = _("ZMI configuration") href = '#zmi-configuration.html'
class LogoutMenuItem(MenuItem): """Logout menu item""" icon_class = 'fa fa-sign-out-alt' label = _("Logout") href = 'logout'
class AdminSkin: """PyAMS administration skin""" label = _("PyAMS management skin") layer = IAdminLayer
class ContentManagementMenu(NavigationMenu): """Content management menu""" _header = _("Content management")