25 from logilab.common.deprecation import class_renamed |
25 from logilab.common.deprecation import class_renamed |
26 from logilab.mtconverter import xml_escape |
26 from logilab.mtconverter import xml_escape |
27 |
27 |
28 from cubicweb import role |
28 from cubicweb import role |
29 from cubicweb.utils import json_dumps |
29 from cubicweb.utils import json_dumps |
|
30 from cubicweb.uilib import js |
30 from cubicweb.view import Component |
31 from cubicweb.view import Component |
31 from cubicweb.selectors import ( |
32 from cubicweb.selectors import ( |
32 paginated_rset, one_line_rset, primary_view, match_context_prop, |
33 paginated_rset, one_line_rset, primary_view, match_context_prop, |
33 partial_has_related_entities) |
34 partial_has_related_entities) |
34 |
35 |
141 params[self.stop_param] = stop |
142 params[self.stop_param] = stop |
142 view = self.cw_extra_kwargs.get('view') |
143 view = self.cw_extra_kwargs.get('view') |
143 if view is not None and hasattr(view, 'page_navigation_url'): |
144 if view is not None and hasattr(view, 'page_navigation_url'): |
144 url = view.page_navigation_url(self, path, params) |
145 url = view.page_navigation_url(self, path, params) |
145 elif path == 'json': |
146 elif path == 'json': |
146 rql = params.pop('rql', self.cw_rset.printable_rql()) |
147 url = self.ajax_page_url(**params) |
147 # latest 'true' used for 'swap' mode |
|
148 url = 'javascript: replacePageChunk(%s, %s, %s, %s, true)' % ( |
|
149 json_dumps(params.get('divid', 'pageContent')), |
|
150 json_dumps(rql), json_dumps(params.pop('vid', None)), |
|
151 json_dumps(params)) |
|
152 else: |
148 else: |
153 url = self._cw.build_url(path, **params) |
149 url = self._cw.build_url(path, **params) |
154 return url |
150 return url |
155 |
151 |
|
152 def ajax_page_url(self, **params): |
|
153 divid = params.setdefault('divid', 'pageContent') |
|
154 params.setdefault('rql', self.cw_rset.printable_rql()) |
|
155 return "javascript: $(%s).loadxhtml('json', %s, 'get', 'swap')" % ( |
|
156 json_dumps('#'+divid), js.ajaxFuncArgs('view', params)) |
|
157 |
156 def page_link(self, path, params, start, stop, content): |
158 def page_link(self, path, params, start, stop, content): |
157 url = xml_escape(self.page_url(path, params, start, stop)) |
159 url = xml_escape(self.page_url(path, params, start, stop)) |
|
160 # XXX hack to avoid opening a new page containing the evaluation of the |
|
161 # js expression on ajax call |
|
162 if url.startswith('javascript:'): |
|
163 url += '; noop();' |
158 if start == self.starting_from: |
164 if start == self.starting_from: |
159 return self.selected_page_link_templ % (url, content, content) |
165 return self.selected_page_link_templ % (url, content, content) |
160 return self.page_link_templ % (url, content, content) |
166 return self.page_link_templ % (url, content, content) |
161 |
167 |
162 def previous_link(self, path, params, content='<<', title=_('previous_results')): |
168 def previous_link(self, path, params, content='<<', title=_('previous_results')): |