Merge branch 'main' of gitlab.com:bashrc2/epicyon
|
@ -16263,7 +16263,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.http_prefix,
|
self.server.http_prefix,
|
||||||
self.server.domain_full,
|
self.server.domain_full,
|
||||||
self.server.system_language,
|
self.server.system_language,
|
||||||
False, ua_str).encode('utf-8')
|
False, ua_str,
|
||||||
|
self.server.theme_name).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._logout_headers('text/html', msglen, calling_domain)
|
self._logout_headers('text/html', msglen, calling_domain)
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
|
@ -18029,7 +18030,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.http_prefix,
|
self.server.http_prefix,
|
||||||
self.server.domain_full,
|
self.server.domain_full,
|
||||||
self.server.system_language,
|
self.server.system_language,
|
||||||
True, ua_str).encode('utf-8')
|
True, ua_str,
|
||||||
|
self.server.theme_name).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._login_headers('text/html', msglen, calling_domain)
|
self._login_headers('text/html', msglen, calling_domain)
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
|
|
|
@ -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
|
RailModel is GPL. See https://www.fontspace.com/rail-model-font-f10741
|
||||||
Rainyhearts in public domain. By Camellina tr.camellina@gmail.com
|
Rainyhearts in public domain. By Camellina tr.camellina@gmail.com
|
||||||
Solidaric by Bob Mottram is under AGPL
|
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
|
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
|
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
|
Warenhaus-Standard is public domain. See https://fontlibrary.org/en/font/warenhaus-typenhebel
|
||||||
|
|
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 284 KiB After Width: | Height: | Size: 211 KiB |
Before Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 118 KiB |
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 208 KiB |
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 197 KiB After Width: | Height: | Size: 110 KiB |
|
@ -12,11 +12,11 @@
|
||||||
"post-separator-margin-bottom": "10px",
|
"post-separator-margin-bottom": "10px",
|
||||||
"time-color": "grey",
|
"time-color": "grey",
|
||||||
"event-color": "white",
|
"event-color": "white",
|
||||||
"login-bg-color": "#567726",
|
"login-bg-color": "#362e31",
|
||||||
"welcome-bg-color": "#ccc",
|
"welcome-bg-color": "#ccc",
|
||||||
"login-fg-color": "black",
|
"login-fg-color": "white",
|
||||||
"welcome-fg-color": "black",
|
"welcome-fg-color": "black",
|
||||||
"options-bg-color": "black",
|
"options-bg-color": "#383335",
|
||||||
"newswire-publish-icon": "True",
|
"newswire-publish-icon": "True",
|
||||||
"full-width-timeline-buttons": "False",
|
"full-width-timeline-buttons": "False",
|
||||||
"icons-as-buttons": "False",
|
"icons-as-buttons": "False",
|
||||||
|
@ -29,6 +29,8 @@
|
||||||
"font-page-dash-mobile": "32px",
|
"font-page-dash-mobile": "32px",
|
||||||
"font-size-button-mobile": "26px",
|
"font-size-button-mobile": "26px",
|
||||||
"font-size-pageslist": "32px",
|
"font-size-pageslist": "32px",
|
||||||
|
"font-size-links": "20px",
|
||||||
|
"font-size-newswire": "20px",
|
||||||
"font-size": "32px",
|
"font-size": "32px",
|
||||||
"font-size2": "26px",
|
"font-size2": "26px",
|
||||||
"font-size3": "40px",
|
"font-size3": "40px",
|
||||||
|
@ -38,7 +40,7 @@
|
||||||
"post-bg-color": "#383335",
|
"post-bg-color": "#383335",
|
||||||
"timeline-posts-background-color": "#383335",
|
"timeline-posts-background-color": "#383335",
|
||||||
"header-bg-color": "#383335",
|
"header-bg-color": "#383335",
|
||||||
"column-left-color": "#383335",
|
"column-left-color": "#42383c",
|
||||||
"text-entry-background": "#383335",
|
"text-entry-background": "#383335",
|
||||||
"link-bg-color": "#383335",
|
"link-bg-color": "#383335",
|
||||||
"main-link-color": "white",
|
"main-link-color": "white",
|
||||||
|
@ -77,13 +79,15 @@
|
||||||
"lines-color": "#c5d2b9",
|
"lines-color": "#c5d2b9",
|
||||||
"day-number": "#c5d2b9",
|
"day-number": "#c5d2b9",
|
||||||
"day-number2": "#ccc",
|
"day-number2": "#ccc",
|
||||||
"event-background": "#555",
|
"event-background": "#222",
|
||||||
"event-background-private": "#999",
|
"event-background-private": "#111",
|
||||||
"timeline-border-radius": "20px",
|
"timeline-border-radius": "20px",
|
||||||
"image-corners": "8%",
|
"image-corners": "8%",
|
||||||
"quote-right-margin": "0.1em",
|
"quote-right-margin": "0.1em",
|
||||||
"header-font": "'bgrove'",
|
"*font-family": "'Hyperlegible'",
|
||||||
"*font-family": "'bgrove'",
|
"*src": "url('fonts/Atkinson-Hyperlegible-Regular.woff2') format('woff2')",
|
||||||
"*src": "url('fonts/bgrove.woff2') format('woff2')",
|
"header-font": "'HyperlegibleBold'",
|
||||||
|
"**font-family": "'HyperlegibleBold'",
|
||||||
|
"**src": "url('fonts/Atkinson-Hyperlegible-Bold.woff2') format('woff2')",
|
||||||
"reply-icon-direction": "-1"
|
"reply-icon-direction": "-1"
|
||||||
}
|
}
|
||||||
|
|
After Width: | Height: | Size: 14 KiB |
|
@ -40,6 +40,7 @@
|
||||||
"font-size5": "22px",
|
"font-size5": "22px",
|
||||||
"main-bg-color": "black",
|
"main-bg-color": "black",
|
||||||
"login-bg-color": "black",
|
"login-bg-color": "black",
|
||||||
|
"login-logo-width": "30vw",
|
||||||
"welcome-bg-color": "black",
|
"welcome-bg-color": "black",
|
||||||
"options-bg-color": "black",
|
"options-bg-color": "black",
|
||||||
"post-bg-color": "black",
|
"post-bg-color": "black",
|
||||||
|
|
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
|
@ -9,7 +9,9 @@ __module_group__ = "Web Interface"
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import time
|
import time
|
||||||
|
import filecmp
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
|
from utils import get_image_extensions
|
||||||
from utils import get_config_param
|
from utils import get_config_param
|
||||||
from utils import no_of_accounts
|
from utils import no_of_accounts
|
||||||
from utils import get_nickname_validation_pattern
|
from utils import get_nickname_validation_pattern
|
||||||
|
@ -61,43 +63,46 @@ def html_login(translate: {},
|
||||||
http_prefix: str, domain: str,
|
http_prefix: str, domain: str,
|
||||||
system_language: str,
|
system_language: str,
|
||||||
autocomplete: bool,
|
autocomplete: bool,
|
||||||
ua_str: str) -> str:
|
ua_str: str,
|
||||||
|
theme_name: str) -> str:
|
||||||
"""Shows the login screen
|
"""Shows the login screen
|
||||||
"""
|
"""
|
||||||
accounts = no_of_accounts(base_dir)
|
accounts = no_of_accounts(base_dir)
|
||||||
|
extensions = get_image_extensions()
|
||||||
login_image = 'login.png'
|
|
||||||
login_image_filename = None
|
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:
|
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
|
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 = get_text_mode_logo(base_dir)
|
||||||
text_mode_logo_html = html_keyboard_navigation(text_mode_logo, {}, {})
|
text_mode_logo_html = html_keyboard_navigation(text_mode_logo, {}, {})
|
||||||
|
|