Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7229)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/pages.py	(revision 7231)
@@ -189,4 +189,74 @@
 
 #
+# Contact form...
+#
+
+class ContactAdminForm(Form):
+    grok.name('contactadmin')
+    #grok.context(IUniversity)
+    grok.template('contactform')
+    grok.require('waeup.Authenticated')
+    pnav = 2
+    form_fields = grok.AutoFields(IContactForm).select('body')
+
+    @property
+    def config(self):
+        return grok.getSite()['configuration']
+
+    def title(self):
+        userid = self.request.principal.id
+        return u'Contact %s' % self.config.name_admin
+
+    def label(self):
+        return self.title()
+
+    @property
+    def get_user_account(self):
+        return get_user_account(self.request)
+
+    @grok.action('Send message now')
+    def send(self, *args, **data):
+        useraccount = self.get_user_account
+        if useraccount is None:
+            self.flash("You don't have a user account.")
+            return
+        fullname = useraccount.title
+        email_from = useraccount.email
+        username = useraccount.name
+        body = data['body']
+        email_to = self.config.email_admin
+        subject = self.config.email_subject
+        success = send_mail(fullname,username,self.config.name,
+                  body,email_from,email_to,subject)
+        if success:
+            self.flash('Your message has been sent.')
+        else:
+            self.flash('An smtp server error occurred.')
+        return
+
+class EnquiriesForm(ContactAdminForm):
+    grok.name('enquiries')
+    grok.require('waeup.Public')
+    pnav = 2
+    form_fields = grok.AutoFields(IContactForm).select(
+                          'fullname', 'email_from', 'body')
+
+    @grok.action('Send now')
+    def send(self, *args, **data):
+        email_from = data['email_from']
+        fullname = data['fullname']
+        body = data['body']
+        username = u'None'
+        email_to = self.config.email_admin
+        subject = self.config.email_subject
+        success = send_mail(fullname,username,self.config.name,
+                  body,email_from,email_to,subject)
+        if success:
+            self.flash('Your message has been sent.')
+        else:
+            self.flash('A smtp server error occurred.')
+        return
+
+#
 # University related pages...
 #
@@ -377,4 +447,32 @@
         return
 
+class ContactUserForm(ContactAdminForm):
+    grok.name('contactuser')
+    grok.context(IUserAccount)
+    grok.template('contactform')
+    grok.require('waeup.manageUsers')
+    pnav = 0
+    form_fields = grok.AutoFields(IContactForm).select('body')
+
+    @grok.action('Send message now')
+    def send(self, *args, **data):
+        useraccount = self.get_user_account
+        if useraccount is None:
+            self.flash("You don't have a user account.")
+            return
+        fullname = useraccount.title
+        email_from = useraccount.email
+        username = useraccount.name
+        body = data['body']
+        email_to = self.context.email
+        subject = self.config.email_subject
+        success = send_mail(fullname,username,self.config.name,
+                  body,email_from,email_to,subject)
+        if success:
+            self.flash('Your message has been sent.')
+        else:
+            self.flash('An smtp server error occurred.')
+        return
+
 class UserEditFormPage(UserManageFormPage):
     """Edit a user account by user
@@ -450,74 +548,4 @@
         self.query = query
         self.hitlist = search(query=self.query, view=self)
-        return
-
-#
-# Contact form...
-#
-
-class ContactAdminForm(Form):
-    grok.name('contactadmin')
-    #grok.context(IUniversity)
-    grok.template('contactform')
-    grok.require('waeup.Authenticated')
-    pnav = 2
-    form_fields = grok.AutoFields(IContactForm).select('body')
-
-    @property
-    def config(self):
-        return grok.getSite()['configuration']
-
-    def title(self):
-        userid = self.request.principal.id
-        return u'Contact %s' % self.config.name_admin
-
-    def label(self):
-        return self.title()
-
-    @property
-    def get_user_account(self):
-        return get_user_account(self.request)
-
-    @grok.action('Send message now')
-    def send(self, *args, **data):
-        useraccount = self.get_user_account
-        if useraccount is None:
-            self.flash("You don't have a user account.")
-            return
-        fullname = useraccount.title
-        email_from = useraccount.email
-        username = useraccount.name
-        body = data['body']
-        email_to = self.config.email_admin
-        subject = self.config.email_subject
-        success = send_mail(fullname,username,self.config.name,
-                  body,email_from,email_to,subject)
-        if success:
-            self.flash('Your message has been sent.')
-        else:
-            self.flash('An smtp server error occurred.')
-        return
-
-class EnquiriesForm(ContactAdminForm):
-    grok.name('enquiries')
-    grok.require('waeup.Public')
-    pnav = 2
-    form_fields = grok.AutoFields(IContactForm).select(
-                          'fullname', 'email_from', 'body')
-
-    @grok.action('Send now')
-    def send(self, *args, **data):
-        email_from = data['email_from']
-        fullname = data['fullname']
-        body = data['body']
-        username = u'None'
-        email_to = self.config.email_admin
-        subject = self.config.email_subject
-        success = send_mail(fullname,username,self.config.name,
-                  body,email_from,email_to,subject)
-        if success:
-            self.flash('Your message has been sent.')
-        else:
-            self.flash('A smtp server error occurred.')
         return
 
Index: main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py
===================================================================
--- main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 7229)
+++ main/waeup.sirp/trunk/src/waeup/sirp/browser/viewlets.py	(revision 7231)
@@ -23,10 +23,11 @@
 from waeup.sirp.browser.pages import (
     UniversityPage, FacultyContainerPage, DatacenterPage, FacultyPage,
-    DepartmentPage, CoursePage, CertificatePage, CertificateCoursePage, UsersContainerPage)
+    DepartmentPage, CoursePage, CertificatePage, CertificateCoursePage,
+    UsersContainerPage, UserManageFormPage)
 from waeup.sirp.browser.interfaces import (
     IFacultyContainer, IFaculty, IDepartment, ICourse, ICertificate,
     ICertificateCourse, IBreadcrumbContainer, IUniversity, IUsersContainer)
 from waeup.sirp.interfaces import (IWAeUPObject, IWAeUPXMLExporter,
-                                   IWAeUPXMLImporter, IDataCenter)
+                                   IWAeUPXMLImporter, IDataCenter, IUserAccount)
 from waeup.sirp.browser.layout import WAeUPPage
 from waeup.sirp.utils.helpers import get_user_account
@@ -336,4 +337,13 @@
     text = u'Portal Users'
 
+class ContactActionButton(ManageActionButton):
+    grok.order(4)
+    grok.context(IUserAccount)
+    grok.view(UserManageFormPage)
+    grok.require('waeup.manageUsers')
+    icon = 'actionicon_mail.png'
+    text = 'Send email'
+    target = 'contactuser'
+
 class ManageDataCenter(ManageLink):
     """A link to datacenter, placed in upper left box.
