diff -r 1fe028e17f70 -r 34e6d07ea2e9 src/pyams_content/shared/blog/interfaces.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/pyams_content/shared/blog/interfaces.py Tue Nov 06 14:40:22 2018 +0100 @@ -0,0 +1,80 @@ +# +# Copyright (c) 2008-2016 Thierry Florac +# All Rights Reserved. +# +# 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. +# + +__docformat__ = 'restructuredtext' + +from zope.container.constraints import containers, contains +from zope.container.interfaces import IContainer +from zope.interface import Attribute, Interface +from zope.schema import Text + +from pyams_content.shared.common.interfaces import ISharedSite, IBaseSharedTool, ISharedContent, \ + IDeletableElement, IWfSharedContentPortalContext +from pyams_i18n.schema import I18nTextField +from pyams_sequence.interfaces import ISequentialIdTarget +from pyams_workflow.interfaces import IWorkflowPublicationSupport + +from pyams_content import _ + + +BLOG_CONTENT_TYPE = 'blog' +BLOG_CONTENT_NAME = _("Blog post") + + +class IWfBlogPost(IWfSharedContentPortalContext): + """Blog topic interface""" + + +class IWfBlogPostFactory(Interface): + """Blog post factory interface""" + + +class IBlogPost(ISharedContent, IDeletableElement): + """Workflow managed blog post interface""" + + containers('.IBlogFolder') + + +class IBlogFolder(IContainer, IDeletableElement): + """Blog folder interface""" + + containers('.IBlogManager', '.IBlogFolder') + contains('.IBlogFolder', '.IBlogPost') + + +class IBlogFolderFactory(Interface): + """Blog folder factory interface""" + + +class IBlogManager(ISharedSite, IBaseSharedTool, IWorkflowPublicationSupport, IDeletableElement, ISequentialIdTarget): + """Blog manager interface""" + + contains(IBlogFolder) + + folder_factory = Attribute("Blog folder factory") + + topic_content_type = Attribute("Topic content type") + topic_content_factory = Attribute("Topic content factory") + + description = I18nTextField(title=_("Meta-description"), + description=_("The blog's description is 'hidden' into HTML's page headers; but it " + "can be seen, for example, in some search engines results as content's " + "description; if description is empty, content's header will be used."), + required=False) + + notepad = Text(title=_("Notepad"), + description=_("Internal information to be known about this content"), + required=False) + + +class IBlogManagerFactory(Interface): + """Blog manager factory interface"""