[Moin-user] Including page changes attachment path resolution

Nikolaus Rath Nikolaus at rath.org
Thu Nov 24 16:36:38 EST 2011


Hello,

I would like to include a static menu bar in every rendered page. The
menu bar itself should be editable as a page.

I came up with the following code to include another page:

    def includepage(self, page_name):
        request = self.request
        inc_page = Page(request, page_name, formatter=request.formatter)
        if not inc_page.exists():
            return '<p><strong class="error">Page %s does not exist</strong></p>' % page_name

        strfile = StringIO.StringIO()
        request.redirect(strfile)
        try:
            inc_page.send_page(content_only=True,
                               omit_footnotes=True,
                               count_hit=False)
            return strfile.getvalue()
        finally:
            request.redirect()

I then changed my theme's .py file to include the page "navibar":

    def navibarpanel(self, d):
        html = [
            u'<div class="sidepanel"><h1>Quick Links</h1>',
            self.navibar(d),
            u'</div>',
            
            u'<div class="sidepanel"><h1>Navigation</h1>',
            self.includepage('navibar'),
            u'</div>',
            ]
        return u''.join(html) 

        
This works nicely, but there is one problem: if, in any page, I refer to
an attachment as [[attachment:bla.zip]], then MoinMoin looks for bla.zip
in the "navibar" page rather than the page I'm actually viewing.


Is there a way to fix this problem? Or is my entire approach wrong?


Best,

   -Nikolaus

-- 
 »Time flies like an arrow, fruit flies like a Banana.«

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C




More information about the Moin-user mailing list