From 37be686862b73fdda80d37039115738cd2a41b2a Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sun, 5 Dec 2021 11:03:25 +0000 Subject: [PATCH] Setting custom theme values --- daemon.py | 18 +++++++++++------- theme.py | 48 +++++++++++++++++++++++++++++++++++------------- 2 files changed, 46 insertions(+), 20 deletions(-) diff --git a/daemon.py b/daemon.py index a8a1f7f4a..ad7a43966 100644 --- a/daemon.py +++ b/daemon.py @@ -317,7 +317,7 @@ from cache import storePersonInCache from cache import getPersonFromCache from cache import getPersonPubKey from httpsig import verifyPostHeaders -# from theme import setThemeFromDesigner +from theme import setThemeFromDesigner from theme import scanThemesForScripts from theme import importTheme from theme import exportTheme @@ -2118,7 +2118,8 @@ class PubServer(BaseHTTPRequestHandler): onionDomain: str, i2pDomain: str, debug: bool, accessKeys: {}, defaultTimeline: str, themeName: str, - allowLocalNetworkAccess: bool) -> None: + allowLocalNetworkAccess: bool, + systemLanguage: str) -> None: """Receive POST from webapp_themeDesigner """ usersPath = '/users/' + nickname @@ -2174,14 +2175,16 @@ class PubServer(BaseHTTPRequestHandler): print('themeDesigner3: ' + str(fields)) # get the parameters from the theme designer screen - # themeDesignerParams = {} + themeDesignerParams = {} for variableName, key in fields.items(): if variableName.startswith('themeSetting_'): variableName = variableName.replace('themeSetting_', '') - # themeDesignerParams[variableName] = key + themeDesignerParams[variableName] = key - # setThemeFromDesigner(baseDir, themeName, themeDesignerParams, - # allowLocalNetworkAccess) + setThemeFromDesigner(baseDir, themeName, domain, + themeDesignerParams, + allowLocalNetworkAccess, + systemLanguage) # redirect back from theme designer screen if callingDomain.endswith('.onion') and onionDomain: @@ -17867,7 +17870,8 @@ class PubServer(BaseHTTPRequestHandler): accessKeys, self.server.defaultTimeline, self.server.themeName, - self.server.allowLocalNetworkAccess) + self.server.allowLocalNetworkAccess, + self.server.systemLanguage) return # update the shared item federation token for the calling domain diff --git a/theme.py b/theme.py index 9a89e6356..9f5d2f31c 100644 --- a/theme.py +++ b/theme.py @@ -492,17 +492,14 @@ def _setCustomFont(baseDir: str): cssfile.write(css) -def setThemeFromDesigner(baseDir: str, themeName: str, +def setThemeFromDesigner(baseDir: str, themeName: str, domain: str, themeParams: {}, - allowLocalNetworkAccess: bool): - bgParams = { - "login": "jpg", - "follow": "jpg", - "options": "jpg", - "search": "jpg" - } - _setThemeFromDict(baseDir, themeName, themeParams, bgParams, - allowLocalNetworkAccess) + allowLocalNetworkAccess: bool, + systemLanguage: str): + customThemeFilename = baseDir + '/accounts/theme.json' + saveJson(themeParams, customThemeFilename) + setTheme(baseDir, themeName, domain, + allowLocalNetworkAccess, systemLanguage) def _readVariablesFile(baseDir: str, themeName: str, @@ -513,9 +510,23 @@ def _readVariablesFile(baseDir: str, themeName: str, themeParams = loadJson(variablesFile, 0) if not themeParams: return - setThemeFromDesigner(baseDir, themeName, - themeParams, - allowLocalNetworkAccess) + + # set custom theme parameters + 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): @@ -797,6 +808,17 @@ def setTheme(baseDir: str, name: str, domain: str, result = False 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) themes = getThemesList(baseDir)