__filename__ = "webapp_column_left.py" __author__ = "Bob Mottram" __license__ = "AGPL3+" __version__ = "1.1.0" __maintainer__ = "Bob Mottram" __email__ = "bob@freedombone.net" __status__ = "Production" import os from shutil import copyfile from utils import getConfigParam from utils import getNicknameFromActor from posts import isEditor from webapp_utils import htmlPostSeparator from webapp_utils import getLeftImageFile from webapp_utils import getImageFile from webapp_utils import headerButtonsFrontScreen from webapp_utils import getIconsWebPath from webapp_utils import htmlHeaderWithExternalStyle from webapp_utils import htmlFooter from webapp_utils import getBannerFile def getLeftColumnContent(baseDir: str, nickname: str, domainFull: str, httpPrefix: str, translate: {}, iconsPath: str, editor: bool, showBackButton: bool, timelinePath: str, rssIconAtTop: bool, showHeaderImage: bool, frontPage: bool) -> str: """Returns html content for the left column """ htmlStr = '' separatorStr = htmlPostSeparator(baseDir, 'left') domain = domainFull if ':' in domain: domain = domain.split(':') editImageClass = '' if showHeaderImage: leftImageFile, leftColumnImageFilename = \ getLeftImageFile(baseDir, nickname, domain) if not os.path.isfile(leftColumnImageFilename): theme = getConfigParam(baseDir, 'theme').lower() if theme == 'default': theme = '' else: theme = '_' + theme themeLeftImageFile, themeLeftColumnImageFilename = \ getImageFile(baseDir, 'left_col_image', baseDir + '/img', nickname, domain) if os.path.isfile(themeLeftColumnImageFilename): leftColumnImageFilename = \ baseDir + '/accounts/' + \ nickname + '@' + domain + '/' + themeLeftImageFile copyfile(themeLeftColumnImageFilename, leftColumnImageFilename) leftImageFile = themeLeftImageFile # show the image at the top of the column editImageClass = 'leftColEdit' if os.path.isfile(leftColumnImageFilename): editImageClass = 'leftColEditImage' htmlStr += \ '\n
' + \ translate['About this Instance'] + '
' htmlStr += \ '' + \ translate['Terms of Service'] + '
' linksFilename = baseDir + '/accounts/links.txt' linksFileContainsEntries = False if os.path.isfile(linksFilename): linksList = None with open(linksFilename, "r") as f: linksList = f.readlines() if linksList: for lineStr in linksList: if ' ' not in lineStr: if '#' not in lineStr: if '*' not in lineStr: continue lineStr = lineStr.strip() words = lineStr.split(' ') # get the link linkStr = None for word in words: if word == '#': continue if word == '*': continue if '://' in word: linkStr = word break if linkStr: lineStr = lineStr.replace(linkStr, '').strip() # avoid any dubious scripts being added if '<' not in lineStr: # remove trailing comma if present if lineStr.endswith(','): lineStr = lineStr[:len(lineStr)-1] # add link to the returned html htmlStr += \ ' \n' linksFileContainsEntries = True else: if lineStr.startswith('#') or lineStr.startswith('*'): lineStr = lineStr[1:].strip() htmlStr += separatorStr htmlStr += \ '' + lineStr + '
\n' linksFileContainsEntries = True if linksFileContainsEntries and not rssIconAtTop: htmlStr += '