[silva.ui][Sylvain Viollon] Configure things in SMI too.

[email protected] Fri, 25 Oct 2013 15:57:13 +0200
Newsgroups gmane.comp.web.zope.silva.cvs
Message-ID <[email protected]>
author:    Sylvain Viollon
date:      Fri Oct 25 15:57:11 2013 +0200
revision:  667:aeb789930df5 in silva.ui
branch:    
details:   https://hg.infrae.com/silva.ui?cmd=changeset;node=aeb789930df5
modified:  src/silva/ui/interfaces.py src/silva/ui/service.py
added:     
removed:   
log:       Configure things in SMI too.


diffstat:

 src/silva/ui/interfaces.py |    4 +-
 src/silva/ui/service.py    |  117 +++++++++++++++++++++++++++++++-------------
 2 files changed, 86 insertions(+), 35 deletions(-)

diffs (203 lines):

diff -r c96ea95eae1f -r aeb789930df5 src/silva/ui/interfaces.py
--- a/src/silva/ui/interfaces.py	Tue Oct 22 17:29:00 2013 +0200
+++ b/src/silva/ui/interfaces.py	Fri Oct 25 15:57:11 2013 +0200
@@ -13,6 +13,7 @@
 
 from silva.core import conf as silvaconf
 from silva.core.interfaces import ISilvaLocalService
+from silva.core.interfaces import ISilvaConfigurableService
 from silva.core.conf import schema as silvaschema
 from silva.translations import translate as _
 
@@ -190,7 +191,8 @@
         required=False)
 
 
-class IUIService(IUIGenericSettings, IUIFolderSettings, ISilvaLocalService):
+class IUIService(IUIGenericSettings, IUIFolderSettings,
+                 ISilvaLocalService, ISilvaConfigurableService):
     """Configuration settings for the UI.
     """
     test_mode = Attribute("Activate test mode.")
diff -r c96ea95eae1f -r aeb789930df5 src/silva/ui/service.py
--- a/src/silva/ui/service.py	Tue Oct 22 17:29:00 2013 +0200
+++ b/src/silva/ui/service.py	Fri Oct 25 15:57:11 2013 +0200
@@ -9,6 +9,7 @@
 from silva.core.services.base import SilvaService
 from silva.ui.interfaces import IUIService, IPreviewResolution
 from silva.ui.interfaces import IUIGenericSettings, IUIFolderSettings
+from silva.ui.menu import MenuItem, ContentMenu
 from silva.translations import translate as _
 from zeam.form import silva as silvaforms
 
@@ -30,16 +31,16 @@
 
 
 class UIService(SilvaService):
