Author: jmorliaguet Date: Wed May 10 13:44:57 2006 New Revision: 3094 Modified: cpsskins/branches/paris-sprint-2006/standard/filters/style/configure.zcml cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.js cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.pt cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor_form.ctal cpsskins/branches/paris-sprint-2006/standard/filters/style/views.py
Log: - misc fixes Modified: cpsskins/branches/paris-sprint-2006/standard/filters/style/configure.zcml ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/filters/style/configure.zcml (original) +++ cpsskins/branches/paris-sprint-2006/standard/filters/style/configure.zcml Wed May 10 13:44:57 2006 @@ -32,13 +32,13 @@ layer="cpsskins.browser.skin.cpsskins" /> <browser:pages - for="cpsskins.standard.formats.style.IStyle" + for="*" class=".views.StyleEditor" permission="zope.ManageContent"> <browser:page - name="renderPreview" - attribute="renderPreview" + name="renderStylePreview" + attribute="renderStylePreview" /> <browser:page @@ -47,13 +47,13 @@ /> <browser:page - name="getData" - attribute="getData" + name="getStyleData" + attribute="getStyleData" /> <browser:page - name="setData" - attribute="setData" + name="setStyleData" + attribute="setStyleData" /> </browser:pages> Modified: cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.js ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.js (original) +++ cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.js Wed May 10 13:44:57 2006 @@ -4,7 +4,9 @@ var target = info.target; target.style.backgroundColor = '#ffc'; var selector = getSelectorInContext(target, $('previewArea')); - CPSSkins.getModelById('style-editor').updateData({'selector': selector}); + var style_id = CPSSkins.getModelById('element-editor').getData().form.format; + + CPSSkins.getModelById('style-editor').updateData({'selector': selector, 'style_id': style_id}); } }); @@ -30,5 +32,6 @@ } // reverse the array selectors.reverse(); + selectors.shift(); return selectors.join(" "); } Modified: cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.pt ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.pt (original) +++ cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor.pt Wed May 10 13:44:57 2006 @@ -5,7 +5,9 @@ widget display/formattable:widget; widget_types widget/types"> - <ins class="model" tal:content="python: view.getModelDef(id)" /> + <tal:block content="context/identifier" /> + + <ins class="model" tal:content="python: view.getModelDef()" /> <ins class="controller"> {"id": "style-editor-preview", @@ -35,12 +37,12 @@ <td width="50%" valign="top"> <h3>Preview</h3> <div id="previewArea"> - <ins class="view" tal:content="python: view.getPreviewDef(id)" /> + <ins class="view" tal:content="python: view.getPreviewDef()" /> </div> </td> <td width="50%" valign="top"> <h3>Style properties</h3> - <ins class="view" tal:content="python: view.getFormDef(id)" /> + <ins class="view" tal:content="python: view.getFormDef()" /> </td> </tr> </table> Modified: cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor_form.ctal ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor_form.ctal (original) +++ cpsskins/branches/paris-sprint-2006/standard/filters/style/style_editor_form.ctal Wed May 10 13:44:57 2006 @@ -1,6 +1,5 @@ -<form ctal:attributes="action javascript:style_path + '/@@setFormData'" - ctal:condition="selector" - action="." method="post" onsubmit="return false"> +<form ctal:condition="selector" + action="@@setFormData" method="post" onsubmit="return false"> <div ctal:content="selector">SELECTOR</div> Modified: cpsskins/branches/paris-sprint-2006/standard/filters/style/views.py ============================================================================== --- cpsskins/branches/paris-sprint-2006/standard/filters/style/views.py (original) +++ cpsskins/branches/paris-sprint-2006/standard/filters/style/views.py Wed May 10 13:44:57 2006 @@ -40,37 +40,38 @@ self.session = ISession(request)['cpsskins'] self.tmutil = getThemeManager(context) - def renderPreview(self): + def renderStylePreview(self): """Render a style preview based on the specified widget. """ - widget_type = self.data.get(u'widget', u'standard.plain_html') + widget_type = self.data.get(u'widget') + if widget_type is None: + return u'' widget = getUtility(configuration.IWidget, widget_type) markup = widget.view(None, None).renderPreview() return utils.insertCSSClass(markup, utils.camelize(widget_type)) - def getModelDef(self, id): - style = self.tmutil.getElementById(id) - style_path = zapi.getPath(style) + def getModelDef(self): + path = zapi.getPath(self.context) return json.write({ 'id': 'style-editor', 'storage': { 'type': 'remote', 'accessors': { - 'get': '/++skin++cpsskins/%s/@@getData' % style_path, - 'set': '/++skin++cpsskins/%s/@@setData' % style_path, + 'get': '/++skin++cpsskins/%s/@@getStyleData' % path, + 'set': '/++skin++cpsskins/%s/@@setStyleData' % path, } }, 'data': { - 'preview_url': '/++skin++cpsskins/%s/@@renderPreview' % \ - style_path, + 'preview_url': '/++skin++cpsskins/%s/@@renderStylePreview' % \ + path, 'widget': '', 'selector': '', 'fields': [], - 'style_path': style_path, + 'style_id': '', }, }) - def getPreviewDef(self, id): + def getPreviewDef(self): return json.write({ 'id': 'style-editor-preview', 'widget': { @@ -82,11 +83,13 @@ 'perspectives': ['element-editor'], }) - def getFormDef(self, id): + def getFormDef(self): + path = zapi.getPath(self.context) return json.write({ 'id': 'style-editor-form', 'widget': { - 'template': '/++skin++cpsskins/@@style-editor-form.html', + 'template': '/++skin++cpsskins/%s/@@style-editor-form.html' % \ + path, }, 'model': 'style-editor', 'controllers': ['style-editor-preview', 'main-editor-perspectives'], @@ -94,38 +97,50 @@ }) def setFormData(self): - selector = self.data.get(u'selector') + data = self.data + selector = data.get(u'selector') + style_id = data.get(u'style_id') + style = self.tmutil.getElementById(style_id) + if selector is None: raise ValueError("The CSS selector is not set.") props = {} - for f in self.data[u'fields']: - name = f[u'name'] + for name in self.getFieldNames(): value = self.request.form.get(name) if value is None: continue props[name] = value - self.context[selector] = props + style[selector] = props - def setData(self, data): + def setStyleData(self, data): self.data = json.read(data) self.request.response.setHeader('content-type', 'text/x-json') - return self.getData() + return self.getStyleData() + + def getFieldNames(self): + return u'color', u'background-color', u'padding', u'border' + + def getStyleData(self): + data = self.data + selector = data.get(u'selector', u'') + widget = data.get(u'widget', u'') + style_id = data.get(u'style_id') + style = self.tmutil.getElementById(style_id) - def getData(self): - selector = self.data.get(u'selector', u'') data = { - 'widget': self.data[u'widget'], + 'widget': widget, 'selector': selector, 'fields': [], + 'style_id': style_id, } if selector: fields = [] - sel = self.context.get(selector) + sel = style.get(selector) if sel is None: - self.context[sel] = sel = {} - for f in u'color', u'background-color', u'padding', u'border': + style[sel] = sel = {} + for f in self.getFieldNames(): fields.append({ 'name': f, 'label': f, -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins