source: products/quintagroup.plonecomments/branches/jquery/quintagroup/plonecomments/browser/comments.py @ 2131

Last change on this file since 2131 was 2087, checked in by kroman0, 14 years ago

Rewrited kss to jquery and added some features

File size: 3.9 KB
Line 
1import urllib
2try:
3    import hashlib as md5
4except ImportError:
5    import md5
6
7from Acquisition import aq_inner
8from AccessControl import getSecurityManager
9
10from Products.CMFPlone.utils import IndexIterator
11from Products.CMFPlone.utils import getToolByName
12from Products.CMFFormController.ControllerState import ControllerState
13from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
14from quintagroup.plonecomments.utils import manage_mails
15
16from plone.app.layout.viewlets import comments
17from plone.app.kss.plonekssview import PloneKSSView
18
19class CommentsViewlet(comments.CommentsViewlet):
20    """A custom version of the comments viewlet
21    """
22    render = ViewPageTemplateFile('comments.pt')
23
24    def is_moderation_enabled(self):
25        """ Returns a boolean indicating whether the user has enabled moderation
26            in the qPloneComments configlet
27        """
28        portal_properties = getToolByName(self.context, 'portal_properties')
29        try:
30            return portal_properties.qPloneComments.getProperty('enable_moderation', None)
31        except AttributeError:
32            return False
33
34    def can_moderate(self):
35        """ Returns a boolean indicating whether the user has the 'Moderate Discussion'
36            permission
37        """
38        return getSecurityManager().checkPermission('Moderate Discussion', aq_inner(self.context))
39
40    def getGravatar(self, reply):
41        purl = getToolByName(self.context, 'portal_url')
42        mtool = getToolByName(self.context, 'portal_membership')           
43        portrait_url = purl() + '/defaultUser.gif' 
44        email = ''
45
46        creator = reply.Creator()
47        if creator and not creator=='Anonymous User':
48            mtool = getToolByName(self.context, "portal_membership")
49            member = mtool.getMemberById(creator)
50            email = member and member.getProperty('email','') or ''
51            mem_id = getattr(member,'getId',lambda:'Anonymous User')()
52            portrait = mtool.getPersonalPortrait(mem_id)
53            portrait_url =  portrait.absolute_url()
54        else:
55            email = reply.getProperty('email',d='')
56
57        if not email or not 'defaultUser.gif' in portrait_url:
58            return portrait_url
59
60        size = 40
61        gravatar_url = "http://www.gravatar.com/avatar.php?"
62        # construct the url
63        gravatar_url += urllib.urlencode({'gravatar_id':md5.md5(email).hexdigest(),
64            'default':portrait_url, 'size':str(size)})
65        return gravatar_url
66       
67
68    def authenticated_report_abuse_enabled(self):
69        """ """
70        portal_properties = getToolByName(self.context, 'portal_properties')
71        prop_sheet = portal_properties['qPloneComments']
72        value =  prop_sheet.getProperty('enable_authenticated_report_abuse', False)
73        return value
74
75    def anonymous_report_abuse_enabled(self):
76        """ """
77        portal_properties = getToolByName(self.context, 'portal_properties')
78        prop_sheet = portal_properties['qPloneComments']
79        value =  prop_sheet.getProperty('enable_anonymous_report_abuse', False)
80        return value
81
82    def ajax_report_abuse_enabled(self):
83        """ """
84        portal_properties = getToolByName(self.context, 'portal_properties')
85        prop_sheet = portal_properties['qPloneComments']
86        value =  prop_sheet.getProperty('enable_ajax_report_abuse', False)
87        return value
88
89    def email_from_address(self):
90        """ """
91        portal_url = getToolByName(self.context, 'portal_url')
92        portal = portal_url.getPortalObject()
93        return portal.email_from_address
94
95    def member(self):
96        """ """
97        pm = getToolByName(self.context, 'portal_membership')
98        return pm.getAuthenticatedMember()
99
100    def tabindex(self):
101        """ Needed for BBB, tabindex has been deprecated.
102        """
103        return IndexIterator()
104
105    def portal_url(self):
106        """ """
107        return getToolByName(self.context, 'portal_url')
Note: See TracBrowser for help on using the repository browser.