Branding GNU Mailman Headers & Footers

Post Syndicated from Bradley M. Kuhn original http://ebb.org/bkuhn/blog/2014/11/08/mailman.html

As always, when something takes me a while to figure out, I try to post
the generally useful technical information on my blog. For the
new copyleft.org site, I’ve been trying
to get all the pages branded properly with the header/footer. This was
straightforward for ikiwiki (which hosts the main site), but I spent an
hour searching around this morning for how to brand the GNU Mailman
instance
on lists.copyleft.org.

Ultimately, here’s what I had to do to get
everything branded, and I’m still not completely sure I found every spot.
It seems that if someone wanted to make a useful patch to GNU Mailman, you
could offer up a change that unifies the HTML templating and branding. In
the meantime, at least for GNU Mailman 2.1.15 as found in Debian 7
(wheezy), here’s what you have to do:

First, some of the branding details are handled in the Python code itself,
so my first action was:

            # cd /var/lib/mailman/Mailman
            # cp -pa htmlformat.py /etc/mailman
            # ln -sf /etc/mailman/htmlformat.py htmlformat.py
          

I did this because htmlformat.py is not a file that the Debian
package install for Mailman puts in /etc/mailman, and I wanted
to keep track
with etckeeper that I was
modifying that file.

The primary modifications that I made to that file were in the
MailmanLogo() method, to which I added a custom footer, and
to Document.Format() method, to which I added a custom
header (at least when not self.suppress_head).
The suppress_head thing was a red flag that told me it was
likely not enough merely to change these methods to get a custom header
and footer on every page. I was right. Ultimately, I had to also change
nearly all the HTML files in /etc/mailman/en/, each of which
needed different changes based on what files they were, and there was no
clear guideline. I guess I could have
added <MM-Mailman-Footer> to every file that had
a </BODY> but didn’t have that yet to get my footer
everywhere, but in the end, I custom-hacked the whole thing.

My full
patches that I applied to all the mailman files is available on
copyleft.org
, in case you want to see how I did it.