Index: quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/configure.zcml
===================================================================
--- quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/configure.zcml	(revision 1578)
+++ quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/configure.zcml	(revision 1579)
@@ -64,3 +64,14 @@
       />
 
+  <plone:portlet
+      name="quintagroup.quills.extras.recentcomments"
+      interface=".recentcomments.IRecentCommentsPortlet"
+      assignment=".recentcomments.Assignment"
+      view_permission="zope2.View"
+      edit_permission="cmf.ManagePortal"
+      renderer=".recentcomments.Renderer"
+      addview=".recentcomments.AddForm"
+      editview=".recentcomments.EditForm"
+      />
+
 </configure>
Index: quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/recent_author.pt
===================================================================
--- quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/recent_author.pt	(revision 1578)
+++ quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/recent_author.pt	(revision 1579)
@@ -2,5 +2,5 @@
     i18n:domain="plone">
 
-    <!--dt class="portletHeader">
+    <dt class="portletHeader hiddenStructure">
         <span class="portletTopLeft"></span>
         <a class="tile"
@@ -8,7 +8,8 @@
            tal:attributes="href view/getAuthorsURL">_title_</a>
         <span class="portletTopRight"></span>
-    </dt-->
+    </dt>
 
-    <dd metal:define-macro="author"
+    <dd class="portletItem"
+        metal:define-macro="author"
         tal:define="author view/getRecentAuthor;
                     portrait python: view.getPortraitFor(author);
Index: quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/recentcomments.py
===================================================================
--- quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/recentcomments.py	(revision 1579)
+++ quintagroup.quills.extras/trunk/quintagroup/quills/extras/portlets/recentcomments.py	(revision 1579)
@@ -0,0 +1,81 @@
+from zope import schema
+from zope.formlib import form
+from zope.interface import implements
+from zope.component import getMultiAdapter
+
+from plone.memoize.compress import xhtml_compress
+from plone.portlets.interfaces import IPortletDataProvider
+
+from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
+
+# Quills imports
+from quills.core.interfaces import IBaseContent
+from quills.core.interfaces import IWeblogEnhanced
+from quills.core.interfaces import IWeblog
+from quills.app.utilities import recurseToInterface
+from quills.app.utilities import talkbackURL
+from quills.app.utilities import getArchiveURLFor
+from quills.app.browser.baseview import BaseView
+from quills.app import QuillsAppMessageFactory as _
+
+# Local imports
+from quills.app.portlets import recentcomments as base
+from quills.app.portlets.base import BasePortletRenderer
+
+
+PORTLET_TITLE = _(u"Recent Comments")
+PORTLET_DESC = _(u"This portlet lists recent weblog comments.")
+
+
+class IRecentCommentsPortlet(base.IRecentWeblogCommentsPortlet):
+
+    blog_path = schema.TextLine(
+        title=_(u"Path to Blog"),
+        description=_(u"Physical path to blog, from the plone object, 'blog' for ex."),
+        required=True)
+
+
+class Assignment(base.Assignment):
+
+    implements(IRecentCommentsPortlet)
+
+    def __init__(self, max_comments=5, blog_path='blog'):
+        super(Assignment, self).__init__(max_comments = max_comments)
+        self.blog_path = blog_path
+
+    @property
+    def title(self):
+        return PORTLET_TITLE
+
+
+class Renderer(BasePortletRenderer, base.Renderer, BaseView):
+
+    _template = ViewPageTemplateFile('recentcomments.pt')
+
+    @property
+    def available(self):
+        return len(self.getComments) > 0
+
+    @property
+    def title(self):
+        return PORTLET_TITLE
+
+    def getWeblog(self):
+        pstate = getMultiAdapter((self.context, self.request), name=u'plone_portal_state')
+        portal = pstate.portal()
+        weblog = portal.restrictedTraverse(str(self.data.blog_path))
+        return IWeblog(weblog)
+        
+class AddForm(base.AddForm):
+    form_fields = form.Fields(IRecentCommentsPortlet)
+    label = _(u'add-portlet', default=u"Add ${portlet-name} Portlet", mapping={u'portlet-name': PORTLET_TITLE})
+    description = PORTLET_DESC
+
+    def create(self, data):
+        return Assignment(max_comments=5, blog_path='blog')
+
+
+class EditForm(base.EditForm):
+    form_fields = form.Fields(IRecentCommentsPortlet)
+    label = _(u'edit-portlet', default=u"Edit ${portlet-name} Portlet", mapping={u'portlet-name': PORTLET_TITLE})
+    description = PORTLET_DESC
Index: quintagroup.quills.extras/trunk/quintagroup/quills/extras/profiles/default/portlets.xml
===================================================================
--- quintagroup.quills.extras/trunk/quintagroup/quills/extras/profiles/default/portlets.xml	(revision 1578)
+++ quintagroup.quills.extras/trunk/quintagroup/quills/extras/profiles/default/portlets.xml	(revision 1579)
@@ -37,3 +37,9 @@
    />
 
+   <portlet
+     addview="quintagroup.quills.extras.recentcomments"
+     title="Recent comments"
+     description="Render recent blog comments"
+   />
+
 </portlets>
