Overview
SHA1:8c1152a27b84867bb7220995c6ae1d537b92bdfe
Date: 2018-11-08 11:24:46
User: bohwaz
Comment:Merge de trunk dans dev
Timelines: family | ancestors | descendants | both | dev
Downloads: Tarball | ZIP archive
Other Links: files | file ages | folders | manifest
Tags And Properties
Context
2018-11-08
11:26
[b773d9d766] Ajout d'une catégorie et compte pour les licences fédérales (user: bohwaz, tags: dev)
11:24
[8c1152a27b] Merge de trunk dans dev (user: bohwaz, tags: dev)
2018-11-07
10:56
[f8de9226ce] Correction typo (user: bohwaz, tags: trunk, stable)
2018-10-27
22:05
[52e2bcee25] Ne vider le cache statique que lors d'événements type mise à jour (user: bohwaz, tags: dev)
Changes

Modified debian/makedeb.sh from [6b1badb692] to [b70d32f694].

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
DEB_REV=${1-1} # .deb package build/revision number.
PACKAGE_DEBNAME=garradin
THISDIR=${PWD}

DEB_ARCH_NAME=all

SRCDIR=$(cd ..; pwd)/src
SRCDIR='/tmp/garradin-0.6.3'
test -e ${SRCDIR} || {
    echo "This script must be run from a BUILT copy of the source tree."
    exit 1
}

DEBROOT=$PWD/deb.tmp
test -d ${DEBROOT} && rm -fr ${DEBROOT}
................................................................................
    echo "Generating ${CONTROL}..."
    cat <<EOF > ${CONTROL}
Package: ${PACKAGE_DEBNAME}
Section: web
Priority: optional
Maintainer: Garradin <garradin@kd2.org>
Architecture: ${DEB_ARCH_NAME}
Depends: dash | bash, php5-cli (>=5.4), php5-sqlite
Version: ${PACKAGE_DEB_VERSION}
Suggests: www-browser
Homepage: http://dev.kd2.org/garradin/
Description: Garradin is a tool to manage non-profit organizations.
 It's only available in french.
Description-fr: Gestionnaire d'association en interface web ou CLI.
 Garradin est un gestionnaire d'association à but non lucratif.
 Il permet de gérer les membres, leur adhésion et leurs contributions financières.
 Les membres peuvent se connecter eux-même et modifier leurs informations







|







 







|

|







4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
..
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
DEB_REV=${1-1} # .deb package build/revision number.
PACKAGE_DEBNAME=garradin
THISDIR=${PWD}

DEB_ARCH_NAME=all

SRCDIR=$(cd ..; pwd)/src
SRCDIR='/tmp/garradin-0.9.0'
test -e ${SRCDIR} || {
    echo "This script must be run from a BUILT copy of the source tree."
    exit 1
}

DEBROOT=$PWD/deb.tmp
test -d ${DEBROOT} && rm -fr ${DEBROOT}
................................................................................
    echo "Generating ${CONTROL}..."
    cat <<EOF > ${CONTROL}
Package: ${PACKAGE_DEBNAME}
Section: web
Priority: optional
Maintainer: Garradin <garradin@kd2.org>
Architecture: ${DEB_ARCH_NAME}
Depends: dash | bash, php5-cli (>=5.6) | php-cli (>=7.0), php5-sqlite | php-sqlite3
Version: ${PACKAGE_DEB_VERSION}
Suggests: www-browser, php-gd
Homepage: http://dev.kd2.org/garradin/
Description: Garradin is a tool to manage non-profit organizations.
 It's only available in french.
Description-fr: Gestionnaire d'association en interface web ou CLI.
 Garradin est un gestionnaire d'association à but non lucratif.
 Il permet de gérer les membres, leur adhésion et leurs contributions financières.
 Les membres peuvent se connecter eux-même et modifier leurs informations

Modified src/Makefile from [c2bdd03499] to [78b3f7812f].


1
2
3
4
5
6
7

KD2_FILE := https://fossil.kd2.org/kd2fw/uv/KD2-5.6.zip

