Index: main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/applicants/browser.py
===================================================================
--- main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/applicants/browser.py	(revision 11013)
+++ main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/applicants/browser.py	(revision 11014)
@@ -51,5 +51,5 @@
 from waeup.kofa.browser.pages import (
     add_local_role, del_local_roles, doll_up, ExportCSVView)
-from waeup.kofa.browser.resources import datepicker, tabs, warning
+from waeup.kofa.browser.resources import datepicker, warning
 from waeup.kofa.interfaces import (
     IKofaObject, ILocalRolesAssignable, IExtFileStore, IPDF,
@@ -150,9 +150,4 @@
     def update(self):
         warning.need()
-        self.tab1 = self.tab2 = self.tab3 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         return super(ApplicantsRootManageFormPage, self).update()
 
@@ -380,9 +375,4 @@
         datepicker.need() # Enable jQuery datepicker in date fields.
         toggleall.need()
-        self.tab1 = self.tab2 = self.tab3 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         warning.need()
         return super(ApplicantsContainerManageFormPage, self).update()
Index: main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser.py
===================================================================
--- main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser.py	(revision 11013)
+++ main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser.py	(revision 11014)
@@ -107,5 +107,5 @@
     """Flash a lock message.
     """
-    view.flash(_('The requested form is locked (read-only).'))
+    view.flash(_('The requested form is locked (read-only).'), type="warning")
     view.redirect(view.url(view.context))
     return
@@ -155,10 +155,10 @@
         view.flash(_(
             'Total credits exceed ${a}.',
-            mapping = {'a': max_credits}))
+            mapping = {'a': max_credits}), type="warning")
         return False
     try:
         view.context.addCourseTicket(ticket, course)
     except KeyError:
