# HG changeset patch # User Paul Boddie # Date 1196554680 -3600 # Node ID b5956f48f047b0faa1f980ddfcdbe0130e872f54 # Parent 6206261843c802e172d3954cb7d4fa0971d1fa0a Added banner advertisement image rotation, linking to a sponsors page. Added access control lists. diff -r 6206261843c8 -r b5956f48f047 ep2008.py --- a/ep2008.py Sat Dec 01 21:50:31 2007 +0100 +++ b/ep2008.py Sun Dec 02 01:18:00 2007 +0100 @@ -36,6 +36,9 @@ data_underlay_dir = '/home/paulb/Activities/EuroPython/2008/ep2008/wiki/underlay' acl_enabled = 1 + acl_rights_default = 'Known:read,write,delete,revert All:read,write' + acl_rights_before = 'AdminGroup:read,write,delete,revert,admin' + theme_default = 'ep2008' logo_string = u'EuroPython' @@ -55,6 +58,12 @@ ] banner_string = u'' + banner_alt_text = u'Sponsor of EuroPython' + banner_prefix = u'sponsor' + banner_per_page = 0 + banner_attachment_page = u'FrontPage' + banner_link_page = u'Sponsors' + contact_string = u'
Contact Information
' contribute_string = u'Contribute to this site!' special_username = 0 diff -r 6206261843c8 -r b5956f48f047 themes/ep2008/ep2008.py --- a/themes/ep2008/ep2008.py Sat Dec 01 21:50:31 2007 +0100 +++ b/themes/ep2008/ep2008.py Sun Dec 02 01:18:00 2007 +0100 @@ -7,9 +7,9 @@ """ from MoinMoin.theme import ThemeBase -#from MoinMoin.theme import modern +from MoinMoin.action import AttachFile +import random -#class Theme(modern.Theme): class Theme(ThemeBase): name = "ep2008" @@ -30,7 +30,7 @@ self.logo(), # Banner - self.cfg.banner_string, + self.banner(d), self.searchform(d), self.navibar(d), @@ -159,6 +159,44 @@ d['page'].link_to(request, text=self.cfg.contribute_string, querystr={'action': 'login'}, id="login") + def banner(self, d): + request = self.request + formatter = request.formatter + + # Either get banners per page or acquire them from a central source. + + if self.cfg.banner_per_page: + pagename = d["page"].page_name + else: + pagename = self.cfg.banner_attachment_page + + # Only get attachments with a certain prefix. + + attachments = [] + for filename in AttachFile._get_files(request, pagename): + if filename.startswith(self.cfg.banner_prefix): + attachments.append(filename) + + # Display the default banner if no attachments are found. + + if not attachments: + return self.cfg.banner_string + + # Choose an attachment at random and return the HTML to show it. + + attachment = random.choice(attachments) + + kw = {} + kw['src'] = AttachFile.getAttachUrl(pagename, attachment, request) + kw['alt'] = self.cfg.banner_alt_text + kw['id'] = u'banner' + + target = self.cfg.banner_link_page + + return "%s%s%s" % (formatter.pagelink(1, target), + formatter.image(**kw), + formatter.pagelink(0)) + def execute(request): """ Generate and return a theme object