[Suiviobsmer-commits] r583 - in trunk: wao-business/src/main/java/fr/ifremer/wao/io/kml wao-business/src/main/resources/i18n wao-ui/src/main/java/fr/ifremer/wao/ui/components wao-ui/src/main/java/fr/ifremer/wao/ui/data wao-ui/src/main/java/fr/ifremer/wao/ui/pages wao-ui/src/main/java/fr/ifremer/wao/ui/services wao-ui/src/main/resources/fr/ifremer/wao/ui/components wao-ui/src/main/webapp
Author: fdesbois Date: 2010-06-30 15:34:55 +0000 (Wed, 30 Jun 2010) New Revision: 583 Log: Evo #2352 : Cartography for contacts : - Add import field for boatDistrict kml + rename Tapestry component and use format as parameter (KML or CSV) Added: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ImportFieldSet.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ImportFieldSet.tml Removed: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/CsvImport.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/kml/BoatDistrictKmlReader.java trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/ImportEngine.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java trunk/wao-ui/src/main/webapp/Administration.tml Modified: trunk/wao-business/src/main/java/fr/ifremer/wao/io/kml/BoatDistrictKmlReader.java =================================================================== --- trunk/wao-business/src/main/java/fr/ifremer/wao/io/kml/BoatDistrictKmlReader.java 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-business/src/main/java/fr/ifremer/wao/io/kml/BoatDistrictKmlReader.java 2010-06-30 15:34:55 UTC (rev 583) @@ -6,6 +6,8 @@ import java.io.InputStream; /** + * Kml reader for BoatDistrict. + * <p /> * Created: 30 juin 2010 * * @author fdesbois <fdesbois at codelutin.com> @@ -13,6 +15,12 @@ */ public interface BoatDistrictKmlReader { + /** + * Initialize the Reader with {@code stream} as input data (kml file). + * + * @param stream Stream data from Kml file + * @throws IOException for error on initialization + */ void init(InputStream stream) throws IOException; boolean hasNext(); Modified: trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties =================================================================== --- trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-business/src/main/resources/i18n/wao-business-fr_FR.properties 2010-06-30 15:34:55 UTC (rev 583) @@ -24,7 +24,7 @@ wao.error.serviceBoat.getShipOwnerNamesContains= wao.error.serviceBoat.importActivityCalendarCsv=Probl\u00E8me d'import du fichier CSV des calendriers d'activit\u00E9 wao.error.serviceBoat.importBoatCsv=Probl\u00E8me d'import du fichier CSV. V\u00E9rifiez l'en-t\u00EAte du fichier \: [ NAVS_COD,CARN_NOM,CARN_LONGUEUR_HT,CARN_ANNEE,QUARTIER_IMMA,PER_COD,PER_NOM,PER_PRENOM,NAVS_ACTIVE ]. Voir documentation pour plus de d\u00E9tails. -wao.error.serviceCartography.importBoatDistrictKml= +wao.error.serviceCartography.importBoatDistrictKml=Impossible d'importer les coordonn\u00E9es des quartiers des navires. V\u00E9rifiez la documentation pour le bon format du fichier Kml. wao.error.serviceContact.exportContactCsv=Impossible d'exporter les contacts wao.error.serviceContact.getContacts=Impossible de filtrer la liste des contacts wao.error.serviceContact.getNbContacts=Impossible de compter le nombre de contacts filtr\u00E9s Deleted: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java 2010-06-30 15:34:55 UTC (rev 583) @@ -1,156 +0,0 @@ -/* - * #%L - * Wao :: Web Interface - * %% - * Copyright (C) 2009 - 2010 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -package fr.ifremer.wao.ui.components; - -import fr.ifremer.wao.WaoBusinessException; -import fr.ifremer.wao.WaoException; -import fr.ifremer.wao.io.ImportResults; -import fr.ifremer.wao.ui.data.ErrorReport; -import fr.ifremer.wao.ui.data.ImportEngine; -import fr.ifremer.wao.ui.services.WaoManager; -import org.apache.tapestry5.BindingConstants; -import org.apache.tapestry5.ComponentResources; -import org.apache.tapestry5.annotations.Log; -import org.apache.tapestry5.annotations.Parameter; -import org.apache.tapestry5.annotations.Property; -import org.apache.tapestry5.ioc.Messages; -import org.apache.tapestry5.ioc.annotations.Inject; -import org.apache.tapestry5.upload.services.UploadedFile; -import org.slf4j.Logger; - -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.zip.GZIPInputStream; - -/** - * This component is used to import a {@code csvFile} using a form. The page - * using this component must provide a {@link ImportEngine} to execute the - * import when csv file is uploaded. An event "imported" will be triggered - * after success. The page can use an "onImported(ErrorReport report)" method - * to display errors and informations from import. - * - * Created: 18 juin 2010 - * - * @author fdesbois <fdesbois at codelutin.com> - * @version $Id$ - */ -public class CsvImport { - - /** Event triggered after form submission success */ - protected static final String EVENT_IMPORTED = "imported"; - - protected static final String MIMETYPE_GZIP = "application/x-gzip"; - - protected static final String MIMETYPE_CSV = "text/csv"; - - /** Label to display on fieldset and in submit button title */ - @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL) - @Property - private String label; - - /** engine to execute the import */ - @Parameter(required = true) - private ImportEngine engine; - - @Inject - private WaoManager manager; - - @Inject - private ComponentResources resources; - - @Inject - private Messages messages; - - @Inject - private Logger logger; - - @Property - private UploadedFile csvFile; - - /** - * ON_SUCCESS :: Callback method called when success event was triggered from - * importCsv form submission. The import will be executed using the engine - * in parameter. Errors will be reported in a {@link ErrorReport} object - * to be managed after import success. An event "imported" will be triggered" - * to manage those errors. - */ - @Log - void onSuccessFromImportCsv() { - final ErrorReport errorReport = new ErrorReport(); - - try { - // Execute import using the engine - ImportResults result = engine.execute(getStream()); - - if (result != null) { - // Add info on nbRows imported and refused - errorReport.addInfo(result.getNbRowsImported() + " lignes importées dont " + - result.getNbRowsImportedNew() + " nouvelles, " + - result.getNbRowsRefused() + " refusées."); - - // Add import errors - List<String> errors = result.getErrors(); - errorReport.addError(errors.toArray(new String[errors.size()])); - } - - } catch (WaoBusinessException eee) { - - // Add fatal errors - errorReport.addError(eee.getMessage()); - } catch (WaoException eee) { - - // Add unpredictable errors - String[] errors = - manager.getErrorMessages(eee, messages, logger); - errorReport.addError(errors); - - } catch (IOException eee) { - errorReport.addError("Erreur de format du fichier ! Seul les formats [csv, gz] sont autorisés."); - logger.error("Error on import csv file", eee); - } - - // Trigger event "imported" with ErroReport in argument - resources.triggerEvent(EVENT_IMPORTED, new Object[] {errorReport}, null); - } - - protected InputStream getStream() throws IOException { - InputStream input = csvFile.getStream(); - String contentType = csvFile.getContentType(); - - if (logger.isDebugEnabled()) { - logger.debug("Content type : " + csvFile.getContentType()); - } - - if (contentType.equals(MIMETYPE_GZIP)) { - if (logger.isDebugEnabled()) { - logger.debug("Gzip file"); - } - input = new GZIPInputStream(input); - - } -// else if (!contentType.equals(MIMETYPE_CSV)) { -// throw new IOException("unsupported format : " + contentType); -// } - return input; - } -} Copied: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ImportFieldSet.java (from rev 581, trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/CsvImport.java) =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ImportFieldSet.java (rev 0) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/components/ImportFieldSet.java 2010-06-30 15:34:55 UTC (rev 583) @@ -0,0 +1,175 @@ +/* + * #%L + * Wao :: Web Interface + * %% + * Copyright (C) 2009 - 2010 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ +package fr.ifremer.wao.ui.components; + +import fr.ifremer.wao.WaoBusinessException; +import fr.ifremer.wao.WaoException; +import fr.ifremer.wao.io.ImportResults; +import fr.ifremer.wao.ui.data.ErrorReport; +import fr.ifremer.wao.ui.data.ImportEngine; +import fr.ifremer.wao.ui.services.WaoManager; +import org.apache.tapestry5.BindingConstants; +import org.apache.tapestry5.ComponentResources; +import org.apache.tapestry5.annotations.Log; +import org.apache.tapestry5.annotations.Parameter; +import org.apache.tapestry5.annotations.Property; +import org.apache.tapestry5.ioc.Messages; +import org.apache.tapestry5.ioc.annotations.Inject; +import org.apache.tapestry5.upload.services.UploadedFile; +import org.slf4j.Logger; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.zip.GZIPInputStream; + +/** + * This component is used to import a {@code csvFile} using a form. The page + * using this component must provide a {@link ImportEngine} to execute the + * import when csv file is uploaded. An event "imported" will be triggered + * after success. The page can use an "onImported(ErrorReport report)" method + * to display errors and informations from import. + * + * Created: 18 juin 2010 + * + * @author fdesbois <fdesbois at codelutin.com> + * @version $Id$ + */ +public class ImportFieldSet { + + /** Event triggered after form submission success */ + protected static final String EVENT_IMPORTED = "imported"; + + protected static final String MIMETYPE_GZIP = "application/x-gzip"; + + protected static final String FORMAT_DEFAULT_VALUE = "CSV"; + +// protected static final String MIMETYPE_CSV = "text/csv"; + + /** Label to display on fieldset and in submit button title */ + @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL) + @Property + private String label; + + /** engine to execute the import */ + @Parameter(required = true) + private ImportEngine engine; + + @Parameter(value = FORMAT_DEFAULT_VALUE, defaultPrefix = BindingConstants.LITERAL) + @Property + private String format; + + @Inject + private WaoManager manager; + + @Inject + private ComponentResources resources; + + @Inject + private Messages messages; + + @Inject + private Logger logger; + + @Property + private UploadedFile file; + + /** + * ON_SUCCESS :: Callback method called when success event was triggered from + * importForm form submission. The import will be executed using the engine + * in parameter. Errors will be reported in a {@link ErrorReport} object + * to be managed after import success. An event "imported" will be triggered" + * to manage those errors. + */ + @Log + void onSuccessFromImportForm() { + final ErrorReport errorReport = new ErrorReport(); + + try { + // Execute import using the engine + ImportResults result = engine.execute(getStream()); + + if (result != null) { + // Add info on nbRows imported and refused + + StringBuilder info = new StringBuilder(). + append(result.getNbRowsImported()). + append(" lignes importées"); + + if (result.getNbRowsImportedNew() > 0) { + info.append(" dont "). + append(result.getNbRowsImportedNew()). + append(" nouvelles"); + } + + info.append(", "). + append(result.getNbRowsRefused()). + append(" refusées."); + + errorReport.addInfo(info.toString()); + + // Add import errors + List<String> errors = result.getErrors(); + errorReport.addError(errors.toArray(new String[errors.size()])); + } + + } catch (WaoBusinessException eee) { + + // Add fatal errors + errorReport.addError(eee.getMessage()); + } catch (WaoException eee) { + + // Add unpredictable errors + String[] errors = + manager.getErrorMessages(eee, messages, logger); + errorReport.addError(errors); + + } catch (IOException eee) { + errorReport.addError("Erreur de format du fichier ! Seul les formats [csv, gz, kml] sont autorisés."); + logger.error("Error on import file", eee); + } + + // Trigger event "imported" with ErroReport in argument + resources.triggerEvent(EVENT_IMPORTED, new Object[] {errorReport}, null); + } + + protected InputStream getStream() throws IOException { + InputStream input = file.getStream(); + String contentType = file.getContentType(); + + if (logger.isDebugEnabled()) { + logger.debug("Content type : " + file.getContentType()); + } + + if (contentType.equals(MIMETYPE_GZIP)) { + if (logger.isDebugEnabled()) { + logger.debug("Gzip file"); + } + input = new GZIPInputStream(input); + + } +// else if (!contentType.equals(MIMETYPE_CSV)) { +// throw new IOException("unsupported format : " + contentType); +// } + return input; + } +} Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/ImportEngine.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/ImportEngine.java 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/data/ImportEngine.java 2010-06-30 15:34:55 UTC (rev 583) @@ -24,15 +24,12 @@ import fr.ifremer.wao.WaoBusinessException; import fr.ifremer.wao.WaoException; import fr.ifremer.wao.io.ImportResults; -import fr.ifremer.wao.ui.components.CsvImport; -import fr.ifremer.wao.ui.components.Layout; +import fr.ifremer.wao.ui.components.ImportFieldSet; import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; /** - * This interface is used for {@link CsvImport} component to execute an import. + * This interface is used for {@link ImportFieldSet} component to execute an import. * The page need to implement the {@link #execute(InputStream)} method to use * the component. * @@ -45,7 +42,7 @@ /** * Excute an import from an {@code input} stream. This method was called - * in {@link CsvImport} when file are successfully uploaded. This method + * in {@link ImportFieldSet} when file are successfully uploaded. This method * to to return an {@link ImportResults} that contains stats and errors * from import. * Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/pages/Administration.java 2010-06-30 15:34:55 UTC (rev 583) @@ -37,6 +37,7 @@ import fr.ifremer.wao.entity.CompanyImpl; import fr.ifremer.wao.entity.WaoUser; import fr.ifremer.wao.service.ServiceBoat; +import fr.ifremer.wao.service.ServiceCartography; import fr.ifremer.wao.service.ServiceReferential; import fr.ifremer.wao.service.ServiceSampling; import fr.ifremer.wao.service.ServiceUser; @@ -98,7 +99,7 @@ @Inject private Logger logger; - + @Inject private WaoManager manager; @@ -109,6 +110,9 @@ private ServiceReferential serviceReferential; @Inject + private ServiceCartography serviceCartography; + + @Inject private TypeCoercer typeCoercer; @Inject @@ -262,6 +266,17 @@ return manager.isActivityCalendarImportRun(); } + public ImportEngine getBoatDistrictImportEngine() { + return new ImportEngine() { + + @Override + public ImportResults execute(InputStream input) + throws WaoException, WaoBusinessException { + return serviceCartography.importBoatDistrictKml(input); + } + }; + } + @Log void onImported(ErrorReport report) { for (String info : report.getInfos()) { Modified: trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java =================================================================== --- trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-ui/src/main/java/fr/ifremer/wao/ui/services/AppModule.java 2010-06-30 15:34:55 UTC (rev 583) @@ -29,6 +29,8 @@ import fr.ifremer.wao.bean.ConnectedUser; import fr.ifremer.wao.service.ServiceBoat; import fr.ifremer.wao.service.ServiceBoatImpl; +import fr.ifremer.wao.service.ServiceCartography; +import fr.ifremer.wao.service.ServiceCartographyImpl; import fr.ifremer.wao.service.ServiceContact; import fr.ifremer.wao.service.ServiceContactImpl; import fr.ifremer.wao.service.ServiceNews; @@ -156,6 +158,12 @@ return instance; } + public ServiceCartography buildServiceCartography(WaoManager manager) { + ServiceCartographyImpl instance = new ServiceCartographyImpl(); + instance.setContext(manager.getContext()); + return instance; + } + public static void contributeApplicationDefaults( MappedConfiguration<String, String> configuration) { // Contributions to ApplicationDefaults will override any contributions to Deleted: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/CsvImport.tml =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/CsvImport.tml 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/CsvImport.tml 2010-06-30 15:34:55 UTC (rev 583) @@ -1,38 +0,0 @@ -<!-- - #%L - Wao :: Web Interface - %% - Copyright (C) 2009 - 2010 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> - - <div class="so-import"> - <form t:type="form" t:id="importCsv" action="post"> - <fieldset> - <legend>Import ${label}</legend> - <t:errors /> - <label for="csvFile">Fichier CSV ${label}</label> : - <input t:type="upload" t:id="csvFile" t:validate="required" /> - <input t:type="submit" class="ico import" value="OK" title="Import ${label} (format CSV avec encodage UTF-8)" /> - <t:body /> - </fieldset> - </form> - </div> - -</html> \ No newline at end of file Copied: trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ImportFieldSet.tml (from rev 573, trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/CsvImport.tml) =================================================================== --- trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ImportFieldSet.tml (rev 0) +++ trunk/wao-ui/src/main/resources/fr/ifremer/wao/ui/components/ImportFieldSet.tml 2010-06-30 15:34:55 UTC (rev 583) @@ -0,0 +1,38 @@ +<!-- + #%L + Wao :: Web Interface + %% + Copyright (C) 2009 - 2010 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> + + <div class="so-import"> + <form t:type="form" t:id="importForm" action="post"> + <fieldset> + <legend>Import ${label}</legend> + <t:errors /> + <label for="file">Fichier ${format} ${label}</label> : + <input t:type="upload" t:id="file" t:validate="required" /> + <input t:type="submit" class="ico import" value="OK" title="Import ${label} (format ${format} avec encodage UTF-8)" /> + <t:body /> + </fieldset> + </form> + </div> + +</html> \ No newline at end of file Modified: trunk/wao-ui/src/main/webapp/Administration.tml =================================================================== --- trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-30 14:05:41 UTC (rev 582) +++ trunk/wao-ui/src/main/webapp/Administration.tml 2010-06-30 15:34:55 UTC (rev 583) @@ -32,18 +32,18 @@ xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter"> <t:if t:test="currentUser.admin"> - <t:csvImport t:label="des zones de pêche" t:engine="fishingZoneImportEngine" /> + <t:importFieldSet t:label="des zones de pêche" t:engine="fishingZoneImportEngine" /> - <t:csvImport t:label="du plan d'échantillonnage" t:engine="samplingPlanImportEngine" /> + <t:importFieldSet t:label="du plan d'échantillonnage" t:engine="samplingPlanImportEngine" /> - <t:csvImport t:label="des navires" t:engine="boatImportEngine" /> + <t:importFieldSet t:label="des navires" t:engine="boatImportEngine" /> <t:unless t:test="activityCalendarImportRun"> <div class="clearfix"> - <t:csvImport t:label="des calendriers d'activité" t:engine="activityCalendarImportEngine"> + <t:importFieldSet t:label="des calendriers d'activité" t:engine="activityCalendarImportEngine"> <t:logFile t:source="activityCalendarAccessLogFile" t:title="des accès utilisateurs aux calendriers d'activité" t:icon="context:img/text-access-32px.png" /> <t:logFile t:source="activityCalendarLogFile" t:title="de l'import des calendriers d'activité" t:icon="context:img/text-32px.png" /> - </t:csvImport> + </t:importFieldSet> </div> <p:else> <div class="fb-info"> @@ -52,6 +52,8 @@ </div> </p:else> </t:unless> + + <t:importFieldSet t:label="des coordonnées des quartiers des navires" t:engine="boatDistrictImportEngine" t:format="KML" /> </t:if> <t:if t:test="currentUser.admin">
participants (1)
-
fdesbois@users.labs.libre-entreprise.org