-    meta_type = 'Silva UI Service'
+    meta_type = 'Silva SMI Service'
     grok.implements(IUIService)
     grok.name('service_ui')
     silvaconf.default_service()
     silvaconf.icon('service.png')
 
     manage_options = (
-        {'label': 'UI Generic settings',
+        {'label': 'SMI Generic settings',
          'action': 'manage_settings'},
-        {'label': 'UI Folder settings',
+        {'label': 'SMI Folder settings',
          'action': 'manage_folder_settings'},
         ) + SilvaService.manage_options
 
@@ -69,22 +70,15 @@
     folder_goto_menu = False
 
 
-class UIGenericSettings(silvaforms.ZMIForm):
-    """Update the settings.
-    """
-    grok.name('manage_settings')
-    grok.context(IUIService)
 
-    label = _(u"UI Generic Settings")
-    description = _(u"Here you can modify the generic SMI settings.")
-    ignoreContent = False
-    fields = silvaforms.Fields(IUIGenericSettings)
+class SaveUIGenericSettingsAction(silvaforms.Action):
+    identifier = 'save'
+    title = _('Save')
 
-    @silvaforms.action(u'Save')
-    def save(self):
-        data, errors = self.extractData()
+    def __call__(self, form):
+        data, errors = form.extractData()
         if errors:
-            self.status = _(u"Sorry, there were errors.")
+            form.status = _(u"Sorry, there were errors.")
             return silvaforms.FAILURE
         background = data['background']
         name = data['name']
@@ -97,48 +91,103 @@
         notifications_life = data['notifications_life']
         smi_access_root = data['smi_access_root']
         if notifications_life is not silvaforms.NO_VALUE:
-            self.context.notifications_life = notifications_life
+            form.context.notifications_life = notifications_life
         else:
-            self.context.notifications_life = 4000
+            form.context.notifications_life = 4000
         if background != silvaforms.NO_VALUE:
-            self.context.background = background
+            form.context.background = background
         else:
-            self.context.background = None
+            form.context.background = None
         if logo != silvaforms.NO_VALUE:
             if logo != silvaforms.NO_CHANGE:
-                self.context.logo = ZopeImage('logo', 'SMI Logo', logo)
+                form.context.logo = ZopeImage('logo', 'SMI Logo', logo)
         else:
-            self.context.logo = None
+            form.context.logo = None
         if maintenance_message is not silvaforms.NO_VALUE:
-            self.context.maintenance_message = maintenance_message
+            form.context.maintenance_message = maintenance_message
         else:
-            self.context.maintenance_message = None
+            form.context.maintenance_message = None
         if public_url is not silvaforms.NO_VALUE:
-            self.context.public_url = public_url
+            form.context.public_url = public_url
         else:
-            self.context.public_url = None
+            form.context.public_url = None
         if preview_url is not silvaforms.NO_VALUE:
-            self.context.preview_url = preview_url
+            form.context.preview_url = preview_url
         else:
-            self.context.preview_url = None
-        self.context.preview_use_resolutions = preview_use_resolutions
+            form.context.preview_url = None
+        form.context.preview_use_resolutions = preview_use_resolutions
         if preview_resolutions is silvaforms.NO_VALUE:
             preview_resolutions = []
-        self.context.preview_resolutions = preview_resolutions
-        self.context.smi_access_root = smi_access_root
-        self.context.name = name
-        self.status = _(u"Modification saved.")
+        form.context.preview_resolutions = preview_resolutions
+        form.context.smi_access_root = smi_access_root
+        form.context.name = name
+        form.status = _(u"Modification saved.")
         return silvaforms.SUCCESS
 
 
+class UIGenericSettings(silvaforms.ZMIForm):
+    """Update the settings.
+    """
+    grok.name('manage_settings')
+    grok.context(IUIService)
+
+    label = _(u"Generic SMI Settings")
+    description = _(u"Here you can modify the generic SMI settings.")
+    ignoreContent = False
+    fields = silvaforms.Fields(IUIGenericSettings)
+    actions = silvaforms.Actions(SaveUIGenericSettingsAction())
+
+
 class UIFolderSettings(silvaforms.ZMIForm):
     """Update the settings.
     """
     grok.name('manage_folder_settings')
     grok.context(IUIService)
 
-    label = _(u"UI Folder Settings")
+    label = _(u"Folder SMI Settings")
     description = _(u"Here you can modify the settings for folder listings.")
     ignoreContent = False
     fields = silvaforms.Fields(IUIFolderSettings)
     actions = silvaforms.Actions(silvaforms.EditAction())
+
+
+class UIGenericConfiguration(silvaforms.ConfigurationForm):
+    """Update the settings.
+    """
+    grok.name('admin')
+    grok.context(IUIService)
+
+    label = _(u"Generic SMI Settings")
+    description = _(u"Here you can modify the generic SMI settings.")
+    fields = silvaforms.Fields(IUIGenericSettings)
+    actions = silvaforms.Actions(
+        silvaforms.CancelAction(),
+        SaveUIGenericSettingsAction())
+
+
+class UIGenericSettingsMenu(MenuItem):
+    grok.adapts(ContentMenu, IUIService)
+    grok.order(10)
+    name = _('Generic SMI Settings')
+    screen = UIGenericConfiguration
+
+
+class UIFolderConfiguration(silvaforms.ConfigurationForm):
+    """Update the settings.
+    """
+    grok.name('admin-folder')
+    grok.context(IUIService)
+
+    label = _(u"SMI Folder Settings")
+    description = _(u"Here you can modify the settings for folder listings.")
+    fields = silvaforms.Fields(IUIFolderSettings)
+    actions = silvaforms.Actions(
+        silvaforms.CancelAction(),
+        silvaforms.EditAction())
+
+
+class UIFolderSettingsMenu(MenuItem):
+    grok.adapts(ContentMenu, IUIService)
+    grok.order(15)
+    name = _('Folder SMI Settings')
+    screen = UIFolderConfiguration