Index: main/waeup.kofa/trunk/CHANGES.txt
===================================================================
--- main/waeup.kofa/trunk/CHANGES.txt	(revision 16528)
+++ main/waeup.kofa/trunk/CHANGES.txt	(revision 16529)
@@ -4,4 +4,8 @@
 1.7.2.dev0 (unreleased)
 =======================
+
+* Show local roles on faculty, department, course and certificate pages 
+  and provide 'Contact' button so that authenticated users can contact 
+  officers via Kofa.
 
 * Extend `IPayer` adapter.
Index: main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/browser_templates/searchpage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/browser_templates/searchpage.pt	(revision 16528)
+++ main/waeup.kofa/trunk/src/waeup/kofa/accesscodes/browser_templates/searchpage.pt	(revision 16529)
@@ -18,5 +18,5 @@
   <p>&nbsp;</p>
   <div tal:condition="view/hitlist">
-    <h3>Search Results</h3>
+    <h3 i18n:translate="">Search Results</h3>
     <input type="hidden" name="old_searchterm"
          tal:attributes="value view/searchterm" />
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 16528)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/pages.py	(revision 16529)
@@ -2130,5 +2130,5 @@
     label = _('Academic Section')
     pnav = 1
-    grok.template('facultypage')
+
 
 class FacultiesContainerManageFormPage(KofaEditFormPage):
@@ -2204,5 +2204,5 @@
 # Faculty pages
 #
-class FacultyPage(KofaPage):
+class FacultyPage(KofaPage, LocalRoleAssignmentUtilityView):
     """Index page of faculties.
     """
@@ -2214,5 +2214,5 @@
     @property
     def label(self):
