From: Robert M. <svn...@pl...> - 2008-11-12 21:58:24
|
Author: rmarianski Date: Wed Nov 12 21:58:12 2008 New Revision: 75689 Modified: Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.pt Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.py Log: fixed up pending members and removal Modified: Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.pt ============================================================================== --- Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.pt (original) +++ Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.pt Wed Nov 12 21:58:12 2008 @@ -127,7 +127,13 @@ tal:attributes="action request/ACTUAL_URL" tal:condition="pending"> - <table> + <style> + td { + padding-left: 1em; + padding-right: 1em; + } + </style> + <table style="width: 100%"> <tr> <th>Email</th> <th>Post</th> @@ -135,69 +141,44 @@ <th>Deny</th> </tr> - <span tal:omit-tag tal:repeat="member pending"> - <!-- row for the member --> - <tr tal:repeat="member pending" - tal:define="post python:pending[member][0]"> <!-- only one post is currently queued per member; http://trac.openplans.org/listen/ticket/58 --> - <td tal:attributes="rowspan - python:len(pending[member]) == 1 and 1 or len(pending[member]) + 1"> - <a tal:attributes="href python:'mailto:' + member" - tal:content="member">bl...@bl...</a> + <tr tal:repeat="postdata pending"> + <tal:vars define="email postdata/email; posts postdata/posts"> + <td style="vertical-align: top"> + <a tal:attributes="href string:mailto:${email}" + tal:content="email">bl...@bl...</a> </td> - <td> - <dl tal:condition="python:len(pending[member]) == 1" - tal:define="post python:pending[member][0]" - class="collapsible inline collapsedOnLoad"> - - <dt class="collapsibleHeader" - tal:content="python:post['header'].get('subject','No Subject')"> - Subject - </dt> - <dd class="collapsibleContent"> - <pre tal:content="post/body"> - Post Body - </pre> - </dd> + <td style="width: 100%"> + <dl class="collapsible inline collapsedOnLoad"> + + <tal:post repeat="post posts"> + + <dt class="collapsibleHeader" + tal:content="python:post['header'].get('subject','No Subject')"> + Subject + </dt> + <dd class="collapsibleContent"> + <pre tal:content="post/body"> + Post Body + </pre> + </dd> + </tal:post> </dl> </td> - <td> + <td style="vertical-align: top"> <input type="radio" value="approve" tal:attributes="name - python:'moderate-user-' + member"/> + string:moderate-user-${email}"/> </td> - <td> + <td style="vertical-align: top"> <input type="radio" value="deny" tal:attributes="name - python:'moderate-user-' + member"/> - </td> - </tr> - - <!-- rows for the posts --> - <tr tal:condition="python:len(pending[member]) != 1" - tal:repeat="post python:pending[member]"> - <td> - <dl class="collapsible inline collapsedOnLoad"> - - <dt class="collapsibleHeader" - tal:content="python:post['header'].get('Subject','No Subject')"> - Subject - </dt> - <dd class="collapsibleContent"> - <pre tal:content="post/body"> - Post Body - </pre> - </dd> - </dl> + string:moderate-user-${email}"/> </td> - <td></td> - <td></td> + </tal:vars> </tr> - - </span> - </table> <input type="submit" Modified: Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.py ============================================================================== --- Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.py (original) +++ Products.listen/branches/ui-improvements/Products/listen/browser/manage_membership.py Wed Nov 12 21:58:12 2008 @@ -170,13 +170,24 @@ for user in approved_users: self._add(user, subscribed=True) - ### + self._remove(denied_users) + + plone_utils = getToolByName(self.context, 'plone_utils') + n_approved, n_denied = len(approved_users), len(denied_users) + if n_approved: + plone_utils.addPortalMessage('%s member(s) approved' % n_approved) + if n_denied: + plone_utils.addPortalMessage('%s member(s) denied' % n_denied) def pending_member_posts(self): - """posts from pending members""" + """Posts from pending members. This will return back a structure that's + easy to use in the template.""" pending_list = getAdapter(self.context, IPostPendingList, 'pending_mod_post') - retval = dict([(email, pending_list.get_posts(email)) - for email in pending_list.get_user_emails()]) + retval = [] + for email in pending_list.get_user_emails(): + posts = pending_list.get_posts(email) + retval.append(dict(email=email, posts=posts)) + retval.sort() return retval def nextURL(self): @@ -207,7 +218,8 @@ request = {'action': 'remove_allowed_sender', 'email':user} if self.policy.enforce(request) == MEMBERSHIP_ALLOWED: - self.mem_list.remove_allowed_sender(user) + pending_list = getAdapter(self.context, IPostPendingList, 'pending_mod_post') + pending_list.remove(user) def _subscribe(self, add_list): |