[navigation] use add_onload instead of inline javascript href stable
authorJulien Cristau <julien.cristau@logilab.fr>
Tue, 11 Feb 2014 13:50:29 +0100
branchstable
changeset 9525 8f3e963501e2
parent 9524 c4581bc582e1
child 9526 be595b56964b
[navigation] use add_onload instead of inline javascript href This way our javascript code isn't thrown out by the html cleaner e.g. when using the rql rest directive and a table view. Closes #3501626
web/component.py
web/views/navigation.py
--- a/web/component.py	Wed Feb 05 15:50:36 2014 +0100
+++ b/web/component.py	Tue Feb 11 13:50:29 2014 +0100
@@ -122,9 +122,9 @@
 
     def ajax_page_url(self, **params):
         divid = params.setdefault('divid', 'pageContent')
+        params['fname'] = 'view'
         params['rql'] = self.cw_rset.printable_rql()
-        return js_href("$(%s).loadxhtml(AJAX_PREFIX_URL, %s, 'get', 'swap')" % (
-            json_dumps('#'+divid), js.ajaxFuncArgs('view', params)))
+        return self._cw.build_url('ajax', **params)
 
     def page_link(self, path, params, start, stop, content):
         url = xml_escape(self.page_url(path, params, start, stop))
--- a/web/views/navigation.py	Wed Feb 05 15:50:36 2014 +0100
+++ b/web/views/navigation.py	Tue Feb 11 13:50:29 2014 +0100
@@ -55,6 +55,7 @@
 from logilab.mtconverter import xml_escape
 from logilab.common.deprecation import deprecated
 
+from cubicweb.utils import json_dumps
 from cubicweb.predicates import (paginated_rset, sorted_rset,
                                 adaptable, implements)
 from cubicweb.uilib import cut
@@ -281,6 +282,13 @@
     nav = req.vreg['components'].select_or_none(
         'navigation', req, rset=rset, page_size=page_size, view=view)
     if nav:
+        domid = getattr(view, 'domid', 'pageContent')
+        view._cw.add_onload('''
+        jQuery('div.displayAllLink a, div.pagination a').click(function() {
+            cw.jqNode(%s).loadxhtml(this.href, null, 'get', 'swap');
+            return false;
+        });
+            ''' % json_dumps(domid))
         if w is None:
             w = view.w
         if req.form.get('__force_display'):