diff --git a/.easya_info.json b/.easya_info.json
new file mode 100644
index 0000000..75597a4
--- /dev/null
+++ b/.easya_info.json
@@ -0,0 +1,4 @@
+{
+ "dlb_min_version": 3,
+ "php_min_version": 5
+}
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..70cee73
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,3 @@
+include:
+ - project: "opendsi/ci-templates"
+ file: "/dolibarr/module/main.yml"
\ No newline at end of file
diff --git a/ChangeLog.md b/ChangeLog.md
index 29cc8fd..80ffd87 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -2,34 +2,54 @@
## Unreleased
-## 1.8
+
+
+## release 1.9
+- FIX : définition d'une valeur par défaut si aucun titre trouvé pour éviter une erreur sur la fonction trim - *14/03/2025* - 1.9.3
+- FIX : Add compatibility with conf MAIN_CHECKBOX_LEFT_COLUMN - *20/01/2024* - 1.9.2
+- FIX : COMPAT 21 - *10/12/2024* - 1.9.1
+- FIX : Nettoyage et compatibilité Dolibarr 20 - *02/08/2024* - 1.9.1
+- NEW : DA025083 - Création d'un hook listInCSVFooterContext permettant à des modules externes d'utiliser ListInCSV. - *11/06/2024* - 1.9.0
+
+## release 1.8
+- FIX : DA024994 - Problème de sélection sur la liste des demandes de congés (car elle contient des valeurs dans des inputs) - *21/05/2024* - 1.8.4
+- FIX : object test - *25/03/2024* - 1.8.3
+- FIX : Compat agefodd session onglet participant sur tableau stagiaire *20/03/2024* - 1.8.2
+- FIX : Module logo Image *18/12/2023* - 1.8.1
- FIX : Compat v19 et php8.2 *07/10/2023* - 1.8.0
-## 1.7
+## release 1.7
+
- NEW : Ajout de la possibilité d'exporter la liste des prix clients *07/10/2023* - 1.7.0
-## 1.6
+## release 1.6
+
- NEW : Ajout icône listincsv sur objets référents produit et tiers *07/02/2023* - 1.6.0
-## 1.5
+## release 1.5
+
- NEW : Ajout de la class TechATM pour l'affichage de la page "A propos" *10/05/2022* 1.15.0
-## 1.4
+## release 1.4
+
- FIX: Family name - *02/06/2022* - 1.4.3
- FIX: Delete Trigger - *02/06/2022* - 1.4.2
- FIX: context detection - *15/03/2022* - 1.4.1
- NEW: Include Dolibarr V13 stock to date - *28/02/2022* - 1.4.0
-## 1.3
+## release 1.3
+
- FIX: Appel de `call_trigger()` sur un non-objet - *08/10/2021* - 1.3.1
- NEW: Déclenchement d'un trigger sur export d'un fichier avec listincsv - *19/05/2021* - 1.3.0
-## 1.2
+## release 1.2
+
- FIX: La liste ne s'exporte plus - *20/05/2021* - 1.2.4
- FIX: Les champs de type "case à cocher" ne sont pas exportés - *17/05/2021* - 1.2.3
- FIX: Suppression du dossier Box ainsi que tu fichier box *11/05/2021* - 1.2.2
- FIX: $_SESSION devient newToken() *11/05/2021* - 1.2.1
- NEW: Déplacement du code qui crée le boutton vert "CSV" pour utilisation dans des modules externes avec un contexte ajax *06/05/2021* - 1.2.0
-## 1.1
+## release 1.1
+
- NEW: Ajout d'une gestion de récupération des informations via un autre paramètre que l'action du formulaire le plus proche *06/05/2021* - 1.1.0
diff --git a/VERSION b/VERSION
new file mode 100644
index 0000000..77fee73
--- /dev/null
+++ b/VERSION
@@ -0,0 +1 @@
+1.9.3
diff --git a/backport/v19/core/class/commonhookactions.class.php b/backport/v19/core/class/commonhookactions.class.php
index c16585d..5496f33 100644
--- a/backport/v19/core/class/commonhookactions.class.php
+++ b/backport/v19/core/class/commonhookactions.class.php
@@ -25,9 +25,9 @@
*/
-if (file_exists(DOL_DOCUMENT_ROOT . '/htdocs/core/class/commonhookactions.class.php')){
+if (file_exists(DOL_DOCUMENT_ROOT . '/core/class/commonhookactions.class.php')){
- require_once DOL_DOCUMENT_ROOT . '/htdocs/core/class/commonhookactions.class.php';
+ require_once DOL_DOCUMENT_ROOT . '/core/class/commonhookactions.class.php';
/**
* Parent class of all other hook actions classes
*/
diff --git a/class/actions_listincsv.class.php b/class/actions_listincsv.class.php
index 2e288d6..339b84f 100644
--- a/class/actions_listincsv.class.php
+++ b/class/actions_listincsv.class.php
@@ -17,10 +17,10 @@
*/
/**
- * \file class/actions_listincsv.class.php
+ * \file class/actions_listincsv.class.php
* \ingroup listincsv
* \brief This file is an example hook overload class file
- * Put some comments here
+ * Put some comments here
*/
require_once __DIR__ . '/../backport/v19/core/class/commonhookactions.class.php';
@@ -29,194 +29,247 @@
*/
class ActionsListInCSV extends \listincsv\RetroCompatCommonHookActions
{
- /**
- * @var array Hook results. Propagated to $hookmanager->resArray for later reuse
- */
- public $results = array();
-
- /**
- * @var string String displayed by executeHook() immediately after return
- */
- public $resprints;
-
- /**
- * @var array Errors
- */
- public $errors = array();
-
- /**
- * Constructor
- */
- public function __construct()
- {
- }
-
- /**
- * doActions
- *
- * @param array() $parameters Hook metadatas (context, etc...)
- * @param CommonObject &$object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
- * @param string &$action Current action (if set). Generally create or edit or null
- * @param HookManager $hookmanager Hook manager propagated to allow calling another hook
- * @return int < 0 on error, 0 on success, 1 to replace standard code
- */
- function doActions($parameters, &$object, &$action, $hookmanager) {
-
- global $db, $user;
-
- if(GETPOSTISSET('exportlistincsv', 'bool') && method_exists($object, 'call_trigger')) {
- $object->call_trigger('LISTINCSV_EXPORT_FILE_'.strtoupper($object->element), $user);
- }
-
- }
-
- /**
- * printCommonFooter
- *
- * @param array() $parameters Hook metadatas (context, etc...)
- * @param CommonObject &$object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
- * @param string &$action Current action (if set). Generally create or edit or null
- * @param HookManager $hookmanager Hook manager propagated to allow calling another hook
- * @return int < 0 on error, 0 on success, 1 to replace standard code
- */
- function printCommonFooter($parameters, &$object, &$action, $hookmanager)
- {
- $TContext = explode(':', $parameters['context']);
- $context_list = preg_grep('/(.*list$)/i', $TContext);
+ /**
+ * @var array Hook results. Propagated to $hookmanager->resArray for later reuse
+ */
+ public $results = array();
+
+ /**
+ * @var string String displayed by executeHook() immediately after return
+ */
+ public $resprints;
+
+ /**
+ * @var array Errors
+ */
+ public $errors = array();
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ }
+
+ /**
+ * doActions
+ *
+ * @param array() $parameters Hook metadatas (context, etc...)
+ * @param CommonObject &$object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
+ * @param string &$action Current action (if set). Generally create or edit or null
+ * @param HookManager $hookmanager Hook manager propagated to allow calling another hook
+ * @return int < 0 on error, 0 on success, 1 to replace standard code
+ */
+ function doActions($parameters, &$object, &$action, $hookmanager) {
+
+ global $db, $user;
+
+ if (isset($object) && GETPOSTISSET('exportlistincsv', 'bool') && is_object($object) && method_exists($object, 'call_trigger')) {
+ $object->call_trigger('LISTINCSV_EXPORT_FILE_' . strtoupper($object->element), $user);
+ }
+ }
+
+ /**
+ * printCommonFooter
+ *
+ * @param array() $parameters Hook metadatas (context, etc...)
+ * @param CommonObject &$object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
+ * @param string &$action Current action (if set). Generally create or edit or null
+ * @param HookManager $hookmanager Hook manager propagated to allow calling another hook
+ * @return int < 0 on error, 0 on success, 1 to replace standard code
+ */
+ function printCommonFooter($parameters, &$object, &$action, $hookmanager) {
+ $TContext = explode(':', $parameters['context']);
+ $context_list = preg_grep('/(.*list$)/i', $TContext);
// Gestion des objets référents produits
- if(empty($context_list)) {
+ if (empty($context_list)) {
$context_list = preg_grep('/(productstats.*)/i', $TContext);
}
// Gestion des écrans objets référents tiers
- if(empty($context_list)) {
+ if (empty($context_list)) {
$context_list = preg_grep('/(consumptionthirdparty)/i', $TContext);
}
// Gestion des écrans objets référents tiers
- if(empty($context_list)) {
+ if (empty($context_list)) {
$context_list = preg_grep('/(stockatdate)/i', $TContext);
}
// Gestion des écrans objets référents tiers
- if(empty($context_list)) {
+ if (empty($context_list)) {
$context_list = preg_grep('/(thirdpartycustomerprice)/i', $TContext);
}
+ if (empty($context_list)) {
+ $context_list = preg_grep('/(agefoddsessionsubscribers)/i', $TContext);
+ }
+
+ // Permettre à d'autres modules externes d'utiliser listInCSV
+ $parameters['context_list'] = &$context_list;
+ $reshook = $hookmanager->executeHooks('listInCSVFooterContext', $parameters);
+ if ($reshook < 0) {
+ setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+ }
- if (!empty($context_list))
- {
- global $langs, $user, $conf;
- $langs->load('listincsv@listincsv');
-
- if(!empty($user->hasRight('listincsv', 'export'))) {
-
- require_once __DIR__ . './../lib/listincsv.lib.php';
-
- $pathtojs = dol_buildpath('/listincsv/js/listincsv.js.php',1);
-
- $download = getListInCSVDownloadLink();
-
- $socid = GETPOST('socid');
- if(empty($socid)) $socid = 0;
-
- // Inclusion d'un JS qui va permettre de télécharger la liste
- ?>
-
-
+
-
+ $table.find('th:last-child, td:last-child'+extraslectorfilter).each(function(index) {
+ $(this).find('dl').remove();
+ if ($(search).length > 0 && $(this).closest('table').hasClass('liste')) {
+ $(this).remove(); // Dans les listes ne contenant pas de recherche, il ne faut pas supprimer la dernière colonne
+ }
+ });
+
+ $table.find('th:first-child, td:first-child'+extraslectorfilter).each(function(index) {
+ $(this).find('dl').remove();
+ if ($(search).length > 0 && $(this).closest('table').hasClass('liste')) {
+ $(this).remove(); // Dans les listes ne contenant pas de recherche, il ne faut pas supprimer la dernière colonne
+ }
+ });
+
+
+ // Suppression de la ligne TOTAL en pied de tableau
+ if (varsFromPHP.conf['LISTINCSV_DONT_REMOVE_TOTAL']) {
+ $table.find('tr.liste_total').remove();
+ }
+
+ //Suppression des espaces pour les nombres
+ if (varsFromPHP.conf['LISTINCSV_DELETESPACEFROMNUMBER']) {
+ $table.find('td').each(function (e) {
+ let nbWthtSpace = $(this).text().replace(/ /g, '').replace(/\xa0/g, '');
+ let commaToPoint = nbWthtSpace.replace(',', '.');
+ if ($.isNumeric(commaToPoint)) $(this).html(nbWthtSpace);
+ });
+ }
+
+ // Remplacement des sous-table par leur valeur text(), notamment pour la ref dans les listes de propales, factures...
+ $table.find('td > table').map(function (i, cell) {
+ $cell = $(cell);
+ $cell.html($cell.text());
+ });
+
+ // Transformation de la table liste en CSV + téléchargement
+ var args = [$table, 'export.csv'];
+ exportTableToCSV.apply($self, args);
+
+ $('#dialogforpopup').dialog('close');
+ });
+ }
+ });
+ });
+ };
+
+ $(document).ready(() => listInCSVMain());
+
+
+ * Copyright (C) 2015 ATM Consulting
+ *
+ * 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 .
+ */
+
+/**
+ * \file class/actions_listincsv.class.php
+ * \ingroup listincsv
+ * \brief This file is an example hook overload class file
+ * Put some comments here
+ */
+require_once __DIR__ . '/../backport/v19/core/class/commonhookactions.class.php';
+
+/**
+ * Class ActionsListInCSV
+ */
+class ActionsListInCSV extends \listincsv\RetroCompatCommonHookActions
+{
+ /**
+ * @var array Hook results. Propagated to $hookmanager->resArray for later reuse
+ */
+ public $results = array();
+
+ /**
+ * @var string String displayed by executeHook() immediately after return
+ */
+ public $resprints;
+
+ /**
+ * @var array Errors
+ */
+ public $errors = array();
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ }
+
+ /**
+ * doActions
+ *
+ * @param array() $parameters Hook metadatas (context, etc...)
+ * @param CommonObject &$object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
+ * @param string &$action Current action (if set). Generally create or edit or null
+ * @param HookManager $hookmanager Hook manager propagated to allow calling another hook
+ * @return int < 0 on error, 0 on success, 1 to replace standard code
+ */
+ function doActions($parameters, &$object, &$action, $hookmanager) {
+
+ global $db, $user;
+
+ if (GETPOSTISSET('exportlistincsv', 'bool') && is_object($object) && method_exists($object, 'call_trigger')) {
+ $object->call_trigger('LISTINCSV_EXPORT_FILE_' . strtoupper($object->element), $user);
+ }
+ }
+
+ /**
+ * printCommonFooter
+ *
+ * @param array() $parameters Hook metadatas (context, etc...)
+ * @param CommonObject &$object The object to process (an invoice if you are in invoice module, a propale in propale's module, etc...)
+ * @param string &$action Current action (if set). Generally create or edit or null
+ * @param HookManager $hookmanager Hook manager propagated to allow calling another hook
+ * @return int < 0 on error, 0 on success, 1 to replace standard code
+ */
+ function printCommonFooter($parameters, &$object, &$action, $hookmanager) {
+ $TContext = explode(':', $parameters['context']);
+ $context_list = preg_grep('/(.*list$)/i', $TContext);
+
+ // Gestion des objets référents produits
+ if (empty($context_list)) {
+ $context_list = preg_grep('/(productstats.*)/i', $TContext);
+ }
+
+ // Gestion des écrans objets référents tiers
+ if (empty($context_list)) {
+ $context_list = preg_grep('/(consumptionthirdparty)/i', $TContext);
+ }
+
+ // Gestion des écrans objets référents tiers
+ if (empty($context_list)) {
+ $context_list = preg_grep('/(stockatdate)/i', $TContext);
+ }
+
+ // Gestion des écrans objets référents tiers
+ if (empty($context_list)) {
+ $context_list = preg_grep('/(thirdpartycustomerprice)/i', $TContext);
+ }
+ if (empty($context_list)) {
+ $context_list = preg_grep('/(agefoddsessionsubscribers)/i', $TContext);
+ }
+
+ // Permettre à d'autres modules externes d'utiliser listInCSV
+ $parameters['context_list'] = &$context_list;
+ $reshook = $hookmanager->executeHooks('listInCSVFooterContext', $parameters);
+ if ($reshook < 0) {
+ setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
+ }
+
+ if (! empty($context_list)) {
+ global $langs, $user, $conf;
+ $langs->load('listincsv@listincsv');
+
+ if (! empty($user->hasRight('listincsv', 'export'))) {
+
+ require_once __DIR__ . './../lib/listincsv.lib.php';
+
+ $pathtojs = dol_buildpath('/listincsv/js/listincsv.js.php', 1);
+
+ $download = getListInCSVDownloadLink();
+
+ $socid = GETPOST('socid');
+ if (empty($socid)) $socid = 0;
+
+ $varsForJs = array(
+ 'downloadButton' => $download,
+ 'TContexts' => explode(':', $parameters['context']),
+ 'socid' => $socid,
+ 'langs' => array(
+ 'FileGenerationInProgress' => $langs->trans('FileGenerationInProgress')
+ ),
+ 'conf' => array(
+ 'LISTINCSV_DONT_REMOVE_TOTAL' => ! empty(getDolGlobalInt('LISTINCSV_DONT_REMOVE_TOTAL')),
+ 'LISTINCSV_DELETESPACEFROMNUMBER' => ! empty(getDolGlobalInt('LISTINCSV_DELETESPACEFROMNUMBER'))
+ ),
+ );
+ // Inclusion d'un JS qui va permettre de télécharger la liste
+ ?>
+
+
+ description = "ListInCSV permet d'exporter en CSV une liste Dolibarr telle qu'elle apparaît à l'écran.";
// Possible values for version are: 'development', 'experimental', 'dolibarr' or version
- $this->version = '1.8.0';
+ $this->version = '1.9.3';
// Url to the file with your last numberversion of this module
require_once __DIR__ . '/../../class/techatm.class.php';
@@ -73,7 +73,7 @@ function __construct($db)
// Name of image file used for this module.
// If file is in theme/yourtheme/img directory under name object_pictovalue.png, use this->picto='pictovalue'
// If file is in module/img directory under name object_pictovalue.png, use this->picto='pictovalue@module'
- $this->picto='listincsv@listincsv';
+ $this->picto='modulelistincsv@listincsv';
// Defined all module parts (triggers, login, substitutions, menus, css, etc...)
// for default path (eg: /listincsv/core/xxxxx) (0=disable, 1=enable)
@@ -150,14 +150,14 @@ function __construct($db)
$this->tabs = array();
// Dictionaries
- if (! isset($conf->listincsv->enabled))
+ if (! isModEnabled("listincsv"))
{
$conf->listincsv=new stdClass();
$conf->listincsv->enabled=0;
}
$this->dictionaries=array();
/* Example:
- if (! isset($conf->listincsv->enabled)) $conf->listincsv->enabled=0; // This is to avoid warnings
+ if (! isModEnabled("listincsv")) $conf->listincsv->enabled=0; // This is to avoid warnings
$this->dictionaries=array(
'langs'=>'mylangfile@listincsv',
'tabname'=>array(MAIN_DB_PREFIX."table1",MAIN_DB_PREFIX."table2",MAIN_DB_PREFIX."table3"), // List of tables we want to see into dictonnary editor
@@ -168,7 +168,7 @@ function __construct($db)
'tabfieldvalue'=>array("code,label","code,label","code,label"), // List of fields (list of fields to edit a record)
'tabfieldinsert'=>array("code,label","code,label","code,label"), // List of fields (list of fields for insert)
'tabrowid'=>array("rowid","rowid","rowid"), // Name of columns with primary key (try to always name it 'rowid')
- 'tabcond'=>array($conf->listincsv->enabled,$conf->listincsv->enabled,$conf->listincsv->enabled) // Condition to show each dictionary
+ 'tabcond'=>array(isModEnabled("listincsv"),isModEnabled("listincsv"),isModEnabled("listincsv")) // Condition to show each dictionary
);
*/
@@ -187,13 +187,13 @@ function __construct($db)
// $this->rights[$r][0] = $this->numero . $r; // Permission id (must not be already used)
// $this->rights[$r][1] = 'Permision label'; // Permission label
// $this->rights[$r][3] = 1; // Permission by default for new user (0/1)
- // $this->rights[$r][4] = 'level1'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
- // $this->rights[$r][5] = 'level2'; // In php code, permission will be checked by test if ($user->rights->permkey->level1->level2)
+ // $this->rights[$r][4] = 'level1'; // In php code, permission will be checked by test if ($user->hasRight("permkey", "level1", "level2"))
+ // $this->rights[$r][5] = 'level2'; // In php code, permission will be checked by test if ($user->hasRight("permkey", "level1", "level2"))
// $r++;
$this->rights[$r][0] = $this->numero . $r; // Permission id (must not be already used)
$this->rights[$r][1] = $langs->trans('LISTINCSVExport'); // Permission label
$this->rights[$r][3] = 0; // Permission by default for new user (0/1)
- $this->rights[$r][4] = 'export'; // In php code, permission will be checked by test if ($user->rights->permkey->level1)
+ $this->rights[$r][4] = 'export'; // In php code, permission will be checked by test if ($user->hasRight("permkey", "level1"))
$r++;
@@ -212,8 +212,8 @@ function __construct($db)
// 'url'=>'/listincsv/pagetop.php',
// 'langs'=>'mylangfile@listincsv', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
// 'position'=>100,
- // 'enabled'=>'$conf->listincsv->enabled', // Define condition to show or hide menu entry. Use '$conf->listincsv->enabled' if entry must be visible if module is enabled.
- // 'perms'=>'1', // Use 'perms'=>'$user->rights->listincsv->level1->level2' if you want your menu with a permission rules
+ // 'enabled'=>'isModEnabled("listincsv")', // Define condition to show or hide menu entry. Use 'isModEnabled("listincsv")' if entry must be visible if module is enabled.
+ // 'perms'=>'1', // Use 'perms'=>'$user->hasRight("listincsv", "level1", "level2")' if you want your menu with a permission rules
// 'target'=>'',
// 'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
// $r++;
@@ -228,7 +228,7 @@ function __construct($db)
// 'langs'=>'mylangfile@listincsv', // Lang file to use (without .lang) by module. File must be in langs/code_CODE/ directory.
// 'position'=>100,
// 'enabled'=>'$conf->listincsv->enabled', // Define condition to show or hide menu entry. Use '$conf->listincsv->enabled' if entry must be visible if module is enabled. Use '$leftmenu==\'system\'' to show if leftmenu system is selected.
- // 'perms'=>'1', // Use 'perms'=>'$user->rights->listincsv->level1->level2' if you want your menu with a permission rules
+ // 'perms'=>'1', // Use 'perms'=>'$user->hasRight("listincsv", "level1", "level2")' if you want your menu with a permission rules
// 'target'=>'',
// 'user'=>2); // 0=Menu for internal users, 1=external users, 2=both
// $r++;
diff --git a/img/logo list in csv.svg b/img/logo list in csv.svg
new file mode 100644
index 0000000..5b1c0fa
--- /dev/null
+++ b/img/logo list in csv.svg
@@ -0,0 +1,90 @@
+
+
+
+
diff --git a/img/object_modulelistincsv.png b/img/object_modulelistincsv.png
new file mode 100644
index 0000000..2cfdf03
Binary files /dev/null and b/img/object_modulelistincsv.png differ
diff --git a/js/listincsv.js.php b/js/listincsv.js.php
index 62a6ec9..b28775e 100644
--- a/js/listincsv.js.php
+++ b/js/listincsv.js.php
@@ -19,8 +19,8 @@
*/
/**
- * \file htdocs/listincsv/js/lib_head.js.php
- * \brief File that include javascript functions (included if option use_javascript activated)
+ * \file /listincsv/js/listincsv.js.php
+ * \brief Functions for Dolibarr module ListInCSV
* JQuery (providing object $) and JQuery-UI (providing $datepicker) libraries must be loaded before this file.
*/
@@ -86,11 +86,14 @@ function exportTableToCSV($table, filename) {
let $colFirstChild = $col.children().first();
if ($col.find("span.linkobject:not(.hideobject)").length > 0) {
// Fix sur liste produit si conf MAIN_DIRECT_STATUS_UPDATE active
- text = $col.find("span.linkobject:not(.hideobject)").children().first().attr('title').trim();
+ text = ($col.find("span.linkobject:not(.hideobject)").children().first().attr('title') || "").trim();
} else if ($col.find('a').length > 0 && $col.find('a')[0].href.indexOf('mailto:') == 0) {
// Fix mails tronqués dans les listes par dol_trunc dans la fonction dol_print_email
link=$col.find('a')[0].href;
text = link.substr(7);
+ } else if ($col.find('input').length > 0 && $col.find('input').prop('type') === 'text') {
+ // Fix DA024994 liste avec des inputs
+ text=$col.find('input').val();
} else text = $col.text().trim();
// Spécifique pour "nettoyer" les données
@@ -115,6 +118,7 @@ function exportTableToCSV($table, filename) {
.split(tmpRowDelim).join(rowDelim)
.split(tmpColDelim).join(colDelim) + '"';
+
// Deliberate 'false', see comment below
if (false && window.navigator.msSaveBlob) {
diff --git a/langs/es_MX/listincsv.lang b/langs/es_MX/listincsv.lang
new file mode 100644
index 0000000..190313f
--- /dev/null
+++ b/langs/es_MX/listincsv.lang
@@ -0,0 +1,13 @@
+Module104856Name = Lista en CSV
+Module104856Desc = Agrega un ícono que le permite descargar listas en formato CSV
+
+ATMAbout = Este módulo fue desarrollado por ATM Consulting Puede encontrar la documentación en nuestro wiki
Encuentre nuestros otros módulos en Dolistore
+
+ListInCSVSetup = Configuración del módulo Lista en CSV
+ListInCSVAbout = Acerca del módulo Lista en CSV
+
+NoSetupAvailable = No es necesaria ninguna configuración. Ahora está disponible un ícono junto al título de cada lista que le permite descargarla en un archivo CSV.
+
+FileGenerationInProgress = Generación del archivo CSV en curso.
+LISTINCSVExport=Permitir exportación de listas en CSV
+LISTINCSV_DELETESPACEFROMNUMBER=Eliminar espacios contenidos en números