← Back to team overview

dhis2-devs team mailing list archive

[Branch ~dhis2-devs-core/dhis2/trunk] Rev 8519: Profile, including last 5 interpretations which user added or commented on in profile page

 

------------------------------------------------------------
revno: 8519
committer: Lars Helge Øverland <larshelge@xxxxxxxxx>
branch nick: dhis2
timestamp: Sun 2012-10-14 20:31:58 +0200
message:
  Profile, including last 5 interpretations which user added or commented on in profile page
added:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationStore.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/hibernate/
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/hibernate/HibernateInterpretationStore.java
modified:
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationComment.java
  dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationService.java
  dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java
  dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/interpretation/InterpretationServiceTest.java
  dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java
  dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/interpretation/action/GetInterpretationsAction.java
  dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml
  dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/interpretation.vm
  dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/interpretation.js
  dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/profile.vm
  dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css


--
lp:dhis2
https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk

Your team DHIS 2 developers is subscribed to branch lp:dhis2.
To unsubscribe from this branch go to https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationComment.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationComment.java	2012-05-30 11:35:01 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationComment.java	2012-10-14 18:31:58 +0000
@@ -64,6 +64,13 @@
         this.created = new Date();
     }
 
+    public InterpretationComment( String text, User user )
+    {
+        this.text = text;
+        this.user = user;
+        this.created = new Date();
+    }
+
     @JsonProperty
     @JsonView( { DetailedView.class, ExportView.class } )
     @JacksonXmlProperty( namespace = Dxf2Namespace.NAMESPACE )

=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationService.java	2012-05-30 09:51:59 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationService.java	2012-10-14 18:31:58 +0000
@@ -29,6 +29,8 @@
 
 import java.util.List;
 
+import org.hisp.dhis.user.User;
+
 /**
  * @author Lars Helge Overland
  */
@@ -45,6 +47,8 @@
     void deleteInterpretation( Interpretation interpretation );
     
     List<Interpretation> getInterpretations( int first, int max );
+
+    List<Interpretation> getInterpretations( User user, int first, int max );
     
     void addInterpretationComment( String uid, String text );
     

=== added file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationStore.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationStore.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/interpretation/InterpretationStore.java	2012-10-14 18:31:58 +0000
@@ -0,0 +1,42 @@
+package org.hisp.dhis.interpretation;
+
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.List;
+
+import org.hisp.dhis.common.GenericIdentifiableObjectStore;
+import org.hisp.dhis.user.User;
+
+/**
+ * @author Lars Helge Overland
+ */
+public interface InterpretationStore
+    extends GenericIdentifiableObjectStore<Interpretation>
+{
+    List<Interpretation> getInterpretations( User user, int first, int max );
+}

=== modified file 'dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java'
--- dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java	2012-10-10 10:12:33 +0000
+++ dhis-2/dhis-api/src/test/java/org/hisp/dhis/period/MonthlyPeriodTypeTest.java	2012-10-14 18:31:58 +0000
@@ -30,7 +30,6 @@
 import java.util.Calendar;
 import java.util.List;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertEquals;
 import org.junit.Before;
 import org.junit.Test;
 

=== added directory 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/hibernate'
=== added file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/hibernate/HibernateInterpretationStore.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/hibernate/HibernateInterpretationStore.java	1970-01-01 00:00:00 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/hibernate/HibernateInterpretationStore.java	2012-10-14 18:31:58 +0000
@@ -0,0 +1,57 @@
+package org.hisp.dhis.interpretation.hibernate;
+
+/*
+ * Copyright (c) 2004-2012, University of Oslo
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright notice, this
+ *   list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright notice,
+ *   this list of conditions and the following disclaimer in the documentation
+ *   and/or other materials provided with the distribution.
+ * * Neither the name of the HISP project nor the names of its contributors may
+ *   be used to endorse or promote products derived from this software without
+ *   specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import java.util.List;
+
+import org.hibernate.Query;
+import org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore;
+import org.hisp.dhis.interpretation.Interpretation;
+import org.hisp.dhis.interpretation.InterpretationStore;
+import org.hisp.dhis.user.User;
+
+/**
+ * @author Lars Helge Overland
+ */
+public class HibernateInterpretationStore
+    extends HibernateIdentifiableObjectStore<Interpretation> implements InterpretationStore
+{
+    @SuppressWarnings("unchecked")
+    public List<Interpretation> getInterpretations( User user, int first, int max )
+    {
+        String hql = "select distinct i from Interpretation i left join i.comments c " +
+            "where i.user = :user or c.user = :user order by i.lastUpdated desc";
+        
+        Query query = getQuery( hql );
+        query.setEntity( "user", user );
+        query.setMaxResults( first );
+        query.setMaxResults( max );
+        
+        return query.list();
+    }
+}

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java	2012-08-31 15:35:59 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/java/org/hisp/dhis/interpretation/impl/DefaultInterpretationService.java	2012-10-14 18:31:58 +0000
@@ -31,10 +31,10 @@
 import java.util.List;
 
 import org.hisp.dhis.common.CodeGenerator;
