Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12245)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/browser.py	(revision 12246)
@@ -414,6 +414,6 @@
             dict(name=x, title=y) for x, y in allowed_transitions]
 
-    @action(_('Save'), style='primary')
-    def save(self, **data):
+    @action(_('Apply now'), style='primary')
+    def apply(self, **data):
         form = self.request.form
         if 'transition' in form and form['transition']:
@@ -421,4 +421,6 @@
             wf_info = IWorkflowInfo(self.context)
             wf_info.fireTransition(transition_id)
+            self.flash(_("Transition '%s' executed." % transition_id))
+            self.redirect(self.url(self.context))
         return
 
@@ -943,6 +945,6 @@
             dict(name=x, title=y) for x, y in allowed_transitions]
 
-    @action(_('Save'), style='primary')
-    def save(self, **data):
+    @action(_('Apply now'), style='primary')
+    def apply(self, **data):
         form = self.request.form
         if 'transition' in form and form['transition']:
@@ -951,6 +953,8 @@
             try:
                 wf_info.fireTransition(transition_id)
+                self.flash(_("Transition '%s' executed." % transition_id))
             except InvalidTransitionError, error:
                 self.flash(error, type="warning")
+            self.redirect(self.url(self.context))
         return
 
@@ -1289,6 +1293,6 @@
             dict(name=x, title=y) for x, y in allowed_transitions]
 
-    @action(_('Save'), style='primary')
-    def save(self, **data):
+    @action(_('Apply now'), style='primary')
+    def apply(self, **data):
         form = self.request.form
         if 'transition' in form and form['transition']:
@@ -1297,6 +1301,8 @@
             try:
                 wf_info.fireTransition(transition_id)
+                self.flash(_("Transition '%s' executed." % transition_id))
             except InvalidTransitionError, error:
                 self.flash(error, type="warning")
+            self.redirect(self.url(self.context))
         return
 
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12245)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/customers/tests/test_browser.py	(revision 12246)
@@ -313,5 +313,5 @@
         # Managers can trigger transitions
         self.browser.getControl(name="transition").value = ['start']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         # Managers can edit base
         self.browser.open(self.customer_path)
@@ -376,15 +376,20 @@
         self.browser.open(self.trigtrans_path)
         self.browser.getControl(name="transition").value = ['start']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.open(self.trigtrans_path)
         self.browser.getControl(name="transition").value = ['request']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.open(self.trigtrans_path)
         self.browser.getControl(name="transition").value = ['reject']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.open(self.trigtrans_path)
         self.browser.getControl(name="transition").value = ['request']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.open(self.trigtrans_path)
         self.browser.getControl(name="transition").value = ['approve']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.open(self.trigtrans_path)
         self.browser.getControl(name="transition").value = ['reset1']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         return
 
@@ -843,8 +848,9 @@
         self.browser.getLink("Transition").click()
         self.browser.getControl(name="transition").value = ['submit']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.getLink("Transition").click()
         # Document can only be verified if files have been uploaded before
         self.browser.getControl(name="transition").value = ['verify']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         self.assertTrue('No file uploaded' in self.browser.contents)
         self.assertEqual(document.state, 'submitted')
@@ -1031,5 +1037,5 @@
         self.browser.open(self.documents_path + '/d101/trigtrans')
         self.browser.getControl(name="transition").value = ['verify']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         self.assertEqual(
             getattr(self.document, 'sample_md5', None),
@@ -1163,7 +1169,8 @@
         self.browser.getLink("Transition").click()
         self.browser.getControl(name="transition").value = ['submit']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
+        self.browser.getLink("Transition").click()
         self.browser.getControl(name="transition").value = ['approve']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         self.assertEqual(contract.state, 'approved')
 
@@ -1326,11 +1333,12 @@
         self.browser.open(self.contracts_path + '/c101/trigtrans')
         self.browser.getControl(name="transition").value = ['approve']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         # InvalidTransitionError is catched
         self.assertTrue(
             '<div class="alert alert-warning">Attached documents must be verified first.</div>'
             in self.browser.contents)
+        self.browser.open(self.contracts_path + '/c101/trigtrans')
         IWorkflowState(self.document).setState('verified')
         self.browser.getControl(name="transition").value = ['approve']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         self.assertEqual(IWorkflowState(self.contract).getState(), 'approved')
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser.py	(revision 12245)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/documents/browser.py	(revision 12246)
@@ -298,6 +298,6 @@
             dict(name=x, title=y) for x, y in allowed_transitions]
 
