web/component.py
changeset 7323 53f38d39287f
parent 6987 d62d4ba5ef3e
child 7326 6c603d0fb2c7
equal deleted inserted replaced
7322:108c87e0538c 7323:53f38d39287f
     1 # copyright 2003-2010 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     1 # copyright 2003-2011 LOGILAB S.A. (Paris, FRANCE), all rights reserved.
     2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     2 # contact http://www.logilab.fr/ -- mailto:contact@logilab.fr
     3 #
     3 #
     4 # This file is part of CubicWeb.
     4 # This file is part of CubicWeb.
     5 #
     5 #
     6 # CubicWeb is free software: you can redistribute it and/or modify it under the
     6 # CubicWeb is free software: you can redistribute it and/or modify it under the
    55     start_param = '__start'
    55     start_param = '__start'
    56     stop_param = '__stop'
    56     stop_param = '__stop'
    57     page_link_templ = u'<span class="slice"><a href="%s" title="%s">%s</a></span>'
    57     page_link_templ = u'<span class="slice"><a href="%s" title="%s">%s</a></span>'
    58     selected_page_link_templ = u'<span class="selectedSlice"><a href="%s" title="%s">%s</a></span>'
    58     selected_page_link_templ = u'<span class="selectedSlice"><a href="%s" title="%s">%s</a></span>'
    59     previous_page_link_templ = next_page_link_templ = page_link_templ
    59     previous_page_link_templ = next_page_link_templ = page_link_templ
    60     no_previous_page_link = u'&lt;&lt;'
       
    61     no_next_page_link = u'&gt;&gt;'
       
    62 
    60 
    63     def __init__(self, req, rset, **kwargs):
    61     def __init__(self, req, rset, **kwargs):
    64         super(NavigationComponent, self).__init__(req, rset=rset, **kwargs)
    62         super(NavigationComponent, self).__init__(req, rset=rset, **kwargs)
    65         self.starting_from = 0
    63         self.starting_from = 0
    66         self.total = rset.rowcount
    64         self.total = rset.rowcount
   129         url = xml_escape(self.page_url(path, params, start, stop))
   127         url = xml_escape(self.page_url(path, params, start, stop))
   130         if start == self.starting_from:
   128         if start == self.starting_from:
   131             return self.selected_page_link_templ % (url, content, content)
   129             return self.selected_page_link_templ % (url, content, content)
   132         return self.page_link_templ % (url, content, content)
   130         return self.page_link_templ % (url, content, content)
   133 
   131 
   134     def previous_link(self, path, params, content='&lt;&lt;', title=_('previous_results')):
   132     @property
       
   133     def prev_icon_url(self):
       
   134         return xml_escape(self._cw.data_url('go_prev.png'))
       
   135 
       
   136     @property
       
   137     def next_icon_url(self):
       
   138         return xml_escape(self._cw.data_url('go_next.png'))
       
   139 
       
   140     @property
       
   141     def no_previous_page_link(self):
       
   142         return u'<img src="%s" class="prevnext_nogo"/>' % self.prev_icon_url
       
   143 
       
   144     @property
       
   145     def no_next_page_link(self):
       
   146         return u'<img src="%s" class="prevnext_nogo"/>' % self.next_icon_url
       
   147 
       
   148     @property
       
   149     def no_content_prev_link(self):
       
   150         return '<img src="%s" class="prevnext"/>' % self.prev_icon_url
       
   151 
       
   152     @property
       
   153     def no_content_next_link(self):
       
   154         return '<img src="%s" class="prevnext"/>' % self.next_icon_url
       
   155 
       
   156     def previous_link(self, path, params, content=None, title=_('previous_results')):
       
   157         if not content:
       
   158             content = self.no_content_prev_link
   135         start = self.starting_from
   159         start = self.starting_from
   136         if not start :
   160         if not start :
   137             return self.no_previous_page_link
   161             return self.no_previous_page_link
   138         start = max(0, start - self.page_size)
   162         start = max(0, start - self.page_size)
   139         stop = start + self.page_size - 1
   163         stop = start + self.page_size - 1
   140         url = xml_escape(self.page_url(path, params, start, stop))
   164         url = xml_escape(self.page_url(path, params, start, stop))
   141         return self.previous_page_link_templ % (url, title, content)
   165         return self.previous_page_link_templ % (url, title, content)
   142 
   166 
   143     def next_link(self, path, params, content='&gt;&gt;', title=_('next_results')):
   167     def next_link(self, path, params, content=None, title=_('next_results')):
       
   168         if not content:
       
   169             content = self.no_content_next_link
   144         start = self.starting_from + self.page_size
   170         start = self.starting_from + self.page_size
   145         if start >= self.total:
   171         if start >= self.total:
   146             return self.no_next_page_link
   172             return self.no_next_page_link
   147         stop = start + self.page_size - 1
   173         stop = start + self.page_size - 1
   148         url = xml_escape(self.page_url(path, params, start, stop))
   174         url = xml_escape(self.page_url(path, params, start, stop))