| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
they'll have a bounce info record, and if that record has a score
above 0, we'll add a little bit of information to their options page
explaining their current bounce score and some advice for fixing the
problem.
|
| |
|
|
|
|
| |
getDeliveryStatus() instead of getMemberOption(). Also, tailor the
disable notification based on the actual status -- gives more detail
about how the membership was actually disabled.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
a hidden field so that the language choice can be propagated to the
options page.
RosterOption(): Same, for the roster page.
GetLangSelectBox(): Factor out the creation of the language selection
widget, since other code will need the same thing.
GetStandardReplacements(): Use GetLangSelectBox().
|
| |
|
|
| |
up with what options.py expects.
|
| |
|
|
| |
Russian translation easier.
|
| |
|
|
|
|
| |
"member". This makes translation to some languages difficult.
Instead, construct different messages based on whether
num_concealed is == 1 or > 1.
|
| |
|
|
|
|
|
| |
mailto: to their personal email address. Instead, hyperlink the
lot of them with a mailto: to the list's -owner address. That
let's us do a spam detect on the message before forwarding on the
owners.
|
| |
|
|
| |
multiline individual strings.
|
| |
|
|
|
|
|
|
|
|
| |
domain. From there you can get to the admin overview.
FormatEditingOption(): Remove the docstring. Also, rework the
glomming up of the text local variable to be more efficient, and
to emphasize that the same field/button should be used to quickly
unsubscribe from the list. Also, indicate what happens if you
leave the field blank.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
API instead, e.g.
GetDigestMembers() -> getDigestMemberKeys()
GetUserOption() -> getMemberOption()
GetMembers() -> getRegularMemberKeys()
FormatOptionButton(): Add ReceiveNonmatchingTopics flag.
FormatBox(): Add optional `value' parameter, which if supplied is the
default value for teh input box (default is the empty string).
|
| |
|
|
|
| |
first try to get the index of the explicit argument, falling back to
the list's preferred language, and the server's default.
|
| |
|
|
| |
converted to multiline strings for ease of translation.
|
| |
|
|
|
|
|
|
| |
value to 'remind'.
FormatDisabledNotice(): Cleaned up the text message by using
multi-line strings and string interpolation. This should also improve
the ability for these messages to be translated into Japanese.
|
| |
|
|
| |
user option.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and all references to this volatile instance variable have been
removed.
SnarfHTMLTemplate(): Also removed, since maketext() does all this in a
more general way.
ParseTags(): Use Utils.maketext() instead of SnarfHTMLTemplate().
InitTemplates(): Because of the new support for expanded template
searches, the only thing that's necessary for a list to support a
language is for it to have a (possibly empty) directory named after
the language code. Thus, the copying of template files done in this
method are unnecessary.
|
| |
|
|
|
|
| |
module with re. This quiets a Python 2.1 warning.
Also, de-string-module-ification.
|
| |
|
|
|
|
| |
former does the proper urllib.quote()'ing of the email address.
Close SF bug #214161 (old Jitterbug PR#198).
|
| |
|
|
| |
list-specific language templates directory.
|
| | |
|
| |
|
|
|
|
| |
Added some missing _() wrappers.
Fix some _() wrappings to use local variables.
|
| |
|
|
|
|
| |
find the template if lists/<listname>/<lang> doesn't exist. The
update script now creates the `en' language subdir and moves all the
templates into it.
|
| |
|
|
|
| |
module. Also, default to getting the source templates out of
$MM/templates if $MM/templates/<lang> doesn't exist.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Carlos's contribution or not. Specifically,
GetMailmanFooter(), FormatSubscriptionMsg(), FormatEditingOption():
Mark some strings as translatable, using the Mailman.i18n._
`auto-interpolating' function.
SnarfHTMLTemplate(): Catch IOErrors which could result if a list was
created in an older version of Mailman before the i18n support was
added.
GetStandardReplacements(): Watch out for missing list preferred
language (can happen to an older list which hasn't been updated). Use
DEFAULT_SERVER_LANGUAGE in that case.
InitTemplates(): Some additional code reorg.
|
| |
|
|
|
|
|
|
| |
Mark lots of strings as translatable.
SnarfHTMLTemplate(), FormatUsers(), FormatEditingOption(),
FormatReminder(), GetStandardReplacements(), GetAllReplacements(),
InitTemplates(): Accept optional `lang' argument.
|
| |
|
|
|
| |
list footer. Makes it much easier to get to the admin pages from the
normal user pages.
|
| |
|
|
|
| |
GetMailmanFooter(), FormatUsers(), FormatFormStart():
GetRelativeScriptURL() => GetScriptURL()
|
| |
|
|
| |
action path. SF Patch #100556.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
function.
|
| |
|
|
| |
print the text and not include an img tag.
|
| |
|
|
|
| |
www.list.org (including alt text). Logo location comes from
DELIVERED_BY_URL variable.
|
| | |
|
| |
|
|
|
|
| |
on the page. (It should be available on the top, even more, but i
don't see how to do so without cluttering at the moment, and my
connection is so low band that i can't scope it out right now.)
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
calculation of html user lists to the roster cgi program.
HTMLFormatter: added a .GetAllReplacements() method that does the same
thing as GetStandardRepplacements() but also calculates all the html
for users lists. Removed the calculation of all the html for the user
lists from GetStandardReplacements().
Cgi/roster.py replaced call of GetStandardReplacements() with
GetAllReplacements().
scott
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
dicts instead of lists, which optimizes Utils.FindMatchingAddresses
and general membership management, especially for large lists.
MailList.py now supplies .GetMembers() and .GetDigestMembers() to
supply the data in list form to anything that needs it that way.
An new install showed this worked fine with some cursory testing of
the cgi's and interactive poking around.
A detailed listing of the changes follows:
Mailman/Defaults.py.in: change data version to 11
Mailman/Digester.py: initvars now instantiates digest_members as {}
instead of []
lines 113-114 and 121-122 now use del
This change implements storing list members and digest members as
dicts instead of lists, which optimizes Utils.FindMatchingAddresses
and general membership management, especially for large lists.
MailList.py now supplies .GetMembers() and .GetDigestMembers() to
supply the data in list form to anything that needs it that way.
Though INSTALL shows up on the changed files section, a diff a few
seconds ago didn't show any differences in that file, so I hope nobody
changed it in the interim.
An new install showed this worked fine with some cursory testing of
the cgi's and interactive poking around.
A detailed listing of the changes follows:
Mailman/Defaults.py.in: change data version to 11
Mailman/Digester.py: initvars now instantiates digest_members as {}
instead of []
lines 113-114 and 121-122 now use del
list.[digest_]member instead of
list.[digest_]members.remove
when figuring who to actually send digests to,
use list.GetDigestMembers() instead of
list.digest_members.
Mailman/HTMLFormatter: now uses list.Get[Digest]Members to get
subscribers, and length of digested subscribers
and regular members
MailCommandHandler, SecurityManager,Cgi/handle_opts, Cgi/options: all
simple replacements of list.[digest_]members with
list.Get[Digest]Members().
Mailman/Cgi/admin.py: mostly simple replacements of
list.[digest_]members with the Get..() methods, however, the
membership management section now works much quicker and changes
digest->nodigest subscriptions via dictionary manipulations.
Mailman/versions.py: updates lists to use dicts and changed
list.[digest_]members to use the list.Get[Digest]Members() methods.
Mailman/Utils.py: added a function "GetPossibleMatchingAddresses"
which when fed an address, returns the list of addresses that "smart"
address matching would match.
changed FindMatchingAddresses(name, list) to use a new signature:
FindMatchingAddresses(name, *dicts), where dicts is a list of
dictionaries keyed by addresses. Just realized that this would better
be FindMatchingAddresses(name, dict, *dicts) so that it enforces
atleast 2 args... I'll make that change in a sec.
All uses of FindMatchingAddresses have been changed to fit the new
arguments.
scott
----:**-F1 cvs30458aaa 1:12PM 0.98 Mail (Text Fill)--L59--32%-------------------------------------------
?
|
| |
|
|
|
| |
bogus url for handle_opts (one nesting level too high).
scott
|
| |
|
|
|
|
| |
now only states that "your password will be mailed to you once a
month" if the list is set to do that.
scott
|
| |
|
|
|
| |
bug reported by greg stein
scott
|
| |
|
|
|
|
| |
umbrellafied member address, and this was hidden by the lynx web page
cache until i extended my testing to another page. (I wonder if
there's a way to reduce the rather aggressive caching that lynx does?)
|
| |
|
|
|
|
|
|
|
|
|
| |
address for a member - trivially just the members regular address
*unless* we're talking about the member of an umbrella list, in which
case it has the umbrella_member_suffix appended to the account part of
the addr.
This is used everywhere that i was duplicating the functionality in my
last round of checkins, including a few places in MailLists.py as well
as the other files.
|
| |
|
|
|
| |
send-password button that the password is going to the owner address,
and why...
|
| | |
|
| |
|
|
|
|
|
| |
believe this should be InitVars(). Second, I move the list's HTML
template files into $prefix/lists/<listname>.
SnarfHTMLTemplate(): Call InitVars() instead of InitTempVars()
|
| |
|
|
|
|
| |
(Previously, mailman would crash when InitTempVars() was trying to
construct the _template_dir setting by concatenating the TEMPLATE_DIR
with the None setting for self._internal_name.)
|
| |
|
|
| |
Removed RCS crud
|