Overview
SHA1:ea31527b4909cbd92942ed8cca2feef4c302c9ac
Date: 2019-03-21 16:07:08
User: bohwaz
Comment:Permettre de définir des couleurs et logo d'UI différents par défaut
Timelines: family | ancestors | descendants | both | trunk | stable
Downloads: Tarball | ZIP archive
Other Links: files | file ages | folders | manifest
Tags And Properties
Context
2019-03-26
09:48
[5a5a1a12ad] Corriger migration depuis version 0.7.6 (il faudrait versionner les schémas) (user: bohwaz, tags: trunk, stable)
2019-03-21
16:07
[ea31527b49] Permettre de définir des couleurs et logo d'UI différents par défaut (user: bohwaz, tags: trunk, stable)
2019-03-19
16:23
[93ceba6d80] Correction bug lors de la restauration d'une vieille sauvegarde qui nécessite une mise à jour (colonne menu_condition non existante dans la table plugins) (user: bohwaz, tags: trunk, stable)
Changes

Modified src/config.dist.php from [dcde08c471] to [1e67c15c59].

281
282
283
284
285
286
287





























 * soit à l'affichage de la page d'accueil (si nécessaire).
 *
 * Voir paramètre USE_CRON aussi
 *
 * Défaut : true
 */
const ENABLE_AUTOMATIC_BACKUPS = true;




































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
 * soit à l'affichage de la page d'accueil (si nécessaire).
 *
 * Voir paramètre USE_CRON aussi
 *
 * Défaut : true
 */
const ENABLE_AUTOMATIC_BACKUPS = true;


/**
 * Couleur primaire de l'interface admin par défaut
 * (peut être personnalisée dans la configuration)
 *
 * Défaut : #9c4f15
 */
//const ADMIN_COLOR1 = '#20787a';

/**
 * Couleur secondaire de l'interface admin
 * Défaut : #d98628
 */
//const ADMIN_COLOR2 = '#85b9ba';

/**
 * Image de fond par défaut de l'interface admin
 *
 * Cette URL doit être absolue (http://...) ou relative à l'admin (/admin/static...)
 *
 * Attention si l'image est sur un domaine différent vous devrez activer l'entête CORS:
 * Access-Control-Allow-Origin "*"
 *
 * sinon la personnalisation des couleurs ne fonctionnera pas
 *
 * Défaut : [ADMIN_URL]static/gdin_bg.png
 */
//const ADMIN_BACKGROUND_IMAGE = 'http://mon-asso.fr/fond_garradin.png';

Modified src/include/init.php from [35662ddf34] to [4aa2f5a796].

108
109
110
111
112
113
114


115
116
117
118
119
120
121
122
123
124
125




126
127
128
129
130
131
132
    'SMTP_USER'             => null,
    'SMTP_PASSWORD'         => null,
    'SMTP_PORT'             => 587,
    'SMTP_SECURITY'         => 'STARTTLS',
    'ADMIN_URL'             => WWW_URL . 'admin/',
    'NTP_SERVER'            => 'fr.pool.ntp.org',
    'ENABLE_AUTOMATIC_BACKUPS' => true,


];

foreach ($default_config as $const => $value)
{
    $const = sprintf('Garradin\\%s', $const);

    if (!defined($const))
    {
        define($const, $value);
    }
}





const WEBSITE = 'https://garradin.eu/';
const PLUGINS_URL = 'https://garradin.eu/plugins/list.json';
#const DEFAULT_REPORT_URL = 'http://henga.test/report/?p=ABCD';
const DEFAULT_REPORT_URL = null;

// PHP devrait être assez intelligent pour chopper la TZ système mais nan







>
>











>
>
>
>







108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
    'SMTP_USER'             => null,
    'SMTP_PASSWORD'         => null,
    'SMTP_PORT'             => 587,
    'SMTP_SECURITY'         => 'STARTTLS',
    'ADMIN_URL'             => WWW_URL . 'admin/',
    'NTP_SERVER'            => 'fr.pool.ntp.org',
    'ENABLE_AUTOMATIC_BACKUPS' => true,
    'ADMIN_COLOR1'          => '#9c4f15',
    'ADMIN_COLOR2'          => '#d98628',
];

foreach ($default_config as $const => $value)
{
    $const = sprintf('Garradin\\%s', $const);

    if (!defined($const))
    {
        define($const, $value);
    }
}

if (!defined('Garradin\\ADMIN_BACKGROUND_IMAGE')) {
    define('Garradin\\ADMIN_BACKGROUND_IMAGE', ADMIN_URL . 'static/gdin_bg.png');
}

const WEBSITE = 'https://garradin.eu/';
const PLUGINS_URL = 'https://garradin.eu/plugins/list.json';
#const DEFAULT_REPORT_URL = 'http://henga.test/report/?p=ABCD';
const DEFAULT_REPORT_URL = null;

// PHP devrait être assez intelligent pour chopper la TZ système mais nan

Modified src/include/lib/Garradin/Template.php from [682f3b4c7a] to [8c533ffbc9].

