/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.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/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/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/vues/BarrePaginationVue.java |
---|
396,6 → 396,11 |
selecteurTaillePage.setRawValue("" + nouvelleTaillePage); |
} |
public void allerALaDernierePage() { |
changerPageCourante(pageTotale); |
changePage(); |
} |
public void rafraichir(Object nouvelleDonnees) { |
// si on reçoit un tableau de int |
if (nouvelleDonnees instanceof 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/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/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; |
31,8 → 34,6 |
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 |
196,4 → 197,40 |
} |
} |
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/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 |
} |
} |
} |
} |