Author: rspivak Date: Thu Nov 3 23:48:10 2005 New Revision: 28946 Added: z3lab/cpsblog/trunk/browser/add_comment.pt (contents, props changed) Modified: z3lab/cpsblog/trunk/browser/blogentry.py z3lab/cpsblog/trunk/browser/configure.zcml z3lab/cpsblog/trunk/browser/menu_macros.pt z3lab/cpsblog/trunk/browser/skin/blog.pt z3lab/cpsblog/trunk/browser/skin/blogentry.pt z3lab/cpsblog/trunk/browser/skin/template.pt z3lab/cpsblog/trunk/configure.zcml Log: - Added support for adding comments - Return principal title as the value of 'author' attribute of BlogEntry instead of id. - Removed style for 'footer' in template.pt
Added: z3lab/cpsblog/trunk/browser/add_comment.pt ============================================================================== --- (empty file) +++ z3lab/cpsblog/trunk/browser/add_comment.pt Thu Nov 3 23:48:10 2005 @@ -0,0 +1,21 @@ +<html metal:use-macro="views/standard_macros/page"> + <div metal:fill-slot="menu_actions"> + <metal:block use-macro="context/@@blogmenu_macros/entrymainmenu" /> + </div> + + <div metal:fill-slot="body"> + <form action="@@postcomment" method="post"> + <div class="row"> + <textarea cols="60" rows="12" value="" name="data"> + </textarea> + </div> + <div class="row"> + <hr /> + <div class="controls"> + <input type="submit" value="Add Comment" name="UPDATE_SUBMIT" /> + </div> + </div> + </form> + </div> + +</html> \ No newline at end of file Modified: z3lab/cpsblog/trunk/browser/blogentry.py ============================================================================== --- z3lab/cpsblog/trunk/browser/blogentry.py (original) +++ z3lab/cpsblog/trunk/browser/blogentry.py Thu Nov 3 23:48:10 2005 @@ -6,6 +6,8 @@ from zope.app.dublincore.interfaces import IZopeDublinCore from zope.app.pagetemplate import ViewPageTemplateFile +from zope.security.proxy import removeSecurityProxy + from cpsblog.interfaces import IBlogEntry, IComments from cpsblog.browser.widgets import FCKEditorWidget @@ -37,9 +39,15 @@ class BlogEntryView: + def __init__(self, context, request): + self.context, self.request = context, request + self.formatter = request.locale.dates.getFormatter('dateTime', 'medium') + self.comments = IComments(self.context) + def author(self): creators = IZopeDublinCore(self.context).creators - return creators[0] + principal_id = creators[0] + return zapi.principals().getPrincipal(principal_id).title def created(self): return IZopeDublinCore(self.context).created @@ -53,15 +61,25 @@ def absolute_url(self): return zapi.absoluteURL(self.context, self.request) -# def breadcrumbs(self): -# absolute_url = zapi.getMultiAdapter((self.context, self.request), -# name='absolute_url') -# result = '' -# for d in absolute_url.breadcrumbs()[:-1]: -# result += "<a href='%(url)s'>%(name)s</a>/" % d -# return result - def getComments(self): """Return comments.""" - comments = IComments(self.context) - return comments + return self.comments + + def getCommentsInfo(self): + comments = self.comments + comments_info = [] + for comment in comments.values(): + dc = IZopeDublinCore(comment) + principal_id = dc.creators[0] + author = zapi.principals().getPrincipal(principal_id).title + kw = {'posted': dc.created, + 'author': author, + 'text': comment.data, + } + comments_info.append(kw) + return comments_info + + def postComment(self, data): + comments = removeSecurityProxy(self.comments) + comments.addComment(unicode(data)) + self.request.response.redirect('@@index.html') Modified: z3lab/cpsblog/trunk/browser/configure.zcml ============================================================================== --- z3lab/cpsblog/trunk/browser/configure.zcml (original) +++ z3lab/cpsblog/trunk/browser/configure.zcml Thu Nov 3 23:48:10 2005 @@ -159,6 +159,22 @@ permission="blog.Edit" menu="zmi_views" title="Edit" /> + <page + name="add_comment.html" + for="cpsblog.interfaces.IBlogEntry" + class=".blogentry.BlogEntryView" + permission="blog.Edit" + template="add_comment.pt" + /> + + <page + name="postcomment" + for="cpsblog.interfaces.IBlogEntry" + class=".blogentry.BlogEntryView" + permission="blog.Edit" + attribute="postComment" + /> + <!-- <page Modified: z3lab/cpsblog/trunk/browser/menu_macros.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/menu_macros.pt (original) +++ z3lab/cpsblog/trunk/browser/menu_macros.pt Thu Nov 3 23:48:10 2005 @@ -28,10 +28,17 @@ <metal:block define-macro="entrymenu"> <tal:block repeat="menuitem context/@@view_get_menu/blogentrymenu"> <a href="" + tal:condition="python: menuitem['title'] != 'Comments'" tal:attributes="href string:${item/absolute_url}/${menuitem/action}"> - <span tal:replace="menuitem/title" /> - <span tal:condition="not: repeat/menuitem/end" - tal:omit-tag="">|</span> + <span tal:replace="menuitem/title" /> + <span tal:condition="not: repeat/menuitem/end" + tal:omit-tag="">|</span> + </a> + <a href="" + tal:condition="python: menuitem['title'] == 'Comments'" + tal:attributes="href string:${item/absolute_url}/${menuitem/action}"> + <span tal:replace="python: len(item.getComments())" /> + <span tal:replace="menuitem/title" /> </a> </tal:block> </metal:block> Modified: z3lab/cpsblog/trunk/browser/skin/blog.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/blog.pt (original) +++ z3lab/cpsblog/trunk/browser/skin/blog.pt Thu Nov 3 23:48:10 2005 @@ -42,6 +42,10 @@ <tr> <td> <span class="blog-title" tal:content="item/title" /> + </td> + </tr> + <tr> + <td> <span tal:content="structure item/content" /> </td> </tr> Modified: z3lab/cpsblog/trunk/browser/skin/blogentry.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/blogentry.pt (original) +++ z3lab/cpsblog/trunk/browser/skin/blogentry.pt Thu Nov 3 23:48:10 2005 @@ -4,13 +4,31 @@ </div> <div metal:fill-slot="body"> - <h1 tal:content="context/title">Blog entry title</h1> - <div class="row" tal:content="structure context/content" /> - <div class="row" tal:content="structure context/summary" /> - <div class="row"> - <span tal:content="view/author" /> - <span tal:content="view/created" /> + <div class="blog-entry"> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td> + <span class="blog-title" tal:content="context/title" /> + </td> + </tr> + <tr> + <td> + <span tal:replace="structure context/content" /> + </td> + </tr> + </table> + <table border="0" cellpadding="0" cellspacing="0"> + <tr> + <td class="blog-footer"> + Posted by <span tal:replace="view/author" /> + @ <span tal:replace="view/created" /> + + </td> + </tr> + </table> + </div> + <br /> <div class="blog-entry"> <a name="comments"> @@ -26,13 +44,33 @@ </h3> </td> <td class="blog-footer" align="right"> - <a href="#" tal:attributes="href string:./comments.html"> + <a href="#" tal:attributes="href string:./add_comment.html"> Post a Comment </a> </td> </tr> </table> + + <metal:block tal:repeat="infos view/getCommentsInfo"> + <div> + <div class="blog-footer" tal:define="when infos/posted"> + At + <span tal:replace="python: view.formatter.format(when, 'hh:mm, d. MMMM')"> + Date</span>, + <span tal:replace="infos/author"> + Author + </span> + said... + </div> + <div tal:content="structure infos/text"> + Some comments... + </div> + </div> + <br /> + </metal:block> + </div> + </div> </html> \ No newline at end of file Modified: z3lab/cpsblog/trunk/browser/skin/template.pt ============================================================================== --- z3lab/cpsblog/trunk/browser/skin/template.pt (original) +++ z3lab/cpsblog/trunk/browser/skin/template.pt Thu Nov 3 23:48:10 2005 @@ -91,7 +91,7 @@ This is the content </metal:block> - <div id="footer" metal:define-macro="footer" /> + <div metal:define-macro="footer" /> </body> Modified: z3lab/cpsblog/trunk/configure.zcml ============================================================================== --- z3lab/cpsblog/trunk/configure.zcml (original) +++ z3lab/cpsblog/trunk/configure.zcml Thu Nov 3 23:48:10 2005 @@ -189,6 +189,10 @@ /> <require permission="zope.ManageContent" + set_schema=".interfaces.IAddComments" + /> + <require + permission="zope.ManageContent" set_schema=".interfaces.IComment" /> </class> -- http://lists.nuxeo.com/mailman/listinfo/z3lab-checkins