# decorator to deflect calls on Plugin to its Prelude through self.page.prelude
def to_prelude (method):
def actual (self, *args, **kwds):
+ if not self.page: # jordan
+ return None
prelude_method=Prelude.__dict__[method.__name__]
return prelude_method(self.page.prelude,*args, **kwds)
return actual
# since domid is the key for storing that data in the browser storage space
# .. None : if not passed to __init__ at all, then the default_toggled() method is called
# .. : anything else, defaults to True
+ # . outline_complete: whether the overall plugin (body + toggle buttons/title) needs to receive
+ # a border and extra space
+ # . outline_body : same but for the plugin body only
+ # for these 2 outline_ flags, possible values mimick the above behaviour, i.e.:
+ # .. True: : outline is on
+ # .. False: : outline is off
+ # .. None: : calls default_outline_complete() on the plugin object
#
#### internal data
# . domid: created internally, but can be set at creation time if needed
# which will result in 'foo' being accessible to the template engine
#
def __init__ (self, page, title=None, domid=None,
- visible=True, togglable=None, toggled=None, **settings):
+ visible=True, togglable=None, toggled=None,
+ outline_complete=None, outline_body=None,
+ **settings):
self.page = page
# callers can provide their domid for css'ing
if not domid: domid=self.newdomid()
self.domid=domid
# title is shown when togglable
- if not title: title="Plugin title for %s"%domid
+ #if not title: title="Plugin title for %s"%domid
self.title=title
self.classname=self._py_classname()
self.plugin_classname=self._js_classname()
self.visible=visible
- if togglable is None: self.togglable=self.default_togglable()
- else: self.togglable=togglable
- if toggled is None: self.toggled=self.default_toggled()
- else: self.toggled=toggled
+ if togglable is None: self.togglable=self.default_togglable()
+ else: self.togglable=togglable
+ if toggled is None: self.toggled=self.default_toggled()
+ else: self.toggled=toggled
+ if outline_complete is None: self.outline_complete=self.default_outline_complete()
+ else: self.outline_complete=outline_complete
+ if outline_body is None: self.outline_body=self.default_outline_body()
+ else: self.outline_body=outline_body
# what comes from subclasses
for (k,v) in settings.iteritems():
setattr(self,k,v)
for (k,v) in self.__dict__.items(): print "dbg %s:%s"%(k,v)
print "%s init dbg .... END"%self.classname
# do this only once the structure is fine
- self.page.record_plugin(self)
+ if self.page: # I assume we can have a None page (Jordan)
+ self.page.record_plugin(self)
def __repr__ (self):
return "[%s]:%s"%(self.classname,self.domid)
self.need_spin=self.start_with_spin()
env.update(self.__dict__)
# translate high-level 'toggled' into 4 different booleans
+ self.need_toggle = False
if self.toggled=='persistent':
# start with everything turned off and let the js callback do its job
- env.update({'persistent_toggle':True,'display_hide_button':False,'display_show_button':False,'display_body':False})
+ env.update({'persistent_toggle':True,'display_hide_button':False,
+ 'display_show_button':False,'display_body':False})
elif self.toggled==False:
- env.update({'persistent_toggle':False,'display_hide_button':False,'display_show_button':True,'display_body':False})
+ env.update({'persistent_toggle':False,'display_hide_button':False,
+ 'display_show_button':True,'display_body':False})
else:
- env.update({'persistent_toggle':False,'display_hide_button':True,'display_show_button':False,'display_body':True})
+ env.update({'persistent_toggle':False,'display_hide_button':True,
+ 'display_show_button':False,'display_body':True})
if self.need_debug():
print "rendering plugin.html with env keys %s"%env.keys()
- print "rendering plugin.html with env"
for (k,v) in env.items():
if "display" in k or "persistent" in k: print k,'->',v
result = render_to_string ('plugin.html',env)
def template_file (self): return "undefined_template"
def template_env (self, request): return {}
- def default_togglable (self): return True
+ def default_togglable (self): return False
def default_toggled (self): return 'persistent'
+ def default_outline_complete (self):return False
+ def default_outline_body(self): return False
# # tell the framework about requirements (for the document <header>)
# # the notion of 'Media' in django provides for medium-dependant