Projet

Général

Profil

0001-build-split-themes-config-in-theme-directories-26635.patch

Frédéric Péters, 23 septembre 2018 09:34

Télécharger (50,8 ko)

Voir les différences:

Subject: [PATCH] build: split themes config in theme directories (#26635)

 .gitignore                                    |   1 +
 Makefile                                      |  10 +-
 create_themes_json.py                         |  20 +
 get_themes.py                                 |   6 -
 static/alfortville/config.json                |   6 +
 static/alpes-maritimes/config.json            |   8 +
 static/amiens-metropole/config.json           |   6 +
 static/amiens/config.json                     |   6 +
 static/arpajon/config.json                    |   7 +
 static/blois/config.json                      |   7 +
 static/bron/config.json                       |   7 +
 static/chateauroux/config.json                |   7 +
 static/clapotis-les-canards/config.json       |   7 +
 .../clisson-sevre-et-maine-agglo/config.json  |   7 +
 static/clisson/config.json                    |   7 +
 static/cotes-d-armor/config.json              |  12 +
 static/dardilly/config.json                   |   7 +
 static/dauphine/config.json                   |   7 +
 static/dreux/config.json                      |   7 +
 static/fondettes/config.json                  |   9 +
 static/fontenay-sous-bois-2017/config.json    |   6 +
 static/fontenay-sous-bois-2018/config.json    |   7 +
 static/fontenay-sous-bois/config.json         |   6 +
 static/gorges/config.json                     |   7 +
 static/grandlyon-gnm/config.json              |  16 +
 static/grandlyon-sau/config.json              |   7 +
 static/grandlyon/config.json                  |   7 +
 static/grenoble-metropole/config.json         |   8 +
 static/greville-hague/config.json             |   7 +
 static/grosboule-les-bains/config.json        |   7 +
 static/groupe-up/config.json                  |   8 +
 static/haute-goulaine/config.json             |   7 +
 static/hautes-alpes-2018/config.json          |   7 +
 static/hautes-alpes/config.json               |   7 +
 static/jobourg/config.json                    |   7 +
 static/la-hague/config.json                   |   7 +
 static/la-reunion/config.json                 |   7 +
 static/la-seyne-sur-mer/config.json           |   7 +
 static/lenord/config.json                     |   7 +
 static/lozere/config.json                     |   7 +
 static/marcoussis/config.json                 |   7 +
 static/massoins/config.json                   |   7 +
 static/meaux/config.json                      |   7 +
 static/metz-metropole/config.json             |   7 +
 static/metz/config.json                       |   7 +
 static/meudon/config.json                     |   7 +
 static/meyzieu-2018/config.json               |   7 +
 static/meyzieu/config.json                    |   6 +
 static/minint/config.json                     |   7 +
 static/montpellier/config.json                |   7 +
 static/moselle/config.json                    |   8 +
 static/nancy-2017/config.json                 |   6 +
 static/nancy/config.json                      |   7 +
 static/nanterre/config.json                   |   7 +
 static/omonville-la-rogue/config.json         |   7 +
 static/orleans/config.json                    |   7 +
 static/oullins/config.json                    |   7 +
 static/pays-de-grasse/config.json             |   7 +
 static/perpette-les-andouillettes/config.json |   7 +
 static/pratic/config.json                     |   6 +
 static/publik/config.json                     |   6 +
 static/rochefort/config.json                  |   7 +
 static/rouen/config.json                      |   7 +
 static/saint-lo-agglo/config.json             |   7 +
 static/saint-vallier-de-thiey/config.json     |   7 +
 static/saone-et-loire-cd71/config.json        |   7 +
 static/seine-et-marne-apa/config.json         |   8 +
 static/seine-et-marne/config.json             |   7 +
 static/sicoval/config.json                    |   7 +
 static/sictiam/config.json                    |   7 +
 static/somme-cd80/config.json                 |   7 +
 static/sospel/config.json                     |   7 +
 static/strasbourg-2018/config.json            |   9 +
 static/strasbourg/config.json                 |   7 +
 static/tonneville/config.json                 |   7 +
 static/toodego/config.json                    |  19 +
 static/tournai/config.json                    |   7 +
 static/urville-nacqueville/config.json        |   7 +
 static/vaulx-en-velin/config.json             |   7 +
 static/venissieux/config.json                 |   7 +
 static/villejuif/config.json                  |   7 +
 static/villeurbanne-2018/config.json          |   8 +
 static/villeurbanne/config.json               |   7 +
 themes.json                                   | 649 ------------------
 84 files changed, 607 insertions(+), 659 deletions(-)
 create mode 100644 create_themes_json.py
 delete mode 100644 get_themes.py
 create mode 100644 static/alfortville/config.json
 create mode 100644 static/alpes-maritimes/config.json
 create mode 100644 static/amiens-metropole/config.json
 create mode 100644 static/amiens/config.json
 create mode 100644 static/arpajon/config.json
 create mode 100644 static/blois/config.json
 create mode 100644 static/bron/config.json
 create mode 100644 static/chateauroux/config.json
 create mode 100644 static/clapotis-les-canards/config.json
 create mode 100644 static/clisson-sevre-et-maine-agglo/config.json
 create mode 100644 static/clisson/config.json
 create mode 100644 static/cotes-d-armor/config.json
 create mode 100644 static/dardilly/config.json
 create mode 100644 static/dauphine/config.json
 create mode 100644 static/dreux/config.json
 create mode 100644 static/fondettes/config.json
 create mode 100644 static/fontenay-sous-bois-2017/config.json
 create mode 100644 static/fontenay-sous-bois-2018/config.json
 create mode 100644 static/fontenay-sous-bois/config.json
 create mode 100644 static/gorges/config.json
 create mode 100644 static/grandlyon-gnm/config.json
 create mode 100644 static/grandlyon-sau/config.json
 create mode 100644 static/grandlyon/config.json
 create mode 100644 static/grenoble-metropole/config.json
 create mode 100644 static/greville-hague/config.json
 create mode 100644 static/grosboule-les-bains/config.json
 create mode 100644 static/groupe-up/config.json
 create mode 100644 static/haute-goulaine/config.json
 create mode 100644 static/hautes-alpes-2018/config.json
 create mode 100644 static/hautes-alpes/config.json
 create mode 100644 static/jobourg/config.json
 create mode 100644 static/la-hague/config.json
 create mode 100644 static/la-reunion/config.json
 create mode 100644 static/la-seyne-sur-mer/config.json
 create mode 100644 static/lenord/config.json
 create mode 100644 static/lozere/config.json
 create mode 100644 static/marcoussis/config.json
 create mode 100644 static/massoins/config.json
 create mode 100644 static/meaux/config.json
 create mode 100644 static/metz-metropole/config.json
 create mode 100644 static/metz/config.json
 create mode 100644 static/meudon/config.json
 create mode 100644 static/meyzieu-2018/config.json
 create mode 100644 static/meyzieu/config.json
 create mode 100644 static/minint/config.json
 create mode 100644 static/montpellier/config.json
 create mode 100644 static/moselle/config.json
 create mode 100644 static/nancy-2017/config.json
 create mode 100644 static/nancy/config.json
 create mode 100644 static/nanterre/config.json
 create mode 100644 static/omonville-la-rogue/config.json
 create mode 100644 static/orleans/config.json
 create mode 100644 static/oullins/config.json
 create mode 100644 static/pays-de-grasse/config.json
 create mode 100644 static/perpette-les-andouillettes/config.json
 create mode 100644 static/pratic/config.json
 create mode 100644 static/publik/config.json
 create mode 100644 static/rochefort/config.json
 create mode 100644 static/rouen/config.json
 create mode 100644 static/saint-lo-agglo/config.json
 create mode 100644 static/saint-vallier-de-thiey/config.json
 create mode 100644 static/saone-et-loire-cd71/config.json
 create mode 100644 static/seine-et-marne-apa/config.json
 create mode 100644 static/seine-et-marne/config.json
 create mode 100644 static/sicoval/config.json
 create mode 100644 static/sictiam/config.json
 create mode 100644 static/somme-cd80/config.json
 create mode 100644 static/sospel/config.json
 create mode 100644 static/strasbourg-2018/config.json
 create mode 100644 static/strasbourg/config.json
 create mode 100644 static/tonneville/config.json
 create mode 100644 static/toodego/config.json
 create mode 100644 static/tournai/config.json
 create mode 100644 static/urville-nacqueville/config.json
 create mode 100644 static/vaulx-en-velin/config.json
 create mode 100644 static/venissieux/config.json
 create mode 100644 static/villejuif/config.json
 create mode 100644 static/villeurbanne-2018/config.json
 create mode 100644 static/villeurbanne/config.json
 delete mode 100644 themes.json
.gitignore
1
themes.json
1 2
/sdist/
2 3
/static/*/style.css
3 4
/static/*/style.css.map
Makefile
3 3

  
4 4
prefix = /usr
5 5

  
6
all: icons css
6
all: themes.json icons css
7 7

  
8 8
static/includes/_data_uris.scss: $(wildcard static/includes/img/*)
9 9
	python make_data_uris.py static/includes/
......
14 14
static/toodego/_data_uris.scss: $(wildcard static/toodego/img/*)
15 15
	python make_data_uris.py static/toodego/
16 16

  
17
THEMEFILES=$(shell python get_themes.py)
17
themes.json: $(wildcard static/*/config.json)
18
	python create_themes_json.py
18 19

  
19 20
%.css: export LC_ALL=C.UTF-8
20 21
.SECONDEXPANSION:
21 22
%.css: %.scss $(wildcard static/includes/*.scss) static/includes/_data_uris.scss static/grandlyon-gnm/_data_uris.scss static/toodego/_data_uris.scss $$(wildcard $$(@D)/*.scss)
22 23
	sass $< $@
23 24

  
24
css: $(THEMEFILES)
25
css: $(wildcard static/*/style.css)
25 26
	rm -rf static/*/.sass-cache/
26 27

  
27 28
icons:
......
55 56
DIST_FILES = \
56 57
	Makefile \
57 58
	desc.xml \
58
	get_themes.py \
59
	create_themes_json.py \
59 60
	make_data_uris.py \
60 61
	static templates themes.json \
61 62
	src
......
71 72
install:
72 73
	mkdir -p $(DESTDIR)$(prefix)/share/publik/themes/publik-base
73 74
	cp -r static templates themes.json desc.xml $(DESTDIR)$(prefix)/share/publik/themes/publik-base
75
	rm $(DESTDIR)$(prefix)/share/publik/themes/publik-base/static/*/config.json
74 76
	mkdir -p $(DESTDIR)$(prefix)/share/wcs/themes/
75 77
	ln -s $(prefix)/share/publik/themes/publik-base $(DESTDIR)$(prefix)/share/wcs/themes/publik-base
76 78

  
create_themes_json.py
1
#! /usr/bin/env python
2

  
3
import json
4
import os
5

  
6
themes = []
7
for dirname in sorted(os.listdir('static')):
8
    config = os.path.join('static', dirname, 'config.json')
9
    if not os.path.exists(config):
10
        continue
11
    theme = json.load(open(os.path.join('static', dirname, 'config.json')))
12
    theme['id'] = dirname
13
    if not 'variables' in theme:
14
        theme['variables'] = {}
15
    if not theme['variables'].get('css_variant'):
16
        theme['variables']['css_variant'] = dirname
17
    themes.append(theme)
18

  
19
with open('themes.json', 'w') as fd:
20
    json.dump(themes, fd, indent=2, sort_keys=True)
get_themes.py
1
#! /usr/bin/env python
2

  
3
import json
4

  
5
for theme in json.load(open('themes.json')):
6
    print 'static/%s/style.css' % theme['id']
static/alfortville/config.json
1
{
2
  "label": "Alfortville",
3
  "variables": {
4
    "theme_color": "#804697"
5
  }
6
}
static/alpes-maritimes/config.json
1
{
2
  "label": "Alpes-Maritimes",
3
  "variables": {
4
    "favicon": "alpes-maritimes/img/favicon.ico",
5
    "no_extra_js": true,
6
    "theme_color": "#13ACBD"
7
  }
8
}
static/amiens-metropole/config.json
1
{
2
  "label": "Amiens Métropole",
3
  "variables": {
4
    "theme_color": "#077aca"
5
  }
6
}
static/amiens/config.json
1
{
2
  "label": "Amiens",
3
  "variables": {
4
    "theme_color": "#4A95DB"
5
  }
6
}
static/arpajon/config.json
1
{
2
  "label": "Arpajon",
3
  "variables": {
4
    "favicon": "arpajon/img/favicon-32x32.png",
5
    "theme_color": "#00d3cc"
6
  }
7
}
static/blois/config.json
1
{
2
  "label": "Blois",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#02b4da"
6
  }
7
}
static/bron/config.json
1
{
2
  "label": "Bron",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#ff8400"
6
  }
7
}
static/chateauroux/config.json
1
{
2
  "label": "Châteauroux",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#0779B7"
6
  }
7
}
static/clapotis-les-canards/config.json
1
{
2
  "label": "Clapotis-les-Canards",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#018B9D"
6
  }
7
}
static/clisson-sevre-et-maine-agglo/config.json
1
{
2
  "label": "Clisson, Sèvre & Maine Agglo",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#C25D1B"
6
  }
7
}
static/clisson/config.json
1
{
2
  "label": "Clisson",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#C52F1E"
6
  }
7
}
static/cotes-d-armor/config.json
1
{
2
  "label": "Côtes-d'Armor",
3
  "variables": {
4
    "favicon": "cotes-d-armor/img/favicon.ico",
5
    "icon_prefix": "img/launcher-icon-",
6
    "icon_sizes": [
7
      "180"
8
    ],
9
    "no_extra_js": true,
10
    "theme_color": "#44db6f"
11
  }
12
}
static/dardilly/config.json
1
{
2
  "label": "Dardilly",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#008FCB"
6
  }
7
}
static/dauphine/config.json
1
{
2
  "label": "Dauphine",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#00428F"
6
  }
7
}
static/dreux/config.json
1
{
2
  "label": "Dreux",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#d29340"
6
  }
7
}
static/fondettes/config.json
1
{
2
  "label": "Fondettes",
3
  "variables": {
4
    "favicon": "fondettes/favicon.png",
5
    "logo_link_url": "http://www.fondettes.fr/",
6
    "no_extra_js": true,
7
    "theme_color": "#2A697C"
8
  }
9
}
static/fontenay-sous-bois-2017/config.json
1
{
2
  "label": "Fontenay-sous-Bois 2017",
3
  "variables": {
4
    "theme_color": "#5ba1e1"
5
  }
6
}
static/fontenay-sous-bois-2018/config.json
1
{
2
  "label": "Fontenay-sous-Bois 2018",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#da3838"
6
  }
7
}
static/fontenay-sous-bois/config.json
1
{
2
  "label": "Fontenay-sous-Bois",
3
  "variables": {
4
    "theme_color": "#FF6E00"
5
  }
6
}
static/gorges/config.json
1
{
2
  "label": "Gorges",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#268682"
6
  }
7
}
static/grandlyon-gnm/config.json
1
{
2
  "label": "Guichet Numérique Grand Lyon",
3
  "variables": {
4
    "icon_prefix": "img/launcher-icon-",
5
    "icon_sizes": [
6
      "48",
7
      "96",
8
      "192",
9
      "256",
10
      "512"
11
    ],
12
    "no_extra_js": false,
13
    "pwa_display": "standalone",
14
    "theme_color": "#DA0D02"
15
  }
16
}
static/grandlyon-sau/config.json
1
{
2
  "label": "SAU Grand Lyon",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#E42320"
6
  }
7
}
static/grandlyon/config.json
1
{
2
  "label": "Grand Lyon",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#FF0303"
6
  }
7
}
static/grenoble-metropole/config.json
1
{
2
  "label": "Grenoble Métropole",
3
  "variables": {
4
    "email_header_img": "img/logo-metro.png",
5
    "no_extra_js": false,
6
    "theme_color": "#FFEC44"
7
  }
8
}
static/greville-hague/config.json
1
{
2
  "label": "Gréville-Hague",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#431403"
6
  }
7
}
static/grosboule-les-bains/config.json
1
{
2
  "label": "Grosboule-les-Bains",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#13b29c"
6
  }
7
}
static/groupe-up/config.json
1
{
2
  "label": "Groupe Up",
3
  "variables": {
4
    "apa_users_grid": "grid-1-3",
5
    "no_extra_js": true,
6
    "theme_color": "#f59100"
7
  }
8
}
static/haute-goulaine/config.json
1
{
2
  "label": "Haute Goulaine",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#B0D500"
6
  }
7
}
static/hautes-alpes-2018/config.json
1
{
2
  "label": "Hautes-Alpes 2018",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#B73720"
6
  }
7
}
static/hautes-alpes/config.json
1
{
2
  "label": "Hautes-Alpes",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#D1351C"
6
  }
7
}
static/jobourg/config.json
1
{
2
  "label": "Jobourg",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#426C92"
6
  }
7
}
static/la-hague/config.json
1
{
2
  "label": "La Hague",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#5ABEB9"
6
  }
7
}
static/la-reunion/config.json
1
{
2
  "label": "La Réunion",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#024395"
6
  }
7
}
static/la-seyne-sur-mer/config.json
1
{
2
  "label": "La Seyne-sur-Mer",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#1DA1AE"
6
  }
7
}
static/lenord/config.json
1
{
2
  "label": "Le Nord",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#6B7A99"
6
  }
7
}
static/lozere/config.json
1
{
2
  "label": "Lozère",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#A8BC01"
6
  }
7
}
static/marcoussis/config.json
1
{
2
  "label": "Marcoussis",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#2B8AE8"
6
  }
7
}
static/massoins/config.json
1
{
2
  "label": "Massoins",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#4DB2EC"
6
  }
7
}
static/meaux/config.json
1
{
2
  "label": "Meaux",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#C5C0B4"
6
  }
7
}
static/metz-metropole/config.json
1
{
2
  "label": "Metz Métropole",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#9c007f"
6
  }
7
}
static/metz/config.json
1
{
2
  "label": "Metz",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#FABB00"
6
  }
7
}
static/meudon/config.json
1
{
2
  "label": "Meudon",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#260c4e"
6
  }
7
}
static/meyzieu-2018/config.json
1
{
2
  "label": "Meyzieu 2018",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#3997a5"
6
  }
7
}
static/meyzieu/config.json
1
{
2
  "label": "Meyzieu",
3
  "variables": {
4
    "theme_color": "#007CB5"
5
  }
6
}
static/minint/config.json
1
{
2
  "label": "Ministère de l'Intérieur",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#34567C"
6
  }
7
}
static/montpellier/config.json
1
{
2
  "label": "Montpellier",
3
  "overlay": "montpellier-theme",
4
  "variables": {
5
    "theme_color": "#EA5B0C"
6
  }
7
}
static/moselle/config.json
1
{
2
  "label": "Moselle",
3
  "variables": {
4
    "include_top_links": false,
5
    "no_extra_js": false,
6
    "theme_color": "#f7433a"
7
  }
8
}
static/nancy-2017/config.json
1
{
2
  "label": "Nancy 2017",
3
  "variables": {
4
    "theme_color": "#f15252"
5
  }
6
}
static/nancy/config.json
1
{
2
  "label": "Nancy",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#94BCBB"
6
  }
7
}
static/nanterre/config.json
1
{
2
  "label": "Nanterre",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#D81E41"
6
  }
7
}
static/omonville-la-rogue/config.json
1
{
2
  "label": "Omonville-la-Rogue",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#BAC197"
6
  }
7
}
static/orleans/config.json
1
{
2
  "label": "Orléans",
3
  "variables": {
4
    "email_header_img": "images/logo_mairie.jpg",
5
    "theme_color": "#34697D"
6
  }
7
}
static/oullins/config.json
1
{
2
  "label": "Oullins",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#D24B19"
6
  }
7
}
static/pays-de-grasse/config.json
1
{
2
  "label": "Pays de Grasse",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#DB378E"
6
  }
7
}
static/perpette-les-andouillettes/config.json
1
{
2
  "label": "Perpette-les-Andouillettes",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#005712"
6
  }
7
}
static/pratic/config.json
1
{
2
  "label": "Pr@tic - CDG59",
3
  "variables": {
4
    "theme_color": "#005EA9"
5
  }
6
}
static/publik/config.json
1
{
2
  "label": "Publik",
3
  "variables": {
4
    "theme_color": "#E80E89"
5
  }
6
}
static/rochefort/config.json
1
{
2
  "label": "Rochefort",
3
  "variables": {
4
    "no_extra_js": false,
5
    "theme_color": "#D24E38"
6
  }
7
}
static/rouen/config.json
1
{
2
  "label": "Rouen",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#EE787C"
6
  }
7
}
static/saint-lo-agglo/config.json
1
{
2
  "label": "Saint-Lô Agglo",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#79bb2e"
6
  }
7
}
static/saint-vallier-de-thiey/config.json
1
{
2
  "label": "Saint-Vallier-de-Thiey",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#2DBBE5"
6
  }
7
}
static/saone-et-loire-cd71/config.json
1
{
2
  "label": "Saône et Loire (CD71)",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#009DDF"
6
  }
7
}
static/seine-et-marne-apa/config.json
1
{
2
  "label": "Seine-et-Marne (aides sociales)",
3
  "variables": {
4
    "apa_users_grid": "grid-1-3",
5
    "no_extra_js": true,
6
    "theme_color": "#0a7ec2"
7
  }
8
}
static/seine-et-marne/config.json
1
{
2
  "label": "Seine-et-Marne",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#007084"
6
  }
7
}
static/sicoval/config.json
1
{
2
  "label": "SICOVAL",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#F8AD4A"
6
  }
7
}
static/sictiam/config.json
1
{
2
  "label": "SICTIAM",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#0E88BE"
6
  }
7
}
static/somme-cd80/config.json
1
{
2
  "label": "Somme (CD80)",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#87A738"
6
  }
7
}
static/sospel/config.json
1
{
2
  "label": "Sospel",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#333333"
6
  }
7
}
static/strasbourg-2018/config.json
1
{
2
  "label": "Mon Strasbourg",
3
  "variables": {
4
    "email_header_img": "img/logo-eurometropole.png",
5
    "favicon": "strasbourg-2018/img/favicon.png",
6
    "no_extra_js": false,
7
    "theme_color": "#31455D"
8
  }
9
}
static/strasbourg/config.json
1
{
2
  "label": "Strasbourg",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#31455D"
6
  }
7
}
static/tonneville/config.json
1
{
2
  "label": "Tonneville",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#ED3237"
6
  }
7
}
static/toodego/config.json
1
{
2
  "label": "Toodego",
3
  "variables": {
4
    "favicon": "toodego/img/favicon.ico",
5
    "global_title": "Toodego",
6
    "icon_prefix": "img/launcher-icon-",
7
    "icon_sizes": [
8
      "48",
9
      "96",
10
      "192",
11
      "256",
12
      "512"
13
    ],
14
    "include_top_links": false,
15
    "no_extra_js": false,
16
    "pwa_display": "standalone",
17
    "theme_color": "#DC1822"
18
  }
19
}
static/tournai/config.json
1
{
2
  "label": "Tournai",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#D62D8A"
6
  }
7
}
static/urville-nacqueville/config.json
1
{
2
  "label": "Urville-Nacqueville",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#4585AB"
6
  }
7
}
static/vaulx-en-velin/config.json
1
{
2
  "label": "Vaulx-en-Velin",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#0C89A1"
6
  }
7
}
static/venissieux/config.json
1
{
2
  "label": "Vénissieux",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#2dbdbd"
6
  }
7
}
static/villejuif/config.json
1
{
2
  "label": "Villejuif",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#1ba39c"
6
  }
7
}
static/villeurbanne-2018/config.json
1
{
2
  "label": "Villeurbanne 2018",
3
  "variables": {
4
    "email_header_img": "images/logo.png",
5
    "no_extra_js": true,
6
    "theme_color": "#0094aa"
7
  }
8
}
static/villeurbanne/config.json
1
{
2
  "label": "Villeurbanne",
3
  "variables": {
4
    "no_extra_js": true,
5
    "theme_color": "#01A0BE"
6
  }
7
}
themes.json
1
[
2
  {"id": "alfortville",
3
   "label": "Alfortville",
4
   "variables": {
5
     "css_variant": "alfortville",
6
     "theme_color": "#804697"
7
   }
8
  },
9
  {"id": "amiens",
10
   "label": "Amiens",
11
   "variables": {
12
     "css_variant": "amiens",
13
     "theme_color": "#4A95DB"
14
   }
15
  },
16
  {"id": "amiens-metropole",
17
   "label": "Amiens Métropole",
18
   "variables": {
19
     "css_variant": "amiens-metropole",
20
     "theme_color": "#077aca"
21
   }
22
  },
23
  {"id": "alpes-maritimes",
24
   "label": "Alpes-Maritimes",
25
   "variables": {
26
     "css_variant": "alpes-maritimes",
27
     "no_extra_js": true,
28
     "theme_color": "#13ACBD",
29
     "favicon": "alpes-maritimes/img/favicon.ico"
30
   }
31
  },
32
  {"id": "arpajon",
33
   "label": "Arpajon",
34
   "variables": {
35
     "css_variant": "arpajon",
36
     "theme_color": "#00d3cc",
37
     "favicon": "arpajon/img/favicon-32x32.png"
38
   }
39
  },
40
  {"id": "blois",
41
   "label": "Blois",
42
   "variables": {
43
     "css_variant": "blois",
44
     "no_extra_js": false,
45
     "theme_color": "#02b4da"
46
   }
47
  },
48
  {"id": "bron",
49
   "label": "Bron",
50
   "variables": {
51
     "css_variant": "bron",
52
     "no_extra_js": true,
53
     "theme_color": "#ff8400"
54
   }
55
  },
56
  {"id": "chateauroux",
57
   "label": "Châteauroux",
58
   "variables": {
59
     "css_variant": "chateauroux",
60
     "no_extra_js": true,
61
     "theme_color": "#0779B7"
62
   }
63
  },
64
  {"id": "clapotis-les-canards",
65
   "label": "Clapotis-les-Canards",
66
   "variables": {
67
     "css_variant": "clapotis-les-canards",
68
     "no_extra_js": true,
69
     "theme_color": "#018B9D"
70
   }
71
  },
72
  {"id": "clisson",
73
   "label": "Clisson",
74
   "variables": {
75
     "css_variant": "clisson",
76
     "no_extra_js": true,
77
     "theme_color": "#C52F1E"
78
   }
79
  },
80
  {"id": "clisson-sevre-et-maine-agglo",
81
   "label": "Clisson, Sèvre & Maine Agglo",
82
   "variables": {
83
     "css_variant": "clisson-sevre-et-maine-agglo",
84
     "no_extra_js": true,
85
     "theme_color": "#C25D1B"
86
   }
87
  },
88
  {"id": "cotes-d-armor",
89
   "label": "Côtes-d'Armor",
90
   "variables": {
91
     "css_variant": "cotes-d-armor",
92
     "no_extra_js": true,
93
     "theme_color": "#44db6f",
94
     "favicon": "cotes-d-armor/img/favicon.ico",
95
     "icon_sizes": ["180"],
96
     "icon_prefix": "img/launcher-icon-"
97
   }
98
  },
99
  {"id": "dardilly",
100
   "label": "Dardilly",
101
   "variables": {
102
     "css_variant": "dardilly",
103
     "no_extra_js": true,
104
     "theme_color": "#008FCB"
105
    }
106
   },
107
   {"id": "dreux",
108
    "label": "Dreux",
109
    "variables": {
110
      "css_variant": "dreux",
111
      "no_extra_js": true,
112
      "theme_color": "#d29340"
113
   }
114
  },
115
  {"id": "dauphine",
116
   "label": "Dauphine",
117
   "variables": {
118
     "css_variant": "dauphine",
119
     "no_extra_js": true,
120
     "theme_color": "#00428F"
121
   }
122
  },
123
  {"id": "fondettes",
124
   "label": "Fondettes",
125
   "variables": {
126
     "css_variant": "fondettes",
127
     "theme_color": "#2A697C",
128
     "favicon": "fondettes/favicon.png",
129
     "logo_link_url": "http://www.fondettes.fr/",
130
     "no_extra_js": true
131
   }
132
  },
133
  {"id": "gorges",
134
   "label": "Gorges",
135
   "variables": {
136
     "css_variant": "gorges",
137
     "no_extra_js": true,
138
     "theme_color": "#268682"
139
   }
140
  },
141
  {"id": "grandlyon",
142
   "label": "Grand Lyon",
143
   "variables": {
144
     "css_variant": "grandlyon",
145
     "no_extra_js": true,
146
     "theme_color": "#FF0303"
147
   }
148
  },
149
  {"id": "grandlyon-gnm",
150
   "label": "Guichet Numérique Grand Lyon",
151
   "variables": {
152
     "css_variant": "grandlyon-gnm",
153
     "no_extra_js": false,
154
     "theme_color": "#DA0D02",
155
     "icon_sizes": ["48", "96", "192", "256", "512"],
156
     "icon_prefix": "img/launcher-icon-",
157
     "pwa_display": "standalone"
158
   }
159
  },
160
  {"id": "grandlyon-sau",
161
   "label": "SAU Grand Lyon",
162
   "variables": {
163
     "css_variant": "grandlyon-sau",
164
     "no_extra_js": false,
165
     "theme_color": "#E42320"
166
   }
167
  },
168
  {"id": "grenoble-metropole",
169
   "label": "Grenoble Métropole",
170
   "variables": {
171
     "css_variant": "grenoble-metropole",
172
     "no_extra_js": false,
173
     "theme_color": "#FFEC44",
174
     "email_header_img": "img/logo-metro.png"
175
   }
176
  },
177
  {"id": "fontenay-sous-bois",
178
   "label": "Fontenay-sous-Bois",
179
   "variables": {
180
     "css_variant": "fontenay-sous-bois",
181
     "theme_color": "#FF6E00"
182
   }
183
  },
184
  {"id": "fontenay-sous-bois-2017",
185
   "label": "Fontenay-sous-Bois 2017",
186
   "variables": {
187
     "css_variant": "fontenay-sous-bois-2017",
188
     "theme_color": "#5ba1e1"
189
   }
190
  },
191
  {"id": "fontenay-sous-bois-2018",
192
   "label": "Fontenay-sous-Bois 2018",
193
   "variables": {
194
     "css_variant": "fontenay-sous-bois-2018",
195
     "no_extra_js": true,
196
     "theme_color": "#da3838"
197
   }
198
  },
199
  {"id": "greville-hague",
200
   "label": "Gréville-Hague",
201
   "variables": {
202
     "css_variant": "greville-hague",
203
     "no_extra_js": true,
204
     "theme_color": "#431403"
205
   }
206
  },
207
  {"id": "grosboule-les-bains",
208
   "label": "Grosboule-les-Bains",
209
   "variables": {
210
     "css_variant": "grosboule-les-bains",
211
     "no_extra_js": false,
212
     "theme_color": "#13b29c"
213
   }
214
  },
215
  {"id": "groupe-up",
216
   "label": "Groupe Up",
217
   "variables": {
218
     "css_variant": "groupe-up",
219
     "no_extra_js": true,
220
     "theme_color": "#f59100",
221
     "apa_users_grid": "grid-1-3"
222
   }
223
  },
224
  {"id": "haute-goulaine",
225
   "label": "Haute Goulaine",
226
   "variables": {
227
     "css_variant": "haute-goulaine",
228
     "no_extra_js": true,
229
     "theme_color": "#B0D500"
230
   }
231
  },
232
  {"id": "hautes-alpes",
233
   "label": "Hautes-Alpes",
234
   "variables": {
235
     "css_variant": "hautes-alpes",
236
     "no_extra_js": true,
237
     "theme_color": "#D1351C"
238
   }
239
  },
240
  {"id": "hautes-alpes-2018",
241
   "label": "Hautes-Alpes 2018",
242
   "variables": {
243
     "css_variant": "hautes-alpes-2018",
244
     "no_extra_js": false,
245
     "theme_color": "#B73720"
246
   }
247
  },
248
  {"id": "jobourg",
249
   "label": "Jobourg",
250
   "variables": {
251
     "css_variant": "jobourg",
252
     "no_extra_js": true,
253
     "theme_color": "#426C92"
254
   }
255
  },
256
  {"id": "la-hague",
257
   "label": "La Hague",
258
   "variables": {
259
     "css_variant": "la-hague",
260
     "no_extra_js": true,
261
     "theme_color": "#5ABEB9"
262
   }
263
  },
264
  {"id": "la-reunion",
265
   "label": "La Réunion",
266
   "variables": {
267
     "css_variant": "la-reunion",
268
     "no_extra_js": true,
269
     "theme_color": "#024395"
270
   }
271
  },
272
  {"id": "la-seyne-sur-mer",
273
   "label": "La Seyne-sur-Mer",
274
   "variables": {
275
     "css_variant": "la-seyne-sur-mer",
276
     "no_extra_js": true,
277
     "theme_color": "#1DA1AE"
278
   }
279
  },
280
  {"id": "lenord",
281
   "label": "Le Nord",
282
   "variables": {
283
     "css_variant": "lenord",
284
     "no_extra_js": true,
285
     "theme_color": "#6B7A99"
286
   }
287
  },
288
  {"id": "lozere",
289
   "label": "Lozère",
290
   "variables": {
291
     "css_variant": "lozere",
292
     "no_extra_js": true,
293
     "theme_color": "#A8BC01"
294
   }
295
  },
296
  {"id": "marcoussis",
297
   "label": "Marcoussis",
298
   "variables": {
299
     "css_variant": "marcoussis",
300
     "no_extra_js": true,
301
     "theme_color": "#2B8AE8"
302
   }
303
  },
304
  {"id": "meudon",
305
   "label": "Meudon",
306
   "variables": {
307
     "css_variant": "meudon",
308
     "no_extra_js": false,
309
     "theme_color": "#260c4e"
310
   }
311
  },
312
  {"id": "massoins",
313
   "label": "Massoins",
314
   "variables": {
315
     "css_variant": "massoins",
316
     "no_extra_js": true,
317
     "theme_color": "#4DB2EC"
318
   }
319
  },
320
  {"id": "meaux",
321
   "label": "Meaux",
322
   "variables": {
323
     "css_variant": "meaux",
324
     "no_extra_js": true,
325
     "theme_color": "#C5C0B4"
326
   }
327
  },
328
  {"id": "metz",
329
   "label": "Metz",
330
   "variables": {
331
     "css_variant": "metz",
332
     "no_extra_js": true,
333
     "theme_color": "#FABB00"
334
   }
335
  },
336
  {"id": "metz-metropole",
337
   "label": "Metz Métropole",
338
   "variables": {
339
     "css_variant": "metz-metropole",
340
     "no_extra_js": false,
341
     "theme_color": "#9c007f"
342
   }
343
  },
344
  {"id": "meyzieu",
345
   "label": "Meyzieu",
346
   "variables": {
347
     "css_variant": "meyzieu",
348
     "theme_color": "#007CB5"
349
   }
350
  },
351
  {"id": "meyzieu-2018",
352
   "label": "Meyzieu 2018",
353
   "variables": {
354
     "css_variant": "meyzieu-2018",
355
     "theme_color": "#3997a5",
356
     "no_extra_js": false
357
   }
358
  },
359
  {"id": "montpellier",
360
   "label": "Montpellier",
361
   "variables": {
362
     "css_variant": "montpellier",
363
     "theme_color": "#EA5B0C"
364
   },
365
   "overlay": "montpellier-theme"
366
  },
367
  {"id": "moselle",
368
   "label": "Moselle",
369
   "variables": {
370
     "css_variant": "moselle",
371
     "include_top_links": false,
372
     "no_extra_js": false,
373
     "theme_color": "#f7433a"
374
   }
375
  },
376

  
377
  {"id": "nancy",
378
   "label": "Nancy",
379
   "variables": {
380
     "css_variant": "nancy",
381
     "no_extra_js": true,
382
     "theme_color": "#94BCBB"
383
   }
384
  },
385
  {"id": "nancy-2017",
386
   "label": "Nancy 2017",
387
   "variables": {
388
     "css_variant": "nancy-2017",
389
     "theme_color": "#f15252"
390
   }
391
  },
392
  {"id": "nanterre",
393
   "label": "Nanterre",
394
   "variables": {
395
     "css_variant": "nanterre",
396
     "no_extra_js": true,
397
     "theme_color": "#D81E41"
398
   }
399
  },
400
  {"id": "omonville-la-rogue",
401
   "label": "Omonville-la-Rogue",
402
   "variables": {
403
     "css_variant": "omonville-la-rogue",
404
     "no_extra_js": true,
405
     "theme_color": "#BAC197"
406
   }
407
  },
408
  {"id": "orleans",
409
   "label": "Orléans",
410
   "variables": {
411
     "css_variant": "orleans",
412
     "email_header_img": "images/logo_mairie.jpg",
413
     "theme_color": "#34697D"
414
   }
415
  },
416
  {"id": "oullins",
417
   "label": "Oullins",
418
   "variables": {
419
     "css_variant": "oullins",
420
     "no_extra_js": true,
421
     "theme_color": "#D24B19"
422
   }
423
  },
424
  {"id": "pays-de-grasse",
425
   "label": "Pays de Grasse",
426
   "variables": {
427
     "css_variant": "pays-de-grasse",
428
     "no_extra_js": true,
429
     "theme_color": "#DB378E"
430
   }
431
  },
432
  {"id": "perpette-les-andouillettes",
433
   "label": "Perpette-les-Andouillettes",
434
   "variables": {
435
     "css_variant": "perpette-les-andouillettes",
436
     "no_extra_js": true,
437
     "theme_color": "#005712"
438
   }
439
  },
440
  {"id": "publik",
441
   "label": "Publik",
442
   "variables": {
443
     "css_variant": "publik",
444
     "theme_color": "#E80E89"
445
   }
446
  },
447
  {"id": "pratic",
448
   "label": "Pr@tic - CDG59",
449
   "variables": {
450
     "css_variant": "pratic",
451
     "theme_color": "#005EA9"
452
   }
453
  },
454
  {"id": "rochefort",
455
   "label": "Rochefort",
456
   "variables": {
457
     "css_variant": "rochefort",
458
     "no_extra_js": false,
459
     "theme_color": "#D24E38"
460
   }
461
  },
462
  {"id": "rouen",
463
   "label": "Rouen",
464
   "variables": {
465
     "css_variant": "rouen",
466
     "no_extra_js": true,
467
     "theme_color": "#EE787C"
468
   }
469
  },
470
  {"id": "saint-lo-agglo",
471
   "label": "Saint-Lô Agglo",
472
   "variables": {
473
     "css_variant": "saint-lo-agglo",
474
     "no_extra_js": true,
475
     "theme_color": "#79bb2e"
476
   }
477
  },
478
  {"id": "saint-vallier-de-thiey",
479
   "label": "Saint-Vallier-de-Thiey",
480
   "variables": {
481
     "css_variant": "saint-vallier-de-thiey",
482
     "no_extra_js": true,
483
     "theme_color": "#2DBBE5"
484
   }
485
  },
486
  {"id": "saone-et-loire-cd71",
487
   "label": "Saône et Loire (CD71)",
488
   "variables": {
489
     "css_variant": "saone-et-loire-cd71",
490
     "no_extra_js": true,
491
     "theme_color": "#009DDF"
492
   }
493
  },
494
  {"id": "seine-et-marne",
495
   "label": "Seine-et-Marne",
496
   "variables": {
497
     "css_variant": "seine-et-marne",
498
     "no_extra_js": true,
499
     "theme_color": "#007084"
500
   }
501
  },
502
  {"id": "seine-et-marne-apa",
503
   "label": "Seine-et-Marne (aides sociales)",
504
   "variables": {
505
     "css_variant": "seine-et-marne-apa",
506
     "no_extra_js": true,
507
     "theme_color": "#0a7ec2",
508
     "apa_users_grid": "grid-1-3"
509
   }
510
  },
511
  {"id": "sicoval",
512
   "label": "SICOVAL",
513
   "variables": {
514
     "css_variant": "sicoval",
515
     "no_extra_js": true,
516
     "theme_color": "#F8AD4A"
517
   }
518
  },
519
  {"id": "sictiam",
520
   "label": "SICTIAM",
521
   "variables": {
522
     "css_variant": "sictiam",
523
     "no_extra_js": true,
524
     "theme_color": "#0E88BE"
525
   }
526
  },
527
  {"id": "somme-cd80",
528
   "label": "Somme (CD80)",
529
   "variables": {
530
     "css_variant": "somme-cd80",
531
     "no_extra_js": true,
532
     "theme_color": "#87A738"
533
   }
534
  },
535

  
536
  {"id": "sospel",
537
   "label": "Sospel",
538
   "variables": {
539
     "css_variant": "sospel",
540
     "no_extra_js": true,
541
     "theme_color": "#333333"
542
   }
543
  },
544
  {"id": "strasbourg",
545
   "label": "Strasbourg",
546
   "variables": {
547
     "css_variant": "strasbourg",
548
     "no_extra_js": true,
549
     "theme_color": "#31455D"
550
   }
551
  },
552
  {"id": "strasbourg-2018",
553
   "label": "Mon Strasbourg",
554
   "variables": {
555
     "css_variant": "strasbourg-2018",
556
     "email_header_img": "img/logo-eurometropole.png",
557
     "favicon": "strasbourg-2018/img/favicon.png",
558
     "no_extra_js": false,
559
     "theme_color": "#31455D"
560
   }
561
  },
562
  {"id": "tonneville",
563
   "label": "Tonneville",
564
   "variables": {
565
     "css_variant": "tonneville",
566
     "no_extra_js": true,
567
     "theme_color": "#ED3237"
568
   }
569
  },
570
  {"id": "toodego",
571
   "label": "Toodego",
572
   "variables": {
573
     "global_title": "Toodego",
574
     "css_variant": "toodego",
575
     "no_extra_js": false,
576
     "include_top_links": false,
577
     "theme_color": "#DC1822",
578
     "favicon": "toodego/img/favicon.ico",
579
     "icon_sizes": ["48", "96", "192", "256", "512"],
580
     "icon_prefix": "img/launcher-icon-",
581
     "pwa_display": "standalone"
582
   }
583
  },
584
  {"id": "tournai",
585
   "label": "Tournai",
586
   "variables": {
587
     "css_variant": "tournai",
588
     "theme_color": "#D62D8A",
589
     "no_extra_js": true
590
   }
591
  },
592
  {"id": "urville-nacqueville",
593
   "label": "Urville-Nacqueville",
594
   "variables": {
595
     "css_variant": "urville-nacqueville",
596
     "no_extra_js": true,
597
     "theme_color": "#4585AB"
598
   }
599
  },
600
  {"id": "vaulx-en-velin",
601
   "label": "Vaulx-en-Velin",
602
   "variables": {
603
     "css_variant": "vaulx-en-velin",
604
     "no_extra_js": true,
605
     "theme_color": "#0C89A1"
606
   }
607
  },
608
  {"id": "venissieux",
609
   "label": "Vénissieux",
610
   "variables": {
611
     "css_variant": "venissieux",
612
     "no_extra_js": true,
613
     "theme_color": "#2dbdbd"
614
   }
615
  },
616
  {"id": "villejuif",
617
   "label": "Villejuif",
618
   "variables": {
619
     "css_variant": "villejuif",
620
     "no_extra_js": true,
621
     "theme_color": "#1ba39c"
622
   }
623
  } ,
624
  {"id": "villeurbanne",
625
   "label": "Villeurbanne",
626
   "variables": {
627
     "css_variant": "villeurbanne",
628
     "no_extra_js": true,
629
     "theme_color": "#01A0BE"
630
   }
631
  },
632
  {"id": "villeurbanne-2018",
633
   "label": "Villeurbanne 2018",
634
   "variables": {
635
     "css_variant": "villeurbanne-2018",
636
     "no_extra_js": true,
637
     "email_header_img": "images/logo.png",
638
     "theme_color": "#0094aa"
639
   }
640
  },
641
  {"id": "minint",
642
   "label": "Ministère de l'Intérieur",
643
   "variables": {
644
     "css_variant": "minint",
645
     "no_extra_js": true,
646
     "theme_color": "#34567C"
647
   }
648
  }
649
]
650
-