1.1 --- a/themes/ep2008/ep2008.py Sat Dec 01 21:50:31 2007 +0100
1.2 +++ b/themes/ep2008/ep2008.py Sun Dec 02 01:18:00 2007 +0100
1.3 @@ -7,9 +7,9 @@
1.4 """
1.5
1.6 from MoinMoin.theme import ThemeBase
1.7 -#from MoinMoin.theme import modern
1.8 +from MoinMoin.action import AttachFile
1.9 +import random
1.10
1.11 -#class Theme(modern.Theme):
1.12 class Theme(ThemeBase):
1.13
1.14 name = "ep2008"
1.15 @@ -30,7 +30,7 @@
1.16 self.logo(),
1.17
1.18 # Banner
1.19 - self.cfg.banner_string,
1.20 + self.banner(d),
1.21
1.22 self.searchform(d),
1.23 self.navibar(d),
1.24 @@ -159,6 +159,44 @@
1.25 d['page'].link_to(request, text=self.cfg.contribute_string,
1.26 querystr={'action': 'login'}, id="login")
1.27
1.28 + def banner(self, d):
1.29 + request = self.request
1.30 + formatter = request.formatter
1.31 +
1.32 + # Either get banners per page or acquire them from a central source.
1.33 +
1.34 + if self.cfg.banner_per_page:
1.35 + pagename = d["page"].page_name
1.36 + else:
1.37 + pagename = self.cfg.banner_attachment_page
1.38 +
1.39 + # Only get attachments with a certain prefix.
1.40 +
1.41 + attachments = []
1.42 + for filename in AttachFile._get_files(request, pagename):
1.43 + if filename.startswith(self.cfg.banner_prefix):
1.44 + attachments.append(filename)
1.45 +
1.46 + # Display the default banner if no attachments are found.
1.47 +
1.48 + if not attachments:
1.49 + return self.cfg.banner_string
1.50 +
1.51 + # Choose an attachment at random and return the HTML to show it.
1.52 +
1.53 + attachment = random.choice(attachments)
1.54 +
1.55 + kw = {}
1.56 + kw['src'] = AttachFile.getAttachUrl(pagename, attachment, request)
1.57 + kw['alt'] = self.cfg.banner_alt_text
1.58 + kw['id'] = u'banner'
1.59 +
1.60 + target = self.cfg.banner_link_page
1.61 +
1.62 + return "%s%s%s" % (formatter.pagelink(1, target),
1.63 + formatter.image(**kw),
1.64 + formatter.pagelink(0))
1.65 +
1.66 def execute(request):
1.67 """
1.68 Generate and return a theme object