Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 1829 → Rev 1830

/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.properties
136,6 → 136,8
confirmationValidationDetermination = Êtes vous sur de vouloir modifier votre observation pour le nom indiqué par cette proposition ?
depublierObs = Dépublier
confirmationDepublicationObs = Avez-vous contacté l'auteur de l'observation ? Êtes-vous vraiment certain de vouloir dépublier le travail de cette personne ?
indicationValiderProposition = Accepter cette proposition
indicationPropositionValidee = Proposition acceptée
 
#ecran comparaison
dateObservation = Date de la prise de vue
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.java
1580,4 → 1580,22
@DefaultStringValue("Avez-vous contacté l'auteur de l'observation ? Êtes-vous vraiment certain de vouloir dépublier le travail de cette personne ?")
@Key("confirmationDepublicationObs")
String confirmationDepublicationObs();
/**
* Translated "Accepter cette proposition".
*
* @return translated "Accepter cette proposition"
*/
@DefaultStringValue("Accepter cette proposition")
@Key("indicationValiderProposition")
String indicationValiderProposition();
/**
* Translated "Proposition acceptée".
*
* @return translated "Proposition acceptée"
*/
@DefaultStringValue("Proposition acceptée")
@Key("indicationPropositionValidee")
String indicationPropositionValidee();
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/validationPropositionDetermination/GestionnaireEvenementValidationPropositionDetermination.java
New file
0,0 → 1,6
package org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination;
import com.google.gwt.event.shared.EventHandler;
 
public interface GestionnaireEvenementValidationPropositionDetermination extends EventHandler {
public void onValidationPropositionDetermination(EvenementValidationPropositionDetermination event);
}
/trunk/src/org/tela_botanica/del/client/navigation/evenement/validationPropositionDetermination/EvenementValidationPropositionDetermination.java
New file
0,0 → 1,31
package org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination;
 
import org.tela_botanica.del.client.modeles.PropositionDetermination;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementValidationPropositionDetermination extends GwtEvent<GestionnaireEvenementValidationPropositionDetermination> {
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidationPropositionDetermination> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidationPropositionDetermination>();
private final PropositionDetermination propositionDetermination;
 
public EvenementValidationPropositionDetermination(PropositionDetermination propositionDetermination) {
this.propositionDetermination = propositionDetermination;
}
@Override
protected void dispatch(GestionnaireEvenementValidationPropositionDetermination handler) {
handler.onValidationPropositionDetermination(this);
}
 
@Override
public com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementValidationPropositionDetermination> getAssociatedType() {
return TYPE;
}
 
public PropositionDetermination getPropositionDetermination() {
return propositionDetermination;
}
 
 
}
/trunk/src/org/tela_botanica/del/client/utils/ModerationUtils.java
2,6 → 2,7
 
import java.util.Date;
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.Utilisateur;
 
