Multi CSS; Alter HTML generation

alt-html-css
Admin 2020-12-03 11:41:10 +00:00
parent 5d34e0d4be
commit 2171fd07a1
3 changed files with 77 additions and 15 deletions

View File

@ -8,13 +8,16 @@ __status__ = "Production"
import os
from utils import isPublicPostFromUrl
from utils import getConfigParam
from utils import getNicknameFromActor
from utils import getDomainFromActor
from utils import getImageFormats
from utils import getMediaFormats
from webapp_utils import getBannerFile
from webapp_utils import htmlHeaderWithExternalStyle
from webapp_utils import htmlHeaderWithExternalStyles
from webapp_utils import htmlFooter
from webapp_headerbuttons import headerButtonsTimeline, headerNewsTabs
from posts import isModerator
def _htmlFollowingDataList(baseDir: str, nickname: str,
@ -250,9 +253,21 @@ def htmlNewPost(cssCache: {}, mediaInstance: bool, translate: {},
newPostText = \
'<p>' + file.read() + '</p>\n'
cssFilename = baseDir + '/epicyon-profile.css'
cssFiles = []
cssFiles.append(baseDir + '/epicyon-profile.css')
if os.path.isfile(baseDir + '/epicyon.css'):
cssFilename = baseDir + '/epicyon.css'
cssFiles[0] = baseDir + '/epicyon.css'
# TODO: Clean up and remove this override
cssFiles[0] = 'base.css'
# Get theme-specific css if exists - must be named '<theme-name>.css'
themeName = getConfigParam(baseDir, 'theme')
themePath = f'{baseDir}/theme/{themeName}.css'
if os.path.isfile(themePath):
cssFiles.append('theme/' + themeName + '.css')
if '?' in path:
path = path.split('?')[0]
@ -555,16 +570,39 @@ def htmlNewPost(cssCache: {}, mediaInstance: bool, translate: {},
dateAndLocation += '<input type="text" name="category">\n'
dateAndLocation += '</div>\n'
newPostForm = htmlHeaderWithExternalStyle(cssFilename)
newPostForm = htmlHeaderWithExternalStyles(cssFiles)
newPostForm += \
'<header>\n' + \
'<a href="/users/' + nickname + '/' + defaultTimeline + '" title="' + \
translate['Switch to timeline view'] + '" alt="' + \
translate['Switch to timeline view'] + '">\n'
newPostForm += '<img loading="lazy" class="timeline-banner" src="' + \
'/users/' + nickname + '/' + bannerFile + '" /></a>\n' + \
'</header>\n'
usersPath = '/users/' + nickname
newPostForm += '<div class="header">\n'
if not defaultTimeline == 'tlfeatures':
newPostForm += (f"\t<a class=\"timeline-banner hidden-text\" href=\"/users/{nickname}/{defaultTimeline}\" "
f"style=\"background-image: url('{usersPath}/{bannerFile}');\">"
f"{translate['Switch to timeline view']}</a>\n")
else:
# TODO: News instances should ignore personalised banners
# Currently uses the 'news' actor banner - as it remains unchanged
newPostForm += (f"\t<a class=\"timeline-banner hidden-text\" href=\"/users/{nickname}/tlfeatures\">"
f"{translate['Features']}</a>\n"
f"\t<div class=\"title\">\n"
f"\t\t<span>#IndymediaBack</span>\n"
f"\t</div>\n")
# Certain Epciyon pages should only be accessible via the 'User' page for News instances
# TODO: Better solution - Currently this is a duplicate of list created in 'webapp_timeline.py'
userPages = ['inbox', 'outbox', 'dm', 'tlreplies', 'tlblogs', 'tlmedia', 'tlshares', \
'tlsaves', 'tlevents', 'tlbookmarks', 'moderation', 'search', \
'followers', 'newfollowers', 'newdm', 'newpost', 'newblog', 'newevent']
# Full row "navbar"
if defaultTimeline == 'tlfeatures':
# Show "tab" links instead of standard "buttons"
# NOTE: "inbox" is used as a generic boxName, as with 'User' pages
newPostForm += headerNewsTabs('inbox', translate, usersPath, baseDir, userPages)
# Close banner div
newPostForm += '</div>\n'
mentionsStr = ''
for m in mentions:
@ -638,6 +676,24 @@ def htmlNewPost(cssCache: {}, mediaInstance: bool, translate: {},
# reporting a post to moderator
mentionsStr = 'Re: ' + reportUrl + '\n\n' + mentionsStr
# TODO: Place form inside a "page" div for 'News' instances
newPostForm += '<div class="page">\n'
moderator = isModerator(baseDir, nickname)
# TODO: Add "User" links
if defaultTimeline == 'tlfeatures':
# NOTE: It appears that 'endpoint' is effectively 'boxName'
newPostForm += \
headerButtonsTimeline(defaultTimeline, endpoint, pageNumber,
translate, usersPath,
False, moderator,
False,
baseDir, nickname,
domain, None,
True, userPages)
newPostForm += '<div class="section main">\n'
newPostForm += \
'<form enctype="multipart/form-data" method="POST" ' + \
'accept-charset="UTF-8" action="' + \
@ -742,6 +798,9 @@ def htmlNewPost(cssCache: {}, mediaInstance: bool, translate: {},
newPostForm += ' </div>\n'
newPostForm += '</form>\n'
# Close "section" and "page" div
newPostForm += '</div><!-- div main -->\n</div><!-- div page -->\n'
if not reportUrl:
newPostForm = \
newPostForm.replace('<body>', '<body onload="focusOnMessage()">')

View File

@ -352,9 +352,10 @@ def headerButtonsTimeline(defaultTimeline: str,
navIconStr += '\t\t\t</ul>\n\t\t</div>\n'
# benchmark 5
timeDiff = int((time.time() - timelineStartTime) * 1000)
if timeDiff > 100:
print('TIMELINE TIMING ' + boxName + ' 5 = ' + str(timeDiff))
if timelineStartTime:
timeDiff = int((time.time() - timelineStartTime) * 1000)
if timeDiff > 100:
print('TIMELINE TIMING ' + boxName + ' 5 = ' + str(timeDiff))
# Compile HTML parts

View File

@ -195,6 +195,8 @@ def htmlTimeline(cssCache: {}, defaultTimeline: str,
# Close banner div
tlStr += '</div>\n'
# TODO: Should probably use a more generic class, easier to re-use and help simplify CSS
# NOTE: Related also to class "page" added to 'webapp_create_post.py'
# start the timeline
tlStr += '<div class="timeline">\n'