add a notion of 'active' in Composite, used in rendering Tabs for now
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 21 Dec 2012 08:57:41 +0000 (09:57 +0100)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 21 Dec 2012 08:57:41 +0000 (09:57 +0100)
engine/composite.py
engine/plugin.py
engine/views.py
plugins/templates/tabs.html

index 69953f7..31b868f 100644 (file)
@@ -2,26 +2,32 @@ from engine.plugin import Plugin
 
 class Composite (Plugin):
 
-    def __init__ (self, sons=[], *args, **kwds):
+    def __init__ (self, sons=[], active=None, *args, **kwds):
         Plugin.__init__ (self, *args, **kwds)
         self.sons=sons
+        self.active=active
         
     def insert (self, plugin):
         self.sons.append(plugin)
 
+    # xxx currently there is no guarantee that exactly one son will be active
     def template_env (self, request):
         # this is designed so as to support a template like
         # {% for son in sons %} {{ son.rendered }} ...
+        def is_active (son):
+            print 'comparing >%s< and >%s<'%(son.name,self.active)
+            return son.name==self.active
         ranks=range(len(self.sons))
-        return { 'sons': 
+        env = { 'sons':
                  [ { 'rendered': son.render(request),
+                     'rank': rank,
+                     'active': is_active(son),
+                     # this should probably come from son._settings..
                      'title': son.title,
+                     'name': son.name,
                      'uuid': son.uuid,
                      'classname': son.classname,
-                     'rank': rank}
+                     }
                    for (son,rank) in zip(self.sons,ranks) ]}
+        return env
 
-    # xxx need a way to select an active son, like e.g.
-    # Composite (active='some string')
-    # and we could then try to find that string in either title or uuid or some other place
-    # in which case the corresponding 'son' entry in template_env above would son.active=True
index b69d098..fd49965 100644 (file)
@@ -14,7 +14,7 @@ from engine.prelude import Prelude
 # . [ 'SliceList', 'TabbedView' ] : to debug these classes
 # . True : to debug all plugin
 
-DEBUG= [ 'SliceList' ]
+DEBUG= [ 'Tabs' ]
 
 class Plugin:
 
@@ -143,8 +143,8 @@ class Plugin:
             print "%s.render_content: BEG --------------------"%self.classname
             print "template=%s"%template
             print "env.keys=%s"%env.keys()
-            print "env=%s"%env
-            print result
+            #print "env=%s"%env
+            #print result
             print "%s.render_content: END --------------------"%self.classname
         return result
 
index 59a2e46..96dfa66 100644 (file)
@@ -28,11 +28,15 @@ def test_plugin_view (request):
                                               foo='the value for foo',
                                               with_datatables=True),
                                   Tabs (title='Sample Tabs',name='tabs1',
+                                        active='raw1',
                                         sons = [ Raw (title='a raw plugin',name='raw1',
+                                                      hidable=False,
                                                       html= 3*lorem_p),
                                                  SliceList(title='a slice list',name='slicelist-main',
+                                                           hidable=False,
                                                            list=hard_wired_slice_names),
-                                                 Raw (title='raw title',name='raw2',html=lorem) ]),
+                                                 Raw (title='raw title',name='raw2',
+                                                      hidable=False,html=lorem) ]),
                                   SimpleList (title='SimpleList with slice names', 
                                               name='simplelist2',
                                               list=hard_wired_slice_names,
index c9d792a..fe50e1f 100644 (file)
@@ -6,7 +6,7 @@
 </ul><!--nav-tabs-->
 <div class="tab-content">
 {% for son in sons %}
-<div class="tab-pane fade in" id="{{ son.uuid }}">
+<div class="tab-pane fade in{% if son.active %} active{% endif %}" id="{{ son.uuid }}">
 {{ son.rendered }}
 </div><!--tab-pane-->
 {% endfor %}