| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
general#passwords section, and to the `moderator' option where
appropriate.
Likewise for `moderator' option.
Also, dont_respond_to_post_requests => respond_to_post_requests
and switch the polarity of the No/Yes radio.
|
| |
|
|
|
|
|
| |
this is ugly, but it makes the job much easier for translators of
certain languages.
Also say "list moderator" instead of "list administrator".
|
| |
|
|
|
|
|
| |
invalid.
password_inputs(): Add a <a name...> tag here so we can create a
<a href="general#passwords"> link directly to this section.
|
| | |
|
| |
|
|
| |
dont_respond_to_post_requests => respond_to_post_requests change.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
binary radio options as "No" then "Yes", we had to change the
polarity of dont_respond_to_post_requests. Rename the option
respond_to_post_requests and use versions to update the attribute
and value.
AddMember(): In HoldSubscription() call, the local variable `name'
holds the user's full name, not `fullname'. Also say "moderator"
instead of "administrator".
|
| |
|
|
|
|
|
| |
this is ugly, but it makes the job much easier for translators of
certain languages.
Also, consistancy for strings which have similar messages.
|
| |
|
|
| |
integer since that's what MemberAdaptor eventually wants.
|
| |
|
|
| |
no longer sends out notifications if the user's password is `false'.
|
| | |
|
| |
|
|
|
| |
__checkone(): Likewise, if the secret isn't a string, return 0
(i.e. no the user isn't authenticated).
|
| |
|
|
|
|
|
|
| |
the evictions dictionary too.
_save(): Go through and delete any evictions keys which don't appear
in the pending dictionary (i.e. we're cleaning up after ourselves
due to the above bug).
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
kept as a bitfield value in user_options, even though there's an
mm_cfg.Digests `flag'. So special case asking for this option by
checking the `where' value returned by __get_cp_member().
addNewMember(): Similarly, there's no point in setting user_options to
mm_cfg.Digests if the member wants to receive digests, since the
state of that flag is kept elsewhere.
setMemberOption(): More of the same; we can always return from the "if
flag == Digests" clause without touching user_options.
|
| |
|
|
|
|
| |
UserDesc constructor. Previously, we were assigning the password
to the fullname, and the digest to the password, so users were
ending up with a password of the integer 0. Very bogus.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
getMemberPassword(user). First, we assert that the user is a
member because there should be no way to get here if that's not
the case. Second, it is a nasty bug if the user does not have a
valid password, but one that the list administrator really can do
little about. Instead, if the user is found to have a `false'
password, we simply assign them a new one, which is fine because
they're asking for their password now, so we'll just ship them the
new one.
This means we no longer need templates/*/nopass.txt, soon to be
deleted. It also means that we won't raise MMBadUserError here,
which is fine because the caller never checked for that exception
anyway. ;)
|
| |
|
|
| |
mailing list.
|
| |
|
|
|
| |
delete the `filebase' key. That should be enough to update it to
version 3.
|
| |
|
|
|
|
|
|
| |
directory. To "update" any unprocessed message from a MM2.0
system to MM2.1, it should be sufficient to simply move them to
qfiles/in and rename them so that they have the received time
prepended to the basename (as expected by Switchboard's
...split('+') format).
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
stale lock (by matching hostname and pid) it will delete the lock
files before trying to reclaim them.
Also added -q/--quiet to suppress status messages (but not error
messages, which always go to stderr).
sigterm_handler(): We need to catch SIGTERM since that's what init
will send us when changing run levels. SIGTERM just kills all the
sub-qrunners with SIGINT (i.e. no restart).
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
.cvsignore: ignore S98mailman generated from S98mailman.in
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
`explicit' but the reply_to_address is invalid.
Also, include some notes about better RFC 2369 support...
|
| | |
|
| |
|
|
| |
non-breaking. Also, consistency in capitalization.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
Language gui module. We'll group it with the available_languages
option.
Also, fix the category description so that it isn't specified as
two adjacent strings, but instead one TQS.
|
| |
|
|
|
|
|
|
|
|
| |
when creating the mailing list. A checkbox array is displayed that
contains all the server-supported languages, with the
DEFAULT_SERVER_LANGUAGE checked by default. List preferred language
still needs to be chosen after-the-fact through the admin pages (it
defaults to DEFAULT_SERVER_LANGUAGE).
process_request(): Make sure that the list name isn't the empty string!
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Make sure most tables have an explicit width of 100%, otherwise
vertical Checkboxes cause the table to be squashed.
show_results(): Split the "Configuration Categories" unordered list
into two columns. Still not perfect, but better than having 11
members in one column on the left.
"Edit the HTML for the public list pages" => "Edit the public HTML pages"
get_item_gui_value(): Handle the new Checkbox widget.
get_valid_value(): If widget type is Email, only attempt to validate
the value if it is not the empty string. This fixes SF bug
#219571, which prevented the reply_to_address field from being
cleared.
Also, teach this about the Checkbox widget type. Make sure that
the value is a list. It'll be a scalar if exactly one of the
checkboxes is selected, but we always treat it as a list.
change_options(): When calling get_valid_value(), catch any
EmailAddressErrors that can occur due to hostile or otherwise bad
email addresses in the reply_to_address field. Print an error
message in that case.
add_error_message(): Change the way the `tag' argument is defaulted,
so we can translate the default value.
|
| |
|
|
| |
NewVars(): Add available_languages attribute if missing.
|
| |
|
|
|
|
|
|
| |
boxes (i.e. multiple selections). Refactor RadioButtonArray class
into new base class WidgetArray which contains most of the logic.
RadioButtonArray and CheckBoxArray inherit from WidgetArray.
map(None, ...) => zip(...)
|
| |
|
|
| |
attribute.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
used anywhere anymore.
InitVars(): Added the available_languages attribute which will hold
the list of language codes supported by this mailing list.
Create(): Take an extra optional argument `langs' which holds a list
of language codes that the mailing list should initially support.
Default this to the list's preferred language (which in turn
defaults to DEFAULT_SERVER_LANGUAGE).
Save(): I don't think we need IsListInitialized() any more.
Load(): Removed the _ready attribute.
IsListInitialized(): Removed.
GetAvailableLanguages(): Don't key the list of available languages off
the subdirectories in lists/<mylist>. The tiered-template lookup
only requires those directories to exist if there are site
customizations of the templates. Instead, return the value of
self.available_languages, but with DEFAULT_SERVER_LANGUAGE forced
as a member.
|
| |
|
|
|
|
|
|
| |
This will hold the preferred and available language options.
Checkbox: New widget type.
Add the Hungarian/hu language (I'm assuming it's charset is iso-8859-1).
|
| |
|
|
| |
to be inside the character-set.
|
| |
|
|
| |
the argument to time.ctime() defaults to 'the current time'.
|
| |
|
|
| |
bounce messages I've collected.
|
| |
|
|
|
|
|
| |
X-Mailer: <SMTP32 v....
header. Also, different prefix sentences before the address have been
spotted in the wild.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|