29,4 → 30,12
return peutValider;
}
public static boolean utilisateurPeutDepublierObs(Utilisateur utilisateur) {
boolean etreAdmin = false;
if (utilisateur != null) {
etreAdmin = utilisateur.estIdentifie() && utilisateur.etreAdmin();
}
return etreAdmin;
}
}
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.ui.xml
33,7 → 33,6
<g:HTMLPanel styleName="{style.taxonProbable}">
<g:Label styleName="gauche" text="{constants.determinationPlusProbable}" />
<g:Label ui:field="nomTaxonProbable" styleName="gauche gras {style.nomTaxonProbable}"/>
<g:Button ui:field="boutonValidationTaxon" text="{constants.accepter}" styleName="droite bouton {style.boutonValiderTaxon}"/>
<g:HTML><br /></g:HTML>
</g:HTMLPanel>
<g:VerticalPanel ui:field="forum" />
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationPresenteur.java
37,6 → 37,8
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
import org.tela_botanica.del.client.navigation.evenement.depublierObs.EvenementDepublierObs;
import org.tela_botanica.del.client.navigation.evenement.depublierObs.GestionnaireEvenementDepublierObs;
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.EvenementValidationPropositionDetermination;
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.GestionnaireEvenementValidationPropositionDetermination;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
69,19 → 71,19
* Vue de l'interface de détermination
* */
public interface Vue extends IsWidget {
public Panel getForum();
public HasWidgets getForum();
 
public Panel getDetailImageObservation();
public HasWidgets getDetailImageObservation();
 
public Panel getFormulaireRechercheEflore();
public HasWidgets getFormulaireRechercheEflore();
 
public Button getBoutonAjoutProposition();
public HasClickHandlers getBoutonAjoutProposition();
 
public Button getBoutonAjoutCommentaire();
public HasClickHandlers getBoutonAjoutCommentaire();
 
public Button getBoutonAjoutPropositionBas();
public HasClickHandlers getBoutonAjoutPropositionBas();
 
public Button getBoutonAjoutCommentaireBas();
public HasClickHandlers getBoutonAjoutCommentaireBas();
public HasClickHandlers getBoutonDepublierObs();
 
99,14 → 101,10
public HasWidgets getZoneRss();
 
HasClickHandlers getBoutonValidationTaxon();
 
void cacherBoutonValidationTaxon();
 
void afficherBoutonValidationTaxon();
 
public void viderMetadonnees();
public void viderForum();
void afficherZoneActionsObs();
void cacherZoneActionsObs();
176,41 → 174,12
if (votesOrdonnes.size() > 0) {
nomTaxon = votesOrdonnes.get(0).getIntituleAssocie();
propositionPlusPopulaire = votesOrdonnes.get(0).getPropositionAssociee();
if (doitAfficherBoutonValidation(votesOrdonnes)) {
vue.afficherBoutonValidationTaxon();
} else {
vue.cacherBoutonValidationTaxon();
}
}
vue.afficherNomTaxonProbable(nomTaxon);
}
}
private boolean doitAfficherBoutonValidation(List<MoyenneVote> votesOrdonnes) {
boolean estPropositionRetenue = votesOrdonnes.get(0).getPropositionAssociee().estPropositionRetenue();
String numNomProp = votesOrdonnes.get(0).getPropositionAssociee().getNumNomenclatural();
String referentielProp = votesOrdonnes.get(0).getPropositionAssociee().getReferentiel();
boolean aUnNumNom = (numNomProp != null && !numNomProp.trim().equals("") && !numNomProp.trim().equals("0"));
boolean aUnReferentiel = (referentielProp != null && !referentielProp.trim().equals("") && !referentielProp.trim().equals("0"));
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
boolean estAuteurObservation = false;
if(utilisateur != null) {
estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(cache.getObservationCourante().getIdAuteur());
}
boolean peutValiderObservation = ModerationUtils.utilisateurPeutValiderObservation(CacheClient.getInstance().getUtilisateur(), observation);
return (peutValiderObservation || estAuteurObservation) && aUnReferentiel && aUnNumNom && !estPropositionRetenue;
}
 
public void gererEvenements() {
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
@Override
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
calculerEtAfficherVoteDeterminationPlusPopulaire();
};
});
BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
@Override
301,15 → 270,6
}
});
vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
validerPropositionPlusPopulaire();
}
}
});
vue.getBoutonDepublierObs().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
334,16 → 294,14
@Override
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
afficherZoneActionsObs();
//rechargerForum();
}
});
}
private void validerPropositionPlusPopulaire() {
PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
propositionPlusPopulaire.setValideePar(CacheClient.getInstance().getUtilisateur().getId());
propositionService.validerProposition(propositionPlusPopulaire, new ValidationPropositionCallback() {
BusEvenementiel.getInstance().addHandler(EvenementValidationPropositionDetermination.TYPE, new GestionnaireEvenementValidationPropositionDetermination() {
@Override
public void surRetour(String objetRetour) {
public void onValidationPropositionDetermination(EvenementValidationPropositionDetermination event) {
String observationId = URLUtils.getURLSpecialParameterValue();
observationService.getObservation(observationId, new ObservationsCallback() {
 
351,7 → 309,7
public void surRetour(ObservationServiceResultat objetRetour) {
vue.viderMetadonnees();
new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
calculerEtAfficherVoteDeterminationPlusPopulaire();
rechargerForum();
}
 
@Override
358,13 → 316,18
public void surErreur(String messageErreur) {
Window.alert(messageErreur);
}
});
});
}
});
}
private void rechargerForum() {
vue.viderForum();
new ForumPresenteur(new ForumVue()).go(vue.getForum());
}
private void depublierObs() {
if (avoirUtilisateurAdmin()) {
if (ModerationUtils.utilisateurPeutDepublierObs(CacheClient.getInstance().getUtilisateur())) {
GWT.log("depublierObs :"+observation.getId());
observationService.depublier(observation, new DepublicationObservationCallBack() {
380,19 → 343,10
}
private void afficherZoneActionsObs() {
if (avoirUtilisateurAdmin()) {
if (ModerationUtils.utilisateurPeutDepublierObs(CacheClient.getInstance().getUtilisateur())) {
vue.afficherZoneActionsObs();
} else {
vue.cacherZoneActionsObs();
}
}
private boolean avoirUtilisateurAdmin() {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
boolean etreAdmin = false;
if (utilisateur != null) {
etreAdmin = utilisateur.estIdentifie() && utilisateur.etreAdmin();
}
return etreAdmin;
}
}
/trunk/src/org/tela_botanica/del/client/vues/identiplante/plateformedetermination/IdentiplanteDeterminationVue.java
23,9 → 23,6
Label nomTaxonProbable, lienOuvrages, lienEflore, lienBonnier, lienCles;
@UiField
Button boutonValidationTaxon;
@UiField
Hyperlink lienRetour;
@UiField
110,21 → 107,6
public HasWidgets getZoneRss() {
return zoneRss;
}
@Override
public HasClickHandlers getBoutonValidationTaxon() {
return boutonValidationTaxon;
}
@Override
public void cacherBoutonValidationTaxon() {
boutonValidationTaxon.setVisible(false);
}
@Override
public void afficherBoutonValidationTaxon() {
boutonValidationTaxon.setVisible(true);
}
 
@Override
public void viderMetadonnees() {
140,5 → 122,10
public void afficherZoneActionsObs() {
zoneActionsObs.setVisible(true);
}
 
@Override
public void viderForum() {
forum.clear();
}
}
 
/trunk/src/org/tela_botanica/del/client/composants/metadonnees/MetadonneesPresenteur.java
150,9 → 150,7
public void go(HasWidgets composite) {
composite.add(vue.asWidget());
chargerMetaDonnees();
//if (this.avecLiens) {
gererEvenements();
//}
gererEvenements();
}
 
@Override
286,7 → 284,7
public void onClick(ClickEvent arg0) {
Config config = new Config();
String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel().substring(0,5) + "-nn-" + observation.getNumNomenclatural());
String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel()+"-nn-"+observation.getNumNomenclatural());
Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
}
});
/trunk/src/org/tela_botanica/del/client/composants/forum/ForumPresenteur.java
22,6 → 22,7
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
import org.tela_botanica.del.client.utils.ComparateurPropositionDetermination;
 
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
 
41,7 → 42,6
}
 
