mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of ssh://code.freedombone.net:2222/bashrc/epicyon
commit
0cefcf831e
|
|
@ -93,6 +93,258 @@ def _getHelpForTimeline(baseDir: str, boxName: str) -> str:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
|
def _htmlTimelineNewPost(manuallyApproveFollowers: bool,
|
||||||
|
boxName: str, iconsAsButtons: bool,
|
||||||
|
usersPath: str, translate: {}) -> str:
|
||||||
|
"""Returns html for the new post button
|
||||||
|
"""
|
||||||
|
newPostButtonStr = ''
|
||||||
|
if boxName == 'dm':
|
||||||
|
if not iconsAsButtons:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a class="imageAnchor" href="' + usersPath + \
|
||||||
|
'/newdm?nodropdown"><img loading="lazy" src="/' + \
|
||||||
|
'icons/newpost.png" title="' + \
|
||||||
|
translate['Create a new DM'] + \
|
||||||
|
'" alt="| ' + translate['Create a new DM'] + \
|
||||||
|
'" class="timelineicon"/></a>\n'
|
||||||
|
else:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a href="' + usersPath + '/newdm?nodropdown">' + \
|
||||||
|
'<button class="button"><span>' + \
|
||||||
|
translate['Post'] + ' </span></button></a>'
|
||||||
|
elif (boxName == 'tlblogs' or
|
||||||
|
boxName == 'tlnews' or
|
||||||
|
boxName == 'tlfeatures'):
|
||||||
|
if not iconsAsButtons:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a class="imageAnchor" href="' + usersPath + \
|
||||||
|
'/newblog"><img loading="lazy" src="/' + \
|
||||||
|
'icons/newpost.png" title="' + \
|
||||||
|
translate['Create a new post'] + '" alt="| ' + \
|
||||||
|
translate['Create a new post'] + \
|
||||||
|
'" class="timelineicon"/></a>\n'
|
||||||
|
else:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a href="' + usersPath + '/newblog">' + \
|
||||||
|
'<button class="button"><span>' + \
|
||||||
|
translate['Post'] + '</span></button></a>'
|
||||||
|
elif boxName == 'tlevents':
|
||||||
|
if not iconsAsButtons:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a class="imageAnchor" href="' + usersPath + \
|
||||||
|
'/newevent?nodropdown"><img loading="lazy" src="/' + \
|
||||||
|
'icons/newpost.png" title="' + \
|
||||||
|
translate['Create a new event'] + '" alt="| ' + \
|
||||||
|
translate['Create a new event'] + \
|
||||||
|
'" class="timelineicon"/></a>\n'
|
||||||
|
else:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a href="' + usersPath + '/newevent?nodropdown">' + \
|
||||||
|
'<button class="button"><span>' + \
|
||||||
|
translate['Post'] + '</span></button></a>'
|
||||||
|
elif boxName == 'tlshares':
|
||||||
|
if not iconsAsButtons:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a class="imageAnchor" href="' + usersPath + \
|
||||||
|
'/newshare?nodropdown"><img loading="lazy" src="/' + \
|
||||||
|
'icons/newpost.png" title="' + \
|
||||||
|
translate['Create a new shared item'] + '" alt="| ' + \
|
||||||
|
translate['Create a new shared item'] + \
|
||||||
|
'" class="timelineicon"/></a>\n'
|
||||||
|
else:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a href="' + usersPath + '/newshare?nodropdown">' + \
|
||||||
|
'<button class="button"><span>' + \
|
||||||
|
translate['Post'] + '</span></button></a>'
|
||||||
|
else:
|
||||||
|
if not manuallyApproveFollowers:
|
||||||
|
if not iconsAsButtons:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a class="imageAnchor" href="' + usersPath + \
|
||||||
|
'/newpost"><img loading="lazy" src="/' + \
|
||||||
|
'icons/newpost.png" title="' + \
|
||||||
|
translate['Create a new post'] + '" alt="| ' + \
|
||||||
|
translate['Create a new post'] + \
|
||||||
|
'" class="timelineicon"/></a>\n'
|
||||||
|
else:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a href="' + usersPath + '/newpost">' + \
|
||||||
|
'<button class="button"><span>' + \
|
||||||
|
translate['Post'] + '</span></button></a>'
|
||||||
|
else:
|
||||||
|
if not iconsAsButtons:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a class="imageAnchor" href="' + usersPath + \
|
||||||
|
'/newfollowers"><img loading="lazy" src="/' + \
|
||||||
|
'icons/newpost.png" title="' + \
|
||||||
|
translate['Create a new post'] + \
|
||||||
|
'" alt="| ' + translate['Create a new post'] + \
|
||||||
|
'" class="timelineicon"/></a>\n'
|
||||||
|
else:
|
||||||
|
newPostButtonStr += \
|
||||||
|
'<a href="' + usersPath + '/newfollowers">' + \
|
||||||
|
'<button class="button"><span>' + \
|
||||||
|
translate['Post'] + '</span></button></a>'
|
||||||
|
return newPostButtonStr
|
||||||
|
|
||||||
|
|
||||||
|
def _htmlTimelineModerationButtons(moderator: bool, boxName: str,
|
||||||
|
nickname: str, moderationActionStr: str,
|
||||||
|
translate: {}) -> str:
|
||||||
|
"""Returns html for the moderation screen buttons
|
||||||
|
"""
|
||||||
|
tlStr = ''
|
||||||
|
if moderator and boxName == 'moderation':
|
||||||
|
tlStr += \
|
||||||
|
'<form id="modtimeline" method="POST" action="/users/' + \
|
||||||
|
nickname + '/moderationaction">'
|
||||||
|
tlStr += '<div class="container">\n'
|
||||||
|
idx = 'Nickname or URL. Block using *@domain or nickname@domain'
|
||||||
|
tlStr += \
|
||||||
|
' <b>' + translate[idx] + '</b><br>\n'
|
||||||
|
if moderationActionStr:
|
||||||
|
tlStr += ' <input type="text" ' + \
|
||||||
|
'name="moderationAction" value="' + \
|
||||||
|
moderationActionStr + '" autofocus><br>\n'
|
||||||
|
else:
|
||||||
|
tlStr += ' <input type="text" ' + \
|
||||||
|
'name="moderationAction" value="" autofocus><br>\n'
|
||||||
|
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Information about current blocks/suspensions'] + \
|
||||||
|
'" alt="' + \
|
||||||
|
translate['Information about current blocks/suspensions'] + \
|
||||||
|
' | " ' + \
|
||||||
|
'name="submitInfo" value="' + translate['Info'] + '">\n'
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Remove the above item'] + '" ' + \
|
||||||
|
'alt="' + translate['Remove the above item'] + ' | " ' + \
|
||||||
|
'name="submitRemove" value="' + \
|
||||||
|
translate['Remove'] + '">\n'
|
||||||
|
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Suspend the above account nickname'] + '" ' + \
|
||||||
|
'alt="' + \
|
||||||
|
translate['Suspend the above account nickname'] + ' | " ' + \
|
||||||
|
'name="submitSuspend" value="' + translate['Suspend'] + '">\n'
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Remove a suspension for an account nickname'] + '" ' + \
|
||||||
|
'alt="' + \
|
||||||
|
translate['Remove a suspension for an account nickname'] + \
|
||||||
|
' | " ' + \
|
||||||
|
'name="submitUnsuspend" value="' + \
|
||||||
|
translate['Unsuspend'] + '">\n'
|
||||||
|
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Block an account on another instance'] + '" ' + \
|
||||||
|
'alt="' + \
|
||||||
|
translate['Block an account on another instance'] + ' | " ' + \
|
||||||
|
'name="submitBlock" value="' + translate['Block'] + '">\n'
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Unblock an account on another instance'] + '" ' + \
|
||||||
|
'alt="' + \
|
||||||
|
translate['Unblock an account on another instance'] + ' | " ' + \
|
||||||
|
'name="submitUnblock" value="' + translate['Unblock'] + '">\n'
|
||||||
|
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Filter out words'] + '" ' + \
|
||||||
|
'alt="' + \
|
||||||
|
translate['Filter out words'] + ' | " ' + \
|
||||||
|
'name="submitFilter" value="' + translate['Filter'] + '">\n'
|
||||||
|
tlStr += \
|
||||||
|
' <input type="submit" title="' + \
|
||||||
|
translate['Unfilter words'] + '" ' + \
|
||||||
|
'alt="' + \
|
||||||
|
translate['Unfilter words'] + ' | " ' + \
|
||||||
|
'name="submitUnfilter" value="' + translate['Unfilter'] + '">\n'
|
||||||
|
|
||||||
|
tlStr += '</div>\n</form>\n'
|
||||||
|
return tlStr
|
||||||
|
|
||||||
|
|
||||||
|
def _htmlTimelineKeyboard(moderator: bool, textModeBanner: str, usersPath: str,
|
||||||
|
nickname: str, newCalendarEvent: bool,
|
||||||
|
newDM: bool, newReply: bool, newShare: bool,
|
||||||
|
followApprovals: bool,
|
||||||
|
accessKeys: {}, translate: {}) -> str:
|
||||||
|
"""Returns html for timeline keyboard navigation
|
||||||
|
"""
|
||||||
|
calendarStr = translate['Calendar']
|
||||||
|
if newCalendarEvent:
|
||||||
|
calendarStr = '<strong>' + calendarStr + '</strong>'
|
||||||
|
dmStr = translate['DM']
|
||||||
|
if newDM:
|
||||||
|
dmStr = '<strong>' + dmStr + '</strong>'
|
||||||
|
repliesStr = translate['Replies']
|
||||||
|
if newReply:
|
||||||
|
repliesStr = '<strong>' + repliesStr + '</strong>'
|
||||||
|
sharesStr = translate['Shares']
|
||||||
|
if newShare:
|
||||||
|
sharesStr = '<strong>' + sharesStr + '</strong>'
|
||||||
|
menuProfile = \
|
||||||
|
htmlHideFromScreenReader('👤') + ' ' + \
|
||||||
|
translate['Switch to profile view']
|
||||||
|
menuInbox = \
|
||||||
|
htmlHideFromScreenReader('📥') + ' ' + translate['Inbox']
|
||||||
|
menuOutbox = \
|
||||||
|
htmlHideFromScreenReader('📤') + ' ' + translate['Sent']
|
||||||
|
menuSearch = \
|
||||||
|
htmlHideFromScreenReader('🔍') + ' ' + \
|
||||||
|
translate['Search and follow']
|
||||||
|
menuCalendar = \
|
||||||
|
htmlHideFromScreenReader('📅') + ' ' + calendarStr
|
||||||
|
menuDM = \
|
||||||
|
htmlHideFromScreenReader('📩') + ' ' + dmStr
|
||||||
|
menuReplies = \
|
||||||
|
htmlHideFromScreenReader('📨') + ' ' + repliesStr
|
||||||
|
menuBookmarks = \
|
||||||
|
htmlHideFromScreenReader('🔖') + ' ' + translate['Bookmarks']
|
||||||
|
menuShares = \
|
||||||
|
htmlHideFromScreenReader('🤝') + ' ' + sharesStr
|
||||||
|
menuBlogs = \
|
||||||
|
htmlHideFromScreenReader('📝') + ' ' + translate['Blogs']
|
||||||
|
menuNewswire = \
|
||||||
|
htmlHideFromScreenReader('📰') + ' ' + translate['Newswire']
|
||||||
|
menuLinks = \
|
||||||
|
htmlHideFromScreenReader('🔗') + ' ' + translate['Links']
|
||||||
|
menuNewPost = \
|
||||||
|
htmlHideFromScreenReader('➕') + ' ' + translate['Create a new post']
|
||||||
|
menuModeration = \
|
||||||
|
htmlHideFromScreenReader('⚡️') + ' ' + translate['Mod']
|
||||||
|
navLinks = {
|
||||||
|
menuProfile: '/users/' + nickname,
|
||||||
|
menuInbox: usersPath + '/inbox#timelineposts',
|
||||||
|
menuSearch: usersPath + '/search',
|
||||||
|
menuNewPost: usersPath + '/newpost',
|
||||||
|
menuCalendar: usersPath + '/calendar',
|
||||||
|
menuDM: usersPath + '/dm#timelineposts',
|
||||||
|
menuReplies: usersPath + '/tlreplies#timelineposts',
|
||||||
|
menuOutbox: usersPath + '/outbox#timelineposts',
|
||||||
|
menuBookmarks: usersPath + '/tlbookmarks#timelineposts',
|
||||||
|
menuShares: usersPath + '/tlshares#timelineposts',
|
||||||
|
menuBlogs: usersPath + '/tlblogs#timelineposts',
|
||||||
|
menuNewswire: usersPath + '/newswiremobile',
|
||||||
|
menuLinks: usersPath + '/linksmobile'
|
||||||
|
}
|
||||||
|
navAccessKeys = {}
|
||||||
|
for variableName, key in accessKeys.items():
|
||||||
|
if not locals().get(variableName):
|
||||||
|
continue
|
||||||
|
navAccessKeys[locals()[variableName]] = key
|
||||||
|
if moderator:
|
||||||
|
navLinks[menuModeration] = usersPath + '/moderation#modtimeline'
|
||||||
|
return htmlKeyboardNavigation(textModeBanner, navLinks, navAccessKeys,
|
||||||
|
None, usersPath, translate, followApprovals)
|
||||||
|
|
||||||
|
|
||||||
def htmlTimeline(cssCache: {}, defaultTimeline: str,
|
def htmlTimeline(cssCache: {}, defaultTimeline: str,
|
||||||
recentPostsCache: {}, maxRecentPosts: int,
|
recentPostsCache: {}, maxRecentPosts: int,
|
||||||
translate: {}, pageNumber: int,
|
translate: {}, pageNumber: int,
|
||||||
|
|
@ -331,167 +583,15 @@ def htmlTimeline(cssCache: {}, defaultTimeline: str,
|
||||||
newPostButtonStr += '<div class="headericons">'
|
newPostButtonStr += '<div class="headericons">'
|
||||||
|
|
||||||
# what screen to go to when a new post is created
|
# what screen to go to when a new post is created
|
||||||
if boxName == 'dm':
|
newPostButtonStr += \
|
||||||
if not iconsAsButtons:
|
_htmlTimelineNewPost(manuallyApproveFollowers, boxName,
|
||||||
newPostButtonStr += \
|
iconsAsButtons, usersPath, translate)
|
||||||
'<a class="imageAnchor" href="' + usersPath + \
|
|
||||||
'/newdm?nodropdown"><img loading="lazy" src="/' + \
|
|
||||||
'icons/newpost.png" title="' + \
|
|
||||||
translate['Create a new DM'] + \
|
|
||||||
'" alt="| ' + translate['Create a new DM'] + \
|
|
||||||
'" class="timelineicon"/></a>\n'
|
|
||||||
else:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a href="' + usersPath + '/newdm?nodropdown">' + \
|
|
||||||
'<button class="button"><span>' + \
|
|
||||||
translate['Post'] + ' </span></button></a>'
|
|
||||||
elif (boxName == 'tlblogs' or
|
|
||||||
boxName == 'tlnews' or
|
|
||||||
boxName == 'tlfeatures'):
|
|
||||||
if not iconsAsButtons:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a class="imageAnchor" href="' + usersPath + \
|
|
||||||
'/newblog"><img loading="lazy" src="/' + \
|
|
||||||
'icons/newpost.png" title="' + \
|
|
||||||
translate['Create a new post'] + '" alt="| ' + \
|
|
||||||
translate['Create a new post'] + \
|
|
||||||
'" class="timelineicon"/></a>\n'
|
|
||||||
else:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a href="' + usersPath + '/newblog">' + \
|
|
||||||
'<button class="button"><span>' + \
|
|
||||||
translate['Post'] + '</span></button></a>'
|
|
||||||
elif boxName == 'tlevents':
|
|
||||||
if not iconsAsButtons:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a class="imageAnchor" href="' + usersPath + \
|
|
||||||
'/newevent?nodropdown"><img loading="lazy" src="/' + \
|
|
||||||
'icons/newpost.png" title="' + \
|
|
||||||
translate['Create a new event'] + '" alt="| ' + \
|
|
||||||
translate['Create a new event'] + \
|
|
||||||
'" class="timelineicon"/></a>\n'
|
|
||||||
else:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a href="' + usersPath + '/newevent?nodropdown">' + \
|
|
||||||
'<button class="button"><span>' + \
|
|
||||||
translate['Post'] + '</span></button></a>'
|
|
||||||
elif boxName == 'tlshares':
|
|
||||||
if not iconsAsButtons:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a class="imageAnchor" href="' + usersPath + \
|
|
||||||
'/newshare?nodropdown"><img loading="lazy" src="/' + \
|
|
||||||
'icons/newpost.png" title="' + \
|
|
||||||
translate['Create a new shared item'] + '" alt="| ' + \
|
|
||||||
translate['Create a new shared item'] + \
|
|
||||||
'" class="timelineicon"/></a>\n'
|
|
||||||
else:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a href="' + usersPath + '/newshare?nodropdown">' + \
|
|
||||||
'<button class="button"><span>' + \
|
|
||||||
translate['Post'] + '</span></button></a>'
|
|
||||||
else:
|
|
||||||
if not manuallyApproveFollowers:
|
|
||||||
if not iconsAsButtons:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a class="imageAnchor" href="' + usersPath + \
|
|
||||||
'/newpost"><img loading="lazy" src="/' + \
|
|
||||||
'icons/newpost.png" title="' + \
|
|
||||||
translate['Create a new post'] + '" alt="| ' + \
|
|
||||||
translate['Create a new post'] + \
|
|
||||||
'" class="timelineicon"/></a>\n'
|
|
||||||
else:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a href="' + usersPath + '/newpost">' + \
|
|
||||||
'<button class="button"><span>' + \
|
|
||||||
translate['Post'] + '</span></button></a>'
|
|
||||||
else:
|
|
||||||
if not iconsAsButtons:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a class="imageAnchor" href="' + usersPath + \
|
|
||||||
'/newfollowers"><img loading="lazy" src="/' + \
|
|
||||||
'icons/newpost.png" title="' + \
|
|
||||||
translate['Create a new post'] + \
|
|
||||||
'" alt="| ' + translate['Create a new post'] + \
|
|
||||||
'" class="timelineicon"/></a>\n'
|
|
||||||
else:
|
|
||||||
newPostButtonStr += \
|
|
||||||
'<a href="' + usersPath + '/newfollowers">' + \
|
|
||||||
'<button class="button"><span>' + \
|
|
||||||
translate['Post'] + '</span></button></a>'
|
|
||||||
|
|
||||||
# keyboard navigation
|
# keyboard navigation
|
||||||
calendarStr = translate['Calendar']
|
tlStr += \
|
||||||
if newCalendarEvent:
|
_htmlTimelineKeyboard(moderator, textModeBanner, usersPath, nickname,
|
||||||
calendarStr = '<strong>' + calendarStr + '</strong>'
|
newCalendarEvent, newDM, newReply, newShare,
|
||||||
dmStr = translate['DM']
|
followApprovals, accessKeys, translate)
|
||||||
if newDM:
|
|
||||||
dmStr = '<strong>' + dmStr + '</strong>'
|
|
||||||
repliesStr = translate['Replies']
|
|
||||||
if newReply:
|
|
||||||
repliesStr = '<strong>' + repliesStr + '</strong>'
|
|
||||||
sharesStr = translate['Shares']
|
|
||||||
if newShare:
|
|
||||||
sharesStr = '<strong>' + sharesStr + '</strong>'
|
|
||||||
menuProfile = \
|
|
||||||
htmlHideFromScreenReader('👤') + ' ' + \
|
|
||||||
translate['Switch to profile view']
|
|
||||||
menuInbox = \
|
|
||||||
htmlHideFromScreenReader('📥') + ' ' + translate['Inbox']
|
|
||||||
menuOutbox = \
|
|
||||||
htmlHideFromScreenReader('📤') + ' ' + translate['Sent']
|
|
||||||
menuSearch = \
|
|
||||||
htmlHideFromScreenReader('🔍') + ' ' + \
|
|
||||||
translate['Search and follow']
|
|
||||||
menuCalendar = \
|
|
||||||
htmlHideFromScreenReader('📅') + ' ' + calendarStr
|
|
||||||
menuDM = \
|
|
||||||
htmlHideFromScreenReader('📩') + ' ' + dmStr
|
|
||||||
menuReplies = \
|
|
||||||
htmlHideFromScreenReader('📨') + ' ' + repliesStr
|
|
||||||
menuBookmarks = \
|
|
||||||
htmlHideFromScreenReader('🔖') + ' ' + \
|
|
||||||
translate['Bookmarks']
|
|
||||||
menuShares = \
|
|
||||||
htmlHideFromScreenReader('🤝') + ' ' + sharesStr
|
|
||||||
# menuEvents = \
|
|
||||||
# htmlHideFromScreenReader('🎫') + ' ' + translate['Events']
|
|
||||||
menuBlogs = \
|
|
||||||
htmlHideFromScreenReader('📝') + ' ' + translate['Blogs']
|
|
||||||
menuNewswire = \
|
|
||||||
htmlHideFromScreenReader('📰') + ' ' + translate['Newswire']
|
|
||||||
menuLinks = \
|
|
||||||
htmlHideFromScreenReader('🔗') + ' ' + translate['Links']
|
|
||||||
menuNewPost = \
|
|
||||||
htmlHideFromScreenReader('➕') + ' ' + \
|
|
||||||
translate['Create a new post']
|
|
||||||
menuModeration = \
|
|
||||||
htmlHideFromScreenReader('⚡️') + ' ' + \
|
|
||||||
translate['Mod']
|
|
||||||
navLinks = {
|
|
||||||
menuProfile: '/users/' + nickname,
|
|
||||||
menuInbox: usersPath + '/inbox#timelineposts',
|
|
||||||
menuSearch: usersPath + '/search',
|
|
||||||
menuNewPost: usersPath + '/newpost',
|
|
||||||
menuCalendar: usersPath + '/calendar',
|
|
||||||
menuDM: usersPath + '/dm#timelineposts',
|
|
||||||
menuReplies: usersPath + '/tlreplies#timelineposts',
|
|
||||||
menuOutbox: usersPath + '/outbox#timelineposts',
|
|
||||||
menuBookmarks: usersPath + '/tlbookmarks#timelineposts',
|
|
||||||
menuShares: usersPath + '/tlshares#timelineposts',
|
|
||||||
menuBlogs: usersPath + '/tlblogs#timelineposts',
|
|
||||||
menuNewswire: usersPath + '/newswiremobile',
|
|
||||||
menuLinks: usersPath + '/linksmobile'
|
|
||||||
}
|
|
||||||
navAccessKeys = {}
|
|
||||||
for variableName, key in accessKeys.items():
|
|
||||||
if not locals().get(variableName):
|
|
||||||
continue
|
|
||||||
navAccessKeys[locals()[variableName]] = key
|
|
||||||
if moderator:
|
|
||||||
navLinks[menuModeration] = usersPath + '/moderation#modtimeline'
|
|
||||||
tlStr += htmlKeyboardNavigation(textModeBanner, navLinks, navAccessKeys,
|
|
||||||
None, usersPath, translate,
|
|
||||||
followApprovals)
|
|
||||||
|
|
||||||
# banner and row of buttons
|
# banner and row of buttons
|
||||||
tlStr += \
|
tlStr += \
|
||||||
|
|
@ -563,78 +663,9 @@ def htmlTimeline(cssCache: {}, defaultTimeline: str,
|
||||||
tlStr += ' <div id="timelineposts" class="timeline-posts">\n'
|
tlStr += ' <div id="timelineposts" class="timeline-posts">\n'
|
||||||
|
|
||||||
# second row of buttons for moderator actions
|
# second row of buttons for moderator actions
|
||||||
if moderator and boxName == 'moderation':
|
tlStr += \
|
||||||
tlStr += \
|
_htmlTimelineModerationButtons(moderator, boxName, nickname,
|
||||||
'<form id="modtimeline" method="POST" action="/users/' + \
|
moderationActionStr, translate)
|
||||||
nickname + '/moderationaction">'
|
|
||||||
tlStr += '<div class="container">\n'
|
|
||||||
idx = 'Nickname or URL. Block using *@domain or nickname@domain'
|
|
||||||
tlStr += \
|
|
||||||
' <b>' + translate[idx] + '</b><br>\n'
|
|
||||||
if moderationActionStr:
|
|
||||||
tlStr += ' <input type="text" ' + \
|
|
||||||
'name="moderationAction" value="' + \
|
|
||||||
moderationActionStr + '" autofocus><br>\n'
|
|
||||||
else:
|
|
||||||
tlStr += ' <input type="text" ' + \
|
|
||||||
'name="moderationAction" value="" autofocus><br>\n'
|
|
||||||
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Information about current blocks/suspensions'] + \
|
|
||||||
'" alt="' + \
|
|
||||||
translate['Information about current blocks/suspensions'] + \
|
|
||||||
' | " ' + \
|
|
||||||
'name="submitInfo" value="' + translate['Info'] + '">\n'
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Remove the above item'] + '" ' + \
|
|
||||||
'alt="' + translate['Remove the above item'] + ' | " ' + \
|
|
||||||
'name="submitRemove" value="' + \
|
|
||||||
translate['Remove'] + '">\n'
|
|
||||||
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Suspend the above account nickname'] + '" ' + \
|
|
||||||
'alt="' + \
|
|
||||||
translate['Suspend the above account nickname'] + ' | " ' + \
|
|
||||||
'name="submitSuspend" value="' + translate['Suspend'] + '">\n'
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Remove a suspension for an account nickname'] + '" ' + \
|
|
||||||
'alt="' + \
|
|
||||||
translate['Remove a suspension for an account nickname'] + \
|
|
||||||
' | " ' + \
|
|
||||||
'name="submitUnsuspend" value="' + \
|
|
||||||
translate['Unsuspend'] + '">\n'
|
|
||||||
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Block an account on another instance'] + '" ' + \
|
|
||||||
'alt="' + \
|
|
||||||
translate['Block an account on another instance'] + ' | " ' + \
|
|
||||||
'name="submitBlock" value="' + translate['Block'] + '">\n'
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Unblock an account on another instance'] + '" ' + \
|
|
||||||
'alt="' + \
|
|
||||||
translate['Unblock an account on another instance'] + ' | " ' + \
|
|
||||||
'name="submitUnblock" value="' + translate['Unblock'] + '">\n'
|
|
||||||
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Filter out words'] + '" ' + \
|
|
||||||
'alt="' + \
|
|
||||||
translate['Filter out words'] + ' | " ' + \
|
|
||||||
'name="submitFilter" value="' + translate['Filter'] + '">\n'
|
|
||||||
tlStr += \
|
|
||||||
' <input type="submit" title="' + \
|
|
||||||
translate['Unfilter words'] + '" ' + \
|
|
||||||
'alt="' + \
|
|
||||||
translate['Unfilter words'] + ' | " ' + \
|
|
||||||
'name="submitUnfilter" value="' + translate['Unfilter'] + '">\n'
|
|
||||||
|
|
||||||
tlStr += '</div>\n</form>\n'
|
|
||||||
|
|
||||||
_logTimelineTiming(enableTimingLog, timelineStartTime, boxName, '6')
|
_logTimelineTiming(enableTimingLog, timelineStartTime, boxName, '6')
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue