=== modified file 'dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/user/CurrentUserController.java' --- dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/user/CurrentUserController.java 2012-10-01 13:21:22 +0000 +++ dhis-2/dhis-web/dhis-web-api/src/main/java/org/hisp/dhis/api/controller/user/CurrentUserController.java 2012-10-01 14:21:41 +0000 @@ -40,6 +40,7 @@ import org.hisp.dhis.message.MessageConversation; import org.hisp.dhis.message.MessageService; import org.hisp.dhis.organisationunit.OrganisationUnit; +import org.hisp.dhis.organisationunit.OrganisationUnitService; import org.hisp.dhis.user.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -52,10 +53,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; +import java.util.*; /** * @author Morten Olav Hansen @@ -81,6 +79,9 @@ @Autowired private InterpretationService interpretationService; + @Autowired + private OrganisationUnitService organisationUnitService; + @RequestMapping public String getCurrentUser( @RequestParam Map parameters, Model model, HttpServletRequest request, HttpServletResponse response ) throws Exception @@ -245,6 +246,7 @@ } Recipients recipients = new Recipients(); + recipients.setOrganisationUnits( getOrganisationUnitsForUser( currentUser, filter ) ); if ( filter == null || filter.isEmpty() ) { @@ -259,4 +261,33 @@ JacksonUtils.toJson( response.getOutputStream(), recipients ); } + + private Set getOrganisationUnitsForUser( User user, String filter ) + { + Set organisationUnits = new HashSet(); + + for ( OrganisationUnit organisationUnit : user.getOrganisationUnits() ) + { + organisationUnits.add( organisationUnit ); + organisationUnits.addAll( organisationUnitService.getLeafOrganisationUnits( organisationUnit.getId() ) ); + } + + if ( filter != null ) + { + Iterator iterator = organisationUnits.iterator(); + filter = filter.toUpperCase(); + + while ( iterator.hasNext() ) + { + OrganisationUnit organisationUnit = iterator.next(); + + if ( !organisationUnit.getName().toUpperCase().contains( filter ) ) + { + iterator.remove(); + } + } + } + + return organisationUnits; + } } === modified file 'dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/new-message.vm' --- dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/new-message.vm 2012-10-01 13:21:22 +0000 +++ dhis-2/dhis-web/dhis-web-mobile/src/main/webapp/WEB-INF/dhis-web-mobile-velocity/new-message.vm 2012-10-01 14:21:41 +0000 @@ -3,14 +3,17 @@ function displaySelected() { + $('#selection-list').children().remove(); + $('form[role="search"] input:text').val(''); + $('#selection-list').append('
  • Organisation Units
  • ') - $('#selection-list').append('
  • None selected.
  • '); - $('#selection-list').append('
  • Users
  • ') - $('#selection-list').append('
  • None selected.
  • '); - $('#selection-list').append('
  • Users Groups
  • ') - $('#selection-list').append('
  • None selected.
  • '); + + // TODO use selected object to populate selected-list + $('
  • None selected.
  • ').insertAfter('#organisation-unit-list'); + $('
  • None selected.
  • ').insertAfter('#user-list'); + $('
  • None selected.
  • ').insertAfter('#user-group-list'); $('#selection-list').listview('refresh'); } @@ -28,14 +31,15 @@ $('form[role="search"] input:text').bind('keyup', function () { var search = $('form[role="search"] input:text').val(); - $('#selection-list').children().remove(); - if( search.length == 0) { displaySelected(); return; } - else if ( search.length < 3 ) + + $('#selection-list').children().remove(); + + if ( search.length < 3 ) { return; } @@ -49,6 +53,15 @@ 'filter' : search } }).success(function ( data ) { + if( data.organisationUnits && data.organisationUnits.length > 0) + { + $('#selection-list').append('
  • Organisation Units
  • ') + + _(data.organisationUnits).each(function(organisationUnit) { + $('#selection-list').append('
  • ' + organisationUnit.name + '
  • '); + }); + } + if( data.users && data.users.length > 0 ) { $('#selection-list').append('
  • Users
  • ')