Author: jmorliaguet
Date: Thu Dec  8 14:35:27 2005
New Revision: 1993

Modified:
   cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py
   cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml
   cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt
   cpsskins/branches/jmo-perspectives/profiles/default/__init__.py
   cpsskins/branches/jmo-perspectives/setup/interfaces.py
   cpsskins/branches/jmo-perspectives/setup/manager.py
Log:

- implemented 'decustomize' setting

- updated the view to correctly display when a setting is global, local,
  customized

- added a 'reload setting' method to reload from the file-system
  (not implemented yet)



Modified: cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py  
(original)
+++ cpsskins/branches/jmo-perspectives/engines/sitedesigner/browser.py  Thu Dec 
 8 14:35:27 2005
@@ -24,6 +24,7 @@
 from zope.app.interface import queryType
 from zope.app.publisher.browser import BrowserView
 from zope.component import getUtilitiesFor, getUtility, getMultiAdapter
+from zope.component import queryUtility
 
 from cpsskins.setup.interfaces import (
     ISetting, IResourceType, IResource, IResourceManager,
@@ -45,11 +46,15 @@
         for name, setting in getUtilitiesFor(ISetting):
             resource = IResource(setting).getResource()
             resource_type = queryType(resource, IResourceType)
+            is_global = queryUtility(ISetting, name) is not None
+            readonly = setting.readonly
+            customized = is_global and not readonly
             info.setdefault(resource_type.getTaggedValue('name'), []).append({
                 'name': name,
                 'setting': setting,
                 'resource': resource,
-                'customized': False,
+                'customized': customized,
+                'readonly': readonly,
                 })
         return info
 
@@ -57,15 +62,24 @@
         if not name:
             raise KeyError("Must specify a setting's name.")
 
-        setting =  getUtility(ISetting, name)
         resources = getUtility(IResourceManager)
         resources.customize(name=name, context=self.context)
 
         target = self.request.get('HTTP_REFERER', '.')
         self.request.response.redirect(target)
 
+    def decustomizeSetting(self, name=u''):
+        if not name:
+            raise KeyError("Must specify a setting's name.")
+
+        resources = getUtility(IResourceManager)
+        resources.decustomize(name=name, context=self.context)
+
+        target = self.request.get('HTTP_REFERER', '.')
+        self.request.response.redirect(target)
+
     def exportSetting(self, name=u''):
-        """Export the setting as a zip file.
+        """Export the setting as an XML file.
         """
         context = self.context
         request = self.request
@@ -95,3 +109,12 @@
             'resource': resource_xml,
             }
 
+    def reloadSetting(self, name=u''):
+        """Reload the setting from the file-system
+        """
+
+        #TODO
+
+        target = self.request.get('HTTP_REFERER', '.')
+        self.request.response.redirect(target)
+

Modified: cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml
==============================================================================
--- cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml      
(original)
+++ cpsskins/branches/jmo-perspectives/engines/sitedesigner/configure.zcml      
Thu Dec  8 14:35:27 2005
@@ -41,10 +41,20 @@
     />
 
     <page
+        name="decustomizeSetting"
+        attribute="decustomizeSetting"
+    />
+
+    <page
         name="exportSetting"
         attribute="exportSetting"
     />
 
+    <page
+        name="reloadSetting"
+        attribute="reloadSetting"
+    />
+
   </pages>
 
 </configure>

Modified: 
cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt
==============================================================================
--- cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt    
(original)
+++ cpsskins/branches/jmo-perspectives/engines/sitedesigner/site_designer.pt    
Thu Dec  8 14:35:27 2005
@@ -47,10 +47,17 @@
             <ul tal:define="setting_info context/@@getSettingInfo">
               <li tal:repeat="info setting_info/?subsection|nothing">
                 <tal:block content="info/setting/title" />
-                <tal:block define="name info/name">
+                <tal:block define="name info/name;
+                                   readonly info/readonly;
+                                   customized info/customized">
                   <a tal:attributes="href string:@@customizeSetting?name=$name"
-                     tal:condition="info/setting/readonly">[customize]</a>
-                  <a tal:attributes="href 
string:@@exportSetting?name=$name">[export]</a>
+                     tal:condition="readonly">[customize]</a>
+                  <a tal:attributes="href 
string:@@decustomizeSetting?name=$name"
+                     tal:condition="customized">[remove customization]</a>
+                  <a tal:attributes="href string:@@exportSetting?name=$name"
+                     tal:condition="not:readonly">[export]</a>
+                  <a tal:attributes="href string:@@reloadSetting?name=$name"
+                     tal:condition="readonly">[reload]</a>
                 </tal:block>
               </li>
             </ul>

Modified: cpsskins/branches/jmo-perspectives/profiles/default/__init__.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/profiles/default/__init__.py     
(original)
+++ cpsskins/branches/jmo-perspectives/profiles/default/__init__.py     Thu Dec 
 8 14:35:27 2005
@@ -20,3 +20,4 @@
 from cpsskins.setup.registration import register
 
 register('cpsskins.profiles.default', 'perspectives.xml')
+register('cpsskins.profiles.default', 'New_style.xml')

Modified: cpsskins/branches/jmo-perspectives/setup/interfaces.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/interfaces.py      (original)
+++ cpsskins/branches/jmo-perspectives/setup/interfaces.py      Thu Dec  8 
14:35:27 2005
@@ -35,10 +35,7 @@
         description=u"The setting's title",
         )
 
-    readonly = Bool(
-        title=u"Read-only",
-        description=u"The setting is read-only",
-        )
+    readonly = Attribute("Read-only setting")
 
     resource = Attribute("The resource.")
 

Modified: cpsskins/branches/jmo-perspectives/setup/manager.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/setup/manager.py (original)
+++ cpsskins/branches/jmo-perspectives/setup/manager.py Thu Dec  8 14:35:27 2005
@@ -19,7 +19,9 @@
 
 from copy import deepcopy
 
+from zope.app import zapi
 from zope.app.component.interfaces.registration import ActiveStatus
+from zope.app.component.interfaces.registration import InactiveStatus
 from zope.app.component.site import UtilityRegistration
 from zope.app.container.interfaces import INameChooser
 from zope.interface import implements
@@ -41,7 +43,6 @@
     def register(self, name=u'', title=u'', resource=None, context=None):
         """Register the setting as a utility.
         """
-
         # register as a global utility
         if context is None:
             setting = Setting(title=title, resource=resource, readonly=True)
@@ -59,6 +60,27 @@
             settings.registrationManager.addRegistration(reg)
             reg.status = ActiveStatus
 
+    def unregister(self, name=u'', context=None):
+        """Unregister the setting.
+        """
+        if not name:
+            raise KeyError("Must specify a resource name.")
+
+        if context is None:
+            raise ValueError("Must specify a context.")
+
+        setting = queryUtility(ISetting, name, context=self.context)
+        if setting is None:
+            raise ValueError("No such setting.")
+
+        settings = getUtility(ISettings, context=context)
+        regManager = settings.registrationManager
+        for reg in list(regManager.values()):
+            if reg.provided.isOrExtends(ISetting) and name == reg.name:
+                reg.status = InactiveStatus
+                del regManager[zapi.name(reg)]
+                del settings[name]
+
     def lookup(self, name=u'', context=None, default=None):
         if not name:
             raise KeyError("Must specify a resource name.")
@@ -100,3 +122,15 @@
         self.register(name=name, title=setting.title, resource=resource,
                       context=context)
 
+    def decustomize(self, name=u'', context=None):
+        if not name:
+            raise KeyError("Must specify a resource name.")
+
+        if context is None:
+            raise ValueError("Must specify a context.")
+
+        if queryUtility(ISetting, name) is None:
+            raise ValueError("No such customized setting.")
+
+        self.unregister(name=name, context=context)
+
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to