309 if searchstate == 'normal': |
309 if searchstate == 'normal': |
310 breadcrumbs = self.get_session_data('breadcrumbs', None) |
310 breadcrumbs = self.get_session_data('breadcrumbs', None) |
311 if breadcrumbs is None: |
311 if breadcrumbs is None: |
312 breadcrumbs = SizeConstrainedList(10) |
312 breadcrumbs = SizeConstrainedList(10) |
313 self.set_session_data('breadcrumbs', breadcrumbs) |
313 self.set_session_data('breadcrumbs', breadcrumbs) |
314 breadcrumbs.append(self.url()) |
314 breadcrumbs.append(self.url()) |
|
315 else: |
|
316 url = self.url() |
|
317 if breadcrumbs[-1] != url: |
|
318 breadcrumbs.append(url) |
315 |
319 |
316 def last_visited_page(self): |
320 def last_visited_page(self): |
317 breadcrumbs = self.get_session_data('breadcrumbs', None) |
321 breadcrumbs = self.get_session_data('breadcrumbs', None) |
318 if breadcrumbs: |
322 if breadcrumbs: |
319 return breadcrumbs.pop() |
323 return breadcrumbs.pop() |
514 for jsfile in jsfiles: |
518 for jsfile in jsfiles: |
515 if localfile: |
519 if localfile: |
516 jsfile = self.datadir_url + jsfile |
520 jsfile = self.datadir_url + jsfile |
517 self.html_headers.add_js(jsfile) |
521 self.html_headers.add_js(jsfile) |
518 |
522 |
519 def add_css(self, cssfiles, media=u'all', localfile=True, ieonly=False): |
523 def add_css(self, cssfiles, media=u'all', localfile=True, ieonly=False, |
|
524 iespec=u'[if lt IE 8]'): |
520 """specify a CSS file to include in the HTML headers |
525 """specify a CSS file to include in the HTML headers |
521 :param cssfiles: a CSS filename or a list of CSS filenames |
526 :param cssfiles: a CSS filename or a list of CSS filenames |
522 :param media: the CSS's media if necessary |
527 :param media: the CSS's media if necessary |
523 :param localfile: if True, the default data dir prefix is added to the |
528 :param localfile: if True, the default data dir prefix is added to the |
524 CSS filename |
529 CSS filename |
|
530 :param ieonly: True if this css is specific to IE |
|
531 :param iespec: conditional expression that will be used around |
|
532 the css inclusion. cf: |
|
533 http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx |
525 """ |
534 """ |
526 if isinstance(cssfiles, basestring): |
535 if isinstance(cssfiles, basestring): |
527 cssfiles = (cssfiles,) |
536 cssfiles = (cssfiles,) |
528 if ieonly: |
537 if ieonly: |
529 if self.ie_browser(): |
538 if self.ie_browser(): |
|
539 extraargs = [iespec] |
530 add_css = self.html_headers.add_ie_css |
540 add_css = self.html_headers.add_ie_css |
531 else: |
541 else: |
532 return # no need to do anything on non IE browsers |
542 return # no need to do anything on non IE browsers |
533 else: |
543 else: |
|
544 extraargs = [] |
534 add_css = self.html_headers.add_css |
545 add_css = self.html_headers.add_css |
535 for cssfile in cssfiles: |
546 for cssfile in cssfiles: |
536 if localfile: |
547 if localfile: |
537 cssfile = self.datadir_url + cssfile |
548 cssfile = self.datadir_url + cssfile |
538 add_css(cssfile, media) |
549 add_css(cssfile, media, *extraargs) |
539 |
550 |
540 def build_ajax_replace_url(self, nodeid, rql, vid, replacemode='replace', |
551 def build_ajax_replace_url(self, nodeid, rql, vid, replacemode='replace', |
541 **extraparams): |
552 **extraparams): |
542 """builds an ajax url that will replace `nodeid`s content |
553 """builds an ajax url that will replace `nodeid`s content |
543 :param nodeid: the dom id of the node to replace |
554 :param nodeid: the dom id of the node to replace |