Author: jmorliaguet
Date: Sat Apr  8 16:32:29 2006
New Revision: 2790

Added:
   cpsskins/branches/jmo-perspectives/standard/io/setting.py   (contents, props 
changed)
   cpsskins/branches/jmo-perspectives/standard/io/setting.xml   (contents, 
props changed)
   cpsskins/branches/jmo-perspectives/standard/io/setting.zcml   (contents, 
props changed)
Modified:
   cpsskins/branches/jmo-perspectives/standard/io/configure.zcml
   cpsskins/branches/jmo-perspectives/ui/panels/io.pt
   cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml
   cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py
Log:

- added a setting exporter



Modified: cpsskins/branches/jmo-perspectives/standard/io/configure.zcml
==============================================================================
--- cpsskins/branches/jmo-perspectives/standard/io/configure.zcml       
(original)
+++ cpsskins/branches/jmo-perspectives/standard/io/configure.zcml       Sat Apr 
 8 16:32:29 2006
@@ -7,6 +7,8 @@
 
   <include file="boxgroup.zcml" />
 
+  <include file="color.zcml" />
+
   <include file="effect.zcml" />
 
   <include file="layout.zcml" />
@@ -17,7 +19,7 @@
 
   <include file="style.zcml" />
 
-  <include file="color.zcml" />
+  <include file="setting.zcml" />
 
   <include file="storage.zcml" />
 

Added: cpsskins/branches/jmo-perspectives/standard/io/setting.py
==============================================================================
--- (empty file)
+++ cpsskins/branches/jmo-perspectives/standard/io/setting.py   Sat Apr  8 
16:32:29 2006
@@ -0,0 +1,73 @@
+##############################################################################
+#
+# Copyright (c) 2005-2006 Nuxeo and Contributors.
+# 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.
+#
+##############################################################################
+"""
+
+$Id$
+"""
+__docformat__ = "reStructuredText"
+
+from xml.dom.minidom import parseString
+
+from zope.app import pagetemplate
+from zope.app.interface import queryType
+from zope.component import adapts, getMultiAdapter
+from zope.interface import implements
+
+from cpsskins.setup.interfaces import IDataExporter, IDataImporter
+from cpsskins.setup.interfaces import IResource, ISetting, IResourceType
+
+class Exporter(object):
+    """Export settings
+    """
+    implements(IDataExporter)
+
+    template = pagetemplate.ViewPageTemplateFile('setting.xml')
+
+    def __call__(self):
+        return self.template()
+
+    def getInfo(self):
+        context = self.context
+        request = self.request
+
+        resource = IResource(context).getResource()
+        resource_type = queryType(resource, IResourceType)
+
+        # export the resource
+        exporter = getMultiAdapter((resource, request), IDataExporter)
+        # remove the xml header used in the resource
+        resource_xml = exporter().replace('<?xml version="1.0"?>', '')
+
+        return {
+            'name': context.name,
+            'title': context.title,
+            'content': resource_xml,
+            }
+
+
+class Importer(object):
+    """Import settings
+    """
+    adapts(ISetting)
+    implements(IDataImporter)
+
+    def __init__(self, context):
+        self.context = context
+
+    def load(self, xml=u''):
+        context = self.context
+        dom = parseString(xml)
+        # TODO
+        print dom
+

Added: cpsskins/branches/jmo-perspectives/standard/io/setting.xml
==============================================================================
--- (empty file)
+++ cpsskins/branches/jmo-perspectives/standard/io/setting.xml  Sat Apr  8 
16:32:29 2006
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<setting xmlns:tal="http://xml.zope.org/namespaces/tal";
+       tal:define="info view/getInfo"
+       tal:attributes="name info/name; title info/title"
+       tal:content="structure info/content" />

