Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/layout.py
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/layout.py	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/layout.py	(revision 7450)
@@ -52,5 +52,4 @@
 default_primary_nav_template.__grok_name__ = 'default_primary_nav'
 
-
 class action(grok.action):
 
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/resources.py
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/resources.py	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/resources.py	(revision 7450)
@@ -252,9 +252,13 @@
     waeup_sirp, 'bootstrap.min.css')
 
+dropdown = ResourceInclusion(
+    waeup_sirp, 'bootstrap-dropdown.js',
+    depends=[jquery])
+
 #: Register basic SIRP CSS (which is based on ``bootstrap.min.css`` and ``base``
 #: as a resource.
 waeup_base_css = ResourceInclusion(
     waeup_sirp, 'waeup-base.css',
-    depends=[bootstrap_min, base])
+    depends=[dropdown,bootstrap_min, base])
 
 #: The red SIRP theme registered as a resource.
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/bootstrap-dropdown.js
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/bootstrap-dropdown.js	(revision 7450)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/bootstrap-dropdown.js	(revision 7450)
@@ -0,0 +1,55 @@
+/* ============================================================
+ * bootstrap-dropdown.js v1.4.0
+ * http://twitter.github.com/bootstrap/javascript.html#dropdown
+ * ============================================================
+ * Copyright 2011 Twitter, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============================================================ */
+
+
+!function( $ ){
+
+  "use strict"
+
+  /* DROPDOWN PLUGIN DEFINITION
+   * ========================== */
+
+  $.fn.dropdown = function ( selector ) {
+    return this.each(function () {
+      $(this).delegate(selector || d, 'click', function (e) {
+        var li = $(this).parent('li')
+          , isActive = li.hasClass('open')
+
+        clearMenus()
+        !isActive && li.toggleClass('open')
+        return false
+      })
+    })
+  }
+
+  /* APPLY TO STANDARD DROPDOWN ELEMENTS
+   * =================================== */
+
+  var d = 'a.menu, .dropdown-toggle'
+
+  function clearMenus() {
+    $(d).parent('li').removeClass('open')
+  }
+
+  $(function () {
+    $('html').bind("click", clearMenus)
+    $('body').dropdown( '[data-dropdown] a.menu, [data-dropdown] .dropdown-toggle' )
+  })
+
+}( window.jQuery || window.ender );
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/bootstrap.min.css
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/bootstrap.min.css	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/bootstrap.min.css	(revision 7450)
@@ -1335,6 +1335,5 @@
   height: 0;
   display: inline-block;
-  content: "&darr;
-  ";
+  content: "&darr;";
   text-indent: -99999px;
   vertical-align: top;
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/mobile.css
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/mobile.css	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/mobile.css	(revision 7450)
@@ -1,7 +1,22 @@
 .container {
-  width: 420px;
+  width: 480px;
 }
 
 body {
-  padding-top: 120px;
+  padding-top: 60px;
 }
+
+select {
+  width: 60px;
+}
+
+.dataTables_length {
+    float: left;
+    width: 40%;
+}
+
+.dataTables_filter {
+    float: right;
+    text-align: right;
+    width: 60%;
+}
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/waeup-base.css
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/waeup-base.css	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/static/waeup-base.css	(revision 7450)
@@ -9,4 +9,27 @@
 body {
   padding-top: 60px;
+  background-color: #EEEEEE;
+}
+
+.content {
+    background-color: #FFFFFF;
+    margin-left: -20px;
+    margin-right: -20px;
+    padding-bottom: 20px;
+    padding-left: 20px;
+    padding-right: 20px;
+    padding-top: 20px;
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+}
+
+.well {
+    background-color: #FFFFFF;
+}
+
+.breadcrumb {
+    background-color: #FFFFFF;
+    background-image: None;
+    border: 0px;
 }
 
@@ -40,9 +63,17 @@
 }
 
-table.display {
-    margin-top: 25px;
+.dataTables_filter {
+  margin-bottom: 20px;
 }
 
  /* SIRP stuff */
+
+.container {
+  width: 700px;
+}
+
+.actionbar {
+  margin-bottom: 20px;
+}
 
 .error {
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/actionbutton.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/actionbutton.pt	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/actionbutton.pt	(revision 7450)
@@ -1,3 +1,3 @@
-<a class="btn" tal:condition="viewlet/target_url"
+<a class="btn actionbar" tal:condition="viewlet/target_url"
    tal:attributes="href viewlet/target_url">
   <img src="" alt="edit"
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/certificatepage.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/certificatepage.pt	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/certificatepage.pt	(revision 7450)
@@ -31,5 +31,5 @@
 </thead>
 <tbody>
-  <tr tal:repeat="cc context/values">
+  <tr tal:repeat="cc context/values" class="gradeC">
      <td>
       <span tal:content="cc/level">
Index: in/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/removesubobjectspage.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/removesubobjectspage.pt	(revision 7449)
+++ 	(revision )
@@ -1,32 +1,0 @@
-  <div tal:condition="python: not len(context.keys())">
-    There are no subobjects registered yet.
-  </div>
-  <form method="POST" tal:condition="python: len(context.keys())">
-    <div tal:condition="python: not len(context.keys())">
-    There are no faculties registered yet.
-    </div>
-    
-    <table>
-      <thead>
-        <tr>
-          <th>&nbsp;</th>
-          <th>Code</th>
-          <th>Title</th>
-        </tr>
-      </thead>
-      <tbody>
-        <tr tal:repeat="value context/values"
-    	tal:attributes="class python: repeat['value'].odd() and 'odd' or 'even'">
-    	  <td>
-    	  <input type="checkbox"
-    		 name="val_id"
-    		 tal:attributes="value value/__name__" />
-    	  </td>    	
-          <td> <a tal:attributes="href value/__name__"> <span tal:content="value/code">Name</span></a></td>
-          <td tal:content="value/title">Title</td>
-        </tr>
-      </tbody>
-    </table>
-    <input type="submit" name="REMOVE" value="Remove selected" onclick="return confirmPost('All sububjects will be removed too. Are you sure?')"/>
-    <input type="submit" name="CANCEL" value="Cancel" />
-  </form>
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/staffsitelayout.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/staffsitelayout.pt	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/staffsitelayout.pt	(revision 7450)
@@ -71,8 +71,5 @@
           </div>
         </div>
-        <div class="span12" tal:condition="provider:actionbar">
-          <span tal:replace="structure provider:actionbar" />
-          <br /><br />
-        </div>
+        <span tal:replace="structure provider:actionbar" />
         <div tal:content="structure view/content"> THE CONTENT
         </div>
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/studentsitelayout.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/studentsitelayout.pt	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/browser/templates/studentsitelayout.pt	(revision 7450)
@@ -10,5 +10,6 @@
     <meta name="viewport" content="width=320, initial-scale=1, maximum-scale=1"/>
     <link rel="stylesheet" media="only screen and (max-device-width: 480px)"
-        tal:attributes="href python: view.url(layout.site, '@@/waeup.sirp.browser/mobile.css')" type="text/css" />
+        tal:attributes="href python: view.url(layout.site, '@@/waeup.sirp.browser/mobile.css')"
+        type="text/css" />
     <link rel="shortcut icon" tal:attributes="href static/favicon.ico" type="image/x-icon" />
     <link rel="alternate" type="application/rss+xml" title="RSS"
@@ -52,8 +53,5 @@
           </div>
         </div>
-        <div tal:condition="provider:actionbar">
-          <span tal:replace="structure provider:actionbar" />
-          <br /><br />
-        </div>
+        <span tal:replace="structure provider:actionbar" />
         <div tal:content="structure view/content"> THE CONTENT
         </div>
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/browser_templates/mydatadropdowntabs.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/browser_templates/mydatadropdowntabs.pt	(revision 7450)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/browser_templates/mydatadropdowntabs.pt	(revision 7450)
@@ -0,0 +1,9 @@
+<li tal:attributes="class viewlet/active" data-dropdown="dropdown" >
+  <a href="#" class="dropdown-toggle" tal:content="viewlet/tab_title">Tab Title</a>
+  <ul class="dropdown-menu">
+    <li tal:repeat="target viewlet/targets">
+      <a tal:attributes="href target/url"
+         tal:content="target/title">Link Title</a>
+    </li>
+  </ul>
+</li>
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/browser_templates/studycoursepage.pt
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/browser_templates/studycoursepage.pt	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/browser_templates/studycoursepage.pt	(revision 7450)
@@ -55,5 +55,5 @@
 
 
-<table class="zebra">
+<table>
   <thead>
     <tr>
@@ -63,5 +63,5 @@
   </thead>
   <tbody>
-    <tr tal:repeat="value context/values">
+    <tr class="gradeC" tal:repeat="value context/values">
       <td> <a tal:attributes="href value/__name__">
       <span tal:content="value/level">CODE</span></a></td>
Index: /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/viewlets.py
===================================================================
--- /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/viewlets.py	(revision 7449)
+++ /main/waeup.sirp/branches/henrik-bootstrap/src/waeup/sirp/students/viewlets.py	(revision 7450)
@@ -60,11 +60,6 @@
                 url, self.text)
 
-class StudentManageBaseLink(StudentManageLink):
-    grok.order(1)
-    link = 'index'
-    text = u'Base Data'
-
 class StudentManageApplicationLink(StudentManageLink):
-    grok.order(2)
+    grok.order(1)
     link = 'application_slip'
     text = u'Application Slip'
@@ -75,7 +70,12 @@
         if slip:
             url = self.view.url(self.context,self.link)
-            return u'<li"><a href="%s">%s</a></li>' % (
+            return u'<li><a href="%s">%s</a></li>' % (
                     url, self.text)
         return ''
+
+class StudentManageBaseLink(StudentManageLink):
+    grok.order(2)
+    link = 'index'
+    text = u'Base Data'
 
 class StudentManageClearanceLink(StudentManageLink):
@@ -111,77 +111,4 @@
     text = u'History'
 
-
-class StudentMenu(grok.ViewletManager):
-    grok.name('top_student')
-
-class StudentLink(PlainActionButton):
-    """A link displayed in the student box which shows up for StudentNavigation
-    objects.
-
-    """
-    grok.baseclass()
-    grok.viewletmanager(StudentMenu)
-    grok.context(ISIRPObject)
-    grok.view(Interface)
-    grok.order(5)
-    grok.require('waeup.viewStudent')
-
-    link = 'index'
-    text = u'Base Data'
-
-    @property
-    def target_url(self):
-        """Get a URL to the target...
-        """
-        return self.view.url(self.context.getStudent(), self.link)
-
-class StudentBaseLink(StudentLink):
-    grok.order(1)
-    link = 'index'
-    text = u'Base Data'
-
-class ApplicationSlipLink(StudentLink):
-    grok.order(2)
-    link = 'application_slip'
-    text = u'Application Slip'
-
-    @property
-    def target_url(self):
-        slip = getUtility(IExtFileStore).getFileByContext(
-            self.context.getStudent(), attr=self.link)
-        if slip:
-            return self.view.url(self.context,self.link)
-        return
-
-class StudentClearanceLink(StudentLink):
-    grok.order(3)
-    link = 'view_clearance'
-    text = u'Clearance Data'
-
-class StudentPersonalLink(StudentLink):
-    grok.order(4)
-    link = 'view_personal'
-    text = u'Personal Data'
-
-class StudentStudyCourseLink(StudentLink):
-    grok.order(5)
-    link = 'studycourse'
-    text = u'Study Course'
-
-class StudentPaymentsLink(StudentLink):
-    grok.order(6)
-    link = 'payments'
-    text = u'Payments'
-
-class StudentAccommodationLink(StudentLink):
-    grok.order(7)
-    link = 'accommodation'
-    text = u'Accommodation'
-
-class StudentHistoryLink(StudentLink):
-    grok.order(8)
-    link = 'history'
-    text = u'History'
-
 class StudentsTab(PrimaryNavTab):
     """Students tab in primary navigation.
@@ -227,15 +154,38 @@
 
 class MyStudentDataTab(PrimaryStudentNavTab):
-    """MyData-tab in primary navigation.
+    """MyData dropdown tab in primary navigation.
     """
     grok.order(3)
     grok.require('waeup.viewMyStudentDataTab')
+    grok.template('mydatadropdowntabs')
     pnav = 4
     tab_title = u'My Data'
 
     @property
-    def link_target(self):
-        rel_link = '/students/%s' % self.request.principal.id
-        return self.view.application_url() + rel_link
+    def active(self):
+        view_pnav = getattr(self.view, 'pnav', 0)
+        if view_pnav == self.pnav:
+            return 'active dropdown'
+        return 'dropdown'
+
+    @property
+    def targets(self):
+        student_url = self.view.application_url() + (
+            '/students/%s' % self.request.principal.id)
+        #app_slip = getUtility(IExtFileStore).getFileByContext(
+        #    self.context.getStudent(), 'application_slip')
+        targets = []
+        #if app_slip:
+        #    targets = [{'url':student_url + '/application_slip', 'title':'Application Slip'},]
+        targets += [
+            {'url':student_url + '/index', 'title':'Base Data'},
+            {'url':student_url + '/view_clearance', 'title':'Clearance Data'},
+            {'url':student_url + '/view_personal', 'title':'Personal Data'},
+            {'url':student_url + '/studycourse', 'title':'Study Course'},
+            {'url':student_url + '/payments', 'title':'Payments'},
+            {'url':student_url + '/accommodation', 'title':'Accommodation Data'},
+            {'url':student_url + '/history', 'title':'History'},
+            ]
+        return targets
 
 def handle_file_delete(context, view, download_name):
