On a save error, show the editor again and mark the error.

Previously, the (unsaved) page would be shown again, with a small message with
class="info" at the top. It is easy to miss the save error like this,
especially since you get the page again instead of the editor. Also, browsers
might not always preserve your editor contents after pressing the back button.

With this patch, the error is clearly marked using the "error" message class.
Also, the editor is shown again, so you can fix the error right away. 

Note: This patch does not yet seem to preserve the edited text on newly
created pages.
--- a/action/edit.py
+++ b/action/edit.py
@@ -162,7 +162,7 @@
             if not TextCha(request).check_answer_from_form():
                 raise pg.SaveError(_('TextCha: Wrong answer! Go back and try again...'))
             if request.cfg.require_comment and not comment:
-                raise pg.SaveError(_('Supplying a comment is mandatory. Go back, write a comment and try again...'))
+                raise pg.SaveError(_('Supplying a comment is mandatory.  Write a comment below and try again...'))
             savemsg = pg.saveText(savetext, rev, trivial=trivial, comment=comment)
         except pg.EditConflict, e:
             msg = e.message
@@ -176,8 +176,13 @@
             return
 
         except pg.SaveError, msg:
+            # Make sure the new text is put into the editor again
+            pg.set_raw_body(savetext, modified=1)
             # msg contains a unicode string
-            savemsg = unicode(msg)
+            request.theme.add_msg(unicode(msg), "error")
+            # Show the editor again
+            pg.sendEditor(comment=comment)
+            return
 
         # Send new page after save or after unsuccessful conflict merge.
         request.reset()
