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

Reply via email to