-        view.flash(_('The ticket exists.'))
+        view.flash(_('The ticket exists.'), type="warning")
         return False
     view.flash(_('Successfully added ${a}.',
@@ -279,5 +279,5 @@
         else:
             if 'search' in form:
-                self.flash(_('Empty search string'))
+                self.flash(_('Empty search string'), type="warning")
             return
         if self.searchtype == 'current_session':
@@ -285,10 +285,11 @@
                 self.searchterm = int(self.searchterm)
             except ValueError:
-                self.flash(_('Only year dates allowed (e.g. 2011).'))
+                self.flash(_('Only year dates allowed (e.g. 2011).'),
+                           type="danger")
                 return
         self.hitlist = search(query=self.searchterm,
             searchtype=self.searchtype, view=self)
         if not self.hitlist:
-            self.flash(_('No student found.'))
+            self.flash(_('No student found.'), type="warning")
         return
 
@@ -321,5 +322,5 @@
         else:
             if 'search' in form:
-                self.flash(_('Empty search string'))
+                self.flash(_('Empty search string'), type="warning")
             return
         if self.searchtype == 'current_session':
@@ -327,5 +328,6 @@
                 self.searchterm = int(self.searchterm)
             except ValueError:
-                self.flash('Only year dates allowed (e.g. 2011).')
+                self.flash(_('Only year dates allowed (e.g. 2011).'),
+                           type="danger")
                 return
         if not 'entries' in form:
@@ -333,7 +335,7 @@
                 searchtype=self.searchtype, view=self)
             if not self.hitlist:
-                self.flash(_('No student found.'))
+                self.flash(_('No student found.'), type="warning")
             if 'remove' in form:
-                self.flash(_('No item selected.'))
+                self.flash(_('No item selected.'), type="warning")
             return
         entries = form['entries']
@@ -493,5 +495,5 @@
             self.flash(_('Your message has been sent.'))
         else:
-            self.flash(_('An smtp server error occurred.'))
+            self.flash(_('An smtp server error occurred.'), type="danger")
         return
 
@@ -534,9 +536,4 @@
     def update(self):
         datepicker.need() # Enable jQuery datepicker in date fields.
-        self.tab1 = self.tab2 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         super(StudentBaseManageFormPage, self).update()
         self.wf_info = IWorkflowInfo(self.context)
@@ -552,5 +549,5 @@
             errors = validator.validate_password(password, password_ctl)
             if errors:
-                self.flash( ' '.join(errors))
+                self.flash( ' '.join(errors), type="danger")
                 return
         changed_fields = self.applyData(self.context, **data)
@@ -763,9 +760,4 @@
     def update(self):
         datepicker.need() # Enable jQuery datepicker in date fields.
-        self.tab1 = self.tab2 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         return super(StudentClearanceManageFormPage, self).update()
 
@@ -791,5 +783,5 @@
             self.flash(_('Student has been cleared.'))
         else:
-            self.flash(_('Student is in wrong state.'))
+            self.flash(_('Student is in wrong state.'), type="warning")
         self.redirect(self.url(self.context,'view_clearance'))
         return
@@ -810,5 +802,5 @@
     def update(self):
         if clearance_disabled_message(self.context):
-            self.flash(clearance_disabled_message(self.context))
+            self.flash(clearance_disabled_message(self.context), type="warning")
             self.redirect(self.url(self.context,'view_clearance'))
             return
@@ -820,11 +812,11 @@
             IWorkflowInfo(self.context).fireTransition('reset4')
             message = _('Clearance has been annulled.')
-            self.flash(message)
+            self.flash(message, type="warning")
         elif self.context.state == REQUESTED:
             IWorkflowInfo(self.context).fireTransition('reset3')
             message = _('Clearance request has been rejected.')
-            self.flash(message)
-        else:
-            self.flash(_('Student is in wrong state.'))
+            self.flash(message, type="warning")
+        else:
+            self.flash(_('Student is in wrong state.'), type="warning")
             self.redirect(self.url(self.context,'view_clearance'))
             return
@@ -983,9 +975,4 @@
             return
         super(StudyCourseManageFormPage, self).update()
-        self.tab1 = self.tab2 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         warning.need()
         return
@@ -997,5 +984,6 @@
         except ConstraintNotSatisfied:
             # The selected level might not exist in certificate
-            self.flash(_('Current level not available for certificate.'))
+            self.flash(_('Current level not available for certificate.'),
+                       type="warning")
             return
         notify(grok.ObjectModifiedEvent(self.context.__parent__))
@@ -1022,6 +1010,7 @@
         level_session = self.request.form.get('level_session', None)
         if not level_session:
-            self.flash(_('You must select a session for the level.'))
-            self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+            self.flash(_('You must select a session for the level.'),
+                       type="warning")
+            self.redirect(self.url(self.context, u'@@manage')+'#tab2')
             return
         studylevel = createObject(u'waeup.StudentStudyLevel')
@@ -1033,6 +1022,6 @@
             self.flash(_('Study level has been added.'))
         except KeyError:
-            self.flash(_('This level exists.'))
-        self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+            self.flash(_('This level exists.'), type="warning")
+        self.redirect(self.url(self.context, u'@@manage')+'#tab2')
         return
 
@@ -1043,6 +1032,6 @@
             child_id = form['val_id']
         else:
-            self.flash(_('No study level selected.'))
-            self.redirect(self.url(self.context, '@@manage')+'?tab2')
+            self.flash(_('No study level selected.'), type="warning")
+            self.redirect(self.url(self.context, '@@manage')+'#tab2')
             return
         if not isinstance(child_id, list):
@@ -1057,5 +1046,5 @@
             self.context.writeLogMessage(
                 self,'removed: %s' % ', '.join(deleted))
-        self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+        self.redirect(self.url(self.context, u'@@manage')+'#tab2')
         return
 
@@ -1076,11 +1065,6 @@
     def update(self, SUBMIT=None):
         super(StudentTranscriptRequestPage, self).update()
-        self.tab1 = self.tab2 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         if not self.context.state == GRADUATED:
-            self.flash(_("Wrong state"))
+            self.flash(_("Wrong state"), type="danger")
             self.redirect(self.url(self.context))
             return
@@ -1099,8 +1083,9 @@
             code = get_access_code(pin)
             if not code:
-                self.flash(_('Activation code is invalid.'))
+                self.flash(_('Activation code is invalid.'), type="warning")
                 return
             if code.state == USED:
-                self.flash(_('Activation code has already been used.'))
+                self.flash(_('Activation code has already been used.'),
+                           type="warning")
                 return
             # Mark pin as used (this also fires a pin related transition)
@@ -1110,5 +1095,6 @@
             # expect an exception, but the owner might be different
             if not invalidate_accesscode(pin, comment, self.context.student_id):
-                self.flash(_('You are not the owner of this access code.'))
+                self.flash(_('You are not the owner of this access code.'),
+                           type="warning")
                 return
             self.context.clr_code = pin
@@ -1150,11 +1136,6 @@
     def update(self, SUBMIT=None):
         super(StudentTranscriptRequestProcessFormPage, self).update()
-        self.tab1 = self.tab2 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         if self.context.state != TRANSCRIPT:
-            self.flash(_('Student is in wrong state.'))
+            self.flash(_('Student is in wrong state.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1214,5 +1195,6 @@
     def update(self):
         if not self.context.student.transcript_enabled:
-            self.flash(_('You are not allowed to view the transcript.'))
+            self.flash(_('You are not allowed to view the transcript.'),
+                       type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1247,5 +1229,6 @@
     def update(self):
         if not self.context.student.transcript_enabled:
-            self.flash(_('You are not allowed to download the transcript.'))
+            self.flash(_('You are not allowed to download the transcript.'),
+                       type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1320,9 +1303,12 @@
         error = self.context.transfer(**data)
         if error == -1:
-            self.flash(_('Current level does not match certificate levels.'))
+            self.flash(_('Current level does not match certificate levels.'),
+                       type="warning")
         elif error == -2:
-            self.flash(_('Former study course record incomplete.'))
+            self.flash(_('Former study course record incomplete.'),
+                       type="warning")
         elif error == -3:
-            self.flash(_('Maximum number of transfers exceeded.'))
+            self.flash(_('Maximum number of transfers exceeded.'),
+                       type="warning")
         else:
             self.flash(_('Successfully transferred.'))
@@ -1341,5 +1327,5 @@
         warning.need()
         if not self.context.has_key('studycourse_1'):
-            self.flash(_('No previous transfer.'))
+            self.flash(_('No previous transfer.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1484,23 +1470,18 @@
             return
         super(StudyLevelManageFormPage, self).update()
-        self.tab1 = self.tab2 = ''
-        qs = self.request.get('QUERY_STRING', '')
-        if not qs:
-            qs = 'tab1'
-        setattr(self, qs, 'active')
         warning.need()
         if ADD is not None:
             if not course:
-                self.flash(_('No valid course code entered.'))
-                self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+                self.flash(_('No valid course code entered.'), type="warning")
+                self.redirect(self.url(self.context, u'@@manage')+'#tab2')
                 return
             cat = queryUtility(ICatalog, name='courses_catalog')
             result = cat.searchResults(code=(course, course))
             if len(result) != 1:
-                self.flash(_('Course not found.'))
+                self.flash(_('Course not found.'), type="warning")
             else:
                 course = list(result)[0]
                 addCourseTicket(self, course)
-            self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+            self.redirect(self.url(self.context, u'@@manage')+'#tab2')
         return
 
@@ -1529,6 +1510,6 @@
             child_id = form['val_id']
         else:
-            self.flash(_('No ticket selected.'))
-            self.redirect(self.url(self.context, '@@manage')+'?tab2')
+            self.flash(_('No ticket selected.'), type="warning")
+            self.redirect(self.url(self.context, '@@manage')+'#tab2')
             return
         if not isinstance(child_id, list):
@@ -1544,5 +1525,5 @@
                 self,'removed: %s at %s' %
                 (', '.join(deleted), self.context.level))
-        self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+        self.redirect(self.url(self.context, u'@@manage')+'#tab2')
         return
 
@@ -1559,5 +1540,6 @@
             return
         if str(self.context.__parent__.current_level) != self.context.__name__:
-            self.flash(_('This level does not correspond current level.'))
+            self.flash(_('This level does not correspond current level.'),
+                       type="danger")
         elif self.context.student.state == REGISTERED:
             IWorkflowInfo(self.context.student).fireTransition(
@@ -1565,5 +1547,5 @@
             self.flash(_('Course list has been validated.'))
         else:
-            self.flash(_('Student is in the wrong state.'))
+            self.flash(_('Student is in the wrong state.'), type="warning")
         self.redirect(self.url(self.context))
         return
@@ -1584,5 +1566,6 @@
             return
         if str(self.context.__parent__.current_level) != self.context.__name__:
-            self.flash(_('This level does not correspond current level.'))
+            self.flash(_('This level does not correspond current level.'),
+                       type="danger")
             self.redirect(self.url(self.context))
             return
@@ -1596,5 +1579,5 @@
             self.flash(message)
         else:
-            self.flash(_('Student is in the wrong state.'))
+            self.flash(_('Student is in the wrong state.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1624,10 +1607,10 @@
         return
 
-    @action(_('Add course ticket'))
+    @action(_('Add course ticket'), style='primary')
     def addCourseTicket(self, **data):
         course = data['course']
         success = addCourseTicket(self, course)
         if success:
-            self.redirect(self.url(self.context, u'@@manage')+'?tab2')
+            self.redirect(self.url(self.context, u'@@manage')+'#tab2')
         return
 
@@ -1720,5 +1703,5 @@
             child_id = form['val_id']
         else:
-            self.flash(_('No payment selected.'))
+            self.flash(_('No payment selected.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1772,10 +1755,11 @@
                 self.flash(
                     _('Your current session does not match ' + \
-                    'accommodation session.'))
+                    'accommodation session.'), type="danger")
                 return
         if 'maintenance' in p_category:
             current_session = str(student['studycourse'].current_session)
             if not current_session in student['accommodation']:
-                self.flash(_('You have not yet booked accommodation.'))
+                self.flash(_('You have not yet booked accommodation.'),
+                           type="warning")
                 return
         students_utils = getUtility(IStudentsUtils)
@@ -1783,5 +1767,5 @@
             p_category, student, previous_session, previous_level)
         if error is not None:
-            self.flash(error)
+            self.flash(error, type="danger")
             return
         self.context[payment.p_id] = payment
@@ -1806,5 +1790,5 @@
     def update(self):
         if self.context.student.before_payment:
-            self.flash(_("No previous payment to be made."))
+            self.flash(_("No previous payment to be made."), type="warning")
             self.redirect(self.url(self.context))
         super(PreviousPaymentAddFormPage, self).update()
@@ -1821,5 +1805,5 @@
             p_category, student, previous_session, previous_level)
         if error is not None:
-            self.flash(error)
+            self.flash(error, type="danger")
             return
         self.context[payment.p_id] = payment
@@ -1854,5 +1838,5 @@
             balance_level, balance_amount)
         if error is not None:
-            self.flash(error)
+            self.flash(error, type="danger")
             return
         self.context[payment.p_id] = payment
@@ -1986,5 +1970,6 @@
     def delBedTickets(self, **data):
         if getattr(self.request.principal, 'user_type', None) == 'student':
-            self.flash(_('You are not allowed to remove bed tickets.'))
+            self.flash(_('You are not allowed to remove bed tickets.'),
+                       type="warning")
             self.redirect(self.url(self.context))
             return
@@ -1993,5 +1978,5 @@
             child_id = form['val_id']
         else:
-            self.flash(_('No bed ticket selected.'))
+            self.flash(_('No bed ticket selected.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2045,15 +2030,16 @@
                     enddate, tz).strftime("%d/%m/%Y %H:%M:%S")
                 self.flash(_("Outside booking period: ${a} - ${b}",
-                    mapping = {'a': startdate, 'b': enddate}))
+                    mapping = {'a': startdate, 'b': enddate}), type="warning")
             else:
-                self.flash(_("Outside booking period."))
+                self.flash(_("Outside booking period."), type="warning")
             self.redirect(self.url(self.context))
             return
         if not acc_details:
-            self.flash(_("Your data are incomplete."))
+            self.flash(_("Your data are incomplete."), type="warning")
             self.redirect(self.url(self.context))
             return
         if not student.state in acc_details['allowed_states']:
-            self.flash(_("You are in the wrong registration state."))
+            self.flash(_("You are in the wrong registration state."),
+                       type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2061,5 +2047,6 @@
             'booking_session']:
             self.flash(
-                _('Your current session does not match accommodation session.'))
+                _('Your current session does not match accommodation session.'),
+                type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2067,5 +2054,5 @@
             self.flash(
                 _('You already booked a bed space in current ' \
-                    + 'accommodation session.'))
+                    + 'accommodation session.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2079,5 +2066,5 @@
             code = get_access_code(pin)
             if not code:
-                self.flash(_('Activation code is invalid.'))
+                self.flash(_('Activation code is invalid.'), type="warning")
                 return
         # Search and book bed
@@ -2091,5 +2078,6 @@
             # XXX: Can be remove if nobody complains.
             if bed.__parent__.__parent__ is None:
-                self.flash(_('System error: Please contact the adminsitrator.'))
+                self.flash(_('System error: Please contact the adminsitrator.'),
+                           type="danger")
                 self.context.writeLogMessage(self, 'fatal error: %s' % bed.bed_id)
                 return
@@ -2106,5 +2094,6 @@
                 # XXX: Can be remove if nobody complains.
                 if bed.__parent__.__parent__ is None:
-                    self.flash(_('System error: Please contact the adminsitrator.'))
+                    self.flash(_('System error: Please contact the adminsitrator.'),
+                               type="warning")
                     self.context.writeLogMessage(self, 'fatal error: %s' % bed.bed_id)
                     return
@@ -2112,10 +2101,11 @@
             else:
                 self.flash(_('There is no free bed in your category ${a}.',
-                    mapping = {'a':acc_details['bt']}))
+                    mapping = {'a':acc_details['bt']}), type="warning")
                 return
         if self.with_ac:
             # Mark pin as used (this also fires a pin related transition)
             if code.state == USED:
-                self.flash(_('Activation code has already been used.'))
+                self.flash(_('Activation code has already been used.'),
+                           type="warning")
                 return
             else:
@@ -2125,5 +2115,6 @@
                 if not invalidate_accesscode(
                     pin,comment,self.context.student.student_id):
-                    self.flash(_('You are not the owner of this access code.'))
+                    self.flash(_('You are not the owner of this access code.'),
+                               type="warning")
                     return
         # Create bed ticket
@@ -2219,5 +2210,6 @@
         if self.context.bed != None and \
               'reserved' in self.context.bed.bed_type:
-            self.flash(_("Students in reserved beds can't be relocated."))
+            self.flash(_("Students in reserved beds can't be relocated."),
+                       type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2225,5 +2217,5 @@
                 self.context.bed != None and \
                 self.context.bed.bed_type == self.context.bed_type:
-            self.flash(_("Student can't be relocated."))
+            self.flash(_("Student can't be relocated."), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2248,5 +2240,5 @@
             else:
                 self.flash(_('There is no free bed in your category ${a}.',
-                    mapping = {'a':acc_details['bt']}))
+                    mapping = {'a':acc_details['bt']}), type="warning")
                 self.redirect(self.url(self.context))
                 return
@@ -2331,5 +2323,5 @@
                 self.flash(_('Password changed.'))
             else:
-                self.flash( ' '.join(errors))
+                self.flash( ' '.join(errors), type="warning")
         return
 
@@ -2379,13 +2371,13 @@
     def update(self, SUBMIT=None):
         if not self.context.state == ADMITTED:
-            self.flash(_("Wrong state"))
+            self.flash(_("Wrong state"), type="warning")
             self.redirect(self.url(self.context))
             return
         if not self.portrait_uploaded:
-            self.flash(_("No portrait uploaded."))
+            self.flash(_("No portrait uploaded."), type="warning")
             self.redirect(self.url(self.context, 'change_portrait'))
             return
         if not self.all_required_fields_filled:
-            self.flash(_("Not all required fields filled."))
+            self.flash(_("Not all required fields filled."), type="warning")
             self.redirect(self.url(self.context, 'edit_base'))
             return
@@ -2399,8 +2391,9 @@
             code = get_access_code(pin)
             if not code:
-                self.flash(_('Activation code is invalid.'))
+                self.flash(_('Activation code is invalid.'), type="warning")
                 return
             if code.state == USED:
-                self.flash(_('Activation code has already been used.'))
+                self.flash(_('Activation code has already been used.'),
+                           type="warning")
                 return
             # Mark pin as used (this also fires a pin related transition)
@@ -2410,5 +2403,6 @@
             # expect an exception, but the owner might be different
             if not invalidate_accesscode(pin, comment, self.context.student_id):
-                self.flash(_('You are not the owner of this access code.'))
+                self.flash(_('You are not the owner of this access code.'),
+                           type="warning")
                 return
             self.context.clr_code = pin
@@ -2457,5 +2451,5 @@
         self.applyData(self.context, **data)
         if self.dataNotComplete():
-            self.flash(self.dataNotComplete())
+            self.flash(self.dataNotComplete(), type="warning")
             return
         self.flash(_('Clearance form has been saved.'))
@@ -2470,5 +2464,6 @@
                 # This shouldn't happen, but the application officer
                 # might have forgotten to lock the form after changing the state
-                self.flash(_('This form cannot be submitted. Wrong state!'))
+                self.flash(_('This form cannot be submitted. Wrong state!'),
+                           type="danger")
                 return
             IWorkflowInfo(self.context).fireTransition('request_clearance')
@@ -2498,5 +2493,5 @@
             pin = '%s-%s-%s' % (self.ac_prefix, self.ac_series, self.ac_number)
             if self.context.clr_code and self.context.clr_code != pin:
-                self.flash(_("This isn't your CLR access code."))
+                self.flash(_("This isn't your CLR access code."), type="danger")
                 return
         state = IWorkflowState(self.context).getState()
@@ -2504,5 +2499,6 @@
             # This shouldn't happen, but the application officer
             # might have forgotten to lock the form after changing the state
-            self.flash(_('This form cannot be submitted. Wrong state!'))
+            self.flash(_('This form cannot be submitted. Wrong state!'),
+                       type="danger")
             return
         IWorkflowInfo(self.context).fireTransition('request_clearance')
@@ -2529,5 +2525,6 @@
         super(StartSessionPage, self).update()
         if not self.context.next_session_allowed:
-            self.flash(_("You are not entitled to start session."))
+            self.flash(_("You are not entitled to start session."),
+                       type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2541,9 +2538,10 @@
             code = get_access_code(pin)
             if not code:
-                self.flash(_('Activation code is invalid.'))
+                self.flash(_('Activation code is invalid.'), type="warning")
                 return
             # Mark pin as used (this also fires a pin related transition)
             if code.state == USED:
-                self.flash(_('Activation code has already been used.'))
+                self.flash(_('Activation code has already been used.'),
+                           type="warning")
                 return
             else:
@@ -2553,5 +2551,6 @@
                 if not invalidate_accesscode(
                     pin,comment,self.context.student.student_id):
-                    self.flash(_('You are not the owner of this access code.'))
+                    self.flash(_('You are not the owner of this access code.'),
+                               type="warning")
                     return
         try:
@@ -2566,5 +2565,6 @@
                     'pay_pg_fee')
         except ConstraintNotSatisfied:
-            self.flash(_('An error occurred, please contact the system administrator.'))
+            self.flash(_('An error occurred, please contact the system administrator.'),
+                       type="danger")
             return
         self.flash(_('Session started.'))
@@ -2608,7 +2608,7 @@
                 self.context.certificate,studylevel)
         except KeyError:
-            self.flash(_('This level exists.'))
+            self.flash(_('This level exists.'), type="warning")
         except RequiredMissing:
-            self.flash(_('Your data are incomplete'))
+            self.flash(_('Your data are incomplete'), type="warning")
         self.redirect(self.url(self.context))
         return
@@ -2637,10 +2637,10 @@
         if ADD is not None:
             if not course:
-                self.flash(_('No valid course code entered.'))
+                self.flash(_('No valid course code entered.'), type="warning")
                 return
             cat = queryUtility(ICatalog, name='courses_catalog')
             result = cat.searchResults(code=(course, course))
             if len(result) != 1:
-                self.flash(_('Course not found.'))
+                self.flash(_('Course not found.'), type="warning")
                 return
             course = list(result)[0]
@@ -2666,5 +2666,5 @@
             child_id = form['val_id']
         else:
-            self.flash(_('No ticket selected.'))
+            self.flash(_('No ticket selected.'), type="warning")
             self.redirect(self.url(self.context, '@@edit'))
             return
@@ -2697,5 +2697,5 @@
             self.flash(_(
                 "You are a postgraduate student, "
-                "your course list can't bee registered."))
+                "your course list can't bee registered."), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -2704,5 +2704,5 @@
         if self.context.total_credits > max_credits:
             self.flash(_('Maximum credits of ${a} exceeded.',
-                mapping = {'a':max_credits}))
+                mapping = {'a':max_credits}), type="warning")
             return
         IWorkflowInfo(self.context.student).fireTransition(
@@ -2763,8 +2763,8 @@
             searchtype='reg_number', view=self)
         if not hitlist:
-            self.flash(_('No student found.'))
+            self.flash(_('No student found.'), type="warning")
             return
         if len(hitlist) != 1:   # Cannot happen but anyway
-            self.flash(_('More than one student found.'))
+            self.flash(_('More than one student found.'), type="warning")
             return
         student = hitlist[0].context
@@ -2774,5 +2774,5 @@
         code = get_access_code(pin)
         if not code:
-            self.flash(_('Access code is invalid.'))
+            self.flash(_('Access code is invalid.'), type="warning")
             return
         if student_pw and pin == student.adm_code:
@@ -2784,10 +2784,10 @@
             self.flash(
                 _('Password has already been set. You are using the ' +
-                'wrong Access Code.'))
+                'wrong Access Code.'), type="warning")
             return
         # Mark pin as used (this also fires a pin related transition)
         # and set student password
         if code.state == USED:
-            self.flash(_('Access code has already been used.'))
+            self.flash(_('Access code has already been used.'), type="warning")
             return
         else:
@@ -2847,5 +2847,5 @@
             student = results[0]
             if getattr(student,'firstname',None) is None:
-                self.flash(_('An error occurred.'))
+                self.flash(_('An error occurred.'), type="danger")
                 return
             elif student.firstname.lower() != firstname.lower():
@@ -2853,9 +2853,10 @@
                 # know that a record was found and only the firstname
                 # verification failed.
