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)); |
} |
}); |
} |
} |