deps:
	$(eval TMP_KD2=$(shell mktemp -d))
	#cd ${TMP_KD2}

	wget ${KD2_FILE} -O ${TMP_KD2}/kd2.zip
>







1
2
3
4
5
6
7
8
.PHONY: dev-server release deps publish check-dependencies
KD2_FILE := https://fossil.kd2.org/kd2fw/uv/KD2-5.6.zip

deps:
	$(eval TMP_KD2=$(shell mktemp -d))
	#cd ${TMP_KD2}

	wget ${KD2_FILE} -O ${TMP_KD2}/kd2.zip

Modified src/VERSION from [f8bcdfe8a5] to [37225f3c32].

1
0.9.0-rc4
|
1
0.9.0

Modified src/include/lib/Garradin/Compta/Comptes.php from [88f96751dc] to [8786b38bca].

87
88
89
90
91
92
93























94
95
96
97
98
99
100
            {
                throw new UserException('Nombre de sous-comptes maximal atteint pour ce compte parent-ci.');
            }
        }
        else
        {
            $new_id = strtoupper($data['id']);























        }

        if (isset($data['position']))
        {
            $position = (int) $data['position'];
        }
        else







>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
            {
                throw new UserException('Nombre de sous-comptes maximal atteint pour ce compte parent-ci.');
            }
        }
        else
        {
            $new_id = strtoupper($data['id']);

            $parent = false;
            $id = $new_id;

            // Vérification que c'est bien le bon parent !
            // Sinon risque par exemple d'avoir parent = 5 et id = 512A !
            while (!$parent && strlen($id))
            {
            	// On enlève un caractère à la fin jusqu'à trouver un compte parent
            	$id = substr($id, 0, -1);
            	$parent = $db->firstColumn('SELECT id FROM compta_comptes WHERE id = ?;', $id);
            }

            if (!$parent || $parent != $data['parent'])
            {
            	throw new UserException('Le compte parent sélectionné est incorrect, par exemple pour créer un compte 512A il faut sélectionner 512 comme compte parent.');
            }
        }

        // Vérification que le compte n'existe pas déjà
        if ($db->test('compta_comptes', 'id = ?', $new_id))
        {
        	throw new UserException('Ce numéro de compte existe déjà dans le plan comptable : ' . $new_id);
        }

        if (isset($data['position']))
        {
            $position = (int) $data['position'];
        }
        else

Modified src/include/lib/Garradin/Membres.php from [c01bb47300] to [3d4bebf63e].

201
202
203
204
205
206
207
208
209
210
211
212
213




214
215
216
217
218
219
220

        if (!empty($data[$champ_id])
            && $db->firstColumn('SELECT 1 FROM membres WHERE '.$champ_id.' = ? COLLATE NOCASE AND id != ? LIMIT 1;', $data[$champ_id], (int)$id))
        {
            throw new UserException('La valeur du champ '.$champ_id.' est déjà utilisée par un autre membre, hors ce champ doit être unique à chaque membre.');
        }

        if (!empty($data['numero']))
        {
            if (!preg_match('/^\d+$/', $data['numero']))
            {
                throw new UserException('Le numéro de membre ne doit contenir que des chiffres.');
            }





            if ($db->test('membres', 'numero = ? AND id != ?', (int)$data['numero'], $id))
            {
                throw new UserException('Ce numéro est déjà attribué à un autre membre.');
            }
        }








|





>
>
>
>







201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

        if (!empty($data[$champ_id])
            && $db->firstColumn('SELECT 1 FROM membres WHERE '.$champ_id.' = ? COLLATE NOCASE AND id != ? LIMIT 1;', $data[$champ_id], (int)$id))
        {
            throw new UserException('La valeur du champ '.$champ_id.' est déjà utilisée par un autre membre, hors ce champ doit être unique à chaque membre.');
        }

        if (isset($data['numero']))
        {
            if (!preg_match('/^\d+$/', $data['numero']))
            {
                throw new UserException('Le numéro de membre ne doit contenir que des chiffres.');
            }
            elseif ($data['numero'] == 0)
            {
                throw new UserException('Le numéro de membre ne peut être vide.');
            }

            if ($db->test('membres', 'numero = ? AND id != ?', (int)$data['numero'], $id))
            {
                throw new UserException('Ce numéro est déjà attribué à un autre membre.');
            }
        }