216
217
218
219
220
221
222
223
224

225
226

227
228
229
230
231
232

233
234
235
236
237
238
239


240

241
242
243
244
245
246
247
		return $n;
	}

	protected function customColors()
	{
		$config = Config::getInstance();

		if (!$config->get('couleur1') || !$config->get('couleur2') || !$config->get('image_fond'))
		{

			return '';
		}


		$couleur1 = implode(', ', sscanf($config->get('couleur1'), '#%02x%02x%02x'));
		$couleur2 = implode(', ', sscanf($config->get('couleur2'), '#%02x%02x%02x'));

		try {
			$f = new Fichiers($config->get('image_fond'));

		}
		catch (\InvalidArgumentException $e)
		{
			// Fichier qui n'existe pas
			return '';
		}



		$image_fond = $f->getURL();


		$out = '
		<style type="text/css">
		:root {
			--gMainColor: %s;
			--gSecondColor: %s;
		}







|
<
>
|
|
>
|
<
<
<
|
|
>
|
|
|
|
<
|
|
>
>
|
>







216
217
218
219
220
221
222
223

224
225
226
227
228



229
230
231
232
233
234
235

236
237
238
239
240
241
242
243
244
245
246
247
248
		return $n;
	}

	protected function customColors()
	{
		$config = Config::getInstance();

		$couleur1 = $config->get('couleur1') ?: ADMIN_COLOR1;

		$couleur2 = $config->get('couleur2') ?: ADMIN_COLOR2;
		$image_fond = ADMIN_BACKGROUND_IMAGE;

		if ($config->get('image_fond'))
		{



			try {
				$f = new Fichiers($config->get('image_fond'));
				$image_fond = $f->getURL();
			}
			catch (\InvalidArgumentException $e)
			{
				// Fichier qui n'existe pas/plus

			}
		}

		// Transformation Hexa vers décimal
		$couleur1 = implode(', ', sscanf($couleur1, '#%02x%02x%02x'));
		$couleur2 = implode(', ', sscanf($couleur2, '#%02x%02x%02x'));

		$out = '
		<style type="text/css">
		:root {
			--gMainColor: %s;
			--gSecondColor: %s;
		}

Modified src/templates/admin/config/index.tpl from [6078c55f63] to [f4c6ed1cb3].

108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
        <legend>Personnalisation de l'interface</legend>
        <dl>
            <dt><label for="f_couleur1">Couleur principale</label></dt>
            <dd><input type="color" pattern="#[a-f0-9]{ldelim}6{rdelim}" title="Couleur au format hexadécimal" placeholder="{$couleurs_defaut[0]}" name="couleur1" value="{form_field name=couleur1 default=$couleur1}" id="f_couleur1" /></dd>
            <dt><label for="f_couleur2">Couleur secondaire</label></dt>
            <dd><input type="color" pattern="#[a-f0-9]{ldelim}6{rdelim}" title="Couleur au format hexadécimal" placeholder="{$couleurs_defaut[1]}" name="couleur2" value="{form_field name=couleur2 default=$couleur2}" id="f_couleur2" /></dd>
        </dl>
        <input type="hidden" name="image_fond" id="f_image_fond" value="{form_field name=image_fond}" />
    </fieldset>

    <p class="submit">
        {csrf_field key="config"}
        <input type="submit" name="save" value="Enregistrer &rarr;" />
    </p>

</form>

{include file="admin/_foot.tpl"}







|










108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
        <legend>Personnalisation de l'interface</legend>
        <dl>
            <dt><label for="f_couleur1">Couleur principale</label></dt>
            <dd><input type="color" pattern="#[a-f0-9]{ldelim}6{rdelim}" title="Couleur au format hexadécimal" placeholder="{$couleurs_defaut[0]}" name="couleur1" value="{form_field name=couleur1 default=$couleur1}" id="f_couleur1" /></dd>
            <dt><label for="f_couleur2">Couleur secondaire</label></dt>
            <dd><input type="color" pattern="#[a-f0-9]{ldelim}6{rdelim}" title="Couleur au format hexadécimal" placeholder="{$couleurs_defaut[1]}" name="couleur2" value="{form_field name=couleur2 default=$couleur2}" id="f_couleur2" /></dd>
        </dl>
        <input type="hidden" name="image_fond" id="f_image_fond" data-source="{$background_image_source}" value="{form_field name=image_fond}" />
    </fieldset>

    <p class="submit">
        {csrf_field key="config"}
        <input type="submit" name="save" value="Enregistrer &rarr;" />
    </p>

</form>

{include file="admin/_foot.tpl"}

Modified src/www/admin/config/index.php from [402547d004] to [149f2778eb].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
..
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
..
66
67
68
69
70
71
72
73
74

75
76
77
78
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';

$couleur1 = '#9c4f15';
$couleur2 = '#d98628';

if (f('save') && $form->check('config'))
{
    try {
        $config->set('nom_asso', f('nom_asso'));
        $config->set('email_asso', f('email_asso'));
        $config->set('adresse_asso', f('adresse_asso'));
        $config->set('site_asso', f('site_asso'));
................................................................................
        $config->set('champ_identite', f('champ_identite'));
        $config->set('champ_identifiant', f('champ_identifiant'));

        $config->set('pays', f('pays'));
        $config->set('monnaie', f('monnaie'));

        // N'enregistrer les couleurs que si ce ne sont pas les couleurs par défaut
        if (f('couleur1') != $couleur1 || f('couleur2') != $couleur2)
        {
            $config->set('couleur1', f('couleur1'));
            $config->set('couleur2', f('couleur2'));

            if (f('image_fond'))
            {
                $config->set('image_fond', f('image_fond'));
................................................................................
$tpl->assign('pays', Utils::getCountryList());

$cats = new Membres\Categories;
$tpl->assign('membres_cats', $cats->listSimple());

$tpl->assign('champs', $config->get('champs_membres')->getList());

$tpl->assign('couleur1', $config->get('couleur1') ?: $couleur1);
$tpl->assign('couleur2', $config->get('couleur2') ?: $couleur2);

$tpl->assign('couleurs_defaut', [$couleur1, $couleur2]);

$tpl->assign('custom_js', ['color_helper.js']);
$tpl->display('admin/config/index.tpl');





<
<
<







 







|







 







|
|
>
|



1
2
3
4
5



6
7
8
9
10
11
12
..
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
..
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<?php
namespace Garradin;

require_once __DIR__ . '/_inc.php';




if (f('save') && $form->check('config'))
{
    try {
        $config->set('nom_asso', f('nom_asso'));
        $config->set('email_asso', f('email_asso'));
        $config->set('adresse_asso', f('adresse_asso'));
        $config->set('site_asso', f('site_asso'));
................................................................................
        $config->set('champ_identite', f('champ_identite'));
        $config->set('champ_identifiant', f('champ_identifiant'));

        $config->set('pays', f('pays'));
        $config->set('monnaie', f('monnaie'));

        // N'enregistrer les couleurs que si ce ne sont pas les couleurs par défaut
        if (f('couleur1') != ADMIN_COLOR1 || f('couleur2') != ADMIN_COLOR2)
        {
            $config->set('couleur1', f('couleur1'));
            $config->set('couleur2', f('couleur2'));

            if (f('image_fond'))
            {
                $config->set('image_fond', f('image_fond'));
................................................................................
$tpl->assign('pays', Utils::getCountryList());

$cats = new Membres\Categories;
$tpl->assign('membres_cats', $cats->listSimple());

$tpl->assign('champs', $config->get('champs_membres')->getList());

$tpl->assign('couleur1', $config->get('couleur1') ?: ADMIN_COLOR1);
$tpl->assign('couleur2', $config->get('couleur2') ?: ADMIN_COLOR2);
$tpl->assign('background_image_source', ADMIN_BACKGROUND_IMAGE);
$tpl->assign('couleurs_defaut', [ADMIN_COLOR1, ADMIN_COLOR2]);

$tpl->assign('custom_js', ['color_helper.js']);
$tpl->display('admin/config/index.tpl');

Modified src/www/admin/static/scripts/color_helper.js from [1f3037b2de] to [e3dcda260f].

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
..
63
64
65
66
67
68
69


70
71
72
73
74
75
76

		applyLogoColors();
	}

	function applyLogoColors()
	{
		var color = colorToRGB(document.getElementById('f_couleur2').value);
		
		var img = new Image;
		img.src = g.static_url + 'gdin_bg.png';

		img.onload = function() {
			var canvas = document.createElement('canvas');
			var ctx = canvas.getContext('2d');
			canvas.width = img.width;
			canvas.height = img.height;
			ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);
................................................................................

			document.getElementById('f_image_fond').value = i.substr(i.indexOf(',')+1);

			delete canvas2;
			delete canvas;
			delete ctx;
		};


	}

	garradin.onload(function () {
		var couleurs = {'couleur1': 'gMainColor', 'couleur2': 'gSecondColor'};

		for (var couleur in couleurs)
		{







|

|







 







>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
..
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

		applyLogoColors();
	}

	function applyLogoColors()
	{
		var color = colorToRGB(document.getElementById('f_couleur2').value);

		var img = new Image;
		img.crossOrigin = "Anonymous";

		img.onload = function() {
			var canvas = document.createElement('canvas');
			var ctx = canvas.getContext('2d');
			canvas.width = img.width;
			canvas.height = img.height;
			ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, img.width, img.height);
................................................................................

			document.getElementById('f_image_fond').value = i.substr(i.indexOf(',')+1);

			delete canvas2;
			delete canvas;
			delete ctx;
		};

		img.src = document.getElementById('f_image_fond').getAttribute('data-source');
	}

	garradin.onload(function () {
		var couleurs = {'couleur1': 'gMainColor', 'couleur2': 'gSecondColor'};

		for (var couleur in couleurs)
		{