source: products/quintagroup.blog.star/trunk/quintagroup/blog/star/tagcloudportlet.py @ 2662

Last change on this file since 2662 was 2662, checked in by chervol, 14 years ago

Added customized TagCloud? portlet - cloud urls points to navigation root object and remove path from query

  • Property svn:eol-style set to native
File size: 1.5 KB
Line 
1import re
2
3from plone.memoize import ram
4from plone.app.layout.navigation.root import getNavigationRoot
5
6from Products.CMFCore.utils import getToolByName
7from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
8
9from qi.portlet.TagClouds.tagcloudportlet import _cachekey
10from qi.portlet.TagClouds.tagcloudportlet import Renderer as BaseRenderer
11
12REPATH = "\%spath=[^\&]*"
13
14class Renderer(BaseRenderer):
15    """
16    """
17
18    render = ViewPageTemplateFile('tagcloudportlet.pt')
19
20    def __init__(self, context, request, view, manager, data):
21        super(Renderer, self).__init__(context, request, view, manager, data)
22        self.portal = getToolByName(context, 'portal_url')
23
24    def removePath(self, href, sep):
25        newhref = re.sub(REPATH % sep, sep, href)
26        return re.sub("%s$" % sep, "", newhref)
27
28    @ram.cache(_cachekey)
29    def getTags(self):
30        res = BaseRenderer.getTags(self)
31        if self.root:
32            navblogurl = getNavigationRoot(self.context,
33                relativeRoot=self.root)
34            blog = self.portal.restrictedTraverse(navblogurl)
35            href_base = blog.absolute_url()
36        else:
37            href_base = self.portal_url
38
39        for d in res:
40            old_href = d["href"]
41            q = "?" + old_href.split("?")[1]
42            if '&path=' in q:
43                newq = self.removePath(q, "&")
44            elif '?path=' in q:
45                newq = self.removePath(q, "?")
46            else:
47                newq = ''
48            d['href'] = href_base + newq
49
50        return res
Note: See TracBrowser for help on using the repository browser.