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