Subversion Repositories eFlore/Applications.coel

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1859 → Rev 1860

/trunk/src/org/tela_botanica/client/images/icones/Icones.java
80,6 → 80,9
@Resource("imprimer.png")
AbstractImagePrototype imprimer();
@Resource("importer_csv.png")
AbstractImagePrototype importerCsv();
@Resource("information.png")
AbstractImagePrototype information();
116,6 → 119,9
@Resource("supprimer.png")
AbstractImagePrototype supprimer();
@Resource("importer.png")
AbstractImagePrototype importer();
@Resource("table.png")
AbstractImagePrototype table();
/trunk/src/org/tela_botanica/client/images/icones/importer.png
Cannot display: file marked as a binary type.
svn:mime-type = image/png
/trunk/src/org/tela_botanica/client/images/icones/importer.png
New file
Property changes:
Added: svn:mime-type
+image/png
\ No newline at end of property
/trunk/src/org/tela_botanica/client/util/UtilDAO.java
96,4 → 96,8
return cheminUrl;
}
public static String getUrlService(String nomService) {
return baseUrl + nomService;
}
}
/trunk/src/org/tela_botanica/client/i18n/Constantes.properties
32,6 → 32,10
indicationAjouterStatistiqueAccueil = Ajouter une statistique à votre écran d'accueil
indicationEnregistrerAccueil = Enregistrer la position et les statistiques affichées pour les retrouver à chaque connexion
 
indicationImporterUnePubli = Importez des publications à l'aide d'un fichier csv
telechargerModeleImportPubli = Télécharger le modèle d'import de publications
importDePubli = Import de publications
 
# Identification
modeAnonyme = Mode anonyme
identificationTitre = Identification
54,7 → 58,7
<li>à chaque réutilisation ou distribution, doit apparaître clairement les conditions contractuelles de mise à disposition de cette création.</li>\
<li>chacune de ces conditions peut être levée s'il y a autorisation du titulaire des droits.</li>\
</ul>
licenceAccepter = Vous devez acceptez la licence d'utilisation de cette application pour pouvoir l'utiliser
licenceAccepter = Vous devez accepter la licence d'utilisation de cette application pour pouvoir l'utiliser
licenceJaccepte = J'accepte les conditions de la licence utilisateur
 
# Boutons
65,6 → 69,7
appliquer = Appliquer
annuler = Annuler
valider = Valider
importer = Importer
 
# Formulaire
champObligatoire = Ce champ est obligatoire.
91,7 → 96,7
selectionnerValeur = Veuillez sélectionner une valeur
selectionnerValeurOuNull = Veuillez sélectionner une valeur ou laisser le champ vide
messageUrlNonValide = L'URL saisie n'est pas valide !
identificationNecessaire = Veuillez vous identifiez pour accéder à cette fonctionnalité !
identificationNecessaire = Veuillez vous identifier pour accéder à cette fonctionnalité !
 
# Navigation
titreNavigation = Navigation
/trunk/src/org/tela_botanica/client/i18n/ErrorMessages.properties
24,4 → 24,9
erreurJrest = Une exception est survenue lors de l''envoi de la requête JRest
erreurServiceJrest = Erreur à l''exécution du service : {0}
typeChampMulti = Vous devez saisir un type
erreurJson = La réponse n''est pas un objet ou un tableau JSON et vaut :{0}
erreurJson = La réponse n''est pas un objet ou un tableau JSON et vaut :{0}
 
# Import de publication
retourSuccesImportPublication = {0} publication a été importée
retourSuccesImportPublicationPluriel = {0} publications ont été importées
retourEchecImportPublication = Une erreur est survenue durant l''upload, le serveur a répondu : {0}
/trunk/src/org/tela_botanica/client/i18n/Constantes.java
52,6 → 52,10
String indicationAjouterStatistiqueAccueil();
String indicationEnregistrerAccueil();
String indicationImporterUnePubli();
String telechargerModeleImportPubli();
String importDePubli();
// Boutons
String ajouter();
String modifier();
60,6 → 64,7
String appliquer();
String annuler();
String valider();
String importer();
// Formulaire
String champObligatoire();
/trunk/src/org/tela_botanica/client/i18n/ErrorMessages.java
31,4 → 31,8
String erreurRequeteTitre();
String typeChampMulti();
String erreurJson(String erreur);
String retourSuccesImportPublication(String nb);
String retourSuccesImportPublicationPluriel(String nb);
String retourEchecImportPublication(String erreur);
}
/trunk/src/org/tela_botanica/client/vues/BarrePaginationVue.java
395,6 → 395,11
public void selectionnerTaillePage(int nouvelleTaillePage) {
selecteurTaillePage.setRawValue("" + nouvelleTaillePage);
}
public void allerALaDernierePage() {
changerPageCourante(pageTotale);
changePage();
}
 
