Author: jmorliaguet Date: Wed Jun 7 20:25:51 2006 New Revision: 3349 Modified: cpsskins/branches/paris-sprint-2006/ui/screens/definitions.py cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/configure.zcml cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py cpsskins/branches/paris-sprint-2006/utils.py
Log: - element editor: using a client storage (cookies) to store current information. this is the only storage that's directly available both from the client and from the server without having to transfer data. Modified: cpsskins/branches/paris-sprint-2006/ui/screens/definitions.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/definitions.py (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/definitions.py Wed Jun 7 20:25:51 2006 @@ -22,6 +22,9 @@ # the element editor 'element-editor': { 'id': 'element-editor', + 'storage': { + 'type': 'local' + }, 'data': { 'url': '@@element-editor.html', 'css': '++resource++element-editor.css', Modified: cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/configure.zcml ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/configure.zcml (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/configure.zcml Wed Jun 7 20:25:51 2006 @@ -68,6 +68,7 @@ <pages for="*" + class=".views.ElementEditor" layer="cpsskins.browser.skin.cpsskins" permission="zope.ManageContent"> Modified: cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/views.py Wed Jun 7 20:25:51 2006 @@ -17,12 +17,14 @@ """ __docformat__ = "reStructuredText" +from urllib import quote, unquote from zope.formlib import form from zope.component import getMultiAdapter, getUtility from zope.location.pickling import locationCopy from zope.security.proxy import removeSecurityProxy from zope.traversing.api import getParent +from cpsskins import minjson as json from cpsskins.browser.negotiation.interfaces import INegotiation from cpsskins.browser.rendering.interfaces import IViewer from cpsskins.elements.interfaces import IDisplay, IFormat @@ -32,7 +34,30 @@ from cpsskins.setup.io import importSite, exportSite from cpsskins.setup.snapshot import Snapshot from cpsskins.storage.interfaces import IStorage -from cpsskins.utils import getThemeManager +from cpsskins.utils import getThemeManager, getClientStorageId + +class ElementEditor(object): + + def __init__(self, context, request): + self.context = context + self.request = request + self.storage_id = getClientStorageId(u'element-editor') + + def getData(self): + """Get data from a local storage. + """ + value = self.request.cookies.get(self.storage_id) + if value is not None: + return json.read(unquote(value)) + return None + + def setData(self, data): + """Set data in the local storage. + """ + value = quote(json.write(data)) + self.request.cookies.set(self.storage_id, value, path='/') + + data = property(getData, setData) class Form(object): """An edit form for elements. @@ -146,6 +171,7 @@ 'preview': preview, } + class Presets(object): def __init__(self, context, request): Modified: cpsskins/branches/paris-sprint-2006/utils.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/utils.py (original) +++ cpsskins/branches/paris-sprint-2006/utils.py Wed Jun 7 20:25:51 2006 @@ -54,6 +54,9 @@ def getRelationStorage(context=None, name=u''): return getThemeManager(context, name).getRelationStorage() +def getClientStorageId(id): + return u'cpsskins_local_storage_%s' % id + def addThemeSkeleton(context): # for testing purposes from cpsskins.elements.interfaces import IDisplayable, IFormattable -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins