Author: jmorliaguet Date: Mon May 8 16:52:27 2006 New Revision: 3078 Removed: cpsskins/branches/paris-sprint-2006/configuration/predicates/ Modified: cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.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 cpsskins/branches/paris-sprint-2006/ui/panels/element_editor.pt cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/element-editor.css
Log: - almost functional style editor Modified: cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js ============================================================================== --- cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js (original) +++ cpsskins/branches/paris-sprint-2006/lib/cpsskins/src/cpsskins.js Mon May 8 16:52:27 2006 @@ -2103,7 +2103,6 @@ render: function(data) { var url = data[this.url_field] - debug(url + ' ') if (!url) { return; } 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 Mon May 8 16:52:27 2006 @@ -23,16 +23,23 @@ } </ins> - <a tal:repeat="type widget_types" - tal:content="type" - tal:attributes="href string:javascript:CPSSkins.getModelById('style-editor').updateData({'widget': '$type'});" /> + <div class="inlineTabs"> + <a i18n:translate="" + tal:repeat="type widget_types" + tal:content="string:widget.$type" + tal:attributes="href string:javascript:CPSSkins.getModelById('style-editor').updateData({'widget': '$type', 'selector': ''});" /> + </div> <table width="100%"> <tr> - <td id="previewArea" width="50%" valign="top"> - <ins class="view" tal:content="python: view.getPreviewDef(id)" /> + <td width="50%" valign="top"> + <h3>Preview</h3> + <div id="previewArea"> + <ins class="view" tal:content="python: view.getPreviewDef(id)" /> + </div> </td> <td width="50%" valign="top"> + <h3>Style properties</h3> <ins class="view" tal:content="python: view.getFormDef(id)" /> </td> </tr> 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 Mon May 8 16:52:27 2006 @@ -1,9 +1,9 @@ -<form action="@@setFormData" method="post" onsubmit="return false"> +<form ctal:attributes="action javascript:style_path + '/@@setFormData'" + action="." method="post" onsubmit="return false"> <div ctal:content="selector">SELECTOR</div> <p ctal:repeat="f fields"> - <label ctal:content="f/label">LABEL</label> <input type="text" ctal:attributes="value f/value; name f/name" /> <span class="status" ctal:condition="f/status" 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 Mon May 8 16:52:27 2006 @@ -33,16 +33,14 @@ self.context = context self.request = request - self.session = ISession(self.request)['cpsskins'] - self.tmutil = getThemeManager(self.context) + self.session = ISession(request)['cpsskins'] + self.tmutil = getThemeManager(context) def renderPreview(self): """Render a style preview based on the specified widget. """ - session_data = self.session[u'style-editor-data'] - widget_type = session_data.get(u'widget', u'standard.plain_html') + widget_type = self.data.get(u'widget', u'standard.plain_html') widget = getUtility(configuration.IWidget, widget_type) - print widget_type return widget.view(None, None).renderPreview() def getModelDef(self, id): @@ -58,21 +56,21 @@ } }, 'data': { - 'url': '/++skin++cpsskins/%s/@@renderPreview' % style_path, + 'preview_url': '/++skin++cpsskins/%s/@@renderPreview' % \ + style_path, 'widget': '', 'selector': '', 'fields': [], + 'style_path': style_path, }, }) def getPreviewDef(self, id): - tmutil = getThemeManager(self.context) - style = tmutil.getElementById(id) - style_path = zapi.getPath(style) return json.write({ 'id': 'style-editor-preview', 'widget': { - 'type': 'panel' + 'type': 'panel', + 'url': 'preview_url', }, 'model': 'style-editor', 'controllers': ['style-editor-preview', 'main-editor-perspectives'], @@ -80,22 +78,21 @@ }) def getFormDef(self, id): - tmutil = getThemeManager(self.context) - style = tmutil.getElementById(id) - style_path = zapi.getPath(style) return json.write({ 'id': 'style-editor-form', 'widget': { - 'template': '/++skin++cpsskins/%s/@@style-editor-form.html' % \ - style_path, + 'template': '/++skin++cpsskins/@@style-editor-form.html', }, 'model': 'style-editor', - 'controllers': ['style-editor-form'], + 'controllers': ['style-editor-preview', 'main-editor-perspectives'], + 'perspectives': ['element-editor'], }) def setFormData(self): - session_data = self.session[u'style-editor-data'] - selector = session_data[u'selector'] + selector = self.data.get(u'selector') + if selector is None: + return + sel_data = self.context.get(selector) if sel_data is None: self.context[selector] = {} @@ -103,28 +100,46 @@ self.context[selector] = dict(self.request.form) def setData(self, data): - self.session[u'style-editor-data'] = json.read(data) + self.data = json.read(data) self.request.response.setHeader('content-type', 'text/x-json') - return data + return self.getData() def getData(self): - session_data = self.session[u'style-editor-data'] - selector = session_data[u'selector'] - - fields = [] - sel = self.context.get(selector, {}) - for f in u'color', u'background-color', u'padding', u'border': - fields.append({ - 'name': f, - 'label': f, - 'value': sel.get(f, u''), - 'disabled': False, - 'status': u'', - }) + selector = self.data.get(u'selector', u'') data = { - 'fields': fields, - 'widget': session_data[u'widget'], + 'widget': self.data[u'widget'], 'selector': selector, + 'fields': [], } + if selector: + fields = [] + sel = self.context.get(selector) + if sel is None: + self.context[sel] = sel = {} + for f in u'color', u'background-color', u'padding', u'border': + fields.append({ + 'name': f, + 'label': f, + 'value': sel.get(f, u''), + 'disabled': False, + 'status': u'', + }) + + data['fields'] = fields + self.request.response.setHeader('content-type', 'text/x-json') return json.write(data) + + ### Session ###################################################### + + def getSessionData(self): + try: + return self.session[u'style-editor-data'] + except KeyError: + self.session[u'style-editor-data'] = {} + return {} + + def setSessionData(self, data): + self.session[u'style-editor-data'] = data + + data = property(getSessionData, setSessionData) Modified: cpsskins/branches/paris-sprint-2006/ui/panels/element_editor.pt ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/panels/element_editor.pt (original) +++ cpsskins/branches/paris-sprint-2006/ui/panels/element_editor.pt Mon May 8 16:52:27 2006 @@ -16,8 +16,7 @@ content="title" /> </h1> - <p class="description" tal:define="description element/description|nothing" - tal:condition="description" + <p class="description" tal:define="description element/description|string:No description" tal:content="description" /> <div class="tabs"> Modified: cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/element-editor.css ============================================================================== --- cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/element-editor.css (original) +++ cpsskins/branches/paris-sprint-2006/ui/screens/elementeditor/element-editor.css Mon May 8 16:52:27 2006 @@ -47,3 +47,9 @@ border: 1px solid #999; padding: 0.2em; } + +div.inlineTabs a { + border: 1px solid #ccc; + background-color: #eee; + margin: 0.5em 0; +} -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins