Subversion Repositories eFlore/Applications.del

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1151 → Rev 1152

/trunk/services/modules/0.1/motscles/AjouterMotCle.php
100,16 → 100,23
* */
private function insererMotCle($mot_cle) {
$mot_cle_normalise = $this->normaliserMotCle($mot_cle['mot_cle']);
$valeurs_a_inserer = '';
$mots_cles = $this->traiterMotsClesMultiples($mot_cle['mot_cle']);
$requete = 'INSERT INTO del_image_tag '.
'(ce_image, ce_utilisateur, tag, tag_normalise, date) '.
'VALUES ('.$this->bdd->proteger($mot_cle['image']).','.
foreach ($mots_cles as $mot_cle_a_inserer) {
$mot_cle_normalise = $this->normaliserMotCle($mot_cle_a_inserer);
$valeurs_a_inserer .= '('.$this->bdd->proteger($mot_cle['image']).','.
$this->bdd->proteger($mot_cle['auteur.id']).', '.
$this->bdd->proteger($mot_cle['mot_cle']).', '.
$this->bdd->proteger(trim($mot_cle_a_inserer)).', '.
$this->bdd->proteger($mot_cle_normalise).', '.
'NOW() '.
')';
'), ';
}
$valeurs_a_inserer = rtrim($valeurs_a_inserer,', ');
$requete = 'INSERT INTO del_image_tag '.
'(ce_image, ce_utilisateur, tag, tag_normalise, date) '.
'VALUES '.$valeurs_a_inserer;
 
$retour = $this->bdd->requeter($requete);
if ($retour == null) {
117,10 → 124,15
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
}
$retour = $this->bdd->recupererIdDernierAjout();
return $retour;
//TODO: voir si cela a vraiment du sens lors de l'ajout de plusieurs mots clés
return null;
}
function traiterMotsClesMultiples($valeur_mot_cles) {
$tab_mots_cles = explode(",", $valeur_mot_cles);
return $tab_mots_cles;
}
private function normaliserMotCle($mot_cle) {
return mb_strtolower($this->supprimerAccents($mot_cle));
}
/trunk/scripts/modules/adeterminer/AlerteMailADeterminer.php
46,8 → 46,10
"FROM del_observation do ".
"LEFT JOIN del_utilisateur du ".
"ON do.ce_utilisateur = du.id_utilisateur ".
'WHERE (do.mots_cles_texte LIKE "%aDeterminer%" OR nom_sel IS NULL OR nom_ret IS NULL) '.
"AND DATE_FORMAT( do.date_transmission, '%Y-%m-%d' ) = CURDATE() ".
'WHERE (do.mots_cles_texte LIKE "%aDeterminer%" OR nom_sel IS NULL OR nom_ret IS NULL) AND '.
'(do.date_transmission > DATE_SUB(CURDATE(), INTERVAL 1 DAY) OR '.
'do.date_creation > DATE_SUB(CURDATE(), INTERVAL 1 DAY) OR '.
'do.date_modification > DATE_SUB(CURDATE(), INTERVAL 1 DAY)) '.
"ORDER BY do.id_observation";
$obs = $this->conteneur->getBdd()->recupererTous($requete);
return $obs;
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImageVue.java
44,4 → 44,9
public HasKeyPressHandlers getSaisieMotsClesHasKeyPressHandlers() {
return saisieMotsCles;
}
 