Added: cpsskins/branches/jmo-perspectives/standard/io/setting.zcml
==============================================================================
--- (empty file)
+++ cpsskins/branches/jmo-perspectives/standard/io/setting.zcml Sat Apr  8 
16:32:29 2006
@@ -0,0 +1,18 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope";
+    xmlns:browser="http://namespaces.zope.org/browser";>
+
+  <!-- XML export -->
+  <browser:view
+      provides="cpsskins.setup.interfaces.IDataExporter"
+      for="cpsskins.setup.interfaces.ISetting"
+      class=".setting.Exporter"
+      permission="zope.ManageContent"
+  />
+
+  <!-- XML import -->
+  <adapter
+      factory=".setting.Importer"
+  />
+
+</configure>

Modified: cpsskins/branches/jmo-perspectives/ui/panels/io.pt
==============================================================================
--- cpsskins/branches/jmo-perspectives/ui/panels/io.pt  (original)
+++ cpsskins/branches/jmo-perspectives/ui/panels/io.pt  Sat Apr  8 16:32:29 2006
@@ -5,6 +5,7 @@
   <span class="description">export, import themes and settings ...</span>
 
   <ul>
+    <li><a href="@@exportSettings">Export settings</a></li>
     <li><a href="@@exportStorage?name=relations">Export relations</a></li>
     <li><a href="@@exportStorage?name=portlets">Export portlets</a></li>
     <li><a href="@@exportStorage?name=formats">Export formats</a></li>

Modified: 
cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml
==============================================================================
--- cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml    
(original)
+++ cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/configure.zcml    
Sat Apr  8 16:32:29 2006
@@ -58,6 +58,11 @@
     />
 
     <page
+        name="exportSettings"
+        attribute="exportSettings"
+    />
+
+    <page
         name="exportStorage"
         attribute="exportStorage"
     />

Modified: cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py
==============================================================================
--- cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py  
(original)
+++ cpsskins/branches/jmo-perspectives/ui/screens/sitemanager/views.py  Sat Apr 
 8 16:32:29 2006
@@ -29,10 +29,10 @@
 from cpsskins.setup.registration import reloadSetting, refreshSettings
 from cpsskins.utils import getThemeManager
 
-setting_xml = """<?xml version="1.0"?>
-<setting name="%(name)s" title="%(title)s">
-  %(resource)s
-</setting>
+settings_xml = """<?xml version="1.0"?>
+<settings>
+  %(content)s
+</settings>
 """
 
 class SiteDesignerView(BrowserView):
@@ -86,7 +86,7 @@
         if not name:
             raise KeyError("Must specify a setting's name.")
 
-        setting =  getUtility(ISetting, name)
+        setting = getUtility(ISetting, name)
         resource = IResource(setting).getResource()
         resource_type = queryType(resource, IResourceType)
 
@@ -98,16 +98,8 @@
         response.setHeader('Content-disposition',
                            'attachment; filename=%s' % setting_filename)
 
-        # export the resource
-        exporter = getMultiAdapter((resource, request), IDataExporter)
-        # remove the xml header used in the resource
-        resource_xml = exporter().replace('<?xml version="1.0"?>', '')
-
-        return setting_xml % {
-            'name': name,
-            'title': setting.title,
-            'resource': resource_xml,
-            }
+        exporter = getMultiAdapter((setting, request), IDataExporter)
+        return exporter()
 
     def reloadSetting(self, name=u''):
         """Reload the setting from the file-system
@@ -119,6 +111,26 @@
         """
         refreshSettings()
 
+    def exportSettings(self):
+        """Export the storage as an XML file.
+        """
+        context = self.context
+        request = self.request
+
+        settings_filename = u'settings.xml'
+
+        response = request.response
+        response.setHeader('content-type', 'text/xml')
+        response.setHeader('Content-disposition',
+                           'attachment; filename=%s' % settings_filename)
+        xml = u''
+        for name, setting in getUtilitiesFor(ISetting, context=context):
+            exporter = getMultiAdapter((setting, request), IDataExporter)
+            xml += exporter().replace('<?xml version="1.0"?>', '')
+
+        return settings_xml % {'content': xml}
+
+
     ###################################################################
     # Storage
     ###################################################################
-- 
http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins

Reply via email to