Index: lams_monitoring/conf/language/lams/ApplicationResources.properties =================================================================== diff -u -r35ee206c5d47a350ae59a47321a2c11a96af6f04 -rd1b23130f9980a55d8df855d834238415ba50aa2 --- lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 35ee206c5d47a350ae59a47321a2c11a96af6f04) +++ lams_monitoring/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision d1b23130f9980a55d8df855d834238415ba50aa2) @@ -264,6 +264,7 @@ learners.page =Page learners.order =Order by completion learners.search.phrase =Enter search query
or page number +learners.search.phrase.tooltip =You can use multiple keywords by separating them with ; learners.search.phrase.go.tooltip =Run search learners.search.phrase.clear.tooltip =Clear search results button.live.edit =Live Edit Index: lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java =================================================================== diff -u -r14c54447b34867997a4b9c3de61b4feda3059434 -rd1b23130f9980a55d8df855d834238415ba50aa2 --- lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision 14c54447b34867997a4b9c3de61b4feda3059434) +++ lams_monitoring/src/java/org/lamsfoundation/lams/monitoring/web/MonitoringAction.java (.../MonitoringAction.java) (revision d1b23130f9980a55d8df855d834238415ba50aa2) @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Map; @@ -1190,10 +1191,10 @@ } } - IUserManagementService userManagementService = MonitoringServiceProxy.getUserManagementService(getServlet() .getServletContext()); - Organisation organisation = (Organisation) userManagementService.findById(Organisation.class, lessonDTO.getOrganisationID()); + Organisation organisation = (Organisation) userManagementService.findById(Organisation.class, + lessonDTO.getOrganisationID()); request.setAttribute("notificationsAvailable", organisation.getEnableCourseNotifications()); request.setAttribute("lesson", lessonDTO); return mapping.findForward("monitorLesson"); @@ -1221,21 +1222,29 @@ : new LearnerProgressNameComparator()); if (!StringUtils.isBlank(searchPhrase)) { - searchPhrase = searchPhrase.trim().toLowerCase(); - // get only users whose names match the given phrase - List searchResult = new ArrayList(); + Set searchResult = new LinkedHashSet(); + + // check if there are several search phrases in the query + String[] searchPhrases = searchPhrase.split(";"); + for (int searchPhraseIndex = 0; searchPhraseIndex < searchPhrases.length; searchPhraseIndex++) { + searchPhrases[searchPhraseIndex] = searchPhrases[searchPhraseIndex].trim().toLowerCase(); + } + for (LearnerProgress learnerProgress : learnerProgresses) { User learner = learnerProgress.getUser(); StringBuilder learnerDisplayName = new StringBuilder(learner.getFirstName().toLowerCase()).append(" ") .append(learner.getLastName().toLowerCase()).append(" ") .append(learner.getLogin().toLowerCase()); - if (learnerDisplayName.indexOf(searchPhrase) != -1) { - searchResult.add(learnerProgress); + for (String searchPhrasePiece : searchPhrases) { + if (!StringUtils.isBlank(searchPhrasePiece) && learnerDisplayName.indexOf(searchPhrasePiece) != -1) { + searchResult.add(learnerProgress); + } } } - learnerProgresses = searchResult; + learnerProgresses.clear(); + learnerProgresses.addAll(searchResult); } // batch size is 10 Index: lams_monitoring/web/monitor.jsp =================================================================== diff -u -r40d574e90c45111f7235398a683c4bf2ea889d20 -rd1b23130f9980a55d8df855d834238415ba50aa2 --- lams_monitoring/web/monitor.jsp (.../monitor.jsp) (revision 40d574e90c45111f7235398a683c4bf2ea889d20) +++ lams_monitoring/web/monitor.jsp (.../monitor.jsp) (revision d1b23130f9980a55d8df855d834238415ba50aa2) @@ -333,7 +333,9 @@
- +