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" />
+            &nbsp;
+          </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

Reply via email to