From 7a7b91bf9c158934c52451d1722b6531edaef178 Mon Sep 17 00:00:00 2001 From: Jenny Danzmayr Date: Mon, 26 Nov 2018 01:33:21 +0100 Subject: [PATCH] colors, icons, and meta tags for mobile devices --- src/c3nav/settings.py | 4 ++++ src/c3nav/site/context_processors.py | 22 +++++++++++++++++++++- src/c3nav/site/finders.py | 21 +++++++++++++++++++++ src/c3nav/site/templates/site/base.html | 11 +++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/c3nav/settings.py b/src/c3nav/settings.py index 59ef9e48..b6b2b52b 100644 --- a/src/c3nav/settings.py +++ b/src/c3nav/settings.py @@ -298,6 +298,7 @@ TEMPLATES = [ 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'c3nav.site.context_processors.logos', + 'c3nav.site.context_processors.colors', 'c3nav.site.context_processors.user_data_json', ], 'loaders': template_loaders @@ -334,11 +335,14 @@ COMPRESS_CSS_FILTERS = ( HEADER_LOGO = config.get('c3nav', 'header_logo', fallback=None) FAVICON = config.get('c3nav', 'favicon', fallback=None) +FAVICON_PACKAGE = config.get('c3nav', 'favicon_package', fallback=None) PRIMARY_COLOR = config.get('c3nav', 'primary_color', fallback='') HEADER_BACKGROUND_COLOR = config.get('c3nav', 'header_background_color', fallback='') HEADER_TEXT_COLOR = config.get('c3nav', 'header_text_color', fallback='') HEADER_TEXT_HOVER_COLOR = config.get('c3nav', 'header_text_hover_color', fallback='') +SAFARI_MASK_ICON_COLOR = config.get('c3nav', 'safari_mask_icon_color', fallback=PRIMARY_COLOR) +MSAPPLICATION_TILE_COLOR = config.get('c3nav', 'msapplication_tile_color', fallback='') WIFI_SSIDS = [n for n in config.get('c3nav', 'wifi_ssids', fallback='').split(',') if n] diff --git a/src/c3nav/site/context_processors.py b/src/c3nav/site/context_processors.py index 4094f695..27a2b7f8 100644 --- a/src/c3nav/site/context_processors.py +++ b/src/c3nav/site/context_processors.py @@ -1,15 +1,24 @@ import json import os +from django.conf import settings from django.core.serializers.json import DjangoJSONEncoder -from c3nav.site.finders import logo_paths +from c3nav.site.finders import favicon_package_files, logo_paths logos_result = { prefix: os.path.join(prefix, os.path.basename(path)) if path else None for prefix, path in logo_paths.items() } +if settings.FAVICON_PACKAGE: + logos_result['favicon_package'] = { + '.'.join(file.split('.')[:-1]): os.path.join('favicon_package', file) + for file in favicon_package_files + } +else: + logos_result['favicon_package'] = None + def logos(request): return logos_result @@ -19,3 +28,14 @@ def user_data_json(request): return { 'user_data_json': lambda: json.dumps(dict(request.user_data), separators=(',', ':'), cls=DjangoJSONEncoder), } + + +def colors(request): + return {'colors': { + 'primary_color': settings.PRIMARY_COLOR, + 'header_background_color': settings.HEADER_BACKGROUND_COLOR, + 'header_text_color': settings.HEADER_TEXT_COLOR, + 'header_text_hover_color': settings.HEADER_TEXT_HOVER_COLOR, + 'safari_mask_icon_color': settings.SAFARI_MASK_ICON_COLOR, + 'msapplication_tile_color': settings.MSAPPLICATION_TILE_COLOR, + }} diff --git a/src/c3nav/site/finders.py b/src/c3nav/site/finders.py index 42d4dda7..a194ac0c 100644 --- a/src/c3nav/site/finders.py +++ b/src/c3nav/site/finders.py @@ -15,6 +15,23 @@ logofinder_results = { if path } +favicon_package_files = { + 'android-chrome-192x192.png', + 'android-chrome-512x512.png', + 'apple-touch-icon.png', + 'browserconfig.xml', + 'mstile-150x150.png', + 'mstile-310x310.png', + 'safari-pinned-tab.svg', + 'site.webmanifest', + } + +if settings.FAVICON_PACKAGE and os.path.isdir(settings.FAVICON_PACKAGE): + logofinder_results.update({ + os.path.join('favicon_package', file): os.path.join(settings.FAVICON_PACKAGE, file) + for file in favicon_package_files + }) + class LogoFinder(BaseFinder): def find(self, path, all=False): @@ -34,4 +51,8 @@ class LogoFinder(BaseFinder): storage = FileSystemStorage(location=basedir) storage.prefix = prefix result.append((filename, storage)) + if settings.FAVICON_PACKAGE and os.path.isdir(settings.FAVICON_PACKAGE): + storage = FileSystemStorage(location=settings.FAVICON_PACKAGE) + storage.prefix = 'favicon_package' + result += [(filename, storage) for filename in favicon_package_files] return result diff --git a/src/c3nav/site/templates/site/base.html b/src/c3nav/site/templates/site/base.html index 99685918..20e8089d 100644 --- a/src/c3nav/site/templates/site/base.html +++ b/src/c3nav/site/templates/site/base.html @@ -10,6 +10,17 @@ {% if favicon %} {% endif %} + {% if favicon_package %} + + + + + + + + {% endif %} + + {% compress css %}