-        return _('Departments')
+        return self.context.longtitle
 
 class FacultyManageFormPage(KofaEditFormPage,
@@ -2355,5 +2355,5 @@
 # Department pages
 #
-class DepartmentPage(KofaPage):
+class DepartmentPage(KofaPage, LocalRoleAssignmentUtilityView):
     """Department index page.
     """
@@ -2362,5 +2362,8 @@
     grok.name('index')
     pnav = 1
-    label = _('Courses and Certificates')
+
+    @property
+    def label(self):
+        return self.context.longtitle
 
     def update(self):
@@ -2549,5 +2552,5 @@
 # Courses pages
 #
-class CoursePage(KofaDisplayFormPage):
+class CoursePage(KofaDisplayFormPage, LocalRoleAssignmentUtilityView):
     """Course index page.
     """
@@ -2632,5 +2635,5 @@
 # Certificate pages
 #
-class CertificatePage(KofaDisplayFormPage):
+class CertificatePage(KofaDisplayFormPage, LocalRoleAssignmentUtilityView):
     """Index page for certificates.
     """
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/departmentpage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/departmentpage.pt	(revision 16528)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/departmentpage.pt	(revision 16529)
@@ -5,4 +5,7 @@
   <li><a href="#tab2" data-toggle="tab">
     <span i18n:translate="">Certificates</span></a>
+  </li>
+  <li><a href="#tab3" data-toggle="tab">
+    <span i18n:translate="">Local Roles</span></a>
   </li>
 </ul>
@@ -54,3 +57,29 @@
     </table>
   </div>
+  <div id="tab3" class="tab-pane">
+    <br />
+    <table class="table table-hover">
+      <thead>
+        <tr>
+          <th i18n:translate="">Officer Name
+          </th>
+          <th i18n:translate="">Local Role
+          </th>
+          <th></th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr tal:repeat="entry view/getUsersWithLocalRoles">
+          <td tal:content="entry/public_name"> PUBLICNAME </td>
+          <td tal:content="entry/local_role_title"> LOCAL ROLE </td>
+          <td>
+            <a href=""
+               i18n:translate=""
+               tal:attributes="href python: view.url(entry['user'], 'contactuser')"
+               class="btn btn-success btn-xs">Contact</a>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
 </div>
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/facultiescontainerpage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/facultiescontainerpage.pt	(revision 16529)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/facultiescontainerpage.pt	(revision 16529)
@@ -0,0 +1,24 @@
+<div i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python: not len(context.keys())">
+There are no subobjects registered yet.
+</div>
+
+<tal:so i18n:domain="waeup.kofa" tal:condition="python: len(context.keys())">
+  <h3 i18n:translate="">
+      Faculties
+  </h3>
+  <table class="table table-hover" i18n:domain="waeup.kofa">
+    <thead>
+      <tr>
+        <th i18n:translate="">Code</th>
+        <th i18n:translate="">Title</th>
+      </tr>
+    </thead>
+    <tbody>
+      <tr tal:repeat="value context/values">
+        <td> <a tal:attributes="href python: view.url(value)">
+            <span tal:content="value/code">Name</span></a></td>
+        <td tal:content="value/longtitle">Title</td>
+      </tr>
+    </tbody>
+  </table>
+</tal:so>
Index: main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/facultypage.pt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/facultypage.pt	(revision 16528)
+++ main/waeup.kofa/trunk/src/waeup/kofa/browser/templates/facultypage.pt	(revision 16529)
@@ -1,19 +1,62 @@
-<div i18n:domain="waeup.kofa" i18n:translate="" tal:condition="python: not len(context.keys())">
-There are no subobjects registered yet.
+<ul i18n:domain="waeup.kofa" class="tabs nav nav-tabs" data-tabs="tabs">
+  <li class="active"><a href="#tab1" data-toggle="tab">
+    <span i18n:translate="">Departments</span></a>
+  </li>
+  <li><a href="#tab3" data-toggle="tab">
+    <span i18n:translate="">Local Roles</span></a>
+  </li>
+</ul>
+<div i18n:domain="waeup.kofa" class="tab-content">
+  <div id="tab1" class="active tab-pane">
+    <br />
+    <table class="table table-hover" i18n:domain="waeup.kofa">
+      <thead>
+        <tr>
+          <th i18n:translate="">Code</th>
+          <th i18n:translate="">Title</th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr tal:repeat="value context/values">
+          <td> <a tal:attributes="href python: view.url(value)">
+              <span tal:content="value/code">Name</span></a></td>
+          <td tal:content="value/longtitle">Title</td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
+  <div id="tab3" class="tab-pane">
+    <br />
+    <table class="table table-hover">
+      <thead>
+        <tr>
+          <th i18n:translate="">Officer Name
+          </th>
+          <th i18n:translate="">Local Role
+          </th>
+          <th></th>
+        </tr>
+      </thead>
+      <tbody>
+        <tr tal:repeat="entry view/getUsersWithLocalRoles">
+          <td tal:content="entry/public_name"> PUBLICNAME </td>
+          <td tal:content="entry/local_role_title"> LOCAL ROLE </td>
+          <td>
+            <a href=""
+               i18n:translate=""
+               tal:attributes="href python: view.url(entry['user'], 'contactuser')"
+               class="btn btn-success btn-xs">Contact</a>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+  </div>
 </div>
 
-<table class="table table-hover" i18n:domain="waeup.kofa">
-  <thead>
-    <tr>
-      <th i18n:translate="">Code</th>
-      <th i18n:translate="">Title</th>
-    </tr>
-  </thead>
-  <tbody>
-    <tr tal:repeat="value context/values">
-      <td> <a tal:attributes="href python: view.url(value)">
-          <span tal:content="value/code">Name</span></a></td>
-      <td tal:content="value/longtitle">Title</td>
-    </tr>
-  </tbody>
-</table>
+
+
+
+
+
+
+
Index: main/waeup.kofa/trunk/src/waeup/kofa/doctests/pages.txt
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/doctests/pages.txt	(revision 16528)
+++ main/waeup.kofa/trunk/src/waeup/kofa/doctests/pages.txt	(revision 16529)
@@ -470,5 +470,5 @@
   >>> print browser.contents
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...
-  ...<h1 class="kofa-content-label">Departments</h1>
+  ...<h1 class="kofa-content-label">Faculty of My renamed faculty (TF)</h1>
   ...<td> <a href="http://localhost/myuniversity/faculties/TF/TD"> <span>TD</span></a></td>
   ...<td>Department of TestDept (TD)</td>
@@ -503,5 +503,5 @@
   >>> print browser.contents
   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  ...<h1 class="kofa-content-label">Departments</h1>
+  ...<h1 class="kofa-content-label">Faculty of My renamed faculty (TF)</h1>
   ...<td> <a href="http://localhost/myuniversity/faculties/TF/TD"> <span>TD</span></a></td>
   ...<td>Department of My renamed dept (TD)</td>
Index: main/waeup.kofa/trunk/src/waeup/kofa/permissions.py
===================================================================
--- main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 16528)
+++ main/waeup.kofa/trunk/src/waeup/kofa/permissions.py	(revision 16529)
@@ -778,11 +778,17 @@
         user = grok.getSite()['users'].get(user_name, None)
         user_title = getattr(user, 'title', user_name)
+        public_name = getattr(user, 'public_name', None)
+        if not public_name:
+            public_name = user_title
         local_role_title = getattr(
             dict(get_all_roles()).get(local_role, None), 'title', None)
-        yield dict(user_name=user_name,
+        yield dict(user=user,
+                   user_name=user_name,
                    user_title=user_title,
+                   public_name=public_name,
                    local_role=local_role,
                    local_role_title=local_role_title,
-                   setting=setting)
+                   setting=setting,
+                   )
 
 