@Override
public void focuserChampSaisie() {
saisieMotsCles.setFocus(true);
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireMotsClesImage.css
0,0 → 1,16
.espece {
font-size: 12px;
font-weight: bold;
color: white;
padding-left: 5px;
padding-right: 1px;
}
 
.aideSaisie p {
padding: 0px;
margin: 0px;
overflow: hidden;
text-overflow: ellipsis;
white-space: pre;
min-height: 13px;
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImageVue.ui.xml
6,9 → 6,9
<ui:with field='res' type='org.tela_botanica.del.client.resources.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
 
<ui:style src="FormulaireMotsClesImage.css" />
<ui:style src="FormulaireMotsClesImage.css" />
<g:HTMLPanel>
<g:HTML styleName="petit {style.aideSaisie}" text="{constants.aideSaisieMotCle}"></g:HTML>
<g:TextBox ui:field="saisieMotsCles"></g:TextBox>
<g:Button text="{constants.ok}" ui:field="valider"></g:Button>
</g:HTMLPanel>
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/formulairesaisiemotclesimages/FormulaireSaisieMotsClesImagePresenteur.java
24,7 → 24,8
public interface Vue extends IsWidget {
public HasClickHandlers getBoutonValider();
public HasText getSaisieMotsCles();
public HasKeyPressHandlers getSaisieMotsClesHasKeyPressHandlers();
public HasKeyPressHandlers getSaisieMotsClesHasKeyPressHandlers();
public void focuserChampSaisie();
}
 
private Vue vue;
58,7 → 59,8
}
private void validerSaisie() {
if(vue.getSaisieMotsCles().getText() != null) {
String texte = vue.getSaisieMotsCles().getText();
if(texte != null && !texte.isEmpty()) {
motsClesService.ajouterMotCleImage(idImage, vue.getSaisieMotsCles().getText(), new AjoutMotsClesImageCallBack() {
@Override
public void surRetour(Void objetRetour) {
72,4 → 74,8
public void viderChampSaisie() {
vue.getSaisieMotsCles().setText("");
}
 
public void focuserChampSaisie() {
vue.focuserChampSaisie();
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImage.css
0,0 → 1,20
.titrePanneau p {
padding: 0px;
margin: 0px;
overflow: hidden;
text-overflow: ellipsis;
white-space: pre;
min-height: 13px;
}
 
.titrePanneau {
font-size: 12px;
font-weight: bold;
color: white;
padding-left: 5px;
padding-right: 1px;
}
 
.panneauSaisieMotsCles {
margin-bottom: 3px;
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.ui.xml
8,11 → 8,12
 
<ui:style src="MotsClesImage.css" />
<g:HTMLPanel>
<g:HTML styleName="{style.titrePanneau}" text="{constants.motsCles}"></g:HTML>
<g:HTMLPanel>
<g:Label ui:field="motsCles"></g:Label>
<g:HTMLPanel styleName="{style.panneauSaisieMotsCles}" ui:field="saisieMotsCles"></g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel>
<g:HTMLPanel ui:field="saisieMotsCles"></g:HTMLPanel>
<g:HTML ui:field="motsCles"></g:HTML>
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImagePresenteur.java
1,4 → 1,5
package org.tela_botanica.del.client.composants.motsclesimages;
import java.util.Iterator;
import java.util.List;
 
import org.tela_botanica.del.client.cache.CacheClient;
63,7 → 64,12
@Override
public void onAjoutMotCleImage(EvenementAjoutMotCleImage event) {
if(idImage != null && idImage.equals(event.getIdImage())) {
motsCles.add(event.getMotCle());
List<String> motsClesAjoutes = event.getMotsCles();
for (Iterator iterator = motsClesAjoutes.iterator(); iterator
.hasNext();) {
String string = (String) iterator.next();
motsCles.add(string);
}
vue.afficherMotsCles(motsCles);
formulaireSaisieMotsClesPresenteur.viderChampSaisie();
}
70,4 → 76,8
}
});
}
 
public void focuserChampsSaisie() {
formulaireSaisieMotsClesPresenteur.focuserChampSaisie();
}
}
/trunk/src/org/tela_botanica/del/client/composants/motsclesimages/MotsClesImageVue.java
1,6 → 1,5
package org.tela_botanica.del.client.composants.motsclesimages;
 
import java.util.Iterator;
import java.util.List;
 
import com.google.gwt.core.client.GWT;
7,7 → 6,7
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
16,7 → 15,7
public class MotsClesImageVue extends Composite implements MotsClesImagePresenteur.Vue {
@UiField
public Label motsCles;
public HTML motsCles;
@UiField
public Panel saisieMotsCles;
35,11 → 34,14
@Override
public void afficherMotsCles(List<String> listeMotsCles) {
String chaine = "";
for (Iterator iterator = listeMotsCles.iterator(); iterator.hasNext();) {
String string = (String) iterator.next();
chaine += string+",";
Object[] tabMotsCles = listeMotsCles.toArray();
int nbMc = tabMotsCles.length;
for (int i = 0; i < tabMotsCles.length; i++) {
String string = (String)tabMotsCles[i];
chaine += "<span class=\"motCleImage\">"+string+"</span>";
chaine += (i != (nbMc - 1)) ? " " : "";
}
motsCles.setText(chaine);
motsCles.setHTML(chaine);
}
@Override
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.properties
69,6 → 69,9
introRechercheImages = Cette galerie vous permet de rechercher les illustrations des membres du réseau issues du Carnet en ligne... et de voter pour la qualité des images selon un protocole défini.
indicationActionClicImage = Cliquez sur l'image pour l'agrandir ou sur le bandeau contenant le nom pour accéder à la fiche de l'observation
voirMetadonnees = Voir la date, le lieu et l'auteur de l'image
voirMotsCles = Voir et modifier les mots clés associés à l'image
motsCles = Mots Clés
aideSaisieMotCle = Saisissez des mots clés pour décrire l'image
 
#ecran recherche observation
rechercherObservation = Identifier une plante
/trunk/src/org/tela_botanica/del/client/i18n/Vocabulary.java
2,7 → 2,7
 
/**
* Interface to represent the constants contained in resource bundle:
* '/opt/www/del/src/org/tela_botanica/del/client/i18n/Vocabulary.properties'.
* '/home/aurelien/web/del/src/org/tela_botanica/del/client/i18n/Vocabulary.properties'.
*/
public interface Vocabulary extends com.google.gwt.i18n.client.Constants {
52,6 → 52,15
String afficher();
 
/**
* Translated "Saisissez des mots clés pour décrire l'image".
*
* @return translated "Saisissez des mots clés pour décrire l'image"
*/
@DefaultStringValue("Saisissez des mots clés pour décrire l'image")
@Key("aideSaisieMotCle")
String aideSaisieMotCle();
 
/**
* Translated "Ajouter un commentaire".
*
* @return translated "Ajouter un commentaire"
664,6 → 673,15
String motsClefs();
 
/**
* Translated "Mots Clés".
*
* @return translated "Mots Clés"
*/
@DefaultStringValue("Mots Clés")
@Key("motsCles")
String motsCles();
 
/**
* Translated "Moyenne".
*
* @return translated "Moyenne"
1114,6 → 1132,15
String voirMetadonnees();
 
/**
* Translated "Voir et modifier les mots clés associés à l'image".
*
* @return translated "Voir et modifier les mots clés associés à l'image"
*/
@DefaultStringValue("Voir et modifier les mots clés associés à l'image")
@Key("voirMotsCles")
String voirMotsCles();
 
/**
* Translated "Vote modifié".
*
* @return translated "Vote modifié"
/trunk/src/org/tela_botanica/del/client/navigation/evenement/ajoutmotcleimage/EvenementAjoutMotCleImage.java
1,5 → 1,8
package org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage;
 
import java.util.ArrayList;
import java.util.List;
 
import com.google.gwt.event.shared.GwtEvent;
 
public class EvenementAjoutMotCleImage extends GwtEvent<GestionnaireEvenementAjoutMotCleImage> {
6,11 → 9,20
 
public static com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutMotCleImage> TYPE = new com.google.gwt.event.shared.GwtEvent.Type<GestionnaireEvenementAjoutMotCleImage>();
private String idImage;
private String motCle;
private List<String> motsCles;
 
public EvenementAjoutMotCleImage(String idImage, String motCle) {
this.idImage = idImage;
this.motCle = motCle;
if(motCle.indexOf(",") != -1) {
String[] motsClesTab = motCle.split(",");
motsCles = new ArrayList<String>(motsClesTab.length);
for (int i = 0; i < motsClesTab.length; i++) {
motsCles.add(motsClesTab[i]);
}
} else {
motsCles = new ArrayList<String>(1);
motsCles.add(motCle);
}
}
 
@Override
22,8 → 34,8
return idImage;
}
public String getMotCle() {
return motCle;
public List<String> getMotsCles() {
return motsCles;
}
 
@Override
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImagePresenteur.java
201,6 → 201,7
vue.afficherZoneMotsCles();
motsClesOuverts = true;
motsClesImagePresenteur.chargerMotsCles(image.getIdImage());
motsClesImagePresenteur.focuserChampsSaisie();
}
protected void cacherPanneauMotsCles() {
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/ImageVue.java
73,14 → 73,14
imagePrincipale.setTitle(I18n.getVocabulary().indicationActionClicImage());
imagePrincipale.setAltText(image.getObservation().getAuteur() + " - " + image.getObservation().getNomRetenu());
String styleZoneVote = "image_determinee";
String styleZonePlus = "image_determinee";
if(image.estADeterminer()) {
styleZoneVote = "image_non_determinee";
styleZonePlus = "image_non_determinee";
}
zoneVoter.addStyleName(styleZoneVote);
zonePlus.setTitle(I18n.getVocabulary().voirFicheIndividu());
zonePlus.addStyleName(styleZoneVote);
zonePlus.addStyleName(styleZonePlus);
voirMotsCles.setTitle(I18n.getVocabulary().voirMotsCles());
enSavoirPlus.setTitle(I18n.getVocabulary().voirMetadonnees());
}
 
/trunk/src/org/tela_botanica/del/client/vues/rechercheimages/resultats/images/image.css
28,7 → 28,7
background: #333;
opacity: 0.9;
color: white;
width: 250px;
width: 239px;
z-index: 1000;
margin-top: 30px;
}
45,7 → 45,7
 
.voirMotsCles {
position: absolute;
background: url(./img/loupe.png) no-repeat;
background: url(./img/tagger.png) no-repeat;
width: 30px;
height: 30px;
cursor: pointer;
/trunk/src/org/tela_botanica/del/client/services/CalculVoteDeterminationService.java
9,7 → 9,6
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
import com.google.gwt.user.client.Window;
 
 
public class CalculVoteDeterminationService {
/trunk/src/org/tela_botanica/del/test/services/CalculVoteDeterminationServiceTest.java
4,6 → 4,7
 
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
 
import org.junit.Test;
19,16 → 20,19
@Test
public void testCalculerVoteDetermination() {
 
Observation obs = new Observation();
VoteDetermination voteDetermination = new VoteDetermination();
voteDetermination.setVote(1);
voteDetermination.setDate(new Date());
voteDetermination.setContributeur("benjamin");
 
PropositionDetermination propositionDetermination = new PropositionDetermination(new Observation());
PropositionDetermination propositionDetermination = new PropositionDetermination(obs);
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setContributeur(new Contributeur("1", "contrib", "test", "contrib@test.com"));
propositionDetermination.setId("1");
propositionDetermination.ajouterVoteDetermination(voteDetermination);
obs.ajouterPropositionDetermination(propositionDetermination);
 
MoyenneVote moyenneVote = CalculVoteDeterminationService
.calculerVoteDetermination(propositionDetermination);
39,6 → 43,8
@Test
public void testCalculerVoteDeterminationPlusPopulaire() {
Observation obs = new Observation();
 
Contributeur cIdent1 = new Contributeur("1", "Peronnet", "Aurélien", "aurelien@tela-botanica.org");
Contributeur cIdent2 = new Contributeur("2", "Liens", "Benjamin", "benjamin@tela-botanica.org");
63,7 → 69,7
voteDetermination3.setContributeur(cAnon1.getId());
voteDetermination3.setAuteur(cAnon1);
 
PropositionDetermination propositionDetermination = new PropositionDetermination(new Observation());
PropositionDetermination propositionDetermination = new PropositionDetermination(obs);
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setContributeur(new Contributeur("1", "contrib", "test", "contrib@test.com"));
propositionDetermination.setId("1");
70,7 → 76,9
propositionDetermination.ajouterVoteDetermination(voteDetermination2);
propositionDetermination.ajouterVoteDetermination(voteDetermination3);
PropositionDetermination propositionDetermination2 = new PropositionDetermination(new Observation());
obs.ajouterPropositionDetermination(propositionDetermination);
PropositionDetermination propositionDetermination2 = new PropositionDetermination(obs);
propositionDetermination2.setEspece("Iris urticans");
propositionDetermination2.setContributeur(new Contributeur("1", "contrib", "test", "contrib@test.com"));
propositionDetermination2.setId("2");
78,6 → 86,8
propositionDetermination2.ajouterVoteDetermination(voteDetermination2);
propositionDetermination2.ajouterVoteDetermination(voteDetermination3);
obs.ajouterPropositionDetermination(propositionDetermination2);
List<PropositionDetermination> listePropositions = new ArrayList<PropositionDetermination>();
listePropositions.add(propositionDetermination2);
listePropositions.add(propositionDetermination);
84,6 → 94,12
 
List<MoyenneVote> listeMoyenneVote = CalculVoteDeterminationService
.calculerVoteDeterminationPlusPopulaire(listePropositions);
for (Iterator iterator = listeMoyenneVote.iterator(); iterator
.hasNext();) {
MoyenneVote moyenneVote = (MoyenneVote) iterator.next();
System.out.println(moyenneVote.getScore());
}
 
// le premier vote est sensé être celui qui possède le plus gros score
assertTrue(listeMoyenneVote.get(0).getIntituleAssocie().equals("Iris urticans"));
/trunk/war/del.css
470,7 → 470,7
}
 
.image_non_determinee {
background: #CF1313;
background: #CF1313 !important;
}
.suiteImages {
background:url(./img/suiteImages.png) 3px 0 no-repeat;
554,3 → 554,10
.invisible {
visibility:hidden;
}
 
.motCleImage {
border: 1px solid grey;
background-color : #555;
padding: 2px;
line-height: 25px;
}
/trunk/war/img/ajouter.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/trunk/war/img/tagger.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/trunk/war/img/tagger.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property