-                self.flash(_('No student record found.'))
+                self.flash(_('No student record found.'), type="warning")
                 return
             elif student.password is not None and self._pw_used:
                 self.flash(_('Your password has already been set and used. '
-                             'Please proceed to the login page.'))
+                             'Please proceed to the login page.'),
+                           type="warning")
                 return
             # Store email address but nothing else.
@@ -2864,5 +2865,5 @@
         else:
             # No record found, this is the truth.
-            self.flash(_('No student record found.'))
+            self.flash(_('No student record found.'), type="warning")
             return
 
@@ -2974,5 +2975,5 @@
             self.hitlist = self._searchCatalog(self.session, self.level)
             if not self.hitlist:
-                self.flash(_('No student found.'))
+                self.flash(_('No student found.'), type="warning")
         return
 
@@ -3059,9 +3060,9 @@
             'configuration'].current_academic_session
         if self.context.__parent__.__parent__.score_editing_disabled:
-            self.flash(_('Score editing disabled.'))
+            self.flash(_('Score editing disabled.'), type="warning")
             self.redirect(self.url(self.context))
             return
         if not self.current_academic_session:
-            self.flash(_('Current academic session not set.'))
+            self.flash(_('Current academic session not set.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -3070,5 +3071,5 @@
             ticket for ticket in self.tickets if ticket.editable_by_lecturer]
         if not self.tickets:
-            self.flash(_('No student found.'))
+            self.flash(_('No student found.'), type="warning")
             self.redirect(self.url(self.context))
             return
@@ -3100,5 +3101,6 @@
             if error:
                 self.flash(_('Error: Score(s) of %s have not be updated. '
-                  'Only integers are allowed.' % error.strip(', ')))
+                  'Only integers are allowed.' % error.strip(', ')),
+                  type="danger")
         return
 
