Allow for editing flatpage titles, and made a common uneditable list of links.

This commit is contained in:
Martin Green 2011-08-08 09:51:47 +01:00
parent c039183137
commit d75bad22de
6 changed files with 44 additions and 19 deletions

View File

@ -35,6 +35,7 @@ def flatpage(request, path):
if path.startswith("noinfo") and settings.PUBLIC_SITE and not request.user.is_authenticated(): if path.startswith("noinfo") and settings.PUBLIC_SITE and not request.user.is_authenticated():
print "flat path noinfo", path
return HttpResponseRedirect(reverse("auth_login") + '?next=%s' % request.path) return HttpResponseRedirect(reverse("auth_login") + '?next=%s' % request.path)
if path.endswith("/") or path == "": if path.endswith("/") or path == "":
@ -56,17 +57,22 @@ def flatpage(request, path):
html = o.read() html = o.read()
m = re.search(r"<head>(.*)</head>.*<body>(.*)</body>", html, re.DOTALL) m = re.search(r"<head>(.*)</head>.*<body>(.*)</body>", html, re.DOTALL)
mwithid = re.search(r'<head>(.*)</head>.*<body id="([^"]*)">(.*)</body>', html, re.DOTALL)
if m: if m:
head, body = m.groups() head, body = m.groups()
bodyid = None
elif mwithid:
head, bodyid, body = mwithid.groups()
else: else:
return HttpResponse(html + "Page could not be split into header and body") return HttpResponse(html + "Page could not be split into header and body")
m = re.search(r"<title>(.*)</title>", head, re.DOTALL)
if m:
title, = m.groups()
else:
title = ""
linksmatch = re.match('(.*)<ul id="links">', body, re.DOTALL)
if linksmatch:
body, = linksmatch.groups()
if re.search(r"iso-8859-1", html): if re.search(r"iso-8859-1", html):
body = unicode(body, "iso-8859-1") body = unicode(body, "iso-8859-1")
return render_with_context(request, 'flatpage.html', {'editable': True, 'path': path, 'head': head, 'body': body, "bodyid": bodyid}) body.strip
return render_with_context(request, 'flatpage.html', {'editable': True, 'path': path, 'head': head, 'body': body, 'homepage': (path == "index.htm")})
else: else:
return HttpResponse(o.read(), mimetype=getmimetype(path)) return HttpResponse(o.read(), mimetype=getmimetype(path))
@ -106,6 +112,9 @@ def editflatpage(request, path):
if m: if m:
head, body = m.groups() head, body = m.groups()
if re.search(r"iso-8859-1", html): if re.search(r"iso-8859-1", html):
linksmatch = re.match('(.*)<ul id="links">', body, re.DOTALL)
if linksmatch:
body, = linksmatch.groups()
body = unicode(body, "iso-8859-1") body = unicode(body, "iso-8859-1")
else: else:
return HttpResponse("Page could not be split into header and body") return HttpResponse("Page could not be split into header and body")
@ -114,13 +123,20 @@ def editflatpage(request, path):
if flatpageForm.is_valid():# Form valid therefore write file if flatpageForm.is_valid():# Form valid therefore write file
f = open(filepath, "w") f = open(filepath, "w")
template = loader.get_template('dataformat/flatfile.html') template = loader.get_template('dataformat/flatfile.html')
context = Context({'form': flatpageForm.cleaned_data, 'head': head}) context = Context({'form': flatpageForm.cleaned_data})
f.write(template.render(context)) f.write(template.render(context))
f.close() f.close()
return HttpResponseRedirect(reverse('flatpage', args=[path])) # Redirect after POST return HttpResponseRedirect(reverse('flatpage', args=[path])) # Redirect after POST
else: else:
flatpageForm = FlatPageForm({"html": body}) m = re.search(r"<title>(.*)</title>", head, re.DOTALL)
if m:
title, = m.groups()
else:
title = ""
flatpageForm = FlatPageForm({"html": body, "title": title})
return render_with_context(request, 'editflatpage.html', {'path': path, 'form': flatpageForm, }) return render_with_context(request, 'editflatpage.html', {'path': path, 'form': flatpageForm, })
class FlatPageForm(forms.Form): class FlatPageForm(forms.Form):
html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30})) title = forms.CharField(widget=forms.TextInput(attrs={'size':'60'}))
html = forms.CharField(widget=TinyMCE(attrs={'cols': 80, 'rows': 30}))

View File

@ -16,11 +16,6 @@
</head> </head>
<body> <body>
{% block content %}{% endblock %} {% block content %}{% endblock %}
{% block menu %} {% include "menu.html" %}
<ul id="links">
<li>Back to <a href="/index.htm">Expedition home page</a></li>
<li>Back to <a href="http://cucc.survex.com/">CUCC home page</a></li>
</ul>
{% endblock %}
</body> </body>
</html> </html>

View File

@ -1,7 +1,9 @@
{% autoescape off %} {% autoescape off %}
<html> <html>
<head> <head>
{{ head }} <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>{{ form.title }}</title>
<link rel="stylesheet" type="text/css" href="css/main2.css" />
</head> </head>
<body> <body>
{{ form.html }} {{ form.html }}

View File

@ -6,7 +6,7 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<form action="" method="post">{% csrf_token %} <form action="" method="post">{% csrf_token %}
{{form}} {{form.as_p}}
<p><input type="submit" value="Submit" /></p> <p><input type="submit" value="Submit" /></p>
</form> </form>
{% endblock %} {% endblock %}

View File

@ -2,9 +2,9 @@
<head> <head>
{{ head|safe }} {{ head|safe }}
</head> </head>
<body{% if bodyid %} id="{{ bodyid }}"{% endif %}> <body{% if homepage %} id="homepage"{% endif %}>
{{ body|safe }} {{ body|safe }}
{% if editable %}<a href="{% url editflatpage path %}">Edit</a>{% endif %}
<a href="/troggle">Troggle</a> {% include "menu.html" %}
</body> </body>
</html> </html>

12
templates/menu.html Normal file
View File

@ -0,0 +1,12 @@
{% if not homepage %}
<ul id="links">
<li><a href="/index.htm">Home</a></li>
<li><a href="/infodx.htm">Main Index</a></li>
<li><a href="/troggle">Troggle</a></li>
<li><a href="/areas.htm">Areas</a></li>
<li><a href="/indxal.htm">Caves</a></li>
<li><a href="/handbook/index.htm">Handbook</a></li>
<li><a href="/pubs.htm">Reports</a></li>
{% if editable %}<li><a href="{% url editflatpage path %}">Edit</a></li>{% endif %}
</ul>
{% endif %}