summaryrefslogtreecommitdiff
path: root/Mailman
Commit message (Collapse)AuthorAgeFilesLines
...
* ADMIN_CATEGORIES: Add the 'language' category just after 'general'.bwarsaw2001-08-141-1/+3
| | | | | | | | 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).
* _badchars(): Fixed a typo in the last change; the `/' character needsbwarsaw2001-08-141-1/+1
| | | | to be inside the character-set.
* addlist(): Don't rely on the brilliant new feature in Python 2.1, wheretwouters2001-08-111-1/+1
| | | | the argument to time.ctime() defaults to 'the current time'.
* It seems that all SMTP32 mailers have anbwarsaw2001-08-041-4/+22
| | | | | | | X-Mailer: <SMTP32 v.... header. Also, different prefix sentences before the address have been spotted in the wild.
* ScanMessages(): Added SimpleWarning and LLNL modules.bwarsaw2001-08-041-0/+2
|
* Fix copyright yearsbwarsaw2001-08-041-1/+1
|
* intermediatebwarsaw2001-08-041-0/+35
|
* Extend the address-cre for "failed addresses follow:" to matchbwarsaw2001-08-041-1/+1
| | | | simple_04.txt
* process(): Add a default argument `patterns' so similar modules likebwarsaw2001-08-041-1/+2
| | | | SimpleWarning can pass this in.
* Recognize two similar Postfix mutations: something calling itselfbwarsaw2001-08-041-2/+11
| | | | "KeftaMail" and another calling itself "BSN Postfix".
* process(): "Internet Mail Service" sure looks awfully similar. Webwarsaw2001-08-041-0/+3
| | | | just need to not recognize lines that start with whitespace.
* check(): Add `delayed' as a valid Action: to match on.bwarsaw2001-08-041-1/+4
|
* intermediatebwarsaw2001-08-041-0/+46
|
* GetConfigInfo(): Vizi Szilard noticed a few strings missing i18nbwarsaw2001-08-041-1/+1
| | | | markings.
* create(): Instead of using MAILMAN_OWNER, use Utils.get_site_email().bwarsaw2001-08-041-4/+6
| | | | The former config variable is going away.
* process(): Instead of using MAILMAN_OWNER, use Utils.get_site_email().bwarsaw2001-08-041-1/+1
| | | | The former config variable is going away.
* listinfo_overview(): Instead of using MAILMAN_OWNER, usebwarsaw2001-08-041-2/+2
| | | | Utils.get_site_email(). The former config variable is going away.
* process_request(): Instead of using MAILMAN_OWNER, usebwarsaw2001-08-041-6/+5
| | | | Utils.get_site_email(). The former config variable is going away.
* admin_overview(): Instead of using MAILMAN_OWNER, usebwarsaw2001-08-041-1/+1
| | | | Utils.get_site_email(). The former config variable is going away.
* get_site_email(): New function.bwarsaw2001-08-041-0/+6
|
* ApprovedAddMember(), ApprovedDeleteMember(): Instead of usingbwarsaw2001-08-041-4/+5
| | | | | MAILMAN_OWNER, use Utils.get_site_email(). The former config variable is going away.
* MAILMAN_OWNER: Removed.bwarsaw2001-08-041-1/+1
| | | | | | MAILMAN_SITE_LIST: Names the "master site list" which must exist, and from which all site-related email appears to come from (e.g. password reminders).
* HandleBouncingAddress(): Instead of using MAILMAN_OWNER, usebwarsaw2001-08-041-2/+3
| | | | Utils.get_site_email(). The former config variable is going away.
* intermediatebwarsaw2001-08-031-0/+44
|
* process(): If the message should be personalized (i.e. its metadatabwarsaw2001-08-031-3/+22
| | | | | | | | | has a true 'personalized' key), then calculate an additional dictionary of interpolation variables for the header and footer. This contains keys specific to the user who is the recipient of this copy of the message. decorate(): Take an optional `extradict' of interpolation mappings.
* cosmeticbwarsaw2001-08-031-1/+0
|
* GetConfigInfo(): UI changes, first to make the header and footer textbwarsaw2001-08-031-3/+47
| | | | | | boxes higher (10 lines instead of 4). Second, if OWNERS_CAN_ENABLE_PERSONALIZATION, add the config info for the `personalize' attribute.
* change_options(): Always change the user's realname, not just if thebwarsaw2001-08-031-3/+2
| | | | | value is `true'. This allows us to delete the name and have it removed from the member database.
* NewVars(): Add the `personalize' attribute if it's missing.bwarsaw2001-08-031-0/+1
|
* DATA_FILE_VERSION: Bump up to pick up the new `personalize' attribute.bwarsaw2001-08-031-1/+1
|
* getMemberCPAddress(): Bug fix -- return the case preserved address notbwarsaw2001-08-031-1/+1
| | | | the argument.
* InitVars(): Initialize the `personalize' list attribute. Defaults to 0.bwarsaw2001-08-031-0/+1
|
* OWNERS_CAN_ENABLE_PERSONALIZATION: Flag which controls whether listbwarsaw2001-08-031-0/+8
| | | | | | | | | | | | | | admins can "personalize" their mailing lists. Personalization is a new feature where each recipient gets their own copy of the message, and the headers and footers can include additional information specific to the user. Since this can impose a greater system burden, it must be enabled by the site administrator in order for the list admins to see or set the option. Note that this currently only works for regular delivery. GLOBAL_PIPELINE: Add the "Personalize" handler module, which actually sets the messages up for personalization.
* Some UI improvements suggested by Michael Yount:bwarsaw2001-08-031-9/+9
| | | | | | | | GetConfigInfo(): Elaborate the details for admin_immed_notify to make it clear that the list moderators and the list administrators get the notification. Also, spell out "kilobytes".
* Some UI improvements suggested by Michael Yount:bwarsaw2001-08-031-88/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | show_results(): Elaborate on the "Make your changes text...". Reorganize the category specific elements so that the "find member" section is added here instead of in membership_options(). This lets us put an hr in between these sections. Also, hyperlink "Python regular expression" to point to the library reference manual's description of regexp syntax. show_variables(): No longer needs the `form' argument, since it doesn't call membership_options() any more (that's called directly from show_results() instead). membership_options(): Just pass in the subcategory instead of calculating it here. It's figured out by show_results(). Also, don't add the "find member" section here; it's also added by show_results(). Reorganize the big member table to change the sense of the subscription check box. I've always hated the fact that you turn /off/ the subscr checkbox to unsubscribe somebody! Instead, now you turn on the unsub checkbox to unsubscribe them. To make this standout even more visually, the unsub column is moved to the left of the name/addr column. I still hate the abbreviations, but don't have any better ideas. This does improve things though because the members to be effected (i.e. unsubscribed) stand out much better now. mass_subscribe(), mass_remove(): More reorganization to put the questions in their own table cells. This helps line things up better, although it isn't perfect. Also, shrink the width of the text area a bit.
* subscription_confirm(): Remove unnecessary argument.bwarsaw2001-08-021-1/+1
|
* Ahwoops, forgot a comma.bwarsaw2001-08-021-8/+8
|
* process_form(): Since this no longer gets called from the "editbwarsaw2001-08-021-41/+0
| | | | | | | | options" button on the listinfo page, it doesn't need to deal with the UserOptions form key, nor does it need to do the hackishly disgusting call_script() trick to get options.py invoked. call_script(): Removed.
* main(): Do something more useful when no user was given, either in thebwarsaw2001-08-021-21/+34
| | | | | | | | | | | url or in the form data. In that case, present the login page with an extra field prompting for the email address. Also, optionally get the email address out of the form data, if present. listinfo.html has changed so that it calls this script directly, with the `email' item holding the address. The login page uses the same item name, so either will work. loginpage(): Accept user=None meaning, prompt for the email address.
* list_listinfo(): Add a replacement for <mm-options-form-start>. Seebwarsaw2001-08-021-0/+1
| | | | listinfo.html for parallel change.
* show_results(): Ousmane Wilane noticed a missing i18n markup. Also,bwarsaw2001-08-021-2/+4
| | | | | include the `linktable' at the bottom of the page too. Not too pretty but it should avoid most scrollbar ping-ponging.
* GetMailmanFooter(): Add a link to the listinfo overview page for thebwarsaw2001-08-021-12/+16
| | | | | | | | | | 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.
* Order add_language() calls alphabetically by language code.bwarsaw2001-08-021-6/+8
|
* process(): Be sure to del msg['from'] before adding a new From:bwarsaw2001-08-011-0/+1
| | | | | header. With mimelib, you must delete any existing headers first to suppress duplicates.
* process(): NotAMember -> NotAMemberErrorbwarsaw2001-08-011-1/+1
|
* hold_for_approval(): When holding the message for approval, generate abwarsaw2001-07-301-1/+6
| | | | | | cookie referencing the held request id. Include this cookie in the postheld.txt message sent to the user. This allows them to cancel the posting if done before the moderator disposes it.
* main(): Add support for allowing a user who posted a held message tobwarsaw2001-07-301-0/+114
| | | | | | | | | explicitly cancel the message via the web confirmation mechanism. heldmsg_cancel(), heldmsg_confirm(), heldmsg_prompt(): New functions, slightly misnamed (but retained for consistency). I.e. "canceling" means "continue awaiting approval" and "confirming" means "cancel the posting".
* Add a new confirmation type, for held messages.bwarsaw2001-07-301-0/+2
|
* HoldMessage(): Return the id of the held message record in the database.bwarsaw2001-07-301-0/+5
| | | | | HandleRequest(): Add a note for later about syncing the held message db and the confirmation cookie.
* __onefile(): Another step towards conversion to MemberAdaptorbwarsaw2001-07-291-1/+1
| | | | API. GetPreferredLanguage() -> getMemberLanguage()