public void go(HasWidgets composite) {
 
chargerDeterminations();
composite.add(vue.asWidget());
 
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/ForumInterventionVue.ui.xml
6,31 → 6,34
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="forumIntervention.css" />
<g:FocusPanel ui:field="proposition" styleName="{style.proposition}">
<g:HTMLPanel>
<g:FocusPanel ui:field="conteneurLienSuppression" styleName="{style.suppression}">
<g:HTML ui:field="supprimer" />
</g:FocusPanel>
<g:HTMLPanel styleName="gauche nettoyage" ui:field="zoneDetermination">
<g:Label ui:field="nomTaxon" styleName="{style.nomtaxon}" />
</g:HTMLPanel>
<g:HTMLPanel styleName="droite" ui:field="zoneVoter">
<g:HorizontalPanel>
<g:Label text="Score " styleName="petit" />
<g:Label text="Voter" styleName="{style.labelVoter} petit" />
</g:HorizontalPanel>
<g:HTMLPanel ui:field="voter" styleName="{style.voter} gauche" />
<g:FocusPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}">
<g:HTML ui:field="nbVotesHtml" styleName="{style.infobulle}"/>
<g:HTMLPanel>
<g:Button ui:field="boutonValidationTaxon" text="&#x2714;" styleName="bouton boutonValiderTaxon" />
<g:HTMLPanel ui:field="conteneurIntermediaireProposition" styleName="conteneurIntermediaireProposition" >
<g:FocusPanel ui:field="conteneurLienSuppression" styleName="{style.suppression}">
<g:HTML ui:field="supprimer" />
</g:FocusPanel>
</g:HTMLPanel>
<g:Label text="Détermination proposée par " ui:field="labelDeterminationProposee" styleName="{style.determination} petit" />
<g:Label ui:field="nom" styleName="{style.nom} petit gauche" />
<g:Label text="le" styleName="{style.le} gauche petit"/>
<g:Label ui:field="date" styleName="{style.date} gauche petit"/>
<g:Label ui:field="commentaire" styleName="{style.commentaire}"/>
<g:Label text="Répondre" styleName="{style.repondre} labelLien" ui:field="repondre"/>
<g:HTML><br /></g:HTML>
<g:HTMLPanel ui:field="zoneEnfants"></g:HTMLPanel>
</g:HTMLPanel>
</g:FocusPanel>
<g:HTMLPanel styleName="gauche nettoyage" ui:field="zoneDetermination">
<g:Label ui:field="nomTaxon" styleName="{style.nomtaxon} nomTaxonProposition" />
</g:HTMLPanel>
<g:HTMLPanel styleName="droite" ui:field="zoneVoter">
<g:HorizontalPanel>
<g:Label text="Score " styleName="petit" />
<g:Label text="Voter" styleName="{style.labelVoter} petit" />
</g:HorizontalPanel>
<g:HTMLPanel ui:field="voter" styleName="{style.voter} gauche" />
<g:FocusPanel ui:field="conteneurPanneauVotes" styleName="{style.nombreVotes}">
<g:HTML ui:field="nbVotesHtml" styleName="{style.infobulle}"/>
</g:FocusPanel>
</g:HTMLPanel>
<g:Label text="Détermination proposée par " ui:field="labelDeterminationProposee" styleName="{style.determination} petit" />
<g:Label ui:field="nom" styleName="{style.nom} petit gauche" />
<g:Label text="le" styleName="{style.le} gauche petit"/>
<g:Label ui:field="date" styleName="{style.date} gauche petit"/>
<g:Label ui:field="commentaire" styleName="{style.commentaire}"/>
<g:Label text="Répondre" styleName="{style.repondre} labelLien" ui:field="repondre"/>
<g:HTML><br /></g:HTML>
<g:HTMLPanel ui:field="zoneEnfants"></g:HTMLPanel>
</g:HTMLPanel>
</g:HTMLPanel>
</g:FocusPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/ForumInterventionPresenteur.java
1,5 → 1,6
package org.tela_botanica.del.client.composants.forum.interventions;
 
 
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
17,20 → 18,27
import org.tela_botanica.del.client.modeles.InterventionForum;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.EvenementValidationPropositionDetermination;
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
import org.tela_botanica.del.client.services.rest.CommentaireService;
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
import org.tela_botanica.del.client.utils.ModerationUtils;
 
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
41,6 → 49,7
import com.google.gwt.event.dom.client.MouseOutHandler;
import com.google.gwt.event.dom.client.MouseOverEvent;
import com.google.gwt.event.dom.client.MouseOverHandler;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
66,6 → 75,9
void masquerLienVotes();
void setNbVotes(int votes);
public HasClickHandlers getZoneNbVotes();
public HasClickHandlers getBoutonValidationTaxon();
void cacherBoutonValidationTaxon();
void afficherBoutonValidationTaxon();
}
 
