diff options
| author | mailman | 1998-02-27 15:12:34 +0000 |
|---|---|---|
| committer | mailman | 1998-02-27 15:12:34 +0000 |
| commit | 71b1c52190bc36ebdf944a984bcf5790b9bfe8e8 (patch) | |
| tree | 256e5b10b01a93cbdab41db0df313c8ae3560f1b | |
| parent | cfdd10e1759185484789b531d9b36385eb53488d (diff) | |
| download | mailman-71b1c52190bc36ebdf944a984bcf5790b9bfe8e8.tar.gz mailman-71b1c52190bc36ebdf944a984bcf5790b9bfe8e8.tar.zst mailman-71b1c52190bc36ebdf944a984bcf5790b9bfe8e8.zip | |
Initial revision
| -rwxr-xr-x | cgi/edithtml | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/cgi/edithtml b/cgi/edithtml new file mode 100755 index 000000000..b5ab807d8 --- /dev/null +++ b/cgi/edithtml @@ -0,0 +1,147 @@ +#!/usr/local/bin/python +import sys, os, cgi, string, crypt, types +sys.stderr = sys.stdout +sys.path.append('/home/mailman/mailman/modules') +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.Document() + +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 = list_info[0] + +try: + list = maillist.MailList(list_name) +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.GetScriptURL('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.GetScriptURL('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.GetScriptURL('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'): + doc.AddItem( + htmlformat.Header(3, htmlformat.Italic('Error: ' + 'You must supply the admin password to edit html.'))) + doc.AddItem('<hr>') + else: + try: + list.ConfirmAdminPassword(cgi_data['adminpw'].value) + ChangeHTML(list, cgi_data, template_name, doc) + except: + doc.AddItem( + htmlformat.Header(3, htmlformat.Italic( + 'Error: Incorrect admin password.'))) + doc.AddItem('<hr>') + + + + FormatHTML(doc) + +finally: + try: + doc.AddItem(list.GetMailmanFooter()) + print doc.Format() + except: + pass + list.Unlock() |
