Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/layout.py	(revision 7328)
@@ -22,4 +22,6 @@
 from datetime import date, datetime
 import grokcore.view
+from cgi import escape
+from zope.i18nmessageid import Message
 from hurry.resource import mode
 from megrok.layout import Page, Layout, Form, EditForm, DisplayForm, AddForm
@@ -27,4 +29,5 @@
 from zope.component import getUtility, queryUtility, ComponentLookupError
 from zope.formlib.utility import setUpWidgets
+from grokcore.formlib.formlib import Action
 from zope.interface import Interface
 from zope.site.hooks import getSite
@@ -49,4 +52,25 @@
 default_primary_nav_template.__grok_name__ = 'default_primary_nav'
 
+class jsaction(grok.action):
+
+    def __call__(self, success):
+        action = JSAction(self.label, success=success, **self.options)
+        self.actions.append(action)
+        return action
+
+class JSAction(Action):
+
+    msg = '\'Are you sure?\''
+
+    def render(self):
+        if not self.available():
+            return ''
+        label = self.label
+        if isinstance(label, Message):
+            label = zope.i18n.translate(self.label, context=self.form.request)
+        return ('<input type="submit" id="%s" name="%s" value="%s"'
+                ' class="button" onclick="return confirmPost(%s)" />' %
+                (self.__name__, self.__name__, escape(label, quote=True), self.msg)
+                )
 
 def NullValidator(*args, **kw):
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7328)
@@ -59,4 +59,5 @@
 from waeup.sirp.authentication import get_principal_role_manager
 from waeup.sirp.utils.helpers import get_user_account, send_mail
+from waeup.sirp.browser.layout import jsaction, JSAction
 
 grok.context(ISIRPObject)
@@ -595,4 +596,5 @@
         tabs.need()
         datatable.need()
+        warning.need()
         return super(ConfigurationContainerManageFormPage, self).update()
 
@@ -617,6 +619,5 @@
             yield(dict(url=url, name=key, title=title))
 
-    # ToDo: Show warning message before deletion
-    @grok.action('Remove selected')
+    @jsaction('Remove selected')
     def delSessonConfigurations(self, **data):
         delSubobjects(self, redirect='@@index', tab='2')
@@ -1204,9 +1205,8 @@
     def update(self):
         tabs.need()
-        #warning.need()
+        warning.need()
         return super(FacultyContainerManageFormPage, self).update()
 
-    # ToDo: Show warning message before deletion
-    @grok.action('Remove selected')
+    @jsaction('Remove selected')
     def delFaculties(self, **data):
         delSubobjects(self, redirect='@@manage', tab='1')
@@ -1295,4 +1295,5 @@
     def update(self):
         tabs.need()
+        warning.need()
         datatable.need()
         return super(FacultyManageFormPage, self).update()
@@ -1312,6 +1313,5 @@
         return get_users_with_local_roles(self.context)
 
-    # ToDo: Show warning message before deletion
-    @grok.action('Remove selected')
+    @jsaction('Remove selected')
     def delDepartments(self, **data):
         delSubobjects(self, redirect='@@manage', tab='2')
@@ -1471,4 +1471,5 @@
     def update(self):
         tabs.need()
+        warning.need()
         datatable.need()
         super(DepartmentManageFormPage, self).update()
@@ -1494,6 +1495,5 @@
         return
 
-    # ToDo: Show warning message before deletion
-    @grok.action('Remove selected courses')
+    @jsaction('Remove selected courses')
     def delCourses(self, **data):
         delSubobjects(
@@ -1501,5 +1501,5 @@
         return
 
-    @grok.action('Remove selected certificates')
+    @jsaction('Remove selected certificates')
     def delCertificates(self, **data):
         delSubobjects(
@@ -1710,5 +1710,5 @@
     def update(self):
         tabs.need()
-        #warning.need()
+        warning.need()
         datatable.need()
         return super(CertificateManageFormPage, self).update()
@@ -1721,6 +1721,5 @@
         return
 
-    # ToDo: Show warning message before deletion
-    @grok.action('Remove selected course referrers')
+    @jsaction('Remove selected course referrers')
     def delCertificateCourses(self, **data):
         delSubobjects(self, redirect='@@manage', tab='2')
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/resources.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/resources.py	(revision 7321)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/resources.py	(revision 7328)
@@ -113,6 +113,6 @@
 #:   .. code-block:: html
 #:
-#:        <input type="submit" name="xyz" value="abc"/>
-#:               onclick="return confirmPost('Are you sure?')">
+#:        <input type="submit" name="xyz" value="abc">
+#:               onclick="return confirmPost('Are you sure?')"/>
 warning = ResourceInclusion(waeup_sirp, 'warning.js')
 
