r1869 - in trunk: wao-services/src/main/java/fr/ifremer/wao/services/service/administration wao-services/src/main/resources/i18n wao-web/src/main/java/fr/ifremer/wao/web wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer wao-web/src/main/resources/i18n wao-web/src/main/webapp/WEB-INF/content/obsmer
Author: tchemit Date: 2014-04-08 19:20:53 +0200 (Tue, 08 Apr 2014) New Revision: 1869 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1869 Log: ref #4487 edit contact Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java trunk/wao-services/src/main/resources/i18n/wao-services_en_GB.properties trunk/wao-services/src/main/resources/i18n/wao-services_fr_FR.properties trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ValidateContactJsonAction.java trunk/wao-web/src/main/resources/i18n/wao-web_en_GB.properties trunk/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-contact-input.jsp Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/ReferentialService.java 2014-04-08 17:20:53 UTC (rev 1869) @@ -430,7 +430,7 @@ /** * @param contactState if null, return motifs for all contact states */ - public List<ContactStateMotif> getAllContactStateMotifs(ContactState contactState) throws Exception { + public List<ContactStateMotif> getAllContactStateMotifs(ContactState contactState) { ContactStateMotifTopiaDao dao = getPersistenceContext().getContactStateMotifDao(); Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/service/administration/WaoUsersService.java 2014-04-08 17:20:53 UTC (rev 1869) @@ -71,6 +71,25 @@ } + public List<WaoUser> getActiveWaoUsers(Optional<String> optionalCompanyId) { + + WaoUserTopiaDao dao = getWaoUserDao(); + + TopiaQueryBuilderAddCriteriaOrRunQueryStep<WaoUser> query = dao.newQueryBuilder(); + + if (optionalCompanyId.isPresent()) { + query.addTopiaIdEquals(WaoUser.PROPERTY_COMPANY, optionalCompanyId.get()); + } + query.addEquals(WaoUser.PROPERTY_ACTIVE, true); + + query.setOrderByArguments(WaoUser.PROPERTY_LOGIN); + + List<WaoUser> waoUsers = query.findAll(); + + return waoUsers; + + } + public WaoUser getWaoUser(String waoUserId) { WaoUserTopiaDao dao = getWaoUserDao(); Modified: trunk/wao-services/src/main/resources/i18n/wao-services_en_GB.properties =================================================================== --- trunk/wao-services/src/main/resources/i18n/wao-services_en_GB.properties 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-services/src/main/resources/i18n/wao-services_en_GB.properties 2014-04-08 17:20:53 UTC (rev 1869) @@ -32,6 +32,8 @@ wao.import.boat.failure.missing.port=The port is required wao.import.contact.failure.boatMissing=You need to precise the plate number of the boat associated to the contact wao.import.contact.failure.dataInputDateAfterObservationEndDate=La date de saisie des données doit être postérieure à la date de fin d'observation +wao.import.contact.failure.dataInputDateAfterToday= +wao.import.contact.failure.dataInputDateBeforeObservationEndDate= wao.import.contact.failure.dataInputDateBeforeToday=La date de saisie des données doit être antérieur à la date du jour wao.import.contact.failure.districtMissing=You need to precise the boat district wao.import.contact.failure.duplicatedMainObserverInSecondaryObservers=Main observer can not be also a secondary observer @@ -45,7 +47,6 @@ wao.import.contact.failure.missingDataReliability=You must provide data reliability before validating wao.import.contact.failure.missingHoursOfBeginEndObservation=You must provide accurate time for the beginning and the end of observation wao.import.contact.failure.missingMainObserver=Il faut au moins un observateur référant -wao.import.failure.wrongValue=Unable to parse value '%S'. Possible values are %s wao.import.contact.failure.missingObservationArea=Il faut préciser un lieu d'observation wao.import.contact.failure.missingObservationBeginDate=La date de début de marée est obligatoire pour l'état '%s' wao.import.contact.failure.missingObservationEndDate=La date de fin d'observation est obligatoire pour l'état '%s' @@ -71,6 +72,7 @@ wao.import.failure.wrongLocationType='%s' is not a valid location type, allowed values are %s wao.import.failure.wrongObsDebCode=There is no profession code having code '%s' wao.import.failure.wrongUser=There is no user with login '%s' +wao.import.failure.wrongValue=Unable to parse value '%S'. Possible values are %s wao.import.invalid.latitude=a latitude must be contained in range %s. ('%s' argument given) wao.import.invalid.longitude=a longitude must be contained in range %s. ('%s' argument given) wao.import.sampleRow.failure.fishingZoneMissing=You must precise at least one fishing zone Modified: trunk/wao-services/src/main/resources/i18n/wao-services_fr_FR.properties =================================================================== --- trunk/wao-services/src/main/resources/i18n/wao-services_fr_FR.properties 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-services/src/main/resources/i18n/wao-services_fr_FR.properties 2014-04-08 17:20:53 UTC (rev 1869) @@ -30,35 +30,34 @@ wao.import.boat.failure.invalid.locationCode=Le code '%s' n'est pas un code de lieu valide wao.import.boat.failure.missing.port=Il faut préciser un port wao.import.contact.failure.boatMissing=Il faut préciser l'immatriculation du navire associé au contact +wao.import.contact.failure.dataInputDateAfterToday=La date de saisie des données doit être antérieure à la date du jour wao.import.contact.failure.dataInputDateBeforeObservationEndDate=La date de saisie des données doit être postérieure à la date de fin d'observation -wao.import.contact.failure.dataInputDateAfterToday=La date de saisie des données doit être antérieure à la date du jour wao.import.contact.failure.districtMissing=Il faut préciser le code d'un quartier maritime wao.import.contact.failure.duplicatedMainObserverInSecondaryObservers=L'utilisateur référant ne doit pas se trouver aussi parmi les observateurs secondaires -wao.import.contact.failure.invalidObservationBeginDate=Ligne %s : La date de début de la marée doit correspondre à un mois valide (non vide) de la ligne +wao.import.contact.failure.invalidObservationBeginDate=Ligne %s \: La date de début de la marée doit correspondre à un mois valide (non vide) de la ligne wao.import.contact.failure.locationTypeMissing=Le type du lieu doit être renseigné -wao.import.contact.failure.mismatchCompanyForObserver=Ligne %s : L'observateur %s n'est pas membre de la société %s -wao.import.contact.failure.missingComment=Ligne %s : Il faut préciser un commentaire pour l'état '%s' -wao.import.contact.failure.missingCommentAdmin=Ligne %s : Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s' -wao.import.contact.failure.missingContactStateMotif=Ligne %s : Il faut préciser un motif de refus -wao.import.contact.failure.missingDataInputDate=Ligne %s : Il faut préciser une date de saisie des données en plus de la date de transmission de la restitution -wao.import.contact.failure.missingDataReliability=Ligne %s : Il faut préciser la qualité de la donnée avant de valider +wao.import.contact.failure.mismatchCompanyForObserver=Ligne %s \: L'observateur %s n'est pas membre de la société %s +wao.import.contact.failure.missingComment=Ligne %s \: Il faut préciser un commentaire pour l'état '%s' +wao.import.contact.failure.missingCommentAdmin=Ligne %s \: Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s' +wao.import.contact.failure.missingContactStateMotif=Ligne %s \: Il faut préciser un motif de refus +wao.import.contact.failure.missingDataInputDate=Ligne %s \: Il faut préciser une date de saisie des données en plus de la date de transmission de la restitution +wao.import.contact.failure.missingDataReliability=Ligne %s \: Il faut préciser la qualité de la donnée avant de valider wao.import.contact.failure.missingHoursOfBeginEndObservation=Il faut préciser les heures exactes de début et de fin d'observation -wao.import.contact.failure.missingMainObserver=Ligne %s : Il faut au moins un observateur référant -wao.import.failure.wrongValue=Valeur '%s' non reconnue. Valeurs possibles : %s +wao.import.contact.failure.missingMainObserver=Ligne %s \: Il faut au moins un observateur référant wao.import.contact.failure.missingObservationArea=Il faut préciser un lieu d'observation -wao.import.contact.failure.missingObservationBeginDate=Ligne %s : La date de début de marée est obligatoire pour l'état '%s' -wao.import.contact.failure.missingObservationEndDate=Ligne %s : La date de fin d'observation est obligatoire pour l'état '%s' -wao.import.contact.failure.missingObservedDataControl=Ligne %s : Il faut préciser une valeur pour le contrôle des données observées -wao.import.contact.failure.missingObserver=Ligne %s : Il ne peut y avoir aucun observateur pour l'état '%s' -wao.import.contact.failure.missingRestitution=Ligne %s : Il faut préciser une date de transmission de la restitution de la donnée avant de valider -wao.import.contact.failure.not.updatable=Ligne %s : Vous n'avez pas les droits suffisants pour modifier le contact -wao.import.contact.failure.observationEndDateAfterToday=Ligne %s : La date de fin de la marée ne peut pas être postérieure à la date du jour -wao.import.contact.failure.observationEndDateBeforeBeginDate=Ligne %s : La date de fin d'observation ne peut pas être antérieure à celle du début +wao.import.contact.failure.missingObservationBeginDate=Ligne %s \: La date de début de marée est obligatoire pour l'état '%s' +wao.import.contact.failure.missingObservationEndDate=Ligne %s \: La date de fin d'observation est obligatoire pour l'état '%s' +wao.import.contact.failure.missingObservedDataControl=Ligne %s \: Il faut préciser une valeur pour le contrôle des données observées +wao.import.contact.failure.missingObserver=Ligne %s \: Il ne peut y avoir aucun observateur pour l'état '%s' +wao.import.contact.failure.missingRestitution=Ligne %s \: Il faut préciser une date de transmission de la restitution de la donnée avant de valider +wao.import.contact.failure.not.updatable=Ligne %s \: Vous n'avez pas les droits suffisants pour modifier le contact +wao.import.contact.failure.observationEndDateAfterToday=Ligne %s \: La date de fin de la marée doit être antérieure à la date du jour +wao.import.contact.failure.observationEndDateBeforeBeginDate=Ligne %s \: La date de fin d'observation doit être postérieure à celle du début wao.import.contact.failure.sampleRowCodeMissing=Il manque le code de la ligne de plan associée wao.import.contact.failure.terrestrialLocationMissing=Il manque le code du lieu -wao.import.contact.failure.transmissionDateBeforeDataInputDate=Ligne %s : Il faut que la date de transmission de la restitution soit après la date de saisie des données +wao.import.contact.failure.transmissionDateBeforeDataInputDate=Ligne %s \: La date de transmission de la restitution doit être postérieure à la date de saisie des données wao.import.contact.failure.unkwonCompany=Il n'y a pas de société ayant pour nom '%s' -wao.import.contact.failure.unwantedContactStateMotif=Ligne %s : Il ne faut pas préciser de motif de refus +wao.import.contact.failure.unwantedContactStateMotif=Ligne %s \: Il ne faut pas préciser de motif de refus wao.import.contact.failure.wrongBoat=Il n'y a pas de navire avec l'immatriculation '%s' wao.import.contact.failure.wrongColor=Le code couleur '%s' n'est pas valide, il doit être composé de six caractères sans dièze voir http\://fr.wikipedia.org/wiki/Couleurs_du_Web wao.import.contact.failure.wrongContactStateMotifCode=Le code '%s' n'est pas un code de motif de refus valide @@ -70,6 +69,7 @@ wao.import.failure.wrongLocationType='%s' n'est pas un type de lieu valide, les valeurs admises sont %s wao.import.failure.wrongObsDebCode=Il n'y a pas de code métier ayant pour code '%s' wao.import.failure.wrongUser=Il n'y a pas d'utilisateur ayant pour identifiant '%s' +wao.import.failure.wrongValue=Valeur '%s' non reconnue. Valeurs possibles \: %s wao.import.invalid.latitude=La latitude doit être dans l'intervalle %s (valeur actuelle %s) wao.import.invalid.longitude=La longitude doit être dans l'intervalle %s (valeur actuelle %s) wao.import.sampleRow.failure.fishingZoneMissing=Il faut préciser au moins une zone de pêche Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/WaoJspActionSupport.java 2014-04-08 17:20:53 UTC (rev 1869) @@ -64,15 +64,15 @@ } public String formatMonth(Date date) { - return WaoUtils.formatMonth(getLocale(), date); + return date == null ? "" : WaoUtils.formatMonth(getLocale(), date); } public String formatDate(Date date) { - return WaoUtils.formatDate(getLocale(), date); + return date == null ? "" : WaoUtils.formatDate(getLocale(), date); } public String formatDateTime(Date date) { - return WaoUtils.formatDateTime(getLocale(), date); + return date == null ? "" : WaoUtils.formatDateTime(getLocale(), date); } public boolean isGoogleAnalyticsEnabled() { Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/EditContactAction.java 2014-04-08 17:20:53 UTC (rev 1869) @@ -25,9 +25,15 @@ import com.google.common.base.Strings; import com.opensymphony.xwork2.Preparable; import fr.ifremer.wao.WaoUtils; +import fr.ifremer.wao.entity.Contact; +import fr.ifremer.wao.entity.ContactState; +import fr.ifremer.wao.entity.ContactStateMotif; +import fr.ifremer.wao.entity.DataReliability; +import fr.ifremer.wao.entity.ObservedDataControl; +import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.services.AuthenticatedWaoUser; +import fr.ifremer.wao.services.service.ContactDataInputDateAfterTodayException; import fr.ifremer.wao.services.service.ContactDataInputDateBeforeObservationEndDateException; -import fr.ifremer.wao.services.service.ContactDataInputDateAfterTodayException; import fr.ifremer.wao.services.service.ContactNotUpdatableException; import fr.ifremer.wao.services.service.ContactObservationEndDateAfterTodayException; import fr.ifremer.wao.services.service.ContactObservationEndDateBeforeBeginDateException; @@ -50,10 +56,19 @@ import fr.ifremer.wao.services.service.ObsMerContactsService; import fr.ifremer.wao.services.service.UnwantedContactContactStateMotifException; import fr.ifremer.wao.services.service.UpdateContactCommand; +import fr.ifremer.wao.services.service.administration.ReferentialService; +import fr.ifremer.wao.services.service.administration.WaoUsersService; import fr.ifremer.wao.web.WaoJspActionSupport; +import org.apache.commons.lang3.BooleanUtils; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; +import java.util.Date; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; +import java.util.TreeMap; + /** * Created on 4/6/14. * @@ -70,14 +85,36 @@ */ protected Optional<String> optionalContactId = Optional.absent(); + protected Map<String, String> observers; + + protected Map<ContactState, String> contactStates; + + protected Map<String, String> contactStateMotives; + + protected Map<ObservedDataControl, String> observedDataControls; + + protected Map<DataReliability, String> dataReliabilities; + protected transient ObsMerContactsService service; + protected transient WaoUsersService waoUsersService; + + protected transient ReferentialService referentialService; + protected UpdateContactCommand updateContactCommand; public void setService(ObsMerContactsService service) { this.service = service; } + public void setWaoUsersService(WaoUsersService waoUsersService) { + this.waoUsersService = waoUsersService; + } + + public void setReferentialService(ReferentialService referentialService) { + this.referentialService = referentialService; + } + public void setContactId(String contactId) { this.optionalContactId = Optional.fromNullable(Strings.emptyToNull(contactId)); } @@ -93,10 +130,78 @@ return updateContactCommand; } + public Map<String, String> getObservers() { + if (observers == null) { + prepare(); + } + return observers; + } + + public Map<ContactState, String> getContactStates() { + if (contactStates == null) { + prepare(); + } + return contactStates; + } + + public Map<String, String> getContactStateMotives() { + if (contactStateMotives == null) { + prepare(); + } + return contactStateMotives; + } + + public Map<ObservedDataControl, String> getObservedDataControls() { + if (observedDataControls == null) { + prepare(); + } + return observedDataControls; + } + + public Map<DataReliability, String> getDataReliabilities() { + if (dataReliabilities == null) { + prepare(); + } + return dataReliabilities; + } + + public String getDateTimePlaceholder() { + return formatDateTime(new Date()); + } + + public String getDatePlaceholder() { + return formatDate(new Date()); + } + @Override public void prepare() { updateContactCommand = service.newUpdateContactCommand(getAuthenticatedWaoUser(), optionalContactId); + + observers = new TreeMap<>(); + List<WaoUser> waoUsers = waoUsersService.getActiveWaoUsers(Optional.of(getAuthenticatedWaoUser().getCompany().getTopiaId())); + for (WaoUser waoUser : waoUsers) { + observers.put(waoUser.getTopiaId(), waoUser.getFullName()); + } + contactStates = new EnumMap<>(ContactState.class); + for (ContactState contactState : ContactState.getAllowedStates(getAuthenticatedWaoUser().getObsProgram())) { + contactStates.put(contactState, WaoUtils.l(getLocale(), contactState)); + } + + contactStateMotives = new TreeMap<>(); + for (ContactStateMotif contactStateMotif : referentialService.getAllContactStateMotifs(null)) { + contactStateMotives.put(contactStateMotif.getTopiaId(), contactStateMotif.getName()); + } + + observedDataControls = new EnumMap<>(ObservedDataControl.class); + for (ObservedDataControl observedDataControl : ObservedDataControl.values()) { + observedDataControls.put(observedDataControl, WaoUtils.l(getLocale(), observedDataControl)); + } + + dataReliabilities = new EnumMap<>(DataReliability.class); + for (DataReliability dataReliability : DataReliability.values()) { + dataReliabilities.put(dataReliability, WaoUtils.l(getLocale(), dataReliability)); + } } @Override @@ -110,101 +215,111 @@ session.addErrorMessages(t("wao.ui.contacts.validation.failure.not.updatable")); } catch (UnwantedContactContactStateMotifException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.unwantedContactStateMotif")); + addFieldError("updateContactCommand.contact.contactStateMotif", t("wao.ui.form.Contact.error.unwantedContactStateMotif")); } catch (MissingContactNbObservantsException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingObserver", state)); + addFieldError("updateContactCommand.contact.nbObservants", t("wao.ui.form.Contact.error.missingObserver", state)); } catch (MissingContactObservationEndDateException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingObservationEndDate", state)); + addFieldError("updateContactCommand.contact.observationEndDate", t("wao.ui.form.Contact.error.missingObservationEndDate", state)); } catch (ContactDataInputDateBeforeObservationEndDateException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.dataInputDateBeforeObservationEndDate")); + addFieldError("updateContactCommand.contact.dataInputDate", t("wao.ui.form.Contact.error.dataInputDateBeforeObservationEndDate")); } catch (InvalidContactObservationBeginDateException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.invalidObservationBeginDate")); + addFieldError("updateContactCommand.contact.observationBeginDate", t("wao.ui.form.Contact.error.invalidObservationBeginDate")); } catch (MissingContactRestitutionException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingRestitution")); + addFieldError("updateContactCommand.contact.restitution", t("wao.ui.form.Contact.error.missingRestitution")); } catch (ContactDataInputDateAfterTodayException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.dataInputDateAfterToday")); + addFieldError("updateContactCommand.contact.dataInputDate", t("wao.ui.form.Contact.error.dataInputDateAfterToday")); } catch (MissingContactCommentException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingComment", state)); + addFieldError("updateContactCommand.contact.comment", t("wao.ui.form.Contact.error.missingComment", state)); } catch (MismatchContactMainObserverCompanyException e) { String companyName = e.getCompany().getName(); String observerLogin = e.getObserver().getLogin(); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.mismatchCompanyForObserver", observerLogin, companyName)); + addFieldError("updateContactCommand.contact.mainObserver", t("wao.ui.form.Contact.error.mismatchCompanyForObserver", observerLogin, companyName)); } catch (ContactRestitutionDateBeforeDataInputDateException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate")); + addFieldError("updateContactCommand.contact.restitution", t("wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate")); } catch (ContactObservationEndDateBeforeBeginDateException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.observationEndDateBeforeBeginDate")); + addFieldError("updateContactCommand.contact.observationEndDate", t("wao.ui.form.Contact.error.observationEndDateBeforeBeginDate")); } catch (DuplicatedContactMainObserverInSecondaryObserversException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.duplicatedMainObserverInSecondaryObservers")); + addFieldError("updateContactCommand.contact.secondaryObservers", t("wao.ui.form.Contact.error.duplicatedMainObserverInSecondaryObservers")); } catch (MissingContactDataReliabilityException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingDataReliability")); + addFieldError("updateContactCommand.contact.dataReliability", t("wao.ui.form.Contact.error.missingDataReliability")); } catch (MismatchContactSecondaryObserverCompanyException e) { String companyName = e.getCompany().getName(); String observerLogin = e.getObserver().getLogin(); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.mismatchCompanyForObserver", observerLogin, companyName)); + addFieldError("updateContactCommand.contact.secondaryObservers", t("wao.ui.form.Contact.error.mismatchCompanyForObserver", observerLogin, companyName)); } catch (MissingContactObservedDataControlException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingObservedDataControl")); + addFieldError("updateContactCommand.contact.observedDataControl", t("wao.ui.form.Contact.error.missingObservedDataControl")); } catch (MissingContactStateMotifException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingContactStateMotif")); + addFieldError("updateContactCommand.contact.contactStateMotif", t("wao.ui.form.Contact.error.missingContactStateMotif")); } catch (MissingContactDataInputDateException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingDataInputDate")); + addFieldError("updateContactCommand.contact.dataInputDate", t("wao.ui.form.Contact.error.missingDataInputDate")); } catch (MissingContactMainObserverException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingMainObserver")); + addFieldError("updateContactCommand.contact.mainObserver", t("wao.ui.form.Contact.error.missingMainObserver")); } catch (MissingContactCommentAdminException e) { String dataReliability = WaoUtils.l(getLocale(), e.getContact().getDataReliability()); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingCommentAdmin", dataReliability)); + addFieldError("updateContactCommand.contact.commentAdmin", t("wao.ui.form.Contact.error.missingCommentAdmin", dataReliability)); } catch (ContactObservationEndDateAfterTodayException e) { - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.observationEndDateAfterToday")); + addFieldError("updateContactCommand.contact.observationEndDate", t("wao.ui.form.Contact.error.observationEndDateAfterToday")); } catch (MissingContactObservationBeginDateException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - //TODO fix field - addFieldError("updateContactCommand.contact.", t("wao.ui.form.Contact.error.missingObservationBeginDate", state)); + addFieldError("updateContactCommand.contact.observationBeginDate", t("wao.ui.form.Contact.error.missingObservationBeginDate", state)); } } + public boolean isDisplaySecondaryObservers() { + boolean showSecondaryObservers = true; + if (updateContactCommand.getContact().getSampleRow().isPhoneCall()) { + // when phoning, we are always single + showSecondaryObservers = false; + } + return showSecondaryObservers; + } + + public boolean isDisplayDataReliability() { + return getAuthenticatedWaoUser().isAdmin() || getAuthenticatedWaoUser().isCoordinator(); + } + + public boolean canEditDataReliability() { + Contact contact = updateContactCommand.getContact(); + boolean result = getAuthenticatedWaoUser().isAdmin() // coordinator can see the value + && BooleanUtils.isTrue(contact.getValidationCompany()) + && contact.getValidationProgram() == null; + return result; + } + + public boolean canEditObservers() { + return getAuthenticatedWaoUser().isCoordinatorOrObserver() && + updateContactCommand.getContact().getValidationProgram() == null; + } + + public boolean canEditObservationReport() { + return getAuthenticatedWaoUser().isCoordinatorOrObserver() && + updateContactCommand.getContact().getValidationCompany() == null; + } + @Override public String execute() throws Exception { Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ValidateContactJsonAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ValidateContactJsonAction.java 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ValidateContactJsonAction.java 2014-04-08 17:20:53 UTC (rev 1869) @@ -168,78 +168,79 @@ try { service.preValidate(authenticatedWaoUser, updateContactCommand, true); } catch (ContactNotUpdatableException e) { - errorMessage = t("wao.ui.contacts.validation.failure.not.updatable"); + session.addErrorMessages(t("wao.ui.contacts.validation.failure.not.updatable")); + } catch (UnwantedContactContactStateMotifException e) { - errorMessage = t("wao.import.contact.failure.unwantedContactStateMotif"); + errorMessage = t("wao.ui.form.Contact.error.unwantedContactStateMotif"); } catch (MissingContactNbObservantsException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - errorMessage = t("wao.import.contact.failure.missingObserver", state); + errorMessage = t("wao.ui.form.Contact.error.missingObserver", state); } catch (MissingContactObservationEndDateException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - errorMessage = t("wao.import.contact.failure.missingObservationEndDate", state); + errorMessage = t("wao.ui.form.Contact.error.missingObservationEndDate", state); } catch (ContactDataInputDateBeforeObservationEndDateException e) { - errorMessage = t("wao.import.contact.failure.dataInputDateAfterObservationEndDate"); + errorMessage = t("wao.ui.form.Contact.error.dataInputDateBeforeObservationEndDate"); } catch (InvalidContactObservationBeginDateException e) { - errorMessage = t("wao.import.contact.failure.invalidObservationBeginDate"); + errorMessage = t("wao.ui.form.Contact.error.invalidObservationBeginDate"); } catch (MissingContactRestitutionException e) { - errorMessage = t("wao.import.contact.failure.missingRestitution"); + errorMessage = t("wao.ui.form.Contact.error.missingRestitution"); } catch (ContactDataInputDateAfterTodayException e) { - errorMessage = t("wao.import.contact.failure.dataInputDateAfterObservationEndDate"); + errorMessage = t("wao.ui.form.Contact.error.dataInputDateAfterToday"); } catch (MissingContactCommentException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - errorMessage = t("wao.import.contact.failure.missingComment", state); + errorMessage = t("wao.ui.form.Contact.error.missingComment", state); } catch (MismatchContactMainObserverCompanyException e) { String companyName = e.getCompany().getName(); String observerLogin = e.getObserver().getLogin(); - errorMessage = t("wao.import.contact.failure.mismatchCompanyForObserver", observerLogin, companyName); + errorMessage = t("wao.ui.form.Contact.error.mismatchCompanyForObserver", observerLogin, companyName); } catch (ContactRestitutionDateBeforeDataInputDateException e) { - errorMessage = t("wao.import.contact.failure.transmissionDateBeforeDataInputDate"); + errorMessage = t("wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate"); } catch (ContactObservationEndDateBeforeBeginDateException e) { - errorMessage = t("wao.import.contact.failure.observationEndDateBeforeBeginDate"); + errorMessage = t("wao.ui.form.Contact.error.observationEndDateBeforeBeginDate"); } catch (DuplicatedContactMainObserverInSecondaryObserversException e) { - errorMessage = t("wao.import.contact.failure.duplicatedMainObserverInSecondaryObservers"); + errorMessage = t("wao.ui.form.Contact.error.duplicatedMainObserverInSecondaryObservers"); } catch (MissingContactDataReliabilityException e) { - errorMessage = t("wao.import.contact.failure.missingDataReliability"); + errorMessage = t("wao.ui.form.Contact.error.missingDataReliability"); } catch (MismatchContactSecondaryObserverCompanyException e) { String companyName = e.getCompany().getName(); String observerLogin = e.getObserver().getLogin(); - errorMessage = t("wao.import.contact.failure.mismatchCompanyForObserver", observerLogin, companyName); + errorMessage = t("wao.ui.form.Contact.error.mismatchCompanyForObserver", observerLogin, companyName); } catch (MissingContactObservedDataControlException e) { - errorMessage = t("wao.import.contact.failure.missingObservedDataControl"); + errorMessage = t("wao.ui.form.Contact.error.missingObservedDataControl"); } catch (MissingContactStateMotifException e) { - errorMessage = t("wao.import.contact.failure.missingContactStateMotif"); + errorMessage = t("wao.ui.form.Contact.error.missingContactStateMotif"); } catch (MissingContactDataInputDateException e) { - errorMessage = t("wao.import.contact.failure.missingDataInputDate"); + errorMessage = t("wao.ui.form.Contact.error.missingDataInputDate"); } catch (MissingContactMainObserverException e) { - errorMessage = t("wao.import.contact.failure.missingMainObserver"); + errorMessage = t("wao.ui.form.Contact.error.missingMainObserver"); } catch (MissingContactCommentAdminException e) { String dataReliability = WaoUtils.l(getLocale(), e.getContact().getDataReliability()); - errorMessage = t("wao.import.contact.failure.missingCommentAdmin", dataReliability); + errorMessage = t("wao.ui.form.Contact.error.missingCommentAdmin", dataReliability); } catch (ContactObservationEndDateAfterTodayException e) { - errorMessage = t("wao.import.contact.failure.observationEndDateAfterToday"); + errorMessage = t("wao.ui.form.Contact.error.observationEndDateAfterToday"); } catch (MissingContactObservationBeginDateException e) { String state = WaoUtils.l(getLocale(), e.getContact().getContactState()); - errorMessage = t("wao.import.contact.failure.missingObservationBeginDate", state); + errorMessage = t("wao.ui.form.Contact.error.missingObservationBeginDate", state); } catch (Exception e) { if (log.isErrorEnabled()) { Modified: trunk/wao-web/src/main/resources/i18n/wao-web_en_GB.properties =================================================================== --- trunk/wao-web/src/main/resources/i18n/wao-web_en_GB.properties 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/resources/i18n/wao-web_en_GB.properties 2014-04-08 17:20:53 UTC (rev 1869) @@ -5,25 +5,6 @@ wao.import.boatGroups.success=Import boats successful wao.import.boats.prompt=Import boat groups wao.import.boats.success=Import boat groups successful -wao.import.contact.failure.dataInputDateAfterObservationEndDate= -wao.import.contact.failure.duplicatedMainObserverInSecondaryObservers= -wao.import.contact.failure.invalidObservationBeginDate= -wao.import.contact.failure.mismatchCompanyForObserver= -wao.import.contact.failure.missingComment= -wao.import.contact.failure.missingCommentAdmin= -wao.import.contact.failure.missingContactStateMotif= -wao.import.contact.failure.missingDataInputDate= -wao.import.contact.failure.missingDataReliability= -wao.import.contact.failure.missingMainObserver= -wao.import.contact.failure.missingObservationBeginDate= -wao.import.contact.failure.missingObservationEndDate= -wao.import.contact.failure.missingObservedDataControl= -wao.import.contact.failure.missingObserver= -wao.import.contact.failure.missingRestitution= -wao.import.contact.failure.observationEndDateAfterToday= -wao.import.contact.failure.observationEndDateBeforeBeginDate= -wao.import.contact.failure.transmissionDateBeforeDataInputDate= -wao.import.contact.failure.unwantedContactStateMotif= wao.import.contactStateMotives.prompt=Import contact state motives wao.import.contactStateMotives.success=Import contact state motives successful wao.import.fishingZones.prompt=Import fishing zones @@ -289,6 +270,26 @@ wao.ui.form.Company.error.nameMustBeUnique=Company name must be unique wao.ui.form.Company.title.creation=Create a new company wao.ui.form.Company.title.edition=Edit company %s +wao.ui.form.Contact.error.dataInputDateAfterToday= +wao.ui.form.Contact.error.dataInputDateBeforeObservationEndDate= +wao.ui.form.Contact.error.duplicatedMainObserverInSecondaryObservers= +wao.ui.form.Contact.error.invalidObservationBeginDate= +wao.ui.form.Contact.error.mismatchCompanyForObserver= +wao.ui.form.Contact.error.missingComment= +wao.ui.form.Contact.error.missingCommentAdmin= +wao.ui.form.Contact.error.missingContactStateMotif= +wao.ui.form.Contact.error.missingDataInputDate= +wao.ui.form.Contact.error.missingDataReliability= +wao.ui.form.Contact.error.missingMainObserver= +wao.ui.form.Contact.error.missingObservationBeginDate= +wao.ui.form.Contact.error.missingObservationEndDate= +wao.ui.form.Contact.error.missingObservedDataControl= +wao.ui.form.Contact.error.missingObserver= +wao.ui.form.Contact.error.missingRestitution= +wao.ui.form.Contact.error.observationEndDateAfterToday= +wao.ui.form.Contact.error.observationEndDateBeforeBeginDate= +wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate= +wao.ui.form.Contact.error.unwantedContactStateMotif= wao.ui.form.SampleRow.boatsDescription=This field contains registration numbers of the ships that areeligible for this ligne. You can use any separator to separate numbers (space, dot, line-return, comma) wao.ui.form.SampleRow.error.codeMustBeUnique=Sample row code must be unique wao.ui.form.SampleRow.error.missingDcf5Codes=You must provide at least one DCF5 code @@ -321,6 +322,8 @@ wao.ui.form.authentication.title=WAO authentication wao.ui.form.boardingFrom=Boardings since wao.ui.form.boatName.placeholder=Name of boat +wao.ui.form.contact.boat.information=Informations sur le bateau +wao.ui.form.contact.sampleRow.information=Informations sur la ligne du plan d'échantillonage wao.ui.form.contactsFile=Contacts file wao.ui.form.definePasswordManually=Define password manually wao.ui.form.editComment=Edit comment Modified: trunk/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties =================================================================== --- trunk/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties 2014-04-08 17:20:53 UTC (rev 1869) @@ -139,26 +139,6 @@ wao.ui.contacts.validation.to.accept.state.success=Le contact a été accepté avec succès wao.ui.contacts.validation.to.reject.state.success=Le contact a été rejeté avec succès wao.ui.contacts.validation.to.unvalidate.state.success=Le contact a été invalidé avec succès -wao.ui.form.Contact.error.dataInputDateBeforeObservationEndDate=La date de saisie des données doit être postérieure à la date de fin d'observation -wao.ui.form.Contact.error.dataInputDateAfterToday=La date de saisie des données doit être antérieure à la date du jour -wao.ui.form.Contact.error.duplicatedMainObserverInSecondaryObservers=L'utilisateur référant ne doit pas se trouver aussi parmi les observateurs secondaires -wao.ui.form.Contact.error.invalidObservationBeginDate=La date de début de la marée doit correspondre à un mois valide (non vide) de la ligne -wao.ui.form.Contact.error.mismatchCompanyForObserver=L'observateur %s n'est pas membre de la société %s -wao.ui.form.Contact.error.missingComment=Il faut préciser un commentaire pour l'état '%s' -wao.ui.form.Contact.error.missingCommentAdmin=Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s' -wao.ui.form.Contact.error.missingContactStateMotif=Il faut préciser un motif de refus -wao.ui.form.Contact.error.missingDataInputDate=Il faut préciser une date de saisie des données en plus de la date de transmission de la restitution -wao.ui.form.Contact.error.missingDataReliability=Il faut préciser la qualité de la donnée avant de valider -wao.ui.form.Contact.error.missingMainObserver=Il faut au moins un observateur référant -wao.ui.form.Contact.error.missingObservationBeginDate=La date de début de marée est obligatoire pour l'état '%s' -wao.ui.form.Contact.error.missingObservationEndDate=La date de fin d'observation est obligatoire pour l'état '%s' -wao.ui.form.Contact.error.missingObservedDataControl=Il faut préciser une valeur pour le contrôle des données observées -wao.ui.form.Contact.error.missingObserver=Il ne peut y avoir aucun observateur pour l'état '%s' -wao.ui.form.Contact.error.missingRestitution=Il faut préciser une date de transmission de la restitution de la donnée avant de valider -wao.ui.form.Contact.error.observationEndDateAfterToday=La date de fin de la marée ne peut pas être postérieure à la date du jour -wao.ui.form.Contact.error.observationEndDateBeforeBeginDate=La date de fin d'observation ne peut pas être antérieure à celle du début -wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate=Il faut que la date de transmission de la restitution soit après la date de saisie des données -wao.ui.form.Contact.error.unwantedContactStateMotif=Il ne faut pas préciser de motif de refus wao.ui.disclaimer=Le site de « SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER » a fait l'objet d'une déclaration à la CNIL sous le numéro suivant \: 1414476 wao.ui.disclaimer.boats=Les données saisies dans cette page sont la propriété exclusive de la société. En dehors de la société, seul l'administrateur peut les consulter pour des questions de maintenance sur le site. L'administrateur est une personne de l'Ifremer. wao.ui.email=Adresse e-mail @@ -290,6 +270,26 @@ wao.ui.form.Company.error.nameMustBeUnique=Le nom de la société doit être unique wao.ui.form.Company.title.creation=Création d'une société wao.ui.form.Company.title.edition=Modification de la société %s +wao.ui.form.Contact.error.dataInputDateAfterToday=La date de saisie des données doit être antérieure à la date du jour +wao.ui.form.Contact.error.dataInputDateBeforeObservationEndDate=La date de saisie des données doit être postérieure à la date de fin d'observation +wao.ui.form.Contact.error.duplicatedMainObserverInSecondaryObservers=L'utilisateur référant ne doit pas se trouver aussi parmi les observateurs secondaires +wao.ui.form.Contact.error.invalidObservationBeginDate=La date de début de la marée doit correspondre à un mois valide (non vide) de la ligne +wao.ui.form.Contact.error.mismatchCompanyForObserver=L'observateur %s n'est pas membre de la société %s +wao.ui.form.Contact.error.missingComment=Il faut préciser un commentaire pour l'état '%s' +wao.ui.form.Contact.error.missingCommentAdmin=Il faut préciser dans le commentaire administrateur pourquoi la donnée est '%s' +wao.ui.form.Contact.error.missingContactStateMotif=Il faut préciser un motif de refus +wao.ui.form.Contact.error.missingDataInputDate=Il faut préciser une date de saisie des données en plus de la date de transmission de la restitution +wao.ui.form.Contact.error.missingDataReliability=Il faut préciser la qualité de la donnée avant de valider +wao.ui.form.Contact.error.missingMainObserver=Il faut au moins un observateur référant +wao.ui.form.Contact.error.missingObservationBeginDate=La date de début de marée est obligatoire pour l'état '%s' +wao.ui.form.Contact.error.missingObservationEndDate=La date de fin d'observation est obligatoire pour l'état '%s' +wao.ui.form.Contact.error.missingObservedDataControl=Il faut préciser une valeur pour le contrôle des données observées +wao.ui.form.Contact.error.missingObserver=Il ne peut y avoir aucun observateur pour l'état '%s' +wao.ui.form.Contact.error.missingRestitution=Il faut préciser une date de transmission de la restitution de la donnée avant de valider +wao.ui.form.Contact.error.observationEndDateAfterToday=La date de fin de la marée ne peut pas être postérieure à la date du jour +wao.ui.form.Contact.error.observationEndDateBeforeBeginDate=La date de fin d'observation ne peut pas être antérieure à celle du début +wao.ui.form.Contact.error.transmissionDateBeforeDataInputDate=Il faut que la date de transmission de la restitution soit après la date de saisie des données +wao.ui.form.Contact.error.unwantedContactStateMotif=Il ne faut pas préciser de motif de refus wao.ui.form.SampleRow.boatsDescription=Ce champs correspond aux immatriculations des navires qui sont éligibles pour cette ligne. Vous pouvez utiliser n'importe quel séparateur pour séparer les immatriculations (virgule, point, espace ou saut de ligne) wao.ui.form.SampleRow.error.codeMustBeUnique=Le code de la ligne doit être unique wao.ui.form.SampleRow.error.missingDcf5Codes=Il faut préciser au moins un code DCF5 @@ -322,6 +322,8 @@ wao.ui.form.authentication.title=Identification WAO wao.ui.form.boardingFrom=Sollicitations du navire depuis le wao.ui.form.boatName.placeholder=Nom du bateau +wao.ui.form.contact.boat.information=Informations sur le bateau +wao.ui.form.contact.sampleRow.information=Informations sur la ligne du plan d'échantillonage wao.ui.form.contactsFile=Fichier des contacts wao.ui.form.definePasswordManually=définir manuellement wao.ui.form.editComment=Commentaire sur la modification Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-04-08 17:20:53 UTC (rev 1869) @@ -526,8 +526,15 @@ <ul class="dropdown-menu"> <s:if test="authenticatedWaoUser.isAuthorizedToEditContact(#contact) || authenticatedWaoUser.isAuthorizedToDeleteContact(#contact)"> <li> - <s:url action="edit-contact!input" id="editContactUrl"> + <s:if test="authenticatedWaoUser.admin"> + <s:set name="focusAnchor">adminFocus</s:set> + </s:if> + <s:else> + <s:set name="focusAnchor">coordinatorFocus</s:set> + </s:else> + <s:url action="edit-contact!input" id="editContactUrl" anchor='%{focusAnchor}'> <s:param name="contactId" value="topiaId"/> + </s:url> <s:a href="%{editContactUrl}"> <i class="icon-edit"></i> <s:text name="wao.ui.action.editOrDeleteContact"/> Modified: trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-contact-input.jsp =================================================================== --- trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-contact-input.jsp 2014-04-08 16:28:52 UTC (rev 1868) +++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/edit-contact-input.jsp 2014-04-08 17:20:53 UTC (rev 1869) @@ -18,14 +18,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #L% --%> -<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> +<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@taglib uri="/struts-tags" prefix="s" %> <html> <head> <title> <s:if test="updateContactCommand.creation"> - <s:text name="wao.ui.sampleRow.creation" /> + <s:text name="wao.ui.sampleRow.creation"/> </s:if> <s:else> <s:text name="wao.ui.contact.edition"> @@ -35,7 +35,7 @@ </title> <script> - $(document).ready(function() { + $(document).ready(function () { }); @@ -45,7 +45,7 @@ <h1> <s:if test="updateContactCommand.creation"> - <s:text name="wao.ui.contact.creation" /> + <s:text name="wao.ui.contact.creation"/> </s:if> <s:else> <s:text name="wao.ui.contact.edition"> @@ -54,54 +54,181 @@ </s:else> </h1> -<s:if test="updateContactCommand.observationAlreadyStarted"> - <div class="alert"> - <s:text name="wao.ui.form.SampleRow.warn.observationAlreadyStarted" /> - </div> -</s:if> - <s:form> - <s:hidden name="sampleRowId" value="%{sampleRowId}" /> + <s:hidden name="contactId" value="%{contactId}"/> <fieldset> - <legend><s:text name="wao.ui.field.SampleRow.profession" /></legend> + <legend><s:text name="wao.ui.form.contact.boat.information"/></legend> + <s:textfield name="updateContactCommand.contact.boat.name" + label="%{getText('wao.ui.field.Boat.name')}" + readonly="true"/> + <s:textfield name="updateContactCommand.contact.boat.immatriculation" + value="%{'' + updateContactCommand.contact.boat.immatriculation}" + label="%{getText('wao.ui.field.Boat.immatriculation')}" + readonly="true"/> + <s:textfield name="updateContactCommand.contact.boat.districtCode" + label="%{getText('wao.ui.field.Boat.districtCode')}" + readonly="true"/> + <s:textfield name="updateContactCommand.contact.boat.boatLength" + label="%{getText('wao.ui.field.Boat.boatLength')}" + readonly="true"/> + <s:textfield name="updateContactCommand.contact.boat.buildYear" + value="%{'' + updateContactCommand.contact.boat.buildYear}" + label="%{getText('wao.ui.field.Boat.buildYear')}" + readonly="true"/> + </fieldset> + <fieldset> + + <legend><s:text name="wao.ui.form.contact.sampleRow.information"/></legend> + + <s:textfield name="updateContactCommand.contact.sampleRow.professionDescription" + label="%{getText('wao.ui.field.SampleRow.profession')}" + readonly="true"/> + <s:textfield name="updateContactCommand.contact.sampleRow.programName" + label="%{getText('wao.ui.field.SampleRow.programName')}" + readonly="true"/> + <s:textfield name="updateContactCommand.contact.sampleRow.periodBegin" + label="%{getText('wao.ui.field.SampleRow.periodBegin')}" + value="%{formatMonth(updateContactCommand.contact.sampleRow.periodBegin)}" + readonly="true" + cssClass="input-small"/> + <s:textfield name="updateContactCommand.contact.sampleRow.periodEnd" + label="%{getText('wao.ui.field.SampleRow.periodEnd')}" + value="%{formatMonth(updateContactCommand.contact.sampleRow.periodEnd)}" + readonly="true" + cssClass="input-small"/> </fieldset> - <s:if test=" ! updateContactCommand.creation"> + <s:textfield name="updateContactCommand.contact.creationDate" + label="%{getText('wao.ui.field.Contact.creationDate')}" + value="%{formatDateTime(updateContactCommand.contact.sampleRow.periodEnd)}" + readonly="true"/> - <fieldset> - <legend><s:text name="wao.ui.form.editComment" /></legend> + <%--TODO Editable if canEditObservers()--%> + <fieldset> + <legend><s:text name="wao.ui.misc.observers"/></legend> - <s:text name="wao.ui.form.editionAuthor" /> <s:property value="updateContactCommand.sampleRowLog.author.fullName" /> + <s:select name="updateContactCommand.contact.mainObserver" + value="%{updateContactCommand.contact.mainObserver.topiaId}" + label="%{getText('wao.ui.field.Contact.mainObserver')}" + list="observers" + emptyOption="true"/> - <s:textarea name="updateContactCommand.contact.comment" label="%{getText('wao.ui.form.editComment')}" requiredLabel="true" /> + <s:if test="displaySecondaryObservers"> + <s:select name="updateContactCommand.contact.secondaryObservers" + value="%{updateContactCommand.contact.secondaryObserversTopiaIds}" + label="%{getText('wao.ui.field.Contact.secondaryObservers')}" + list="observers" + multiple="true"/> + </s:if> - </fieldset> + </fieldset> - </s:if> + <%--TODO Editable if canEditObservationReport()--%> + <fieldset id="coordinatorFocus"> + <legend><s:text name="wao.ui.misc.observationReport"/></legend> + <s:textfield name="updateContactCommand.contact.observationBeginDate" + label="%{getText('wao.ui.field.Contact.beginDate')}" + value="%{formatDateTime(updateContactCommand.contact.observationBeginDate)}" + placeholder="%{getDateTimePlaceholder()}"/> + + <s:textfield name="updateContactCommand.contact.observationEndDate" + label="%{getText('wao.ui.field.Contact.endDate')}" + value="%{formatDateTime(updateContactCommand.contact.observationEndDate)}" + placeholder="%{getDateTimePlaceholder()}"/> + + <s:select name="updateContactCommand.contact.contactState" + label="%{getText('wao.ui.field.Contact.contactState')}" + requiredLabel="true" + list="contactStates" + emptyOption="true"/> + + <s:select name="updateContactCommand.contact.contactStateMotif" + value="%{updateContactCommand.contact.contactState.topiaId}" + label="%{getText('wao.ui.field.Contact.contactStateMotif')}" + list="contactStateMotives" + emptyOption="true"/> + + <s:checkbox name="updateContactCommand.contact.mammalsObservation" + label="%{getText('wao.ui.field.Contact.mammalsObservation')}"/> + + <s:checkbox name="updateContactCommand.contact.mammalsCapture" + label="%{getText('wao.ui.field.Contact.mammalsCapture')}"/> + <%--TODO onclick="updateMammalsInfoBox(this);" />--%> + + <%--<span style="color: red;">--%> + <%--<s:text name="wao.ui.page.ContactForm.mammalsInfo.disclaimer"/>--%> + <%--</span>--%> + + <s:textarea name="updateContactCommand.contact.mammalsInfo" + label="%{getText('wao.ui.field.Contact.mammalsInfo')}"/> + + <s:textfield name="updateContactCommand.contact.dataInputDate" + label="%{getText('wao.ui.field.Contact.dataInputDate')}" + value="%{formatDate(updateContactCommand.contact.dataInputDate)}" + placeholder="%{getDatePlaceholder()}"/> + + <%--TODO Editable for authenticatedWaoUser.coordinator--%> + <s:select name="updateContactCommand.contact.observedDataControl" + label="%{getText('wao.ui.field.Contact.observedDataControl')}" + list="observedDataControls" + emptyOption="true"/> + + <s:textfield name="updateContactCommand.contact.restitution" + label="%{getText('wao.ui.field.Contact.restitution')}" + value="%{formatDate(updateContactCommand.contact.restitution)}" + placeholder="%{getDatePlaceholder()}"/> + + <%--TODO Editable for authenticatedWaoUser.coordinatorOrObserver--%> + <s:textarea name="updateContactCommand.contact.comment" + label="%{getText('wao.ui.field.Contact.comment')}"/> + + <%--TODO Editable for authenticatedWaoUser.coordinator--%> + <s:textarea name="updateContactCommand.contact.commentCoordinator" + label="%{getText('wao.ui.field.Contact.commentCoordinator')}"/> + + </fieldset> + + <fieldset name="adminFocus"> + <legend><s:text name="wao.ui.form.programEvaluation"/></legend> + + <%--TODO Editable for canEditDataReliability()--%> + <s:if test="displayDataReliability"> + <s:select name="updateContactCommand.contact.dataReliability" + label="%{getText('wao.ui.field.Contact.dataReliability')}" + list="dataReliabilities" + emptyOption="true"/> + </s:if> + + <%--TODO Editable for authenticatedWaoUser.admin--%> + <s:textarea name="updateContactCommand.contact.commentAdmin" + label="%{getText('wao.ui.field.Contact.commentAdmin')}"/> + </fieldset> + <div class="form-actions"> - <s:url action="contacts" id="contactsUrl" /> + <s:url action="contacts" id="contactsUrl"/> <s:a href="%{contactsUrl}" cssClass="btn"> - <i class="icon-chevron-left"></i> <s:text name="wao.ui.action.cancel" /> + <i class="icon-chevron-left"></i> <s:text name="wao.ui.action.cancel"/> </s:a> - <s:if test=" authenticatedWaoUser.isAuthorizedToEditContact(updateContactCommand.contact)"> + <s:if test="authenticatedWaoUser.isAuthorizedToEditContact(updateContactCommand.contact)"> <s:submit type="button" cssClass="btn"> - <i class="icon-hdd"></i> <s:text name="wao.ui.action.save" /> + <i class="icon-hdd"></i> <s:text name="wao.ui.action.save"/> </s:submit> </s:if> - <s:if test=" ! updateContactCommand.creation && authenticatedWaoUser.isAuthorizedToDeleteContact(updateContactCommand.contact)"> + <s:if + test=" ! updateContactCommand.creation && authenticatedWaoUser.isAuthorizedToDeleteContact(updateContactCommand.contact)"> <s:url action="delete-contact" id="deleteContactUrl"> - <s:param name="contactId" value="contactId" /> + <s:param name="contactId" value="contactId"/> </s:url> <s:a href="%{deleteContactUrl}" cssClass="btn pull-right"> - <i class="icon-trash"></i> <s:text name="wao.ui.action.deleteContact" /> + <i class="icon-trash"></i> <s:text name="wao.ui.action.deleteContact"/> </s:a> </s:if> </div>
participants (1)
-
tchemit@users.forge.codelutin.com