-import org.hisp.dhis.common.GenericIdentifiableObjectStore;
 import org.hisp.dhis.interpretation.Interpretation;
 import org.hisp.dhis.interpretation.InterpretationComment;
 import org.hisp.dhis.interpretation.InterpretationService;
+import org.hisp.dhis.interpretation.InterpretationStore;
 import org.hisp.dhis.period.PeriodService;
 import org.hisp.dhis.user.CurrentUserService;
 import org.hisp.dhis.user.User;
@@ -52,9 +52,9 @@
     // Dependencies
     // -------------------------------------------------------------------------
 
-    private GenericIdentifiableObjectStore<Interpretation> interpretationStore;
+    private InterpretationStore interpretationStore;
 
-    public void setInterpretationStore( GenericIdentifiableObjectStore<Interpretation> interpretationStore )
+    public void setInterpretationStore( InterpretationStore interpretationStore )
     {
         this.interpretationStore = interpretationStore;
     }
@@ -126,6 +126,11 @@
         return interpretationStore.getBetweenOrderderByLastUpdated( first, max );
     }
     
+    public List<Interpretation> getInterpretations( User user, int first, int max )
+    {
+        return interpretationStore.getInterpretations( user, first, max );
+    }
+    
     public void addInterpretationComment( String uid, String text )
     {
         Interpretation interpretation = getInterpretation( uid );

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml	2012-10-10 13:23:23 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/main/resources/META-INF/dhis/beans.xml	2012-10-14 18:31:58 +0000
@@ -261,7 +261,7 @@
 	<property name="periodService" ref="org.hisp.dhis.period.PeriodService" />
   </bean>
 
-  <bean id="org.hisp.dhis.interpretation.InterpretationStore" class="org.hisp.dhis.common.hibernate.HibernateIdentifiableObjectStore">
+  <bean id="org.hisp.dhis.interpretation.InterpretationStore" class="org.hisp.dhis.interpretation.hibernate.HibernateInterpretationStore">
 	<property name="clazz" value="org.hisp.dhis.interpretation.Interpretation" />
     <property name="sessionFactory" ref="sessionFactory" />
     <property name="cacheable" value="true" />

=== modified file 'dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/interpretation/InterpretationServiceTest.java'
--- dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/interpretation/InterpretationServiceTest.java	2012-05-29 21:23:47 +0000
+++ dhis-2/dhis-services/dhis-service-reporting/src/test/java/org/hisp/dhis/interpretation/InterpretationServiceTest.java	2012-10-14 18:31:58 +0000
@@ -61,6 +61,7 @@
     private InterpretationService interpretationService;
     
     private User userA;
+    private User userB;
     
     private Chart chartA;
     
@@ -72,7 +73,9 @@
     public void beforeTest()
     {
         userA = createUser( 'A' );
+        userB = createUser( 'B' );
         userService.addUser( userA );
+        userService.addUser( userB );
         
         setDependency( interpretationService, "currentUserService", new MockCurrentUserService( userA ), CurrentUserService.class );
         
@@ -140,6 +143,40 @@
         assertTrue( interpretations.contains( interpretationB ) );
         assertTrue( interpretations.contains( interpretationC ) );
     }
+
+    @Test
+    public void testGetLastByUserA()
+    {
+        interpretationService.saveInterpretation( interpretationA );
+        interpretationService.saveInterpretation( interpretationB );
+        interpretationService.saveInterpretation( interpretationC );
+        
+        List<Interpretation> interpretations = interpretationService.getInterpretations( userA, 0, 50 );
+        
+        assertEquals( 3, interpretations.size() );
+        
+        assertTrue( interpretations.contains( interpretationA ) );
+        assertTrue( interpretations.contains( interpretationB ) );
+        assertTrue( interpretations.contains( interpretationC ) );
+    }
+
+    @Test
+    public void testGetLastByUserB()
+    {
+        interpretationA.addComment( new InterpretationComment( "Comment", userB ) );
+        interpretationB.addComment( new InterpretationComment( "Comment", userB ) );
+        
+        interpretationService.saveInterpretation( interpretationA );
+        interpretationService.saveInterpretation( interpretationB );
+        interpretationService.saveInterpretation( interpretationC );
+        
+        List<Interpretation> interpretations = interpretationService.getInterpretations( userB, 0, 50 );
+        
+        assertEquals( 2, interpretations.size() );
+        
+        assertTrue( interpretations.contains( interpretationA ) );
+        assertTrue( interpretations.contains( interpretationB ) );
+    }
     
     @Test
     public void testAddComment()

=== modified file 'dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java'
--- dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java	2012-05-29 19:08:34 +0000
+++ dhis-2/dhis-support/dhis-support-test/src/main/java/org/hisp/dhis/mock/MockCurrentUserService.java	2012-10-14 18:31:58 +0000
@@ -30,6 +30,9 @@
 import org.hisp.dhis.user.CurrentUserService;
 import org.hisp.dhis.user.User;
 
+/**
+ * @author Lars Helge Overland
+ */
 public class MockCurrentUserService
     implements CurrentUserService
 {

=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/interpretation/action/GetInterpretationsAction.java'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/interpretation/action/GetInterpretationsAction.java	2012-10-03 08:51:03 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/java/org/hisp/dhis/dashboard/interpretation/action/GetInterpretationsAction.java	2012-10-14 18:31:58 +0000
@@ -29,8 +29,12 @@
 
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.hisp.dhis.interpretation.Interpretation;
 import org.hisp.dhis.interpretation.InterpretationService;
+import org.hisp.dhis.user.User;
+import org.hisp.dhis.user.UserService;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import com.opensymphony.xwork2.Action;
 
@@ -46,13 +50,12 @@
     // Dependencies
     // -------------------------------------------------------------------------
 
+    @Autowired
+    private UserService userService;
+    
+    @Autowired
     private InterpretationService interpretationService;
 
-    public void setInterpretationService( InterpretationService interpretationService )
-    {
-        this.interpretationService = interpretationService;
-    }
-
     // -------------------------------------------------------------------------
     // Input
     // -------------------------------------------------------------------------
@@ -63,6 +66,13 @@
     {
         this.page = page;
     }
+    
+    private String userId;
+
+    public void setUserId( String userId )
+    {
+        this.userId = userId;
+    }
 
     // -------------------------------------------------------------------------
     // Output
@@ -81,11 +91,22 @@
 
     public String execute()
     {
+        userId = StringUtils.trimToNull( userId );
+        
         int first = page != null ? ( page * PAGE_SIZE ) : 0;
         
-        interpretationService.updateCurrentUserLastChecked();
-        
-        interpretations = interpretationService.getInterpretations( first, PAGE_SIZE );
+        if ( userId != null )
+        {
+            User user = userService.getUser( userId );
+            
+            interpretations = interpretationService.getInterpretations( user, first, PAGE_SIZE );
+        }
+        else
+        {
+            interpretationService.updateCurrentUserLastChecked();
+            
+            interpretations = interpretationService.getInterpretations( first, PAGE_SIZE );
+        }
         
         return SUCCESS;
     }

=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml	2012-10-11 19:54:10 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/resources/META-INF/dhis/beans.xml	2012-10-14 18:31:58 +0000
@@ -109,9 +109,7 @@
   <!-- Interpretations -->
   
   <bean id="org.hisp.dhis.dashboard.interpretation.action.GetInterpretationsAction" class="org.hisp.dhis.dashboard.interpretation.action.GetInterpretationsAction"
-	scope="prototype">
-	<property name="interpretationService" ref="org.hisp.dhis.interpretation.InterpretationService" />
-  </bean>
+	scope="prototype"/>
 
   <!-- Profile -->
 

=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/interpretation.vm'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/interpretation.vm	2012-09-30 17:45:22 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/interpretation.vm	2012-10-14 18:31:58 +0000
@@ -6,10 +6,7 @@
 	<a href="../dhis-web-reporting/displayManageTableForm.action">$i18n.getString( "report_table" )</a>
 </div>
 
-<div id="interpretationFeed">
-</div>
-
-<div id="userInfo" class="page" style="display:none"></div>
+<div id="interpretationFeed"></div>
 
 <script type="text/javascript">
 var currentUser = {

=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/interpretation.js'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/interpretation.js	2012-10-03 10:33:08 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/javascript/interpretation.js	2012-10-14 18:31:58 +0000
@@ -48,18 +48,6 @@
 	} );
 }
 