Index: main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser_templates/transcriptprocess.pt
===================================================================
--- main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser_templates/transcriptprocess.pt	(revision 11013)
+++ main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser_templates/transcriptprocess.pt	(revision 11014)
@@ -1,13 +1,19 @@
 <form method="POST" i18n:domain="waeup.kofa">
 
-  <ul class="tabs" data-tabs="tabs">
-    <li tal:attributes="class view/tab1"><a href="#tab-1">
-    <span i18n:translate="">Process request</span></a></li>
-    <li tal:attributes="class view/tab2"><a href="#tab-2">
-    <span i18n:translate="">View correspondence</span></a></li>
+  <ul class="tabs nav nav-tabs" data-tabs="tabs">
+    <li class="active">
+      <a href="#tab1" data-toggle="tab">
+        <span i18n:translate="">Process request</span>
+      </a>
+    </li>
+    <li>
+      <a href="#tab2" data-toggle="tab">
+        <span i18n:translate="">View correspondence</span>
+      </a>
+    </li>
   </ul>
 
   <div class="tab-content">
-    <div id="tab-1" tal:attributes="class view/tab1">
+    <div id="tab1" class="active tab-pane">
 
       <table class="form-table">
@@ -32,5 +38,5 @@
     </div>
 
-    <div id="tab-2" tal:attributes="class view/tab2">
+    <div id="tab2" class="tab-pane">
       <p tal:content="structure view/correspondence"></p>
     </div>
