web/views/facets.py
changeset 2293 7ded2a1416e4
parent 2234 1fbcf202882d
parent 2283 dc13ec07a70a
child 2381 caad2367d940
equal deleted inserted replaced
2235:d5987f75c97c 2293:7ded2a1416e4
    39     roundcorners = True
    39     roundcorners = True
    40 
    40 
    41     needs_css = 'cubicweb.facets.css'
    41     needs_css = 'cubicweb.facets.css'
    42     needs_js = ('cubicweb.ajax.js', 'cubicweb.formfilter.js')
    42     needs_js = ('cubicweb.ajax.js', 'cubicweb.formfilter.js')
    43 
    43 
       
    44     bkLinkBox_template = u'<div class="facetTitle">%s</div>'
       
    45 
    44     def facetargs(self):
    46     def facetargs(self):
    45         """this method returns the list of extra arguments that should
    47         """this method returns the list of extra arguments that should
    46         be used by the facet
    48         be used by the facet
    47         """
    49         """
    48         return {}
    50         return {}
    78                     wdg = facet.get_widget()
    80                     wdg = facet.get_widget()
    79                     if wdg is not None:
    81                     if wdg is not None:
    80                         widgets.append(wdg)
    82                         widgets.append(wdg)
    81             if not widgets:
    83             if not widgets:
    82                 return
    84                 return
       
    85             self.displayBookmarkLink(rset)
    83             w = self.w
    86             w = self.w
    84             eschema = self.schema.eschema('Bookmark')
       
    85             if eschema.has_perm(req, 'add'):
       
    86                 bk_path = 'view?rql=%s' % rset.printable_rql()
       
    87                 bk_title = req._('my custom search')
       
    88                 linkto = 'bookmarked_by:%s:subject' % self.req.user.eid
       
    89                 bk_add_url = self.build_url('add/Bookmark', path=bk_path, title=bk_title, __linkto=linkto)
       
    90                 bk_base_url = self.build_url('add/Bookmark', title=bk_title, __linkto=linkto)
       
    91                 w(u'<div class="facetTitle"><a cubicweb:target="%s" id="facetBkLink" href="%s">%s</a></div>' % (
       
    92                     html_escape(bk_base_url),
       
    93                     html_escape(bk_add_url),
       
    94                     req._('bookmark this search')))
       
    95             w(u'<form method="post" id="%sForm" cubicweb:facetargs="%s" action="">'  % (
    87             w(u'<form method="post" id="%sForm" cubicweb:facetargs="%s" action="">'  % (
    96                 divid, html_escape(dumps([divid, vid, paginate, self.facetargs()]))))
    88                 divid, html_escape(dumps([divid, vid, paginate, self.facetargs()]))))
    97             w(u'<fieldset>')
    89             w(u'<fieldset>')
    98             hiddens = {'facets': ','.join(wdg.facet.id for wdg in widgets),
    90             hiddens = {'facets': ','.join(wdg.facet.id for wdg in widgets),
    99                        'baserql': baserql}
    91                        'baserql': baserql}
   106             w(u'</fieldset>\n</form>\n')
    98             w(u'</fieldset>\n</form>\n')
   107         finally:
    99         finally:
   108             rqlst.recover()
   100             rqlst.recover()
   109             import cubicweb
   101             import cubicweb
   110             cubicweb.info('after facets with rql: %s' % repr(rqlst))
   102             cubicweb.info('after facets with rql: %s' % repr(rqlst))
       
   103 
       
   104     def displayBookmarkLink(self, rset):
       
   105         eschema = self.schema.eschema('Bookmark')
       
   106         if eschema.has_perm(self.req, 'add'):
       
   107             bk_path = 'view?rql=%s' % rset.printable_rql()
       
   108             bk_title = self.req._('my custom search')
       
   109             linkto = 'bookmarked_by:%s:subject' % self.req.user.eid
       
   110             bk_add_url = self.build_url('add/Bookmark', path=bk_path, title=bk_title, __linkto=linkto)
       
   111             bk_base_url = self.build_url('add/Bookmark', title=bk_title, __linkto=linkto)
       
   112             bk_link = u'<a cubicweb:target="%s" id="facetBkLink" href="%s">%s</a>' % (
       
   113                     html_escape(bk_base_url),
       
   114                     html_escape(bk_add_url),
       
   115                     self.req._('bookmark this search'))
       
   116             self.w(self.bkLinkBox_template % bk_link)
   111 
   117 
   112     def get_facets(self, rset, mainvar):
   118     def get_facets(self, rset, mainvar):
   113         return self.vreg.possible_vobjects('facets', self.req, rset=rset,
   119         return self.vreg.possible_vobjects('facets', self.req, rset=rset,
   114                                            context='facetbox',
   120                                            context='facetbox',
   115                                            filtered_variable=mainvar)
   121                                            filtered_variable=mainvar)