Modified src/include/lib/Garradin/Membres/Cotisations.php from [a0fca4e3fd] to [07c3d844f4].

265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
		{
			case 'a_jour':
				break;
			case 'date':
				$order = 'cm.date';
				break;
			case 'identite':
				$order = 'transliterate_to_ascii('.$champ_id.') COLLATE NOCASE';
				break;
			default:
				$order = 'cm.id_membre';
				break;
		}

		$desc = $desc ? 'DESC' : 'ASC';







|







265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
		{
			case 'a_jour':
				break;
			case 'date':
				$order = 'cm.date';
				break;
			case 'identite':
				$order = 'transliterate_to_ascii(m.'.$champ_id.') COLLATE NOCASE';
				break;
			default:
				$order = 'cm.id_membre';
				break;
		}

		$desc = $desc ? 'DESC' : 'ASC';

Modified src/templates/admin/config/site.tpl from [04150e10c9] to [c6ae555354].

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
            </dd>
        </dl>
    </fieldset>

    <fieldset>
        <legend>Gérer le contenu du site public</legend>
        <p class="help">
            Le contenu affiché sur le site est celui présent dans le wiki, il suffit de sélectionner «&nbsp;Cette page est visible ur le site de l'association&nbsp;» à l'édition d'une page wiki. Il est également possible de <a href="{$admin_url}wiki/creer.php?public">créer une nouvelle page publique sur le wiki</a>.
        </p>
    </fieldset>

    <form method="post" action="{$self_url}">
    <fieldset class="templatesList">
        <legend>Squelettes du site</legend>








|







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
            </dd>
        </dl>
    </fieldset>

    <fieldset>
        <legend>Gérer le contenu du site public</legend>
        <p class="help">
            Le contenu affiché sur le site est celui présent dans le wiki, il suffit de sélectionner «&nbsp;Cette page est visible sur le site de l'association&nbsp;» à l'édition d'une page wiki. Il est également possible de <a href="{$admin_url}wiki/creer.php?public">créer une nouvelle page publique sur le wiki</a>.
        </p>
    </fieldset>

    <form method="post" action="{$self_url}">
    <fieldset class="templatesList">
        <legend>Squelettes du site</legend>

Modified src/www/admin/membres/import.php from [b710d208b2] to [06d138ee5f].

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
elseif (qg('export') == 'ods')
{
    $import->toODS();
    exit;
}

$champs = $config->get('champs_membres')->getAll();
$champs->date_inscription = (object) ['title' => 'Date inscription', 'type' => 'date'];

$csv_file = false;

if (f('csv_encoded'))
{
    $form->check('membres_import', [
        'csv_encoded'     => 'required|json',







<







17
18
19
20
21
22
23

24
25
26
27
28
29
30
elseif (qg('export') == 'ods')
{
    $import->toODS();
    exit;
}

$champs = $config->get('champs_membres')->getAll();


$csv_file = false;

if (f('csv_encoded'))
{
    $form->check('membres_import', [
        'csv_encoded'     => 'required|json',

Modified src/www/admin/static/admin.css from [c451b4a60c] to [2dd14f5041].

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
}
ol, ul {
    list-style: none;
}
caption, th {
    text-align: left;
}
article, aside, figure, section, header, footer { display: block; }

span { display: inline-block; }

h1  { font-size: 2em; }
h2  { font-size: 1.5em; }
h3  { font-size: 1.2em; }
h4  { font-size: 1em; }







|







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
}
ol, ul {
    list-style: none;
}
caption, th {
    text-align: left;
}
article, aside, figure, section, header, footer, main { display: block; }

span { display: inline-block; }

h1  { font-size: 2em; }
h2  { font-size: 1.5em; }
h3  { font-size: 1.2em; }
h4  { font-size: 1em; }