These simple patches -- submitted in my new insanely generous 30-line context diff fashion -- will add <MM-Post></MM-Post> anchors to link to the postmsg script, and use them in the listinfo.html template.
-S
===File mailman/Mailman/HTMLFormatter.py.diff====================== Index: HTMLFormatter.py
RCS file: /home/cherub/cvs/mailman/Mailman/HTMLFormatter.py,v retrieving revision 1.1 retrieving revision 1.2 diff -c -3 -0 -r1.1 -r1.2 *** HTMLFormatter.py 1999/07/28 20:42:33 1.1 --- HTMLFormatter.py 1999/08/27 01:32:37 1.2
*** 282,386 **** --- 282,391 ---- whom = 'Admin address:' # Solicit the user and password. container.AddItem(self.RestrictedListMessage('subscribers list', self.private_roster) + " <p>Enter your " + string.lower(whom[:-1]) + " and password to visit" " the subscribers list: <p><center> " + whom + " ") container.AddItem(self.FormatBox('roster-email')) container.AddItem(" Password: " + self.FormatSecureBox('roster-pw') + " ") container.AddItem(SubmitButton('SubscriberRoster', 'Visit Subscriber List')) container.AddItem("</center>") return container
def FormatFormStart(self, name, extra=''):
base_url = self.GetAbsoluteScriptURL(name)
if extra:
full_url = "%s/%s" % (base_url, extra)
else:
full_url = base_url
return ('<FORM Method=POST ACTION="%s">' % full_url)
def FormatArchiveAnchor(self):
return '<a href="%s">' % self.GetBaseArchiveURL()
def FormatPostAnchor(self):
return '<a href="%s">' % self.GetRelativeScriptURL('postmsg')
def FormatFormEnd(self):
return '</FORM>'
def FormatBox(self, name, size=20):
return '<INPUT type="Text" name="%s" size="%d">' % (name, size)
def FormatSecureBox(self, name):
return '<INPUT type="Password" name="%s" size="15">' % name
def FormatButton(self, name, text='Submit'):
return '<INPUT type="Submit" name="%s" value="%s">' % (name, text)
def FormatReminder(self):
if self.send_reminders: return 'Once a month, your password will be emailed to you as a reminder.' return ''
def ParseTags(self, template, replacements):
text = self.SnarfHTMLTemplate(template) parts = regsub.splitx(text, '</?[Mm][Mm]-[^>]*>') i = 1 while i < len(parts): tag = string.lower(parts[i]) if replacements.has_key(tag): parts[i] = replacements[tag] else: parts[i] = '' i = i + 2 return string.join(parts, '')
# This needs to wait until after the list is inited, so let's build it # when it's needed only. def GetStandardReplacements(self): dmember_len = len(self.GetDigestMembers()) member_len = len(self.GetMembers())
return { '<mm-mailman-footer>' : self.GetMailmanFooter(), '<mm-list-name>' : self.real_name, '<mm-email-user>' : self._internal_name, '<mm-list-description>' : self.description, '<mm-list-info>' : string.join(string.split(self.info, '\n'), '<br>'), '<mm-form-end>' : self.FormatFormEnd(), '<mm-archive>' : self.FormatArchiveAnchor(), '</mm-archive>' : '</a>',
'<mm-post>' : self.FormatPostAnchor(),
'</mm-post>' : '</a>', '<mm-list-subscription-msg>' : self.FormatSubscriptionMsg(), '<mm-restricted-list-message>' : \ self.RestrictedListMessage('current archive', self.archive_private), '<mm-num-reg-users>' : `member_len`, '<mm-num-digesters>' : `dmember_len`, '<mm-num-members>' : (`member_len + dmember_len`), '<mm-posting-addr>' : '%s' % self.GetListEmail(), '<mm-request-addr>' : '%s' % self.GetRequestEmail(), '<mm-owner>' : self.GetAdminEmail(), '<mm-reminder>' : self.FormatReminder(), '<mm-host>' : self.host_name, } def GetAllReplacements(self): """ returns standard replaces plus formatted user lists in a dict just like GetStandardReplacements. """ d = self.GetStandardReplacements() d.update({"<mm-regular-users>": self.FormatUsers(0), "<mm-digest-users>": self.FormatUsers(1)}) return d def InitTemplates(self):
def ExtensionFilter(item): return item[-5:] == '.html'
files = filter(ExtensionFilter, os.listdir(mm_cfg.TEMPLATE_DIR)) Utils.MakeDirTree(self._template_dir)
===File mailman/templates/listinfo.html.diff======================= Index: listinfo.html
RCS file: /home/cherub/cvs/mailman/templates/listinfo.html,v retrieving revision 1.1 retrieving revision 1.2 diff -c -3 -0 -r1.1 -r1.2 *** listinfo.html 1999/07/28 20:42:34 1.1 --- listinfo.html 1999/08/27 01:34:27 1.2
*** 1,76 **** ! <!-- $Revision: 1.1 $ --> <HTML> <HEAD> <TITLE><MM-List-Name> Info Page</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<MM-Subscribe-Form-Start>
<P>
<TABLE COLS="1" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#99CCFF" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1"><MM-List-Name> --
<MM-List-Description></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<p>
</td>
</tr>
<tr>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
<B><FONT COLOR="#000000">About <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<P><MM-List-Info></P>
<p> To see the collection of prior postings to the list,
visit the <MM-Archive><MM-List-Name>
Archives</MM-Archive>.
<MM-Restricted-List-Message>
</p>
</TD>
</TR>
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
<B><FONT COLOR="#000000">Using <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
To post a message to all the list members, send email to
<A HREF="mailto:<MM-Posting-Addr>"><MM-Posting-Addr></A>.
<p>You can subscribe to the list, or change your existing
subscription, in the sections below.
</td>
</tr>
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
<B><FONT COLOR="#000000">Subscribing to <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<P>
Subscribe to <MM-List-Name> by filling out the following
form.
<MM-List-Subscription-Msg>
<ul>
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2"
WIDTH="70%" HEIGHT= "112">
<TR>
<TD BGCOLOR="#dddddd" WIDTH="55%">Your email address:</TD>
<TD WIDTH="33%"><MM-Subscribe-Box>
</TD>
<TD WIDTH="12%"> </TD></TR>
<TR>
<TD COLSPAN="3"><FONT SIZE=-1>You must enter a
privacy password. This provides only mild security,
but should prevent others from messing with your
subscription. Do not use valuable passwords!
<MM-Reminder>
--- 1,80 ---- ! <!-- $Revision: 1.2 $ --> <HTML> <HEAD> <TITLE><MM-List-Name> Info Page</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<MM-Subscribe-Form-Start>
<P>
<TABLE COLS="1" BORDER="0" CELLSPACING="4" CELLPADDING="5">
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#99CCFF" ALIGN="CENTER">
<B><FONT COLOR="#000000" SIZE="+1"><MM-List-Name> --
<MM-List-Description></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<p>
</td>
</tr>
<tr>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
<B><FONT COLOR="#000000">About <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
<P><MM-List-Info></P>
<p> To see the collection of prior postings to the list,
visit the <MM-Archive><MM-List-Name>
Archives</MM-Archive>.
<MM-Restricted-List-Message>
</p>
</TD>
</TR>
<TR>
<TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0">
<B><FONT COLOR="#000000">Using <MM-List-Name></FONT></B>
</TD>
</TR>
<tr>
<td colspan="2">
To post a message to all the list members, send email to
<A HREF="mailto:<MM-Posting-Addr>"><MM-Posting-Addr></A>.
<p> If you are a subscriber, you can post a message to the
mailing list <MM-Post>here</MM-Post>.
</p> <p>You can subscribe to the list, or change your existing subscription, in the sections below.
</td> </tr> <TR> <TD COLSPAN="2" WIDTH="100%" BGCOLOR="#FFF0D0"> <B><FONT COLOR="#000000">Subscribing to <MM-List-Name></FONT></B> </TD> </TR> <tr> <td colspan="2"> <P> Subscribe to <MM-List-Name> by filling out the following form. <MM-List-Subscription-Msg> <ul> <TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2" WIDTH="70%" HEIGHT= "112"> <TR> <TD BGCOLOR="#dddddd" WIDTH="55%">Your email address:</TD> <TD WIDTH="33%"><MM-Subscribe-Box> </TD> <TD WIDTH="12%"> </TD></TR> <TR> <TD COLSPAN="3"><FONT SIZE=-1>You must enter a privacy password. This provides only mild security, but should prevent others from messing with your subscription. Do not use valuable passwords!
<MM-Reminder>