amélioration gestion champs nom
FossilOrigin-Name: 2e194af9739c1603c6471619fe3b9720beb014d8d11442d01a42fc722ca9e790
This commit is contained in:
parent
7d4d305cfa
commit
3e53f19453
@ -2,7 +2,7 @@ nom="Reçus fiscaux"
|
|||||||
description="Génération de reçus fiscaux pour les dons des membres"
|
description="Génération de reçus fiscaux pour les dons des membres"
|
||||||
auteur="jce"
|
auteur="jce"
|
||||||
url="https://git.roflcopter.fr/lesanges/recus-fiscaux-garradin"
|
url="https://git.roflcopter.fr/lesanges/recus-fiscaux-garradin"
|
||||||
version="0.6"
|
version="0.6.2"
|
||||||
menu=1
|
menu=1
|
||||||
config=1
|
config=1
|
||||||
min_version="1.1"
|
min_version="1.1"
|
||||||
|
@ -257,6 +257,53 @@ class Utils
|
|||||||
return $anneesFiscales;
|
return $anneesFiscales;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* récupérer dans la config du plugin les champs des membres
|
||||||
|
* utilisés pour le nom et le prénom ; ajouter/supprimer les
|
||||||
|
* modifications par rapport à la config garradin
|
||||||
|
* @return tableau des champs : clé = nom, valeur = { titre, position }
|
||||||
|
*/
|
||||||
|
public static function getChampsNom($config, $plugin) : array
|
||||||
|
{
|
||||||
|
// récupérer dans la config du plugin les champs mémorisés
|
||||||
|
// pour le nom et le prénom (le tableau est vide si pas mémorisé)
|
||||||
|
$champsNom = (array) $plugin->getConfig('champsNom');
|
||||||
|
|
||||||
|
// récupérer dans la config Garradin les champs des membres
|
||||||
|
// utilisés pour le nom et le préno
|
||||||
|
$champsGarradin = $config->get('champs_membres')->listAssocNames();
|
||||||
|
|
||||||
|
foreach ($champsGarradin as $name => $title)
|
||||||
|
{
|
||||||
|
if (stristr($title, 'nom'))
|
||||||
|
{
|
||||||
|
// retenir les champs dont le titre contient le term 'nom'
|
||||||
|
// est-il présent dans la config du plugin ?
|
||||||
|
if (! array_key_exists($name, $champsNom))
|
||||||
|
{
|
||||||
|
// absent => l'ajouter
|
||||||
|
$champ = new \stdClass();
|
||||||
|
$champ->titre = $title;
|
||||||
|
$champ->position = 0;
|
||||||
|
$champsNom[$name] = $champ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// opération symétrique : un champ mémorisé dans la config du
|
||||||
|
// plugin a-t-il disparu de la config garradin ?
|
||||||
|
foreach ($champsNom as $nom => $champ)
|
||||||
|
{
|
||||||
|
if (! array_key_exists($nom, $champsGarradin))
|
||||||
|
{
|
||||||
|
// absent => le supprimer
|
||||||
|
unset($champsNom[$nom]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// mettre à jour la config du plugin
|
||||||
|
$plugin->setConfig('champsNom', $champsNom);
|
||||||
|
return $champsNom;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enregistrer les fichiers dans une archive zip
|
* enregistrer les fichiers dans une archive zip
|
||||||
* @param $fileList : liste des fichiers à archiver
|
* @param $fileList : liste des fichiers à archiver
|
||||||
|
@ -85,13 +85,13 @@
|
|||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
{* les champs de nom *}
|
{* les champs de nom *}
|
||||||
<?php $nbChamps = count($nomChamps); ?>
|
<?php $nbChamps = count($champsNom); ?>
|
||||||
<dl class="config" {if $nbChamps == 1}hidden{/if}>
|
<dl class="config" {if $nbChamps == 1}hidden{/if}>
|
||||||
<dt><label>Champs nom et prénom</label></dt>
|
<dt><label>Champs nom et prénom</label></dt>
|
||||||
<p>Sélectionnez et classez le(s) champ(s) qui représente(nt) le nom et le prénom du donateur</p>
|
<p>Sélectionnez et classez le(s) champ(s) qui représente(nt) le nom et le prénom du donateur</p>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
{foreach from=$nomChamps key="nom" item="champ"}
|
{foreach from=$champsNom key="nom" item="champ"}
|
||||||
<div>
|
<div>
|
||||||
<input type="checkbox" name="champsNom[]" value={$nom} class="choix" {if $nbChamps == 1 || $champ.position != 0}checked{/if} >
|
<input type="checkbox" name="champsNom[]" value={$nom} class="choix" {if $nbChamps == 1 || $champ.position != 0}checked{/if} >
|
||||||
<label>{$champ.titre}</label>
|
<label>{$champ.titre}</label>
|
||||||
|
13
upgrade.php
13
upgrade.php
@ -2,12 +2,15 @@
|
|||||||
|
|
||||||
namespace Garradin;
|
namespace Garradin;
|
||||||
|
|
||||||
use Garradin\Entities\Files\File;
|
|
||||||
|
|
||||||
$db = DB::getInstance();
|
|
||||||
|
|
||||||
$old_version = $plugin->getInfos('version');
|
$old_version = $plugin->getInfos('version');
|
||||||
|
|
||||||
if (version_compare($old_version, '0.6.0', '<'))
|
if (version_compare($old_version, '0.6.2', '<'))
|
||||||
{
|
{
|
||||||
|
// changement de nom de la configuration des champs nom
|
||||||
|
$champsNom = $plugin->getConfig('nomChamps');
|
||||||
|
if (null !== $champsNom)
|
||||||
|
{
|
||||||
|
$plugin->setConfig('champsNom', $champsNom);
|
||||||
|
$plugin->setConfig('nomChamps', null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,29 +3,15 @@
|
|||||||
namespace Garradin;
|
namespace Garradin;
|
||||||
use Garradin\Files\Files;
|
use Garradin\Files\Files;
|
||||||
use Garradin\Entities\Files\File;
|
use Garradin\Entities\Files\File;
|
||||||
|
use Garradin\Plugin\RecusFiscaux\Utils;
|
||||||
|
|
||||||
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
|
$session->requireAccess($session::SECTION_CONFIG, $session::ACCESS_ADMIN);
|
||||||
$art_sel = f('articlesCGI') ? : [];
|
$art_sel = f('articlesCGI') ? : [];
|
||||||
$taux_sel = f('tauxReduction') ? : [];
|
$taux_sel = f('tauxReduction') ? : [];
|
||||||
$noms_sel = f('champsNom') ? : [];
|
$noms_sel = f('champsNom') ? : [];
|
||||||
|
|
||||||
$confNoms = $plugin->getConfig('nomChamps');
|
// récupérer les champs des noms
|
||||||
if (! isset($confNoms))
|
$champsNom = Utils::getChampsNom($config, $plugin);
|
||||||
{
|
|
||||||
// récupérer les champs des membres utilisés pour le nom et le prénom
|
|
||||||
$nomChamps = array();
|
|
||||||
foreach ($config->get('champs_membres')->listAssocNames() as $name => $title)
|
|
||||||
{
|
|
||||||
if (stristr($title, 'nom'))
|
|
||||||
{
|
|
||||||
$champ = new \stdClass();
|
|
||||||
$champ->titre = $title;
|
|
||||||
$champ->position = 0;
|
|
||||||
$nomChamps[$name] = $champ;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$plugin->setConfig('nomChamps', $nomChamps);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (f('save') && $form->check('recusfiscaux_config'))
|
if (f('save') && $form->check('recusfiscaux_config'))
|
||||||
{
|
{
|
||||||
@ -79,17 +65,16 @@ if (f('save') && $form->check('recusfiscaux_config'))
|
|||||||
$plugin->setConfig('ville_asso', trim(f('ville_asso')));
|
$plugin->setConfig('ville_asso', trim(f('ville_asso')));
|
||||||
|
|
||||||
// champs pour le nom et prénom
|
// champs pour le nom et prénom
|
||||||
$confNoms = (array)$plugin->getConfig('nomChamps');
|
foreach ($champsNom as $nom => $champ)
|
||||||
foreach ($confNoms as $nom => $champ)
|
|
||||||
{
|
{
|
||||||
$champ->position = 0;
|
$champ->position = 0;
|
||||||
}
|
}
|
||||||
$i = -count($noms_sel);
|
$i = -count($noms_sel);
|
||||||
foreach ($noms_sel as $nom)
|
foreach ($noms_sel as $nom)
|
||||||
{
|
{
|
||||||
$confNoms[$nom]->position = $i++;
|
$champsNom[$nom]->position = $i++;
|
||||||
}
|
}
|
||||||
$plugin->setConfig('nomChamps', $confNoms);
|
$plugin->setConfig('champsNom', $champsNom);
|
||||||
|
|
||||||
\Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok');
|
\Garradin\Utils::redirect(PLUGIN_URL . 'config.php?ok');
|
||||||
}
|
}
|
||||||
@ -100,8 +85,7 @@ if (f('save') && $form->check('recusfiscaux_config'))
|
|||||||
}
|
}
|
||||||
|
|
||||||
// trier les champs de nom pour l'affichage
|
// trier les champs de nom pour l'affichage
|
||||||
$nomChamps = (array) $plugin->getConfig('nomChamps');
|
uasort($champsNom, function ($a, $b)
|
||||||
uasort($nomChamps, function ($a, $b)
|
|
||||||
{
|
{
|
||||||
return $a->position - $b->position;
|
return $a->position - $b->position;
|
||||||
});
|
});
|
||||||
@ -111,6 +95,6 @@ $path = qg('path') ?: File::CONTEXT_CONFIG;
|
|||||||
$tpl->assign('path', $path);
|
$tpl->assign('path', $path);
|
||||||
$tpl->assign('default_signature', \Garradin\WWW_URL . "plugin/recusfiscaux/default_signature.png");
|
$tpl->assign('default_signature', \Garradin\WWW_URL . "plugin/recusfiscaux/default_signature.png");
|
||||||
$tpl->assign('plugin_config', $plugin->getConfig());
|
$tpl->assign('plugin_config', $plugin->getConfig());
|
||||||
$tpl->assign('nomChamps', $nomChamps);
|
$tpl->assign('champsNom', $champsNom);
|
||||||
$tpl->assign('plugin_css', ['style.css']);
|
$tpl->assign('plugin_css', ['style.css']);
|
||||||
$tpl->display(PLUGIN_ROOT . '/templates/config.tpl');
|
$tpl->display(PLUGIN_ROOT . '/templates/config.tpl');
|
||||||
|
@ -23,9 +23,9 @@ foreach ($plugin->getConfig('reduction') as $taux)
|
|||||||
|
|
||||||
// idem avec les champs nom/prénom
|
// idem avec les champs nom/prénom
|
||||||
$nbChamps = 0;
|
$nbChamps = 0;
|
||||||
if (null !== $plugin->getConfig('nomChamps'))
|
if (null !== $plugin->getConfig('champsNom'))
|
||||||
{
|
{
|
||||||
foreach ($plugin->getConfig('nomChamps') as $nom => $champ)
|
foreach ($plugin->getConfig('champsNom') as $nom => $champ)
|
||||||
{
|
{
|
||||||
if ($champ->position != 0) { ++$nbChamps; }
|
if ($champ->position != 0) { ++$nbChamps; }
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// champs pour le nom et prénom
|
// champs pour le nom et prénom
|
||||||
$confNoms = (array) $plugin->getConfig('nomChamps');
|
$confNoms = (array) $plugin->getConfig('champsNom');
|
||||||
uasort($confNoms, function ($a, $b)
|
uasort($confNoms, function ($a, $b)
|
||||||
{
|
{
|
||||||
return $a->position - $b->position;
|
return $a->position - $b->position;
|
||||||
@ -40,14 +40,14 @@ $_SESSION['tauxSelectionnes'] = $tauxSelectionnes;
|
|||||||
// obtenir les instances de tarifs correspondant à la sélection
|
// obtenir les instances de tarifs correspondant à la sélection
|
||||||
$lesTarifs = array();
|
$lesTarifs = array();
|
||||||
foreach (Utils::getTarifs($tarifsSelectionnes) as $ot) {
|
foreach (Utils::getTarifs($tarifsSelectionnes) as $ot) {
|
||||||
$lesTarifs[$ot->id] = Tarif::copier($ot);
|
$lesTarifs[$ot->id] = $ot;
|
||||||
}
|
}
|
||||||
$_SESSION['lesTarifs'] = $lesTarifs;
|
$_SESSION['lesTarifs'] = $lesTarifs;
|
||||||
|
|
||||||
// activités correspondants aux tarifs sélectionnés
|
// activités correspondants aux tarifs sélectionnés
|
||||||
$lesActivites = array();
|
$lesActivites = array();
|
||||||
foreach (Utils::getActivites($tarifsSelectionnes) as $activite) {
|
foreach (Utils::getActivites($tarifsSelectionnes) as $activite) {
|
||||||
$lesActivites[$activite->id] = Activite::copier($activite);
|
$lesActivites[$activite->id] = $activite;
|
||||||
}
|
}
|
||||||
$_SESSION['lesActivites'] = $lesActivites;
|
$_SESSION['lesActivites'] = $lesActivites;
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ if (! isset($_SESSION['annee_recu']) || $_SESSION['annee_recu'] == "") {
|
|||||||
$_SESSION['taux_reduction'] = $_POST['taux_reduction'];
|
$_SESSION['taux_reduction'] = $_POST['taux_reduction'];
|
||||||
|
|
||||||
// champs pour le nom et prénom
|
// champs pour le nom et prénom
|
||||||
$confNoms = (array) $plugin->getConfig('nomChamps');
|
$confNoms = (array) $plugin->getConfig('champsNom');
|
||||||
uasort($confNoms, function ($a, $b)
|
uasort($confNoms, function ($a, $b)
|
||||||
{
|
{
|
||||||
return $a->position - $b->position;
|
return $a->position - $b->position;
|
||||||
|
Loading…
Reference in New Issue
Block a user