Index: .classpath =================================================================== --- .classpath (revision 14296) +++ .classpath (working copy) @@ -1,45 +1,45 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Index: lib-common/openmrs-api-1.6.0.11682-dev.jar =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: lib-common/tests-openmrs-api-1.6.0.11682-dev.jar =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: lib-common/web-openmrs-api-1.6.0.11682-dev.jar =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: metadata/config.xml =================================================================== --- metadata/config.xml (revision 14296) +++ metadata/config.xml (working copy) @@ -1,107 +1,107 @@ - - - - - htmlformentry - HTML Form Entry - 1.6.4.2 - org.openmrs.module.htmlformentry - Darius Jazayeri - - FormEntry in-webapp, using HTML forms - - - org.openmrs.module.htmlformentry.HtmlFormEntryActivator - - https://dev.openmrs.org/modules/download/@MODULE_ID@/update.rdf - - - 1.6.0.11652 - - - - org.openmrs.admin.list - org.openmrs.module.htmlformentry.extension.html.AdminList - - - org.openmrs.module.web.extension.FormEntryHandler - org.openmrs.module.htmlformentry.extension.html.FormEntryHandlerExtension - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - en - messages.properties - - - fr - messages_fr.properties - - - es - messages_es.properties - - - - - HtmlFormEntryHtmlForm.hbm.xml - - - + + + + + htmlformentry + HTML Form Entry + 1.6.4.3 + org.openmrs.module.htmlformentry + Darius Jazayeri + + FormEntry in-webapp, using HTML forms + + + org.openmrs.module.htmlformentry.HtmlFormEntryActivator + + https://dev.openmrs.org/modules/download/@MODULE_ID@/update.rdf + + + 1.9.0 + + + + org.openmrs.admin.list + org.openmrs.module.htmlformentry.extension.html.AdminList + + + org.openmrs.module.web.extension.FormEntryHandler + org.openmrs.module.htmlformentry.extension.html.FormEntryHandlerExtension + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + en + messages.properties + + + fr + messages_fr.properties + + + es + messages_es.properties + + + + + HtmlFormEntryHtmlForm.hbm.xml + + + Index: src/org/openmrs/module/htmlformentry/element/EncounterDetailSubmissionElement.java =================================================================== --- src/org/openmrs/module/htmlformentry/element/EncounterDetailSubmissionElement.java (revision 14296) +++ src/org/openmrs/module/htmlformentry/element/EncounterDetailSubmissionElement.java (working copy) @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.TreeSet; import javax.servlet.http.HttpServletRequest; @@ -89,31 +90,34 @@ providerErrorWidget = new ErrorWidget(); if (context.getExistingEncounter() != null) { providerWidget.setInitialValue(context.getExistingEncounter() - .getProvider()); + .getProviders()); } else { String defParam = (String) parameters.get("default"); + Set defaultProviders = null; if (StringUtils.hasText(defParam)) { - Person defaultProvider = null; - if ("currentuser".equalsIgnoreCase(defParam)) { - defaultProvider = Context.getAuthenticatedUser().getPerson(); - } else { - User providerByUsername = Context.getUserService().getUserByUsername(defParam); - if (providerByUsername != null) { - defaultProvider = providerByUsername.getPerson(); + String[] defaultParams = defParam.split(","); + defaultProviders = new LinkedHashSet(); + for (int i = 0; i < defaultParams.length; i++) { + if ("currentuser".equalsIgnoreCase(defaultParams[i].trim())) { + defaultProviders.add(Context.getAuthenticatedUser().getPerson()); } else { - try { - defaultProvider = Context.getPersonService() - .getPerson(Integer.parseInt(defParam)); - } catch (NumberFormatException ex) { + User providerByUsername = Context.getUserService().getUserByUsername(defaultParams[i]); + if (providerByUsername != null) { + defaultProviders.add(providerByUsername.getPerson()); + } else { + try { + defaultProviders.add(Context.getPersonService().getPerson(Integer.parseInt(defaultParams[i]))); + } catch (NumberFormatException ex) { + } } } } - if (defaultProvider == null) { + if (defaultProviders == null) { throw new IllegalArgumentException( "Invalid default provider specified for encounter: " + defParam); } - providerWidget.setInitialValue(defaultProvider); + providerWidget.setInitialValue(defaultProviders); } } context.registerWidget(providerWidget); @@ -245,10 +249,10 @@ e.setEncounterDatetime(dateAndTime); } if (providerWidget != null) { - Person person = (Person) providerWidget.getValue(session + Set providers = (Set) providerWidget.getValue(session .getContext(), submission); - session.getSubmissionActions().getCurrentEncounter().setProvider( - person); + session.getSubmissionActions().getCurrentEncounter().setProviders( + providers); } if (locationWidget != null) { Location location = (Location) locationWidget.getValue(session Index: src/org/openmrs/module/htmlformentry/widget/PersonWidget.java =================================================================== --- src/org/openmrs/module/htmlformentry/widget/PersonWidget.java (revision 14296) +++ src/org/openmrs/module/htmlformentry/widget/PersonWidget.java (working copy) @@ -1,28 +1,33 @@ package org.openmrs.module.htmlformentry.widget; +import java.util.Comparator; +import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; +import java.util.TreeSet; import javax.servlet.http.HttpServletRequest; +import org.openmrs.Encounter; import org.openmrs.Person; import org.openmrs.api.context.Context; import org.openmrs.module.htmlformentry.FormEntryContext; import org.openmrs.module.htmlformentry.HtmlFormEntryUtil; import org.openmrs.module.htmlformentry.FormEntryContext.Mode; -import org.springframework.util.StringUtils; /** * A widget that allows for the selection of a Person. Implemented using a drop-down selection list. */ public class PersonWidget implements Widget { - private Person person; + private Set persons; private List options; public PersonWidget() { } public void setInitialValue(Object initialValue) { - person = (Person) initialValue; + persons = (Set) initialValue; } /** @@ -36,27 +41,37 @@ public String generateHtml(FormEntryContext context) { if (context.getMode() == Mode.VIEW) { - if (person != null) - return WidgetFactory.displayValue(person.getPersonName().toString()); + if (persons != null){ + StringBuffer sb = new StringBuffer(); + for (Iterator personIterator = persons.iterator(); personIterator.hasNext(); ) { + sb.append(personIterator.next().getPersonName()); + if(personIterator.hasNext()){ + sb.append(", "); + } + } + return WidgetFactory.displayValue(sb.toString()); + } else return ""; } StringBuilder sb = new StringBuilder(); - sb.append(""); // TODO translate - sb.append("\n"); List personList; if (options != null) { personList = options; } else { personList = Context.getPersonService().getPeople("", true); } + if (personList == null || personList.isEmpty()){ + sb.append("\n"); + } for (Person p : personList) { sb.append("\n").append(p.getPersonName()).append(""); } @@ -65,10 +80,14 @@ } public Object getValue(FormEntryContext context, HttpServletRequest request) { - String val = request.getParameter(context.getFieldName(this)); - if (StringUtils.hasText(val)) - return HtmlFormEntryUtil.convertToType(val, Person.class); - return null; + Set providers = null; + String[] vals = request.getParameterValues(context.getFieldName(this)); + if(vals != null){ + providers = new LinkedHashSet(); + for (String provider : vals) { + providers.add((Person) HtmlFormEntryUtil.convertToType(provider, Person.class)); + } + } + return providers; } - }