[Zope3-Users] Re: viewlets for specific interfaces (SOLVED - kind of...)

Luis De la Parra lparrab at gmx.net
Fri Sep 15 15:32:51 EDT 2006


Luis De la Parra wrote:

> 
> if I visist my_music_file.mp3/index.html  I want to see the user comments
> to my new song on the bottom of the page, and if I visit
> my_photo.jpg/index.html I want to to see a box with info such as
> shutter-speed, apperture, etc, and a box with the user comments...
> 
>

well.. after some more testing and trying I got it to finally work, altough
it seems to be a big ugly hack and I don't really understand _why_ it
works.
(I guess the problem is that I still don't have the difference clear between
a page and a view, but it seems like the "page" generated by the
browser:page directive didn't pass the "right" context when calling the
template)

this is what I did:

1)change my "main page" registration to: ( added the class=".DemoPageView)

  <browser:page
    for="*"
    name="viewlet.html"
    template="index.pt"
    class=".DemoPageView"
    permission="zope.View"/>

2)since I don't have any other "content types" installed, I changed the
viewlet registration to IImage:

  <browser:viewlet
    name="hello"
    for="zope.app.file.interfaces.IImage"
    manager=".ILeftColumn"
    class=".HelloMessage"
    permission="zope.Public"/>

3) added the DemoPageView:

class DemoPageView(BrowserPage):
    interface.implements(IBrowserPublisher)

    def __call__(self, *a, **k):
      return ViewPageTemplateFile('index.pt')(self.context)

4) added a zope.app.file.Image... and now it works:
file.txt/viewlet.html  ->> viewlet test:     <<<<no message, as expected!
image.jpb/viewlet.html ->> viewlet test: Hello!  <<< hello msg as expected!!

I had to test against image vs. file because my first tests file vs. folder
gave a message

############
...
  File "/home/luis/src/z/src/zope/app/pagetemplate/viewpagetemplatefile.py",
line 44, in __call__
    namespace = self.pt_getContext(
ForbiddenAttribute: ('request', <zope.app.folder.folder.Folder object at
0xb6d1252c>)
###########




More information about the Zope3-users mailing list