source: main/ngren.theme/trunk/ngren/theme/browser/banner.py @ 12692

Last change on this file since 12692 was 11763, checked in by Henrik Bettermann, 10 years ago

Avoid confusion of meaning of frontpage items.

File size: 1.8 KB
Line 
1from five import grok
2from zope import schema
3
4from plone.directives import form, dexterity
5
6from plone.app.textfield import RichText
7from plone.namedfile.field import NamedImage
8
9from ngren.theme import _
10
11from plone.dexterity.content import Item, Container
12
13from plone.app.layout.viewlets.common import ViewletBase
14from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
15from Products.CMFCore.utils import getToolByName
16from frontpagecontent import IFrontpageContent
17from zope.app.component.hooks import getSite
18
19
20class IBanner(form.Schema):
21    """A Banner element which will be displayed in the Partners Banner
22    """
23    title = schema.TextLine( title=_(u"Title"), required=True )
24    picture = NamedImage(title=_(u"Banner Image (Partners Banner)"), description=_(u"Please upload an image"), required=False)
25    link = schema.TextLine(title=_(u"Link"), required=False)
26
27class Banner( Item ):
28    grok.implements(IBanner)
29
30    def __init__(self, *args):
31        super(Banner, self).__init__(*args)
32        self.exclude_from_nav = True       
33
34               
35               
36               
37class BannerViewlet(ViewletBase):
38        index = ViewPageTemplateFile('templates/bannerviewlet.pt')
39       
40        def update(self):
41                self.banner = []
42                portal = getSite()
43                catalog = getToolByName(portal, "portal_catalog")
44                path = "/".join(portal.getPhysicalPath())
45                frontpagecontents = catalog.searchResults(
46                        object_provides=IFrontpageContent.__identifier__,
47                        path={'query':path, 'depth':1},
48                        sort_on='getObjPositionInParent')
49
50                if len(frontpagecontents) > 0:
51                        path2 = "/".join(frontpagecontents[0].getObject().getPhysicalPath())
52                        banner = catalog.searchResults(
53                                object_provides=IBanner.__identifier__,
54                                path={'query':path2, 'depth':1},
55                                sort_on='getObjPositionInParent',
56                                review_state='published')
57               
58                        self.banner = [i.getObject() for i in banner]
59                       
Note: See TracBrowser for help on using the repository browser.