summaryrefslogtreecommitdiff
path: root/Mailman/Cgi/admin.py
diff options
context:
space:
mode:
authorbwarsaw2000-12-26 18:20:01 +0000
committerbwarsaw2000-12-26 18:20:01 +0000
commite5c72c764a5ddb42c1b927d89047c8b2af336043 (patch)
tree6c109e1ce2fc99133403d9d1aa8c3efeaf450c06 /Mailman/Cgi/admin.py
parent369e010d18dced7e3cd25255fc06830ad7cbc56b (diff)
downloadmailman-e5c72c764a5ddb42c1b927d89047c8b2af336043.tar.gz
mailman-e5c72c764a5ddb42c1b927d89047c8b2af336043.tar.zst
mailman-e5c72c764a5ddb42c1b927d89047c8b2af336043.zip
Diffstat (limited to 'Mailman/Cgi/admin.py')
-rw-r--r--Mailman/Cgi/admin.py77
1 files changed, 53 insertions, 24 deletions
diff --git a/Mailman/Cgi/admin.py b/Mailman/Cgi/admin.py
index 63b6e3e90..3787406ad 100644
--- a/Mailman/Cgi/admin.py
+++ b/Mailman/Cgi/admin.py
@@ -33,17 +33,7 @@ from Mailman import mm_cfg
from Mailman.Cgi import Auth
from Mailman.Logging.Syslog import syslog
-
-CATEGORIES = [('general', "General Options"),
- ('members', "Membership Management"),
- ('privacy', "Privacy Options"),
- ('nondigest', "Regular-member (non-digest) Options"),
- ('digest', "Digest-member Options"),
- ('bounce', "Bounce Options"),
- ('archive', "Archival Options"),
- ('gateway', "Mail-News and News-Mail gateways"),
- ('autoreply', 'Auto-responder'),
- ]
+CATEGORIES = []
@@ -54,6 +44,7 @@ def main():
settings, which is processed before producing the new version.
"""
+ global CATEGORIES
doc = Document()
parts = Utils.GetPathPieces()
if not parts:
@@ -90,14 +81,17 @@ def main():
Auth.loginpage(mlist, 'admin', frontpage=1)
return
+ os.environ['LANG'] = mlist.preferred_language
+
CATEGORIES = [('general', _("General Options")),
- ('members', _("Membership Management")),
- ('privacy', _("Privacy Options")),
- ('nondigest', _("Regular-member (non-digest) Options")),
- ('digest', _("Digest-member Options")),
- ('bounce', _("Bounce Options")),
- ('archive', _("Archival Options")),
- ('gateway', _("Mail-News and News-Mail gateways"))]
+ ('members', _("Membership Management")),
+ ('privacy', _("Privacy Options")),
+ ('nondigest', _("Regular-member (non-digest) Options")),
+ ('digest', _("Digest-member Options")),
+ ('bounce', _("Bounce Options")),
+ ('archive', _("Archival Options")),
+ ('gateway', _("Mail-News and News-Mail gateways")),
+ ]
if category not in map(lambda x: x[0], CATEGORIES):
category = 'general'
@@ -169,6 +163,8 @@ def FormatAdminOverview(error=None):
if l.advertised:
advertised.append(l)
+ os.environ['LANG'] = mm_cfg.DEFAULT_SERVER_LANGUAGE
+
if error:
greeting = FontAttr(error, color="ff5060", size="+1")
else:
@@ -498,6 +494,17 @@ def GetItemGuiValue(mlist, kind, varname, params):
container.AddItem(_('<br><em>...specify a file to upload</em><br>'))
container.AddItem(FileUpload(varname+'_upload', r, c))
return container
+
+ # jcrey - new to deal with language
+ elif kind == mm_cfg.Select:
+ if params:
+ values, legend, selected = params
+ else:
+ values = mlist.GetAvailableLanguages()
+ legend = map(_, map(Utils.GetLanguageDescr, values))
+ selected = values.index(mlist.preferred_language)
+ return SelectOptions(varname, values, legend, selected)
+
def GetItemGuiDescr(mlist, category, varname, descr, detailsp):
@@ -533,7 +540,7 @@ def FormatMembershipOptions(mlist, cgi_data):
user_table.AddRow([Center(Header(4, _("Membership List")))])
user_table.AddCellInfo(user_table.GetCurrentRowIndex(),
user_table.GetCurrentCellIndex(),
- bgcolor="#cccccc", colspan=8)
+ bgcolor="#cccccc", colspan=9)
membercnt = len(mlist.members) + len(mlist.digest_members)
chunksz = mlist.admin_member_chunksize
user_table.AddRow(
@@ -542,13 +549,13 @@ def FormatMembershipOptions(mlist, cgi_data):
))])
user_table.AddCellInfo(user_table.GetCurrentRowIndex(),
user_table.GetCurrentCellIndex(),
- bgcolor="#cccccc", colspan=8)
+ bgcolor="#cccccc", colspan=9)
user_table.AddRow(map(Center, [_('member address'), _('subscr'),
_('hide'), _('nomail'), _('ack'), _('not metoo'),
- _('digest'), _('plain')]))
+ _('digest'), _('plain'), _('language')]))
rowindex = user_table.GetCurrentRowIndex()
- for i in range(8):
+ for i in range(9):
user_table.AddCellInfo(rowindex, i, bgcolor='#cccccc')
all = mlist.GetMembers() + mlist.GetDigestMembers()
if len(all) > mlist.admin_member_chunksize:
@@ -602,6 +609,17 @@ def FormatMembershipOptions(mlist, cgi_data):
checked = 0
cells.append(Center(CheckBox('%s_plain' % member, value, checked)))
user_table.AddRow(cells)
+
+ # format preferred user's language
+ pl = mlist.GetPreferredLanguage(member)
+ ListLangs = mlist.GetAvailableLanguages()
+ LangDescr = map(_, map(Utils.GetLanguageDescr, ListLangs))
+ try:
+ selected = ListLangs.index(pl)
+ except:
+ selected = 0
+ cells.append(Center(SelectOptions(member + '_language' , ListLangs,
+ LangDescr, selected).Format()))
container.AddItem(Center(user_table))
legend = UnorderedList()
legend.AddItem(_('<b>subscr</b> -- Is the member subscribed?'))
@@ -619,6 +637,8 @@ def FormatMembershipOptions(mlist, cgi_data):
_('<b>plain</b> -- '
'If getting digests, does the member get plain text digests? '
'(otherwise, MIME)'))
+ legend.AddItem(_("<b>language</b> --"
+ "Language preferred by the user"))
container.AddItem(legend.Format())
container.AddItem(footer)
t = Table(width="90%")
@@ -754,6 +774,8 @@ def GetValidValue(mlist, prop, my_type, val, dependant):
if num < 0:
return getattr(mlist, prop)
return num
+ elif my_type == mm_cfg.Select:
+ return val
else:
# Should never get here...
return val
@@ -861,7 +883,7 @@ def ChangeOptions(mlist, category, cgi_info, document):
subscribe_errors = []
subscribe_success = []
result = mlist.ApprovedAddMembers(names, None,
- digest, send_welcome_msg)
+ digest, None, send_welcome_msg)
for name in result.keys():
if result[name] is None:
subscribe_success.append(name)
@@ -915,6 +937,13 @@ def ChangeOptions(mlist, category, cgi_info, document):
Errors.MMAlreadyDigested,
Errors.MMAlreadyUndigested):
pass
+
+ if cgi_info.has_key(user+'_language'):
+ newlang = cgi_info[user+'_language'].value
+ oldlang = mlist.GetPreferredLanguage(user)
+ if newlang <> oldlang:
+ mlist.SetPreferredLanguage(user, newlang)
+
for opt in ("hide", "nomail", "ack", "notmetoo", "plain"):
opt_code = MailCommandHandler.option_info[opt]
if cgi_info.has_key("%s_%s" % (user, opt)):
@@ -931,7 +960,7 @@ def ChangeOptions(mlist, category, cgi_info, document):
def AddErrorMessage(doc, errmsg, tag='Warning: ', *args):
doc.AddItem(Header(3, Bold(FontAttr(
- tag, color="#ff0000", size="+2")).Format() +
+ _(tag), color="#ff0000", size="+2")).Format() +
Italic(errmsg % args).Format()))