private Vue vue;
80,6 → 92,8
 
private int nbVotes;
private HandlerRegistration validationTaxonHandler;
public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
this.vue = vue;
this.interventionForum = interventionForum;
107,6 → 121,7
}
 
private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
final PropositionDetermination cetteProposition = propositionDetermination;
this.nbVotes = propositionDetermination.getVotesDeterminations().size();
BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
132,6 → 147,8
});
}
gererAffichageBoutonValidationTaxon(cetteProposition);
final String idContributeur = propositionDetermination.getContributeur().getId();
if (idContributeur != null && !idContributeur.equals("0")) {
vue.ajouterLienAuteur();
145,6 → 162,25
}
}
 
private void gererAffichageBoutonValidationTaxon(final PropositionDetermination cetteProposition) {
if (doitAfficherBoutonValidation(cetteProposition)) {
vue.afficherBoutonValidationTaxon();
if(validationTaxonHandler != null) {
validationTaxonHandler.removeHandler();
}
validationTaxonHandler = vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
if (Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
validerProposition(cetteProposition);
}
}
});
} else {
vue.cacherBoutonValidationTaxon();
}
}
 
private void ajouterCommentaire(Commentaire proposition) {
ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
240,6 → 276,15
}
}
});
BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
@Override
public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
if (interventionForum instanceof PropositionDetermination) {
gererAffichageBoutonValidationTaxon((PropositionDetermination)interventionForum);
}
}
});
}
private boolean peutSupprimerIntervention() {
267,4 → 312,33
});
}
}
private boolean doitAfficherBoutonValidation(PropositionDetermination propositionDetermination) {
boolean estPropositionRetenue = propositionDetermination.estPropositionRetenue();
String numNomProp = propositionDetermination.getNumNomenclatural();
String referentielProp = propositionDetermination.getReferentiel();
boolean aUnNumNom = (numNomProp != null && !numNomProp.trim().equals("") && !numNomProp.trim().equals("0"));
boolean aUnReferentiel = (referentielProp != null && !referentielProp.trim().equals("") && !referentielProp.trim().equals("0"));
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
boolean estAuteurObservation = false;
if(utilisateur != null) {
estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(CacheClient.getInstance().getObservationCourante().getIdAuteur());
}
boolean peutValiderObservation = ModerationUtils.utilisateurPeutValiderObservation(CacheClient.getInstance().getUtilisateur(), CacheClient.getInstance().getObservationCourante());
return (peutValiderObservation || estAuteurObservation) && aUnReferentiel && aUnNumNom && !estPropositionRetenue;
}
private void validerProposition(PropositionDetermination propositionDetermination) {
final PropositionDetermination cetteProposition = propositionDetermination;
PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
propositionDetermination.setValideePar(CacheClient.getInstance().getUtilisateur().getId());
propositionService.validerProposition(propositionDetermination, new ValidationPropositionCallback() {
@Override
public void surRetour(String objetRetour) {
BusEvenementiel.getInstance().fireEvent(new EvenementValidationPropositionDetermination(cetteProposition));
}
});
}
}
/trunk/src/org/tela_botanica/del/client/composants/forum/interventions/ForumInterventionVue.java
1,6 → 1,7
package org.tela_botanica.del.client.composants.forum.interventions;
 
