diff options
| author | viega | 1998-06-14 00:48:39 +0000 |
|---|---|---|
| committer | viega | 1998-06-14 00:48:39 +0000 |
| commit | 05cf09209ce15e0801379f8ab5566b43d3d3c9a6 (patch) | |
| tree | 5f6e820f91c4ed28e617de5adc1ebef39769246f /modules/Cgi/edithtml.py | |
| parent | 7f9a9be4291b1c350251535788436d1f2a301e7b (diff) | |
| download | mailman-05cf09209ce15e0801379f8ab5566b43d3d3c9a6.tar.gz mailman-05cf09209ce15e0801379f8ab5566b43d3d3c9a6.tar.zst mailman-05cf09209ce15e0801379f8ab5566b43d3d3c9a6.zip | |
These are the files that used to be in ../cgi, except they no longer
handle logging to an error file, and no longer import paths. Also,
any checks for __main__ have been removed.
Diffstat (limited to 'modules/Cgi/edithtml.py')
| -rwxr-xr-x | modules/Cgi/edithtml.py | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/modules/Cgi/edithtml.py b/modules/Cgi/edithtml.py new file mode 100755 index 000000000..faf35e715 --- /dev/null +++ b/modules/Cgi/edithtml.py @@ -0,0 +1,167 @@ +#! /usr/bin/env python +# +# Copyright (C) 1998 by the Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +"""Script which implements admin editing of the list's html templates.""" + +import sys +import os, cgi, string, crypt, types +import mm_utils, maillist, mm_cfg +import htmlformat + +#Editable templates. We should also be able to edit the archive index, which +#currently isn't a working template, but will be soon. + +template_data = (('listinfo.html', 'General list information page'), + ('subscribe.html', 'Subscribe results page'), + ('options.html', 'User specific options page'), + ('handle_opts.html', 'Changing user options results page'), + ('archives.html', 'Archives index page') + ) + + +def InitDocument(): + return htmlformat.HeadlessDocument() + +doc = InitDocument() + +path = os.environ['PATH_INFO'] +list_info = mm_utils.GetPathPieces(path) + +if len(list_info) < 1: + doc.AddItem(htmlformat.Header(2, "Invalid options to CGI script.")) + print doc.Format() + sys.exit(0) + +list_name = string.lower(list_info[0]) + +try: + list = maillist.MailList(list_name, lock=0) +except: + doc.AddItem(htmlformat.Header(2, "%s : No such list" % list_name)) + print doc.Format() + sys.exit(0) + +if not list._ready: + doc.AddItem(htmlformat.Header(2, "%s : No such list" % list_name)) + print doc.Format() + sys.exit(0) + + +if len(list_info) > 1: + template_name = list_info[1] + for (template, info) in template_data: + if template == template_name: + template_info = info + doc.SetTitle('%s -- Edit html for %s' % + (list.real_name, template_info)) + break + else: + doc.SetTitle('Edit HTML : Error') + doc.AddItem(htmlformat.Header(2, "%s: Invalid template" % template_name)) + doc.AddItem(list.GetMailmanFooter()) + print doc.Format() + sys.exit(0) +else: + doc.SetTitle('%s -- HTML Page Editing' % list.real_name) + doc.AddItem(htmlformat.Header(1, '%s -- HTML Page Editing' % list.real_name)) + doc.AddItem(htmlformat.Header(2, 'Select page to edit:')) + template_list = htmlformat.UnorderedList() + for (template, info) in template_data: + l = htmlformat.Link(os.path.join(list.GetRelativeScriptURL('edithtml'), + template), info) + + template_list.AddItem(l) + doc.AddItem(htmlformat.FontSize("+2", template_list)) + doc.AddItem(list.GetMailmanFooter()) + print doc.Format() + sys.exit(0) + + +def FormatHTML(doc): + doc.AddItem(htmlformat.Header(1,'%s:' % list.real_name)) + doc.AddItem(htmlformat.Header(1, template_info)) + + doc.AddItem('<hr>') + + link = htmlformat.Link(list.GetRelativeScriptURL('admin'), + 'View or edit the list configuration information.') + doc.AddItem(htmlformat.FontSize("+1", link)) + doc.AddItem('<p>') + + doc.AddItem('<hr>') + + form = htmlformat.Form(os.path.join(list.GetRelativeScriptURL('edithtml'), + template_name)) + doc.AddItem(form) + + password_table = htmlformat.Table() + password_table.AddRow(['Enter the admin password to edit html:', + htmlformat.PasswordBox('adminpw')]) + password_table.AddRow(['When you are done making changes...', + htmlformat.SubmitButton('submit', 'Submit Changes')]) + + form.AddItem(password_table) + + text = mm_utils.QuoteHyperChars(list.SnarfHTMLTemplate(template_name)) + form.AddItem(htmlformat.TextArea('html_code', text, rows=40, cols=75)) + +def ChangeHTML(list, cgi_info, template_name, doc): + if not cgi_info.has_key('html_code'): + doc.AddItem(htmlformat.Header(3,"Can't have empty html page.")) + doc.AddItem(htmlformat.Header(3,"HTML Unchanged.")) + doc.AddItem('<hr>') + return + code = cgi_info['html_code'].value + f = open(os.path.join(list._template_dir, template_name), 'w') + f.write(code) + f.close() + doc.AddItem(htmlformat.Header(3, 'HTML successfully updated.')) + doc.AddItem('<hr>') + +try: + cgi_data = cgi.FieldStorage() + if len(cgi_data.keys()): + if not cgi_data.has_key('adminpw'): + m = 'Error: You must supply the admin password to edit html.' + doc.AddItem(htmlformat.Header(3, + htmlformat.Italic( + htmlformat.FontAttr( + m, color="ff5060")))) + doc.AddItem('<hr>') + else: + try: + list.ConfirmAdminPassword(cgi_data['adminpw'].value) + ChangeHTML(list, cgi_data, template_name, doc) + except: + m = 'Error: Incorrect admin password.' + doc.AddItem(htmlformat.Header(3, + htmlformat.Italic( + htmlformat.FontAttr( + m, color="ff5060")))) + doc.AddItem('<hr>') + + + + FormatHTML(doc) + +finally: + try: + doc.AddItem(list.GetMailmanFooter()) + print doc.Format() + except: + pass |
