Setting custom theme values

main
Bob Mottram 2021-12-05 11:03:25 +00:00
parent ca4b116f25
commit 37be686862
2 changed files with 46 additions and 20 deletions

View File

@ -317,7 +317,7 @@ from cache import storePersonInCache
from cache import getPersonFromCache from cache import getPersonFromCache
from cache import getPersonPubKey from cache import getPersonPubKey
from httpsig import verifyPostHeaders from httpsig import verifyPostHeaders
# from theme import setThemeFromDesigner from theme import setThemeFromDesigner
from theme import scanThemesForScripts from theme import scanThemesForScripts
from theme import importTheme from theme import importTheme
from theme import exportTheme from theme import exportTheme
@ -2118,7 +2118,8 @@ class PubServer(BaseHTTPRequestHandler):
onionDomain: str, i2pDomain: str, onionDomain: str, i2pDomain: str,
debug: bool, accessKeys: {}, debug: bool, accessKeys: {},
defaultTimeline: str, themeName: str, defaultTimeline: str, themeName: str,
allowLocalNetworkAccess: bool) -> None: allowLocalNetworkAccess: bool,
systemLanguage: str) -> None:
"""Receive POST from webapp_themeDesigner """Receive POST from webapp_themeDesigner
""" """
usersPath = '/users/' + nickname usersPath = '/users/' + nickname
@ -2174,14 +2175,16 @@ class PubServer(BaseHTTPRequestHandler):
print('themeDesigner3: ' + str(fields)) print('themeDesigner3: ' + str(fields))
# get the parameters from the theme designer screen # get the parameters from the theme designer screen
# themeDesignerParams = {} themeDesignerParams = {}
for variableName, key in fields.items(): for variableName, key in fields.items():
if variableName.startswith('themeSetting_'): if variableName.startswith('themeSetting_'):
variableName = variableName.replace('themeSetting_', '') variableName = variableName.replace('themeSetting_', '')
# themeDesignerParams[variableName] = key themeDesignerParams[variableName] = key
# setThemeFromDesigner(baseDir, themeName, themeDesignerParams, setThemeFromDesigner(baseDir, themeName, domain,
# allowLocalNetworkAccess) themeDesignerParams,
allowLocalNetworkAccess,
systemLanguage)
# redirect back from theme designer screen # redirect back from theme designer screen
if callingDomain.endswith('.onion') and onionDomain: if callingDomain.endswith('.onion') and onionDomain:
@ -17867,7 +17870,8 @@ class PubServer(BaseHTTPRequestHandler):
accessKeys, accessKeys,
self.server.defaultTimeline, self.server.defaultTimeline,
self.server.themeName, self.server.themeName,
self.server.allowLocalNetworkAccess) self.server.allowLocalNetworkAccess,
self.server.systemLanguage)
return return
# update the shared item federation token for the calling domain # update the shared item federation token for the calling domain

View File

@ -492,17 +492,14 @@ def _setCustomFont(baseDir: str):
cssfile.write(css) cssfile.write(css)
def setThemeFromDesigner(baseDir: str, themeName: str, def setThemeFromDesigner(baseDir: str, themeName: str, domain: str,
themeParams: {}, themeParams: {},
allowLocalNetworkAccess: bool): allowLocalNetworkAccess: bool,
bgParams = { systemLanguage: str):
"login": "jpg", customThemeFilename = baseDir + '/accounts/theme.json'
"follow": "jpg", saveJson(themeParams, customThemeFilename)
"options": "jpg", setTheme(baseDir, themeName, domain,
"search": "jpg" allowLocalNetworkAccess, systemLanguage)
}
_setThemeFromDict(baseDir, themeName, themeParams, bgParams,
allowLocalNetworkAccess)
def _readVariablesFile(baseDir: str, themeName: str, def _readVariablesFile(baseDir: str, themeName: str,
@ -513,9 +510,23 @@ def _readVariablesFile(baseDir: str, themeName: str,
themeParams = loadJson(variablesFile, 0) themeParams = loadJson(variablesFile, 0)
if not themeParams: if not themeParams:
return return
setThemeFromDesigner(baseDir, themeName,
themeParams, # set custom theme parameters
allowLocalNetworkAccess) customVariablesFile = baseDir + '/accounts/theme.json'
if os.path.isfile(customVariablesFile):
customThemeParams = loadJson(customVariablesFile, 0)
if customThemeParams:
for variableName, value in customThemeParams.items():
themeParams[variableName] = value
bgParams = {
"login": "jpg",
"follow": "jpg",
"options": "jpg",
"search": "jpg"
}
_setThemeFromDict(baseDir, themeName, themeParams, bgParams,
allowLocalNetworkAccess)
def _setThemeDefault(baseDir: str, allowLocalNetworkAccess: bool): def _setThemeDefault(baseDir: str, allowLocalNetworkAccess: bool):
@ -797,6 +808,17 @@ def setTheme(baseDir: str, name: str, domain: str,
result = False result = False
prevThemeName = getTheme(baseDir) prevThemeName = getTheme(baseDir)
# if the theme has changed then remove any custom settings
if prevThemeName != name:
customVariablesFile = baseDir + '/accounts/theme.json'
if os.path.isfile(customVariablesFile):
print('Removing theme designer settings')
try:
os.remove(customVariablesFile)
except OSError:
print('EX: removing theme designer settings')
_removeTheme(baseDir) _removeTheme(baseDir)
themes = getThemesList(baseDir) themes = getThemesList(baseDir)