new concept type SimpleBlogItem, stores text in concept, not in resource
This commit is contained in:
parent
58fda446ff
commit
380aba02ed
4 changed files with 59 additions and 10 deletions
|
@ -5,6 +5,19 @@
|
|||
xmlns:browser="http://namespaces.zope.org/browser"
|
||||
i18n_domain="zope">
|
||||
|
||||
<zope:adapter
|
||||
factory="loops.compound.blog.post.SimpleBlogPost"
|
||||
provides="loops.compound.blog.interfaces.ISimpleBlogPost"
|
||||
trusted="True" />
|
||||
<zope:class class="loops.compound.blog.post.SimpleBlogPost">
|
||||
<require permission="zope.View"
|
||||
interface="loops.compound.blog.interfaces.ISimpleBlogPost" />
|
||||
<require permission="zope.View"
|
||||
attributes="context" />
|
||||
<require permission="zope.ManageContent"
|
||||
set_schema="loops.compound.blog.interfaces.ISimpleBlogPost" />
|
||||
</zope:class>
|
||||
|
||||
<zope:adapter
|
||||
factory="loops.compound.blog.post.BlogPost"
|
||||
provides="loops.compound.blog.interfaces.IBlogPost"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
|
||||
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -18,8 +18,6 @@
|
|||
|
||||
"""
|
||||
Blogs (weblogs) and blog posts.
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
|
@ -27,9 +25,32 @@ from zope.interface import Interface, Attribute
|
|||
from zope import interface, component, schema
|
||||
|
||||
from loops.compound.interfaces import ICompound
|
||||
from loops.interfaces import HtmlText
|
||||
from loops.util import _
|
||||
|
||||
|
||||
class ISimpleBlogPost(ICompound):
|
||||
""" An item on a blog, sort of a diary item, minimal version.
|
||||
"""
|
||||
|
||||
date = schema.Datetime(
|
||||
title=_(u'Date/Time'),
|
||||
description=_(u'The date and time the information '
|
||||
'was posted.'),
|
||||
required=True,)
|
||||
date.default_method = datetime.now
|
||||
creator = schema.ASCIILine(
|
||||
title=_(u'Creator'),
|
||||
description=_(u'The principal id of the user that created '
|
||||
'the blog post.'),
|
||||
readonly=True,
|
||||
required=False,)
|
||||
text = HtmlText(
|
||||
title=_(u'Text'),
|
||||
description=_(u'The text of your blog entry'),
|
||||
required=False)
|
||||
|
||||
|
||||
class IBlogPost(ICompound):
|
||||
""" An item on a blog, sort of a diary item.
|
||||
"""
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2008 Helmut Merz helmutm@cy55.de
|
||||
# Copyright (c) 2013 Helmut Merz helmutm@cy55.de
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -18,8 +18,6 @@
|
|||
|
||||
"""
|
||||
Blogs and blog posts.
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from zope.cachedescriptors.property import Lazy
|
||||
|
@ -32,14 +30,31 @@ from zope.traversing.api import getName
|
|||
|
||||
from loops.common import adapted
|
||||
from loops.compound.base import Compound
|
||||
from loops.compound.blog.interfaces import IBlogPost
|
||||
from loops.compound.blog.interfaces import ISimpleBlogPost, IBlogPost
|
||||
from loops.resource import Resource
|
||||
from loops.security.common import restrictView
|
||||
from loops.setup import addAndConfigureObject
|
||||
from loops.type import TypeInterfaceSourceList
|
||||
|
||||
|
||||
TypeInterfaceSourceList.typeInterfaces += (IBlogPost,)
|
||||
TypeInterfaceSourceList.typeInterfaces += (ISimpleBlogPost, IBlogPost,)
|
||||
|
||||
|
||||
class SimpleBlogPost(Compound):
|
||||
|
||||
implements(IBlogPost)
|
||||
|
||||
textContentType = 'text/html'
|
||||
|
||||
_adapterAttributes = Compound._adapterAttributes + ('creator',)
|
||||
_contextAttributes = list(ISimpleBlogPost)
|
||||
_noexportAttributes = _adapterAttributes
|
||||
_textIndexAttributes = ('text',)
|
||||
|
||||
@property
|
||||
def creator(self):
|
||||
cr = IZopeDublinCore(self.context).creators
|
||||
return cr and cr[0] or None
|
||||
|
||||
|
||||
class BlogPost(Compound):
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
<a tal:omit-tag="not:url"
|
||||
tal:content="data/creator"
|
||||
tal:attributes="href url">Will Smith</a>
|
||||
<span tal:condition="item/adapted/private">
|
||||
<span tal:condition="item/adapted/private|nothing">
|
||||
(<span i18n:translate="">Private</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
@ -65,7 +65,7 @@
|
|||
<div class="text"
|
||||
tal:content="structure item/render">Here comes the text...</div>
|
||||
<div class="comment"
|
||||
tal:define="comment data/privateComment"
|
||||
tal:define="comment data/privateComment|nothing"
|
||||
tal:condition="comment">
|
||||
<h4 i18n:translate="" class="headline">Private Comment</h4>
|
||||
<div tal:content="structure python:
|
||||
|
|
Loading…
Add table
Reference in a new issue