diff --git a/daemon.py b/daemon.py index 391d0cca1..ac6958631 100644 --- a/daemon.py +++ b/daemon.py @@ -16263,7 +16263,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.http_prefix, self.server.domain_full, self.server.system_language, - False, ua_str).encode('utf-8') + False, ua_str, + self.server.theme_name).encode('utf-8') msglen = len(msg) self._logout_headers('text/html', msglen, calling_domain) self._write(msg) @@ -18029,7 +18030,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.http_prefix, self.server.domain_full, self.server.system_language, - True, ua_str).encode('utf-8') + True, ua_str, + self.server.theme_name).encode('utf-8') msglen = len(msg) self._login_headers('text/html', msglen, calling_domain) self._write(msg) diff --git a/fonts/AtkinsonHyperlegible-Bold.ttf b/fonts/AtkinsonHyperlegible-Bold.ttf new file mode 100644 index 000000000..c72b4889f Binary files /dev/null and b/fonts/AtkinsonHyperlegible-Bold.ttf differ diff --git a/fonts/LICENSES b/fonts/LICENSES index 4313e4d47..5a0dcbe9b 100644 --- a/fonts/LICENSES +++ b/fonts/LICENSES @@ -25,6 +25,7 @@ Orbitron is under OFL and came from CCC Rc3 style guide https://styleguide.rc3.w RailModel is GPL. See https://www.fontspace.com/rail-model-font-f10741 Rainyhearts in public domain. By Camellina tr.camellina@gmail.com Solidaric by Bob Mottram is under AGPL +StonehengeRegular is by unknown author, but freely licensed. See https://www.fontmirror.com/stonehenge SubZER0 is under GPL. See http://www.free-fonts-download.com/Techno/subzer0-font SundownerRegular is public domain. See https://www.fontspace.com/sundowner-font-f40837 Warenhaus-Standard is public domain. See https://fontlibrary.org/en/font/warenhaus-typenhebel diff --git a/fonts/StonehengeRegular.ttf b/fonts/StonehengeRegular.ttf new file mode 100644 index 000000000..42dca65b6 Binary files /dev/null and b/fonts/StonehengeRegular.ttf differ diff --git a/theme/blue/login.png b/theme/blue/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/blue/login.png differ diff --git a/theme/debian/login.png b/theme/debian/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/debian/login.png differ diff --git a/theme/default/login.png b/theme/default/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/default/login.png differ diff --git a/theme/hacker/login.png b/theme/hacker/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/hacker/login.png differ diff --git a/theme/henge/banner.png b/theme/henge/banner.png index 4a221d30f..6558c927f 100644 Binary files a/theme/henge/banner.png and b/theme/henge/banner.png differ diff --git a/theme/henge/image.png b/theme/henge/image.png index 51992123b..fc4e08ae2 100644 Binary files a/theme/henge/image.png and b/theme/henge/image.png differ diff --git a/theme/henge/left_col_image.png b/theme/henge/left_col_image.png deleted file mode 100644 index c1ccfbfad..000000000 Binary files a/theme/henge/left_col_image.png and /dev/null differ diff --git a/theme/henge/login.png b/theme/henge/login.png new file mode 100644 index 000000000..e11fc339b Binary files /dev/null and b/theme/henge/login.png differ diff --git a/theme/henge/login_background.jpg b/theme/henge/login_background.jpg index bd74705cd..fdd9a20db 100644 Binary files a/theme/henge/login_background.jpg and b/theme/henge/login_background.jpg differ diff --git a/theme/henge/options_background.jpg b/theme/henge/options_background.jpg deleted file mode 100644 index 1d6649a3f..000000000 Binary files a/theme/henge/options_background.jpg and /dev/null differ diff --git a/theme/henge/right_col_image.png b/theme/henge/right_col_image.png deleted file mode 100644 index 203c911b7..000000000 Binary files a/theme/henge/right_col_image.png and /dev/null differ diff --git a/theme/henge/search_banner.png b/theme/henge/search_banner.png index 76bcdc29a..10d313f18 100644 Binary files a/theme/henge/search_banner.png and b/theme/henge/search_banner.png differ diff --git a/theme/henge/theme.json b/theme/henge/theme.json index 17bbc2291..c3e8319c1 100644 --- a/theme/henge/theme.json +++ b/theme/henge/theme.json @@ -12,11 +12,11 @@ "post-separator-margin-bottom": "10px", "time-color": "grey", "event-color": "white", - "login-bg-color": "#567726", + "login-bg-color": "#362e31", "welcome-bg-color": "#ccc", - "login-fg-color": "black", + "login-fg-color": "white", "welcome-fg-color": "black", - "options-bg-color": "black", + "options-bg-color": "#383335", "newswire-publish-icon": "True", "full-width-timeline-buttons": "False", "icons-as-buttons": "False", @@ -29,6 +29,8 @@ "font-page-dash-mobile": "32px", "font-size-button-mobile": "26px", "font-size-pageslist": "32px", + "font-size-links": "20px", + "font-size-newswire": "20px", "font-size": "32px", "font-size2": "26px", "font-size3": "40px", @@ -38,7 +40,7 @@ "post-bg-color": "#383335", "timeline-posts-background-color": "#383335", "header-bg-color": "#383335", - "column-left-color": "#383335", + "column-left-color": "#42383c", "text-entry-background": "#383335", "link-bg-color": "#383335", "main-link-color": "white", @@ -77,13 +79,15 @@ "lines-color": "#c5d2b9", "day-number": "#c5d2b9", "day-number2": "#ccc", - "event-background": "#555", - "event-background-private": "#999", + "event-background": "#222", + "event-background-private": "#111", "timeline-border-radius": "20px", "image-corners": "8%", "quote-right-margin": "0.1em", - "header-font": "'bgrove'", - "*font-family": "'bgrove'", - "*src": "url('fonts/bgrove.woff2') format('woff2')", + "*font-family": "'Hyperlegible'", + "*src": "url('fonts/Atkinson-Hyperlegible-Regular.woff2') format('woff2')", + "header-font": "'HyperlegibleBold'", + "**font-family": "'HyperlegibleBold'", + "**src": "url('fonts/Atkinson-Hyperlegible-Bold.woff2') format('woff2')", "reply-icon-direction": "-1" } diff --git a/theme/indymediaclassic/login.png b/theme/indymediaclassic/login.png new file mode 100644 index 000000000..1e8cba0d6 Binary files /dev/null and b/theme/indymediaclassic/login.png differ diff --git a/theme/indymediaclassic/theme.json b/theme/indymediaclassic/theme.json index f01d4b82e..4fc35b72c 100644 --- a/theme/indymediaclassic/theme.json +++ b/theme/indymediaclassic/theme.json @@ -40,6 +40,7 @@ "font-size5": "22px", "main-bg-color": "black", "login-bg-color": "black", + "login-logo-width": "30vw", "welcome-bg-color": "black", "options-bg-color": "black", "post-bg-color": "black", diff --git a/theme/indymediamodern/login.png b/theme/indymediamodern/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/indymediamodern/login.png differ diff --git a/theme/lcd/login.png b/theme/lcd/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/lcd/login.png differ diff --git a/theme/light/login.png b/theme/light/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/light/login.png differ diff --git a/theme/night/login.png b/theme/night/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/night/login.png differ diff --git a/theme/pixel/login.png b/theme/pixel/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/pixel/login.png differ diff --git a/theme/purple/login.png b/theme/purple/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/purple/login.png differ diff --git a/theme/rc3/login.png b/theme/rc3/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/rc3/login.png differ diff --git a/theme/solidaric/login.png b/theme/solidaric/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/solidaric/login.png differ diff --git a/theme/starlight/login.png b/theme/starlight/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/starlight/login.png differ diff --git a/theme/zen/login.png b/theme/zen/login.png new file mode 100644 index 000000000..f0294b53f Binary files /dev/null and b/theme/zen/login.png differ diff --git a/webapp_login.py b/webapp_login.py index fe0057377..6fd86dac8 100644 --- a/webapp_login.py +++ b/webapp_login.py @@ -9,7 +9,9 @@ __module_group__ = "Web Interface" import os import time +import filecmp from shutil import copyfile +from utils import get_image_extensions from utils import get_config_param from utils import no_of_accounts from utils import get_nickname_validation_pattern @@ -61,43 +63,46 @@ def html_login(translate: {}, http_prefix: str, domain: str, system_language: str, autocomplete: bool, - ua_str: str) -> str: + ua_str: str, + theme_name: str) -> str: """Shows the login screen """ accounts = no_of_accounts(base_dir) - - login_image = 'login.png' + extensions = get_image_extensions() login_image_filename = None - if os.path.isfile(base_dir + '/accounts/' + login_image): - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.jpg'): - login_image = 'login.jpg' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.jpeg'): - login_image = 'login.jpeg' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.gif'): - login_image = 'login.gif' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.svg'): - login_image = 'login.svg' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.webp'): - login_image = 'login.webp' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.avif'): - login_image = 'login.avif' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.heic'): - login_image = 'login.heic' - login_image_filename = base_dir + '/accounts/' + login_image - elif os.path.isfile(base_dir + '/accounts/login.jxl'): - login_image = 'login.jxl' - login_image_filename = base_dir + '/accounts/' + login_image + # does a login image exist for the current theme? + for ext in extensions: + login_image = 'login.' + ext + theme_image = \ + base_dir + '/theme/' + theme_name + \ + '/' + login_image + if os.path.isfile(theme_image): + login_image_filename = \ + base_dir + '/accounts/' + login_image + if os.path.isfile(login_image_filename): + if not filecmp.cmp(theme_image, + login_image_filename): + copyfile(theme_image, login_image_filename) + else: + copyfile(theme_image, login_image_filename) + break + + # does a custom login image exist? if not login_image_filename: + for ext in extensions: + login_image = 'login.' + ext + image_filename = base_dir + '/accounts/' + login_image + if os.path.isfile(image_filename): + login_image_filename = image_filename + break + + # no login image found, so use the default + if not login_image_filename: + login_image = 'login.png' login_image_filename = base_dir + '/accounts/' + login_image - copyfile(base_dir + '/img/login.png', login_image_filename) + source_image = base_dir + '/img/login.png' + copyfile(source_image, login_image_filename) text_mode_logo = get_text_mode_logo(base_dir) text_mode_logo_html = html_keyboard_navigation(text_mode_logo, {}, {})