public void rafraichir(Object nouvelleDonnees) {
// si on reçoit un tableau de int
/trunk/src/org/tela_botanica/client/vues/publication/PublicationImportForm.java
New file
0,0 → 1,89
package org.tela_botanica.client.vues.publication;
 
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.publication.PublicationAsyncDao;
 
import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
import com.extjs.gxt.ui.client.widget.Html;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FileUpload;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
import com.google.gwt.user.client.ui.Hidden;
import com.google.gwt.user.client.ui.VerticalPanel;
 
public abstract class PublicationImportForm extends LayoutContainer {
 
private Mediateur mediateurCourant = null;
 
public PublicationImportForm(Mediateur mediateurCourant) {
this.mediateurCourant= mediateurCourant;
final FormPanel form = new FormPanel();
form.setAction(PublicationAsyncDao.getUrlImport());
 
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
VerticalPanel panel = new VerticalPanel();
form.setWidget(panel);
 
FileUpload upload = new FileUpload();
upload.setName("import_publication");
panel.add(upload);
Hidden typeUpload = new Hidden("type", "publication");
Hidden utilisateur = new Hidden("ce_utilisateur", ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId());
panel.add(typeUpload);
panel.add(utilisateur);
 
HorizontalPanel boutonsPanel = new HorizontalPanel();
boutonsPanel.add(new Button(Mediateur.i18nC.importer(), new ClickHandler() {
public void onClick(ClickEvent event) {
form.submit();
}
}));
boutonsPanel.add(new Button(Mediateur.i18nC.annuler(), new ClickHandler() {
public void onClick(ClickEvent event) {
surClicAnnuler();
}
}));
 
form.addSubmitHandler(new FormPanel.SubmitHandler() {
@Override
public void onSubmit(SubmitEvent event) {
surSoumissionFormulaire(event);
}
});
form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
@Override
public void onSubmitComplete(SubmitCompleteEvent event) {
surFormulaireEnvoye(event);
}
});
Html indicationImportForm = new Html("<div id=\"indication_import_csv\"><a target=\"_blank\" href=\"documents/import_publications.csv\">"+Mediateur.i18nC.telechargerModeleImportPubli()+"</a><br />");
add(indicationImportForm);
add(form);
add(boutonsPanel);
}
public abstract void surSoumissionFormulaire(SubmitEvent event);
public abstract void surFormulaireEnvoye(SubmitCompleteEvent event);
public abstract void surClicAnnuler();
}
/trunk/src/org/tela_botanica/client/vues/publication/PublicationListeVue.java
54,6 → 54,7
private Button ajouter;
private Button modifier;
private Button supprimer;
private Button importer;
private ChampFiltreRecherche champFiltreRecherche = null;
private BarrePaginationVue pagination = null;
99,6 → 100,7
});
supprimer.setToolTip(i18nC.indicationSupprimerUneFiche());
toolBar.add(supprimer);
setTopComponent(toolBar);
 
// Gestion de la grille
146,6 → 148,17
PublicationListe publicationListe = new PublicationListe();
champFiltreRecherche = new ChampFiltreRecherche(mediateurCourant, toolBar, publicationListe);
importer = new Button(i18nC.importer());
importer.setIcon(Images.ICONES.importerCsv());
importer.addSelectionListener(new SelectionListener<ButtonEvent>() {
public void componentSelected(ButtonEvent be) {
mediateur.clicImporterPublication(PublicationListeVue.this);
}
});
importer.setToolTip(i18nC.indicationImporterUnePubli());
toolBar.add(importer);
// Définition de la barre de pagination
pagination = new BarrePaginationVue(publicationListe, mediateur, champFiltreRecherche);
setBottomComponent(pagination);
252,4 → 265,8
layout(true);
}
public void afficherDernierePage() {
pagination.allerALaDernierePage();
}
}
/trunk/src/org/tela_botanica/client/vues/FenetreForm.java
17,4 → 17,14
setLayout(new FitLayout());
setOnEsc(false);
}
public void setTailleFenetre(double ratioParRapportAEcran) {
int hauteur = (int) Math.ceil(com.google.gwt.user.client.Window.getClientHeight() * ratioParRapportAEcran);
int largeur = (int) Math.ceil(com.google.gwt.user.client.Window.getClientWidth() * ratioParRapportAEcran);
setSize(largeur, hauteur);
}
public void setTailleFenetre(int hauteur, int largeur) {
setSize(largeur, hauteur);
}
}
/trunk/src/org/tela_botanica/client/modeles/publication/PublicationAsyncDao.java
16,10 → 16,13
import com.google.gwt.core.client.GWT;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Window;
 
public class PublicationAsyncDao {
private static final String SERVICE_NOM = "CoelPublication";
private static final String SERVICE_IMPORT = "CoelImport";
public static String tri = null;
private String utilisateurId = null;
30,9 → 33,7
vueARafraichir = vueARafraichirCourrante ;
utilisateurId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getUtilisateurId();
}
 