Index: main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser_templates/transcriptrequest.pt
===================================================================
--- main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser_templates/transcriptrequest.pt	(revision 11013)
+++ main/waeup.kofa/branches/uli-diazo-themed/src/waeup/kofa/students/browser_templates/transcriptrequest.pt	(revision 11014)
@@ -1,13 +1,18 @@
 <form method="POST" i18n:domain="waeup.kofa">
 
-  <ul class="tabs" data-tabs="tabs">
-    <li tal:attributes="class view/tab1"><a href="#tab-1">
-    <span i18n:translate="">Send new request</span></a></li>
-    <li tal:attributes="class view/tab2"><a href="#tab-2">
-    <span i18n:translate="">View correspondence</span></a></li>
+  <ul class="tabs nav nav-tabs" data-tabs="tabs">
+    <li class="active">
+      <a href="#tab1" data-toggle="tab">
+        <span i18n:translate="">Send new request</span>
+      </a></li>
+    <li>
+      <a href="#tab2" data-toggle="tab">
+        <span i18n:translate="">View correspondence</span>
+      </a>
+    </li>
   </ul>
 
   <div class="tab-content">
-    <div id="tab-1" tal:attributes="class view/tab1">
+    <div id="tab1" class="active tab-pane">
 
       <p i18n:translate="transcript_request"></p>
@@ -65,5 +70,5 @@
     </div>
 
-    <div id="tab-2"  tal:attributes="class view/tab2">
+    <div id="tab2" class="tab-pane">
       <p tal:content="structure view/correspondence"></p>
     </div>
