r1834 - in trunk: wao-services/src/main/java/fr/ifremer/wao/services 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-04 09:37:55 +0200 (Fri, 04 Apr 2014) New Revision: 1834 Url: http://forge.codelutin.com/projects/wao/repository/revisions/1834 Log: refs #4487 Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.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 Modified: trunk/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java =================================================================== --- trunk/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java 2014-04-04 07:37:10 UTC (rev 1833) +++ trunk/wao-services/src/main/java/fr/ifremer/wao/services/AuthenticatedWaoUser.java 2014-04-04 07:37:55 UTC (rev 1834) @@ -23,11 +23,14 @@ import com.google.common.base.Preconditions; import fr.ifremer.wao.entity.Company; +import fr.ifremer.wao.entity.Contact; +import fr.ifremer.wao.entity.ContactState; import fr.ifremer.wao.entity.News; import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.UserProfile; import fr.ifremer.wao.entity.UserRole; import fr.ifremer.wao.entity.WaoUser; +import org.apache.commons.lang3.BooleanUtils; import java.io.Serializable; @@ -212,4 +215,71 @@ return authorizedToViewBoatDetails; } + public boolean isAuthorizedToEditContact(Contact contact) { + boolean canEdit = getCanWrite() && + + // user is admin and no validation program + (!isReadOnly() && isAdmin() && contact.getValidationProgram() == null + + || // or + // user is coordinator or observer + isCoordinatorOrObserver() && contact.getValidationCompany() == null); + return canEdit; + } + + public boolean isAuthorizedToDeleteContact(Contact contact) { + boolean noValidation = contact.getValidationProgram() == null + && contact.getValidationCompany() == null; + return noValidation && getCanWrite(); + } + + /** + * Display validation actions. Evo #2063 : only coordinator can validate + * for a company. + * + * @return true if the validation actions can be displayed + */ + public boolean isAuthorizedToValidateContacts() { + return (isAdmin() || isCoordinator()) && !isReadOnly(); + } + + public boolean isAuthorizedToValidateContact(Contact contact) { + // Can't validate during edition of the contact row + switch (getUserRole()) { + case ADMIN: + return contact.getValidationProgram() == null && + BooleanUtils.isTrue(contact.getValidationCompany()); + // Evo #2063 : only coordinator can validate + case COORDINATOR: + boolean requiredDataAreFilled; + if (contact.getObsProgram() == ObsProgram.OBSMER) { + requiredDataAreFilled = contact.getRestitution() != null; + } else { + requiredDataAreFilled = contact.getDataInputDate() != null; + } + ContactState state = contact.getContactState(); + boolean observationDone = + state.equals(ContactState.OBSERVATION_DONE) && + requiredDataAreFilled; + return contact.getValidationCompany() == null && + (state.isUnfinishedState() || observationDone); + default: + return false; + } + } + + public boolean isAuthorizedToUnvalidateContact(Contact contact) { + switch (getUserRole()) { + case ADMIN: + return contact.getValidationProgram() != null; + // Evo #2063 : only coordinator can unvalidate + case COORDINATOR: + return contact.getValidationCompany() != null && + contact.getValidationProgram() == null; + default: + return false; + } + } + + } Modified: trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java =================================================================== --- trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java 2014-04-04 07:37:10 UTC (rev 1833) +++ trunk/wao-web/src/main/java/fr/ifremer/wao/web/action/obsmer/ContactsAction.java 2014-04-04 07:37:55 UTC (rev 1834) @@ -4,7 +4,6 @@ import fr.ifremer.wao.ContactsFilter; import fr.ifremer.wao.entity.Boat; import fr.ifremer.wao.entity.Contact; -import fr.ifremer.wao.entity.ContactState; import fr.ifremer.wao.entity.FishingZone; import fr.ifremer.wao.entity.ObsProgram; import fr.ifremer.wao.entity.Profession; @@ -14,7 +13,6 @@ import fr.ifremer.wao.services.service.ObsMerContactsService; import fr.ifremer.wao.services.service.PaginationBean; import fr.ifremer.wao.web.WaoJspActionSupport; -import org.apache.commons.lang3.BooleanUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateUtils; import org.nuiton.topia.persistence.pager.TopiaPagerBean; @@ -107,6 +105,11 @@ return placeholder; } + public boolean isFullView() { + boolean fullView = getAuthenticatedWaoUser().isAdmin() || getAuthenticatedWaoUser().isProfessional(); + return fullView; + } + public String getMammalsInfo(Contact contact) { return escapeForToolTip(contact.getMammalsInfo()); } @@ -177,79 +180,6 @@ return result; } - /** - * Display validation actions. Evo #2063 : only coordinator can validate - * for a company. - * - * @return true if the validation actions can be displayed - */ - //TODO Move this in AuthenticatedWaoUser - public boolean hasValidationActions() { - return (getAuthenticatedWaoUser().isAdmin() || getAuthenticatedWaoUser().isCoordinator()) && - !getAuthenticatedWaoUser().isReadOnly(); - } - - public boolean canEditSampleRow(Contact contact) { - boolean canEdit = getAuthenticatedWaoUser().getCanWrite() && - - // user is admin and no validation program - (!getAuthenticatedWaoUser().isReadOnly() && getAuthenticatedWaoUser().isAdmin() && contact.getValidationProgram() == null - - || // or - // user is coordinator or observer - getAuthenticatedWaoUser().isCoordinatorOrObserver() && contact.getValidationCompany() == null); - return canEdit; - } - - //TODO Move this in AuthenticatedWaoUser - public boolean canDeleteSampleRow(Contact contact) { - - boolean noValidation = contact.getValidationProgram() == null - && contact.getValidationCompany() == null; - return noValidation && getAuthenticatedWaoUser().getCanWrite(); - } - - //TODO Move this in AuthenticatedWaoUser - public boolean canValidateContact(Contact contact) { - // Can't validate during edition of the contact row - switch (getAuthenticatedWaoUser().getUserRole()) { - case ADMIN: - return contact.getValidationProgram() == null && - BooleanUtils.isTrue(contact.getValidationCompany()); - // Evo #2063 : only coordinator can validate - case COORDINATOR: - boolean requiredDataAreFilled; - if (contact.getObsProgram() == ObsProgram.OBSMER) { - requiredDataAreFilled = contact.getRestitution() != null; - } else { - requiredDataAreFilled = contact.getDataInputDate() != null; - } - ContactState state = contact.getContactState(); - boolean observationDone = - state.equals(ContactState.OBSERVATION_DONE) && - requiredDataAreFilled; - return contact.getValidationCompany() == null && - (state.isUnfinishedState() || observationDone); - default: - return false; - } - } - - //TODO Move this in AuthenticatedWaoUser - public boolean canUnvalidateContact(Contact contact) { - switch (getAuthenticatedWaoUser().getUserRole()) { - case ADMIN: - return contact.getValidationProgram() != null; - // Evo #2063 : only coordinator can unvalidate - case COORDINATOR: - return contact.getValidationCompany() != null && - contact.getValidationProgram() == null; - default: - return false; - } - } - - //FIXME public String getTooltipText(String input) { if (input != null) { 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-04 07:37:10 UTC (rev 1833) +++ trunk/wao-web/src/main/resources/i18n/wao-web_en_GB.properties 2014-04-04 07:37:55 UTC (rev 1834) @@ -114,10 +114,10 @@ wao.ui.contacts.createFromBoat=Create a new contact for this boat and this sample row wao.ui.contacts.createFromBoat.fail=Contact creation failed wao.ui.contacts.createFromBoat.warn=Warning \:this sample-row is out of date, are your sure you want to create a new contact ? -wao.ui.contacts.title=%s contacts trouvés wao.ui.contacts.division=Division wao.ui.contacts.observations=Accidental catches and observations wao.ui.contacts.observers=Observers +wao.ui.contacts.title=%s contacts found wao.ui.contacts.validation=Validation wao.ui.disclaimer=The website "SUIVI DU REALISE DU PLAN D'ECHANTILLONNAGE DES OBSERVATIONS A LA MER" is declared to the CNIL with the number \: 1414476 wao.ui.disclaimer.boats=Data your provide remains property of your company.Outside your company, only an administrator may access to your data for maintenance purpose. The administrator is someone from Ifremer. 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-04 07:37:10 UTC (rev 1833) +++ trunk/wao-web/src/main/resources/i18n/wao-web_fr_FR.properties 2014-04-04 07:37:55 UTC (rev 1834) @@ -117,8 +117,8 @@ wao.ui.contacts.division=Division wao.ui.contacts.observations=Observations et captures accidentelles wao.ui.contacts.observers=Observateurs +wao.ui.contacts.title=%s contacts trouvés wao.ui.contacts.validation=Validation -wao.ui.contacts.title=%s contacts trouvés 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 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-04 07:37:10 UTC (rev 1833) +++ trunk/wao-web/src/main/webapp/WEB-INF/content/obsmer/contacts.jsp 2014-04-04 07:37:55 UTC (rev 1834) @@ -35,6 +35,11 @@ var contactsFilterController = new FilterController(WAO.OBSMER_CONTACTS_FILTER_VALUES_JSON_URL, $('#contacts-filters-form')); contactsFilterController.init(); + $('#switch-compact-full-view').click(function () { + $('#switch-compact-full-view').toggleClass('full-view').toggleClass('compact-view'); + $('table.contacts-list').toggleClass('full-view').toggleClass('compact-view'); + }); + $('#reset-filters').click(function () { contactsFilterController.reset(); }); @@ -297,6 +302,17 @@ </s:if> </ul> </div> +<s:set var="fullView" value="%{fullView}"/> +<s:if test="authenticatedWaoUser.admin"> + <button type="button" id="switch-compact-full-view" class="btn <s:if test="fullView">full-view</s:if><s:else>compact-view</s:else>"> + <span class="only-in-compact-view"> + <i class="icon-resize-full"></i> <s:text name="wao.ui.action.switchToFullView"/> + </span> + <span class="only-in-full-view"> + <i class="icon-resize-small"></i> <s:text name="wao.ui.action.switchToCompactView"/> + </span> + </button> +</s:if> <table id="contacts-list" class="large-table contacts-list"> <thead> <tr> @@ -396,15 +412,19 @@ </s:else> </td> <td> - <s:if test="contactStateMotif != null"> + <s:if test="contactStateMotif"> <s:property value="contactStateMotif.name"/> </s:if> </td> <td> - <s:property value="%{formatDateTime(observationBeginDate)}"/> + <s:if test="observationBeginDate"> + <s:property value="%{formatDateTime(observationBeginDate)}"/> + </s:if> </td> <td> - <s:property value="%{formatDateTime(observationEndDate)}"/> + <s:if test="observationEndDate"> + <s:property value="%{formatDateTime(observationEndDate)}"/> + </s:if> </td> <td> <s:property value="nbObservants"/> @@ -433,7 +453,9 @@ </s:if> </td> <td> - <s:property value="%{formatDate(dataInputDate)}"/> + <s:if test="dataInputDate"> + <s:property value="%{formatDate(dataInputDate)}"/> + </s:if> </td> <td> <s:if test="observedDataControl"> @@ -481,7 +503,7 @@ <b class="caret"></b> </a> <ul class="dropdown-menu"> - <s:if test="canEditSampleRow(#contact)"> + <s:if test="authenticatedWaoUser.isAuthorizedToEditContact(#contact)"> <li> <s:url action="edit-contact!input" id="editContactUrl"> <s:param name="contactId" value="topiaId" /> @@ -491,7 +513,7 @@ </s:a> </li> </s:if> - <s:if test="canDeleteSampleRow(#contact)"> + <s:if test="authenticatedWaoUser.isAuthorizedToDeleteContact(#contact)"> <li> <s:url action="delete-contact!input" id="deleteContactUrl"> <s:param name="contactId" value="topiaId" /> @@ -501,8 +523,8 @@ </s:a> </li> </s:if> - <s:if test="hasValidationActions()"> - <s:if test="canValidateContact(contact)"> + <s:if test="authenticatedWaoUser.authorizedToValidateContacts"> + <s:if test="authenticatedWaoUser.isAuthorizedToValidateContact(#contact)"> <li> <s:url action="validate-contact!input" id="acceptContactUrl"> <s:param name="contactId" value="topiaId"/> @@ -522,10 +544,7 @@ </s:a> </li> </s:if> - <s:else> - <%--FIXME Display nothing?--%> - </s:else> - <s:if test="canUnvalidateContact(contact)"> + <s:if test="authenticatedWaoUser.isAuthorizedToUnvalidateContact(#contact)"> <li> <s:url action="validate-contact!input" id="unvalidateContactUrl"> <s:param name="contactId" value="topiaId" />
participants (1)
-
tchemit@users.forge.codelutin.com