-    @action(_('Save'), style='primary')
-    def save(self, **data):
+    @action(_('Apply now'), style='primary')
+    def apply(self, **data):
         form = self.request.form
         if 'transition' in form and form['transition']:
@@ -306,5 +306,7 @@
             try:
                 wf_info.fireTransition(transition_id)
+                self.flash(_("Transition '%s' executed." % transition_id))
             except InvalidTransitionError, error:
                 self.flash(error, type="warning")
-        return
+            self.redirect(self.url(self.context))
+        return
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/documents/tests/test_browser.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/documents/tests/test_browser.py	(revision 12245)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/documents/tests/test_browser.py	(revision 12246)
@@ -167,5 +167,5 @@
         self.browser.getLink("Transition").click()
         self.browser.getControl(name="transition").value = ['retract']
-        self.browser.getControl("Save").click()
+        self.browser.getControl("Apply now").click()
         self.assertEqual(document.state, 'created')
 
@@ -252,5 +252,5 @@
         self.browser.getLink("Transition").click()
         self.browser.getControl(name="transition").value = ['publish']
-        self.browser.getControl("Speichern").click()
+        self.browser.getControl("Jetzt anwenden").click()
         self.assertEqual(document.state, 'published')
 
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/locales/de/LC_MESSAGES/waeup.ikoba.po
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/locales/de/LC_MESSAGES/waeup.ikoba.po	(revision 12245)
+++ main/waeup.ikoba/trunk/src/waeup/ikoba/locales/de/LC_MESSAGES/waeup.ikoba.po	(revision 12246)
@@ -16,5 +16,5 @@
 "Project-Id-Version: WAeUP.KOFA\n"
 "POT-Creation-Date: Wed Dec 10 17:36:11 2014\n"
-"PO-Revision-Date: 2014-12-10 17:35+0100\n"
+"PO-Revision-Date: 2014-12-15 13:27+0100\n"
 "Last-Translator: Henrik Bettermann <henrik@waeup.org>\n"
 "Language-Team: WAeUP Germany <henrik@waeup.org>\n"
@@ -27,4 +27,7 @@
 "X-Poedit-Basepath: \\\\Salsa\\ikoba\\trunk\\src\n"
 "X-Generator: Poedit 1.6.5\n"
+
+msgid "Apply now"
+msgstr "Jetzt anwenden"
 
 #: waeup/ikoba/browser/async.py:91
Index: main/waeup.ikoba/trunk/src/waeup/ikoba/widgets/restwidget.py
===================================================================
--- main/waeup.ikoba/trunk/src/waeup/ikoba/widgets/restwidget.py	(revision 12245)
+++ 	(revision )
@@ -1,59 +1,0 @@
-## $Id$
-##
-## Copyright (C) 2011 Uli Fouquet & Henrik Bettermann
-## 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
-##
-"""A widget that renders restructured text.
-"""
-from zope.component import getUtility
-from zope.formlib.widget import renderElement, DisplayWidget
-from waeup.ikoba.utils.helpers import ReST2HTML
-from waeup.ikoba.interfaces import IIkobaUtils
-
-
-class ReSTDisplayWidget(DisplayWidget):
-    """Restructured Text widget.
-    """
-
-    def __call__(self):
-        """The ReSTDisplayWidget transforms a ReST text string into
-        a dictionary.
-
-        Different languages must be separated by `>>xy<<` whereas
-        xy is the language code. Text parts without correct leading
-        language separator - usually the first part has no language
-        descriptor - are interpreted as texts in the portal's language.
-        The latter can be configured in waeup.srp.utils.utils.IkobaUtils.
-        """
-        if self._renderedValueSet():
-            value = self._data
-        else:
-            value = self.context.default
-        if value == self.context.missing_value:
-            return {}
-        parts = value.split('>>')
-        elements = {}
-        lang = getUtility(IIkobaUtils).PORTAL_LANGUAGE
-        for part in parts:
-            if part[2:4] == u'<<':
-                lang = part[0:2].lower()
-                text = part[4:]
-                elements[lang] = renderElement(u'div id="rest"',
-                    contents=ReST2HTML(text))
-            else:
-                text = part
-                elements[lang] = renderElement(u'div id="rest"',
-                    contents=ReST2HTML(text))
-        return elements