/**
* @param paginationProgressive : définit le mode de consultation de la base de données
* - True : la consultation des données est progressive, ce qui signifie que la liste est chargée (paginée) au
195,5 → 196,41
vueARafraichir.rafraichir(info);
}
}
public static boolean importEstUnSucces(JSONValue responseValue) {
boolean succesImportBool = false;
if(responseValue != null) {
JSONObject objetReponse = responseValue.isObject();
String succesImport = objetReponse.get("succes_import").isString().stringValue();
succesImportBool = succesImport.equals("1");
}
return succesImportBool;
}
public static String getErreursImport(JSONValue responseValue) {
// Normalement cette fonction est appelée par le médiateur uniquement
// si l'import à renvoyé un objet valide
JSONObject objetReponse = responseValue.isObject();
JSONArray erreurs = objetReponse.get("erreurs").isArray();
String erreurStr = "\n";
for (int i = 0; i < erreurs.size(); i++) {
erreurStr += "- "+erreurs.get(i).isString().stringValue()+"\n";
}
return erreurStr;
}
public static String getNbPublisImportees(JSONValue responseValue) {
// Normalement cette fonction est appelée par le médiateur uniquement
// si l'import à renvoyé un objet valide
JSONObject objetReponse = responseValue.isObject();
String nbPubliImportees = objetReponse.get("nb_elements_importes").isString().stringValue();
return nbPubliImportees;
}
public static String getUrlImport() {
return UtilDAO.getUrlService(SERVICE_IMPORT);
}
 
}
/trunk/src/org/tela_botanica/client/modeles/aDonnee.java
17,6 → 17,7
import com.extjs.gxt.ui.client.data.BaseModelData;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.Window;
 
/**
* @author jpm
/trunk/src/org/tela_botanica/client/Mediateur.java
7,6 → 7,7
import java.util.logging.Level;
import java.util.logging.Logger;
 
import org.mortbay.util.ajax.JSON;
import org.tela_botanica.client.composants.AideFenetre;
import org.tela_botanica.client.composants.IdentificationFenetre;
import org.tela_botanica.client.composants.InfoLogger;
36,7 → 37,9
import org.tela_botanica.client.modeles.personne.PersonneListe;
import org.tela_botanica.client.modeles.publication.Publication;
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneAsyncDao;
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
import org.tela_botanica.client.modeles.publication.PublicationAsyncDao;
import org.tela_botanica.client.modeles.publication.PublicationListe;
import org.tela_botanica.client.modeles.structure.Structure;
import org.tela_botanica.client.modeles.structure.StructureAPersonne;
67,6 → 70,8
import org.tela_botanica.client.vues.personne.PersonneForm;
import org.tela_botanica.client.vues.personne.PersonneVue;
import org.tela_botanica.client.vues.publication.PublicationForm;
import org.tela_botanica.client.vues.publication.PublicationImportForm;
import org.tela_botanica.client.vues.publication.PublicationListeVue;
import org.tela_botanica.client.vues.publication.PublicationVue;
import org.tela_botanica.client.vues.structure.StructureForm;
import org.tela_botanica.client.vues.structure.StructureVue;
88,13 → 93,22
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dev.jjs.ast.js.JsonArray;
import com.google.gwt.dev.json.JsonObject;
import com.google.gwt.dev.json.JsonValue;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.http.client.URL;
import com.google.gwt.i18n.client.Dictionary;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.FormPanel.SubmitCompleteEvent;
import com.google.gwt.user.client.ui.FormPanel.SubmitEvent;
 
public class Mediateur implements Rafraichissable, ValueChangeHandler<String> {
1386,6 → 1400,47
}
}
public void clicImporterPublication(final PublicationListeVue publiListeVue) {
final FenetreForm fenetre = new FenetreForm(Mediateur.i18nC.importDePubli());
fenetre.add(new PublicationImportForm(this) {
@Override
public void surSoumissionFormulaire(SubmitEvent event) {
afficherPopinChargement();
}
@Override
public void surFormulaireEnvoye(SubmitCompleteEvent event) {
JSONValue responseValue = JSONParser.parseStrict(event.getResults());
String message = "";
if(PublicationAsyncDao.importEstUnSucces(responseValue)) {
String nbPubliImportee = PublicationAsyncDao.getNbPublisImportees(responseValue);
int nbPublint = Integer.parseInt(nbPubliImportee);
message = (nbPublint == 1) ? i18nM.retourSuccesImportPublication(nbPubliImportee) :
i18nM.retourSuccesImportPublicationPluriel(nbPubliImportee);
fenetre.hide();
// Tri artificiel par id de publications pour voir apparaître ce qui vient d'être importé
PublicationAsyncDao.tri = "cpu_id_publication";
publiListeVue.afficherDernierePage();
} else {
message = i18nM.retourEchecImportPublication(PublicationAsyncDao.getErreursImport(responseValue));
}
Window.alert(message);
masquerPopinChargement();
}
@Override
public void surClicAnnuler() {
fenetre.hide();
}
});
fenetre.setTailleFenetre(75, 300);
fenetre.show();
}
//+----------------------------------------------------------------------------------------------------------------+
// GESTION de la relation PUBLICATION A PERSONNE
 
1730,5 → 1785,4
}
}
}
 
}