import org.tela_botanica.del.client.composants.forum.interventions.ForumInterventionPresenteur.Vue;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
 
11,6 → 12,8
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
import com.google.gwt.user.client.ui.HTML;
36,8 → 39,10
Label nom, nomTaxon, date, commentaire, repondre, labelDeterminationProposee;
@UiField
HTMLPanel voter, zoneVoter, zoneDetermination, zoneEnfants;
HTMLPanel conteneurIntermediaireProposition, voter, zoneVoter, zoneDetermination, zoneEnfants;
@UiField
Button boutonValidationTaxon;
@UiField
FocusPanel conteneurLienSuppression;
83,6 → 88,14
if (determination.estFils()) {
proposition.setStyleName("enfant");
}
if(determination.estPropositionRetenue()) {
proposition.setTitle(I18n.getVocabulary().indicationPropositionValidee());
proposition.setStyleName("propositionRetenue");
}
 
boutonValidationTaxon.setTitle(I18n.getVocabulary().indicationValiderProposition());
conteneurIntermediaireProposition.addStyleName("propositionValidable");
}
 
@Override
100,6 → 113,8
if (nouveauCommentaire.estFils()) {
proposition.setStyleName("enfant");
}
 
boutonValidationTaxon.setVisible(false);
}
@Override
159,8 → 174,23
nbVotesHtml.setText(String.valueOf(votes));
}
@Override
public HasClickHandlers getZoneNbVotes() {
return this.conteneurPanneauVotes;
}
 
@Override
public HasClickHandlers getBoutonValidationTaxon() {
return this.boutonValidationTaxon;
}
@Override
public void cacherBoutonValidationTaxon() {
boutonValidationTaxon.setVisible(false);
}
@Override
public void afficherBoutonValidationTaxon() {
boutonValidationTaxon.setVisible(true);
}
}
/trunk/src/org/tela_botanica/del/test/composants/identification/FormulaireIdentificationPresenteurTest.java
19,7 → 19,7
@Before
public void setUp() throws Exception {
utilisateurDepart = new Utilisateur("gregoire@tela-botanica.org");
utilisateurDepart = new Utilisateur("0", "gregoire@tela-botanica.org");
utilisateurDepart.setIdentifie(true);
utilisateurDepart.setCourriel("gregoire@tela-botanica.org");
utilisateurDepart.setNom("Duché");
33,7 → 33,7
@Override
public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback) {
Utilisateur utilisateur = new Utilisateur(login);
Utilisateur utilisateur = new Utilisateur("0", login);
utilisateur.setCourriel(login);
utilisateur.setIdentifie(true);
CacheClient.getInstance().setUtilisateur(utilisateur);
/trunk/src/org/tela_botanica/del/test/MockDatasource.java
23,10 → 23,12
import org.tela_botanica.del.client.services.rest.ProtocoleService;
import org.tela_botanica.del.client.services.rest.VoteProtocoleService;
import org.tela_botanica.del.client.services.rest.async.AjoutVoteProtocoleCallback;
import org.tela_botanica.del.client.services.rest.async.DepublicationObservationCallBack;
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
import org.tela_botanica.del.client.services.rest.async.PropositionDeterminationCallBack;
import org.tela_botanica.del.client.services.rest.async.ProtocolesCallback;
import org.tela_botanica.del.client.services.rest.async.SuppressionImageCallback;
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
import org.tela_botanica.del.client.services.rest.async.VoteProtocoleCallback;
420,4 → 422,17
}
 
@Override
public void supprimer(Image image, SuppressionImageCallback callback) {
// TODO Auto-generated method stub
}
 
@Override
public void depublier(Observation observation,
DepublicationObservationCallBack callback) {
// TODO Auto-generated method stub
}
 
}