[Checkins] SVN: Products.CMFDefault/trunk/Products/CMFDefault/browser/ Stub implementation of discussion views.
Charlie Clark
cvs-admin at zope.org
Thu Sep 6 16:56:53 UTC 2012
Log message for revision 127757:
Stub implementation of discussion views.
Changed:
U Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/TODO.rst
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/__init__.py
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/configure.zcml
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/discussion.py
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/talkback.pt
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/__init__.py
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/discussion.txt
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/test_discussion.py
A Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/threads.pt
U Products.CMFDefault/trunk/Products/CMFDefault/browser/widgets/TODO.rst
-=-
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml 2012-09-06 13:44:15 UTC (rev 127756)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/configure.zcml 2012-09-06 16:56:48 UTC (rev 127757)
@@ -6,6 +6,8 @@
<include package=".content"/>
+ <include package=".discussion"/>
+
<include package=".membership"/>
<include package=".search"/>
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/TODO.rst
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/TODO.rst (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/TODO.rst 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,9 @@
+Converting skins to views
+=========================
+
+Discussions
+
+- [?] viewThreadsAtBottom.pt (structure)
+- [?] talkback_tree.pt (macros)
+- [?] setup_talkback_tree.py
+- [?] discitem_delete.py
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/__init__.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/configure.zcml
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/configure.zcml (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/configure.zcml 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,22 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser">
+
+ <browser:page
+ for="Products.CMFCore.interfaces.IContentish"
+ layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"
+ name="discuss.html"
+ class=".discussion.Discuss"
+ permission="cmf.ModifyPortalContent"
+ />
+
+
+ <!--<browser:page-->
+ <!--for="Products.CMFCore.interfaces.IPortalContent"-->
+ <!--layer="Products.CMFDefault.interfaces.ICMFDefaultSkin"-->
+ <!--name="delete_discussion.html"-->
+ <!--class=".discussion.Delete"-->
+ <!--permission="cmf.ModifyPortalContent"-->
+ <!--/>-->
+
+</configure>
\ No newline at end of file
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/discussion.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/discussion.py (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/discussion.py 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,112 @@
+from zope.component import getUtility
+from zope.interface import Interface
+from zope.formlib import form
+from zope.schema import TextLine, Text
+
+from Products.CMFCore.interfaces import IDiscussionTool
+from Products.CMFDefault.formlib.form import EditFormBase
+from Products.CMFDefault.utils import Message as _
+from Products.PythonScripts.standard import structured_text
+from Products.CMFDefault.utils import html_marshal
+from Products.CMFDefault.browser.utils import decode, memoize
+
+
+class IDiscussion(Interface):
+
+
+ title = TextLine(
+ title=_("Title")
+ )
+
+ text = Text(
+ title=_("Text")
+ )
+
+
+class Discuss(EditFormBase):
+ """
+ Discuss an item
+ """
+
+ form_fields = form.FormFields(IDiscussion)
+ actions = form.Actions(
+ form.Action(
+ name="add",
+ label=_("Add"),
+ success="handle_add"
+ ),
+ form.Action(
+ name="edit",
+ label=_("Edit"),
+ success="handle_edit",
+ ),
+ form.Action(
+ name="preview",
+ label=_("Preview"),
+ success="handle_preview",
+ )
+ )
+
+ @property
+ @memoize
+ def atool(self):
+ return getUtility(IActionsTool)
+
+ #form = context.REQUEST.form
+ #is_preview = False
+ #if add and \
+ #context.validateHTML(**form) and \
+ #context.discussion_reply(**form):
+ #return
+ #elif preview and \
+ #context.validateHTML(**form):
+ #is_preview = True
+
+
+ #options = {}
+
+ #title = form.get('title', context.Title())
+ #text = form.get('text', '')
+ #options['is_preview'] = is_preview
+ #options['title'] = title
+ #options['text'] = text
+ #options['cooked_text'] = structured_text(text)
+
+ #if is_preview:
+ #hidden_vars = [ {'name': n, 'value': v}
+ #for n, v in html_marshal(title=title, text=text) ]
+ #else:
+ #hidden_vars = []
+ #buttons = []
+ #target = atool.getActionInfo('object/reply', context)['url']
+ #buttons.append( {'name': 'add', 'value': _(u'Add')} )
+ #if is_preview:
+ #buttons.append( {'name': 'edit', 'value': _(u'Edit')} )
+ #else:
+ #buttons.append( {'name': 'preview', 'value': _(u'Preview')} )
+ #options['form'] = { 'action': target,
+ #'listHiddenVarInfos': tuple(hidden_vars),
+ #'listButtonInfos': tuple(buttons) }
+
+ #return context.discussion_reply_template(**decode(options, script))
+
+
+
+class Delete(EditFormBase):
+ """
+ Delete an item from a discussion
+ """
+
+ @property
+ @memoize
+ def dtool(self):
+ return getUtility(IDiscussionTool)
+
+ def __call__(self):
+ parent = self.context.inReplyTo()
+ talkback = self.dtool.getDiscussionFor(parent)
+ talkback.deleteReply(self.context.getId())
+
+ def setRedirect(self):
+ self.context.setStatus(True, _(u'Reply deleted.'))
+ self.context.setRedirect(parent, 'object/view')
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/discussion.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/talkback.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/talkback.pt (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/talkback.pt 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,39 @@
+<html>
+<body>
+
+<table cellspacing="0" border="0" metal:define-macro="tree">
+ <tr tal:repeat="item python: context.setup_talkback_tree(context)">
+ <td colspan="1"
+ tal:condition="item/tree_indent"
+ tal:attributes="colspan item/tree_indent"></td>
+ <td width="16">
+ <a href="#" name=""
+ tal:condition="item/tree_url"
+ tal:attributes="name item/tree_id;
+ href item/tree_url"
+ tal:content="structure item/tree_icon"><img src="/p_/pl"/></a>
+ </td>
+ <td colspan="1" tal:attributes="colspan item/tree_colspan">
+ <a href="" tal:attributes="href item/url"
+ ><img border="0" src="" tal:attributes="src item/icon" /></a>
+ <a href="" tal:attributes="href item/url"
+ tal:content="item/title">Title</a>,
+ by <tal:case tal:condition="item/creators"
+ ><tal:loop tal:repeat="creator item/creators"
+ ><tal:case tal:condition="not: repeat/creator/start"
+ ><tal:case tal:condition="not: repeat/creator/end">, </tal:case
+ ><tal:case tal:condition="repeat/creator/end"
+ > <tal:span i18n:translate="">and</tal:span> </tal:case></tal:case
+ ><tal:span tal:content="creator">creator</tal:span></tal:loop></tal:case
+ ><tal:case tal:condition="not: item/creators"
+ ><tal:span i18n:translate="">unknown</tal:span></tal:case>
+ on <tal:span tal:content="item/date">Today</tal:span
+ ><tal:case tal:condition="item/delete_url"> [
+ <a href="#" tal:attributes="href item/delete_url"
+ i18n:translate="">delete reply</a> ]</tal:case>
+ </td>
+ </tr>
+</table>
+
+</body>
+</html>
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/__init__.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/discussion.txt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/discussion.txt (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/discussion.txt 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,34 @@
+Discussion Views
+----------------
+
+Set up site
+
+ >>> from zope.component.hooks import setSite
+ >>> setSite(app.site)
+
+Add an object
+
+ >>> from Products.CMFDefault.Document import Document
+ >>> obj_id = app.site._setObject('myDocument', Document('myDocument'))
+ >>> obj = app.site[obj_id]
+ >>> obj.portal_type = 'Document'
+ >>> obj.setTitle('TITLE')
+ >>> obj.setDescription('DESCRIPTION')
+
+ >>> uf = app.site.acl_users
+ >>> _ignored = uf._doAddUser('mgr', 'mgrpw', ['Manager'], [])
+
+Create the browser object we'll be using.
+
+ >>> from Testing.testbrowser import Browser
+ >>> browser = Browser()
+ >>> browser.handleErrors = False
+ >>> browser.addHeader('Authorization', 'Basic mgr:mgrpw')
+
+Enable discussion for the object
+
+ >>> from zope.component import getUtility
+ >>> from Products.CMFCore.interfaces import IDiscussionTool
+ >>> dtool = getUtility(IDiscussionTool)
+ >>> dtool.isDiscussionAllowedFor(obj)
+ False
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/test_discussion.py
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/test_discussion.py (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/test_discussion.py 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,28 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Foundation and Contributors.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+""" Test Products.CMFDefault.browser.rss
+"""
+
+import unittest
+from Testing import ZopeTestCase
+
+from Products.CMFDefault.testing import FunctionalLayer
+
+
+ftest_suite = ZopeTestCase.FunctionalDocFileSuite('discussion.txt')
+ftest_suite.layer = FunctionalLayer
+
+def test_suite():
+ return unittest.TestSuite((
+ ftest_suite,
+ ))
Property changes on: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/tests/test_discussion.py
___________________________________________________________________
Added: svn:eol-style
+ native
Added: Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/threads.pt
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/threads.pt (rev 0)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/discussion/threads.pt 2012-09-06 16:56:48 UTC (rev 127757)
@@ -0,0 +1,6 @@
+<div tal:condition="context/talkback|nothing" i18n:domain="cmf_default">
+ <div tal:condition="python: context.talkback.hasReplies(context)">
+ <h4 i18n:translate="">Comments:</h4>
+ <metal:macro metal:use-macro="context/talkback_tree/macros/tree" />
+ </div>
+</div>
Modified: Products.CMFDefault/trunk/Products/CMFDefault/browser/widgets/TODO.rst
===================================================================
--- Products.CMFDefault/trunk/Products/CMFDefault/browser/widgets/TODO.rst 2012-09-06 13:44:15 UTC (rev 127756)
+++ Products.CMFDefault/trunk/Products/CMFDefault/browser/widgets/TODO.rst 2012-09-06 16:56:48 UTC (rev 127757)
@@ -17,8 +17,3 @@
--------------------------------
- [x] getBaseTag.pt (structure) -> content_macros.pt
- [x] content_byline.pt (macros) -> content_macros.pt
-
-- [?] viewThreadsAtBottom.pt (structure)
-- [?] talkback_tree.pt (macros)
-- [?] setup_talkback_tree.py
-- [?] discitem_delete.py
More information about the checkins
mailing list