=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java' --- dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java 2013-09-09 18:40:14 +0000 +++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/dashboard/DashboardItem.java 2013-09-10 11:03:08 +0000 @@ -49,6 +49,9 @@ import java.util.List; /** + * Represents an item in the dashboard. An item can represent an embedded object + * or represent links to other objects. + * * @author Lars Helge Overland */ @JacksonXmlRootElement( localName = "dashboardItem", namespace = DxfNamespaces.DXF_2_0 ) @@ -136,6 +139,59 @@ { return TYPE_PATIENT_TABULAR_REPORTS; } + + return null; + } + + /** + * Returns the actual item object if this dashboard item represents an + * embedded item and not links to items. + */ + public IdentifiableObject getEmbeddedItem() + { + if ( chart != null ) + { + return chart; + } + else if ( map != null ) + { + return map; + } + else if ( reportTable != null ) + { + return reportTable; + } + + return null; + } + + /** + * Returns a list of the actual item objects if this dashboard item + * represents a list of objects and not an embedded item. + */ + public List getLinkItems() + { + if ( !users.isEmpty() ) + { + return users; + } + else if ( !reportTables.isEmpty() ) + { + return reportTables; + } + else if ( !reports.isEmpty() ) + { + return reports; + } + else if ( !resources.isEmpty() ) + { + return resources; + } + else if ( !patientTabularReports.isEmpty() ) + { + return patientTabularReports; + } + return null; } @@ -314,7 +370,6 @@ // Merge with // ------------------------------------------------------------------------- - @Override public void mergeWith( IdentifiableObject other ) { === modified file 'dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileOrganisationUnitController.java' --- dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileOrganisationUnitController.java 2013-09-10 09:00:47 +0000 +++ dhis-2/dhis-web/dhis-web-api-mobile/src/main/java/org/hisp/dhis/api/mobile/controller/MobileOrganisationUnitController.java 2013-09-10 11:03:08 +0000 @@ -28,7 +28,6 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import java.io.EOFException; import java.util.ArrayList; import java.util.Collection; import java.util.Date; === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java 2013-08-27 11:53:08 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/AbstractCrudController.java 2013-09-10 11:03:08 +0000 @@ -93,7 +93,7 @@ handleLinksAndAccess( options, metaData, entityList ); postProcessEntities( entityList ); - postProcessEntities( entityList, parameters ); + postProcessEntities( entityList, options, parameters ); model.addAttribute( "model", metaData ); model.addAttribute( "viewClass", options.getViewClass( "basic" ) ); @@ -113,7 +113,7 @@ handleLinksAndAccess( options, metaData, entityList ); postProcessEntities( entityList ); - postProcessEntities( entityList, parameters ); + postProcessEntities( entityList, options, parameters ); model.addAttribute( "model", metaData ); model.addAttribute( "viewClass", options.getViewClass( "basic" ) ); @@ -144,7 +144,7 @@ } postProcessEntity( entity ); - postProcessEntity( entity, parameters ); + postProcessEntity( entity, options, parameters ); model.addAttribute( "model", entity ); model.addAttribute( "viewClass", options.getViewClass( "detailed" ) ); @@ -170,7 +170,7 @@ } postProcessEntity( entity ); - postProcessEntity( entity, parameters ); + postProcessEntity( entity, options, parameters ); model.addAttribute( "model", entity ); model.addAttribute( "viewClass", "detailed" ); @@ -232,7 +232,7 @@ * Override to process entities after it has been retrieved from * storage and before it is returned to the view. Entities is null-safe. */ - protected void postProcessEntities( List entityList, Map parameters ) + protected void postProcessEntities( List entityList, WebOptions options, Map parameters ) { } @@ -258,7 +258,7 @@ * Override to process a single entity after it has been retrieved from * storage and before it is returned to the view. Entity is null-safe. */ - protected void postProcessEntity( T entity, Map parameters ) throws Exception + protected void postProcessEntity( T entity, WebOptions options, Map parameters ) throws Exception { } @@ -348,7 +348,7 @@ } } } - + //-------------------------------------------------------------------------- // Reflection helpers //-------------------------------------------------------------------------- === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java 2013-09-04 15:50:41 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/DashboardController.java 2013-09-10 11:03:08 +0000 @@ -29,12 +29,15 @@ */ import java.io.InputStream; +import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.hisp.dhis.api.utils.ContextUtils; +import org.hisp.dhis.api.utils.WebUtils; +import org.hisp.dhis.common.IdentifiableObject; import org.hisp.dhis.dashboard.Dashboard; import org.hisp.dhis.dashboard.DashboardItem; import org.hisp.dhis.dashboard.DashboardSearchResult; @@ -224,4 +227,32 @@ ContextUtils.okResponse( response, "Dashboard item content removed" ); } } + + // ------------------------------------------------------------------------- + // Hooks + // ------------------------------------------------------------------------- + + @Override + protected void postProcessEntity( Dashboard entity, WebOptions options, Map parameters ) throws Exception + { + for ( DashboardItem item : entity.getItems() ) + { + if ( item != null ) + { + item.setHref( null ); // Null item link, not relevant + + if ( item.getEmbeddedItem() != null ) + { + WebUtils.generateLinks( item.getEmbeddedItem() ); + } + else if ( item.getLinkItems() != null ) + { + for ( IdentifiableObject link : item.getLinkItems() ) + { + WebUtils.generateLinks( link ); + } + } + } + } + } } === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/MessageConversationController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/MessageConversationController.java 2013-08-23 16:00:30 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/MessageConversationController.java 2013-09-10 11:03:08 +0000 @@ -76,7 +76,7 @@ private CurrentUserService currentUserService; @Override - public void postProcessEntity( MessageConversation entity, Map parameters ) throws Exception + public void postProcessEntity( MessageConversation entity, WebOptions options, Map parameters ) throws Exception { Boolean markRead = Boolean.parseBoolean( parameters.get( "markRead" ) ); === modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/organisationunit/OrganisationUnitController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/organisationunit/OrganisationUnitController.java 2013-09-04 07:20:06 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/organisationunit/OrganisationUnitController.java 2013-09-10 11:03:08 +0000 @@ -206,7 +206,7 @@ } postProcessEntity( entity ); - postProcessEntity( entity, parameters ); + postProcessEntity( entity, options, parameters ); model.addAttribute( "viewClass", options.getViewClass( "detailed" ) );