diff -r 5863854a6ccf PageEditor.py
--- a/PageEditor.py	Sat Sep 05 22:28:08 2009 +0200
+++ b/PageEditor.py	Mon Sep 07 18:01:07 2009 +0200
@@ -155,8 +155,9 @@
 
         raw_body = ''
         msg = None
-        conflict_msg = None
+        conflict_message = None
         edit_lock_message = None
+        edit_lock = 0
         preview = kw.get('preview', None)
         staytop = kw.get('staytop', 0)
 
@@ -175,12 +176,13 @@
         else:
             try:
                 # try to acquire edit lock
-                ok, edit_lock_message = self.lock.acquire()
-                if not ok:
+                edit_lock, edit_lock_message = self.lock.acquire()
+                if not edit_lock:
                     # failed to get the lock
                     if preview is not None:
                         edit_lock_message = _('The lock you held timed out. Be prepared for editing conflicts!'
                             ) + "<br>" + edit_lock_message
+                        edit_lock = 3 # we need to warn the user explicitely
                     else:
                         msg = edit_lock_message
             except OSError, err:
@@ -244,14 +246,14 @@
             if not self.exists():
                 # page does not exist, are we creating it?
                 if rev:
-                    conflict_msg = _('Someone else deleted this page while you were editing!')
+                    conflict_message = _('Someone else deleted this page while you were editing!')
             elif rev != self.current_rev():
-                conflict_msg = _('Someone else changed this page while you were editing!')
+                conflict_message = _('Someone else changed this page while you were editing!')
                 if self.mergeEditConflict(rev):
-                    conflict_msg = _("""Someone else saved this page while you were editing!
+                    conflict_message = _("""Someone else saved this page while you were editing!
 Please review the page and save then. Do not save this page as it is!""")
                     rev = self.current_rev()
-            if conflict_msg:
+            if conflict_message:
                 # We don't show preview when in conflict
                 preview = None
 
@@ -304,11 +306,18 @@
                     draft_message = _(u"'''<<BR>>Your draft based on revision %(draft_rev)d (saved %(draft_timestamp_str)s) can be loaded instead of the current revision %(page_rev)d by using the load draft button - in case you lost your last edit somehow without saving it.''' A draft gets saved for you when you do a preview, cancel an edit or unsuccessfully save.", wiki=True) % locals()
 
         # Setup status message
-        status = [kw.get('msg', ''), conflict_msg, edit_lock_message, draft_message]
-        status = [msg for msg in status if msg]
-        status = ' '.join(status)
-        status = Status(request, content=status)
-        request.theme.add_msg(status, "dialog")
+        miscellaneous_message = kw.get('msg', None)
+        if miscellaneous_message:
+            request.theme.add_msg(miscellaneous_message, "info_msg")
+        if conflict_message:
+            request.theme.add_msg(conflict_message, "conflict_msg")
+        if edit_lock_message:   
+            if edit_lock == 3:
+                request.theme.add_msg(edit_lock_message, "edit_lock_potential_conflicts_msg")
+            else:
+                request.theme.add_msg(edit_lock_message, "edit_lock_msg")
+        if draft_message:
+            request.theme.add_msg(draft_message, "draft_msg")
 
         request.theme.send_title(
             title % {'pagename': self.split_title(), },
@@ -1191,7 +1200,7 @@
 
         @rtype: tuple
         @return: tuple is returned containing 2 values:
-              * a bool indicating successful acquiry
+              * a value indicating successful acquiry (0=failed; 1=sucess; 3=succes but user needs to be warned)
               * a string giving a reason for failure or an informational msg
         """
         if not self.locktype:
@@ -1242,7 +1251,7 @@
             else:
                 # warn user about existing lock
 
-                result = 1, _(
+                result = 3, _(
 """This page was opened for editing or last previewed at %(timestamp)s by %(owner)s.<<BR>>
 '''You should ''refrain from editing'' this page for at least another %(mins_valid)d minute(s),
 to avoid editing conflicts.'''<<BR>>
diff -r 5863854a6ccf theme/__init__.py
--- a/theme/__init__.py	Sat Sep 05 22:28:08 2009 +0200
+++ b/theme/__init__.py	Mon Sep 07 18:01:07 2009 +0200
@@ -562,36 +562,39 @@
             page = Page(self.request, page)
         return page.link_to_raw(self.request, text=img_src, querystr=qs, **attrs)
 
-    def msg(self, d):
+    def msg(self, d, link=1):
         """ Assemble the msg display
 
         Display a message with a widget or simple strings with a clear message link.
 
         @param d: parameter dictionary
+        @param link: allows toggling of 'clear message"-link (defaults to 'show link')
         @rtype: unicode
         @return: msg display html
         """
         _ = self.request.getText
         msgs = d['msg']
 
-        result = u""
+        result = u''
         close = d['page'].link_to(self.request, text=_('Clear message'), css_class="clear-link")
         for msg, msg_class in msgs:
             try:
-                result += u'<p>%s</p>' % msg.render()
-                close = ''
+                result += u'<p>%s</p>\n' % msg.render()
+                link = 0
             except AttributeError:
                 if msg and msg_class:
-                    result += u'<p><div class="%s">%s</div></p>' % (msg_class, msg)
+                    result += u'<div class="%s"><p>%s</p></div>\n' % (msg_class, msg)
                 elif msg:
                     result += u'<p>%s</p>\n' % msg
+
         if result:
-            html = result + close
-            return u'<div id="message">\n%s\n</div>\n' % html
-        else:
-            return u''
+            if link:
+                return u'<div id="message">\n%s%s\n</div>\n' % (result, close)
+            else:
+                return u'<div id="message">\n%s\n</div>\n' % result                    
 
-        return u'<div id="message">\n%s\n</div>\n' % html
+        return u''
+ 
 
     def trail(self, d):
         """ Assemble page trail
diff -r 5863854a6ccf theme/modern.py
--- a/theme/modern.py	Sat Sep 05 22:28:08 2009 +0200
+++ b/theme/modern.py	Mon Sep 07 18:01:07 2009 +0200
@@ -62,7 +62,7 @@
             # Header
             u'<div id="header">',
             self.title(d),
-            self.msg(d),
+            self.msg(d, 0),
             u'</div>',
 
             # Post header custom html (not recommended)
diff -r 5863854a6ccf web/static/htdocs/modern/css/common.css
--- a/web/static/htdocs/modern/css/common.css	Sat Sep 05 22:28:08 2009 +0200
+++ b/web/static/htdocs/modern/css/common.css	Mon Sep 07 18:01:07 2009 +0200
@@ -221,6 +221,20 @@
 .error
 {
 	color: red;
+}
+
+.conflict_msg
+{
+    color: red;
+    font-weight: bold;
+    font-size: 1.2em;
+}
+
+.edit_lock_potential_conflicts_msg
+{
+    color: blue;
+    font-weight: bold;
+    font-size: 1.2em;
 }
 
 strong.highlight
