diff options
| author | klm | 1998-04-10 18:23:24 +0000 |
|---|---|---|
| committer | klm | 1998-04-10 18:23:24 +0000 |
| commit | 2b005f5af007aeaa31dc34372e8d616ed3dfd3f7 (patch) | |
| tree | ab4e1fe6c942b1a6c9c67fbe16c72502fba0dd48 | |
| parent | ac21666e924b43fd04ff1062ce667326ac1ff5fc (diff) | |
| download | mailman-2b005f5af007aeaa31dc34372e8d616ed3dfd3f7.tar.gz mailman-2b005f5af007aeaa31dc34372e8d616ed3dfd3f7.tar.zst mailman-2b005f5af007aeaa31dc34372e8d616ed3dfd3f7.zip | |
FormatAdminOverview(): Implemented an overview admin page, arrived at
when visiting the admin hierarchy without a path to a particular list
- or with an invalid list path. It presents a table of links to the
admin pages for the collection of advertised lists on the site, and
some information about how to get to the admin page for unadvertised
lists, and also how to get to the lists info overview page.
| -rwxr-xr-x | cgi/admin | 105 |
1 files changed, 84 insertions, 21 deletions
@@ -5,7 +5,7 @@ To run stand-alone for debugging, set env var PATH_INFO to name of list and, optionally, options category.""" -__version__ = "$Revision: 383 $" +__version__ = "$Revision: 411 $" import sys sys.path.append('/home/mailman/mailman/modules') @@ -36,13 +36,15 @@ def main(): global list_name # For encompassing try/except. doc = Document() - path = os.environ['PATH_INFO'] + try: + path = os.environ['PATH_INFO'] + except KeyError: + path = "" list_info = mm_utils.GetPathPieces(path) - if len(list_info) < 1: - doc.AddItem(Header(2, "Invalid options to CGI script.")) - print doc.Format(bgcolor="#ffffff") - sys.exit(0) + if len(list_info) == 0: + FormatAdminOverview() + return list_name = string.lower(list_info[0]) @@ -50,9 +52,9 @@ def main(): try: if not (list and list._ready): - doc.AddItem(Header(3, "%s: No such list" % list_name)) - print doc.Format(bgcolor="#ffffff") - sys.exit(0) + FormatAdminOverview(error="List <em>%s</em> not found." + % list_name) + return if len(list_info) == 1: category = 'general' @@ -112,9 +114,80 @@ def main(): finally: list.Unlock() - # Form Production: +def FormatAdminOverview(error=None): + "Present a general welcome and itemize the (public) lists." + doc = Document() + legend = "%s Maillists - Admin Links" % mm_cfg.DEFAULT_HOST_NAME + doc.SetTitle(legend) + + table = Table(border=0, width="100%") + table.AddRow([Center(Header(2, legend))]) + table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 0, + colspan=2, bgcolor="#99ccff") + + if error: + table.AddRow([Center(FontAttr(error, color="ff5060", size="+1"))]) + table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 0, + colspan=2) + + advertised = [] + for n in mm_utils.list_names(): + l = maillist.MailList(n) + l.Unlock() + if l.advertised: advertised.append(l) + + if not advertised: + welcome_items = ( + "Welcome!<p>" + " There currently are no publicly-advertised ", + Link(mm_cfg.MAILMAN_URL, "mailman"), + " maillists on %s." % mm_cfg.DEFAULT_HOST_NAME, + ) + else: + + welcome_items = ( + "Welcome!<p>" + " Below is the collection of publicly-advertised ", + Link(mm_cfg.MAILMAN_URL, "mailman"), + " maillists on %s." % mm_cfg.DEFAULT_HOST_NAME, + (' Click on a list name to visit the configuration pages' + ' for that list.' + ) + ) + + welcome_items = (welcome_items + + (" To visit the administrators configuration page for" + " an unadvertised list, open a URL similar to this" + + + (" one, but with a '/' and the %slist name appended.<p>" + % ((error and "the right ") or "")) + + + " General list information can be found at ", + Link(os.path.join(mm_cfg.DEFAULT_URL, "listinfo/"), + "the maillist overview page"), + "." + "<p>(Send questions or comments to ", + Link("mailto:%s" % mm_cfg.MAILMAN_OWNER, + mm_cfg.MAILMAN_OWNER), + ".)<p>" + ) + ) + + table.AddRow([apply(Container, welcome_items)]) + table.AddCellInfo(max(table.GetCurrentRowIndex(), 0), 0, colspan=2) + + if advertised: + table.AddRow([Italic("List"), Italic("Description")]) + for l in advertised: + table.AddRow([Link(l.GetScriptURL('admin'), Bold(l.real_name)), + l.description]) + + doc.AddItem(table) + + print doc.Format(bgcolor="#ffffff") + def FormatConfiguration(doc, list, category, category_suffix): """Produce the overall doc, *except* any processing error messages.""" for k, v in CATEGORIES: @@ -506,15 +579,6 @@ def AddErrorMessage(doc, errmsg, *args): doc.AddItem(Header(3, Italic(FontAttr(errmsg % args, color="#ff66cc")))) -def error_page(errmsg, *args): - print apply(error_page_doc, (errmsg,) + args).Format() - -def error_page_doc(errmsg, *args): - """Produce a simple error-message page on stdout and exit.""" - doc = Document() - doc.AddItem(Header(2, "Error")) - doc.AddItem(Bold(errmsg % args)) - return doc _config_info = None def GetConfigOptions(list, category): @@ -530,8 +594,7 @@ if __name__ == "__main__": print "Interrupted!" raise SystemExit, 0 except mm_err.MMUnknownListError, msg: - error_page("%s: %s", list_name, msg) - raise SystemExit, 0 + FormatAdminOverview(error="List <em>%s</em> not found." % list_name) except: print "Content-type: text/html\n" |