-function showUserInfo( id )
-{
-	$( "#userInfo" ).load( "../dhis-web-commons-ajax-html/getUser.action?id=" + id, function() {
-		$( "#userInfo" ).dialog( {
-			modal : true,
-			width : 350,
-			height : 350,
-			title : "User"
-		} );
-	} );
-}
-
 function postComment( uid )
 {	
 	var text = $( "#commentArea" + uid ).val();

=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/profile.vm'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/profile.vm	2012-10-11 19:54:10 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/profile.vm	2012-10-14 18:31:58 +0000
@@ -1,3 +1,9 @@
+<script type="text/javascript">
+jQuery( document ).ready( function() {   
+    jQuery( "#profileInterpretationFeed" ).load( "getInterpretations.action?userId=${user.uid}" );
+} );
+</script>
+
 <style type="text/css">
 #mainPage
 {
@@ -18,8 +24,8 @@
 <div class="userRow"><div class="userLabel">$i18n.getString( "introduction" )</div><div class="userValue">$!encoder.htmlEncode( $user.introduction )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "works_as" )</div><div class="userValue">$!encoder.htmlEncode( $user.jobTitle )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "employed_at" )</div><div class="userValue">$!encoder.htmlEncode( $user.employer )</div></div>
-<div class="userRow"><div class="userLabel">$i18n.getString( "education" )</div><div class="userValue">$!encoder.htmlEncode( $user.jobTitle )</div></div>
-<div class="userRow"><div class="userLabel">$i18n.getString( "interested_in" )</div><div class="userValue">$!encoder.htmlEncode( $user.jobTitle )</div></div>
+<div class="userRow"><div class="userLabel">$i18n.getString( "education" )</div><div class="userValue">$!encoder.htmlEncode( $user.education )</div></div>
+<div class="userRow"><div class="userLabel">$i18n.getString( "interested_in" )</div><div class="userValue">$!encoder.htmlEncode( $user.interests )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "speaks" )</div><div class="userValue">$!encoder.htmlEncode( $user.languages )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "birthday" )</div><div class="userValue">$!format.formatDate( $user.birthday )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "gender" )</div><div class="userValue">#if( $user.gender )$i18n.getString( $user.gender )#end</div></div>
@@ -28,4 +34,6 @@
 <div class="userRow"><div class="userLabel">$i18n.getString( "phone_number" )</div><div class="userValue">$!encoder.htmlEncode( $user.phoneNumber )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "org_units" )</div><div class="userValue">$!encoder.htmlEncode( $user.getOrganisationUnitsName() )</div></div>
 <div class="userRow"><div class="userLabel">$i18n.getString( "user_roles" )</div><div class="userValue">$!encoder.htmlEncode( $user.getOrganisationUnitsName() )</div></div>
-</div>
\ No newline at end of file
+</div>
+
+<div id="profileInterpretationFeed"></div>
\ No newline at end of file

=== modified file 'dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css'
--- dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css	2012-10-12 15:48:35 +0000
+++ dhis-2/dhis-web/dhis-web-dashboard-integration/src/main/webapp/dhis-web-dashboard-integration/style/dashboard.css	2012-10-14 18:31:58 +0000
@@ -437,6 +437,7 @@
 #userInfo
 {
   margin-left: 36px;
+  margin-bottom: 25px;
 }  
 
 .userRow
@@ -453,11 +454,19 @@
   width: 110px;
   text-align: right;
   padding-right: 20px;
+  vertical-align: top;
 }
 
 .userValue
 {
   display: inline-block;
-  display: inline;
   font-size: 11pt;
+  max-width: 510px;
+}
+
+#profileInterpretationFeed
+{
+  width: 610px;
+  border-top: 1px solid #ccc;
+  margin-left: 38px;
 }