web/component.py
branchstable
changeset 6924 b88221afe491
parent 6907 449e5b46ed3d
child 6987 d62d4ba5ef3e
--- a/web/component.py	Mon Jan 31 17:24:05 2011 +0100
+++ b/web/component.py	Mon Jan 31 17:28:51 2011 +0100
@@ -399,6 +399,28 @@
     def domid(self):
         return domid(self.__regid__) + unicode(self.entity.eid)
 
+    def lazy_view_holder(self, w, entity, oid, registry='views'):
+        """add a holder and return an url that may be used to replace this
+        holder by the html generate by the view specified by registry and
+        identifier. Registry defaults to 'views'.
+        """
+        holderid = '%sHolder' % self.domid
+        w(u'<div id="%s"></div>' % holderid)
+        params = self.cw_extra_kwargs.copy()
+        params.pop('view', None)
+        params.pop('entity', None)
+        form = params.pop('formparams', {})
+        form['pageid'] = self._cw.pageid
+        if entity.has_eid():
+            eid = entity.eid
+        else:
+            eid = None
+            form['etype'] = entity.__regid__
+            form['tempEid'] = entity.eid
+        args = [json_dumps(x) for x in (registry, oid, eid, params)]
+        return self._cw.ajax_replace_url(
+            holderid, fname='render', arg=args, **form)
+
 
 # high level abstract classes ##################################################