diff --git a/webapp_timeline.py b/webapp_timeline.py index 471c1ede6..b7cda0e3d 100644 --- a/webapp_timeline.py +++ b/webapp_timeline.py @@ -93,6 +93,258 @@ def _getHelpForTimeline(baseDir: str, boxName: str) -> str: 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 += \ + '| ' + translate['Create a new DM'] + \
+                '\n' + else: + newPostButtonStr += \ + '' + \ + '' + elif (boxName == 'tlblogs' or + boxName == 'tlnews' or + boxName == 'tlfeatures'): + if not iconsAsButtons: + newPostButtonStr += \ + '| ' + \
+                translate['Create a new post'] + \
+                '\n' + else: + newPostButtonStr += \ + '' + \ + '' + elif boxName == 'tlevents': + if not iconsAsButtons: + newPostButtonStr += \ + '| ' + \
+                translate['Create a new event'] + \
+                '\n' + else: + newPostButtonStr += \ + '' + \ + '' + elif boxName == 'tlshares': + if not iconsAsButtons: + newPostButtonStr += \ + '| ' + \
+                translate['Create a new shared item'] + \
+                '\n' + else: + newPostButtonStr += \ + '' + \ + '' + else: + if not manuallyApproveFollowers: + if not iconsAsButtons: + newPostButtonStr += \ + '| ' + \
+                    translate['Create a new post'] + \
+                    '\n' + else: + newPostButtonStr += \ + '' + \ + '' + else: + if not iconsAsButtons: + newPostButtonStr += \ + '| ' + translate['Create a new post'] + \
+                    '\n' + else: + newPostButtonStr += \ + '' + \ + '' + 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 += \ + '
' + tlStr += '
\n' + idx = 'Nickname or URL. Block using *@domain or nickname@domain' + tlStr += \ + ' ' + translate[idx] + '
\n' + if moderationActionStr: + tlStr += '
\n' + else: + tlStr += '
\n' + + tlStr += \ + ' \n' + tlStr += \ + ' \n' + + tlStr += \ + ' \n' + tlStr += \ + ' \n' + + tlStr += \ + ' \n' + tlStr += \ + ' \n' + + tlStr += \ + ' \n' + tlStr += \ + ' \n' + + tlStr += '
\n
\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 = '' + calendarStr + '' + dmStr = translate['DM'] + if newDM: + dmStr = '' + dmStr + '' + repliesStr = translate['Replies'] + if newReply: + repliesStr = '' + repliesStr + '' + sharesStr = translate['Shares'] + if newShare: + sharesStr = '' + sharesStr + '' + 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, recentPostsCache: {}, maxRecentPosts: int, translate: {}, pageNumber: int, @@ -331,167 +583,15 @@ def htmlTimeline(cssCache: {}, defaultTimeline: str, newPostButtonStr += '
' # what screen to go to when a new post is created - if boxName == 'dm': - if not iconsAsButtons: - newPostButtonStr += \ - '| ' + translate['Create a new DM'] + \
-                '\n' - else: - newPostButtonStr += \ - '' + \ - '' - elif (boxName == 'tlblogs' or - boxName == 'tlnews' or - boxName == 'tlfeatures'): - if not iconsAsButtons: - newPostButtonStr += \ - '| ' + \
-                translate['Create a new post'] + \
-                '\n' - else: - newPostButtonStr += \ - '' + \ - '' - elif boxName == 'tlevents': - if not iconsAsButtons: - newPostButtonStr += \ - '| ' + \
-                translate['Create a new event'] + \
-                '\n' - else: - newPostButtonStr += \ - '' + \ - '' - elif boxName == 'tlshares': - if not iconsAsButtons: - newPostButtonStr += \ - '| ' + \
-                translate['Create a new shared item'] + \
-                '\n' - else: - newPostButtonStr += \ - '' + \ - '' - else: - if not manuallyApproveFollowers: - if not iconsAsButtons: - newPostButtonStr += \ - '| ' + \
-                    translate['Create a new post'] + \
-                    '\n' - else: - newPostButtonStr += \ - '' + \ - '' - else: - if not iconsAsButtons: - newPostButtonStr += \ - '| ' + translate['Create a new post'] + \
-                    '\n' - else: - newPostButtonStr += \ - '' + \ - '' + newPostButtonStr += \ + _htmlTimelineNewPost(manuallyApproveFollowers, boxName, + iconsAsButtons, usersPath, translate) # keyboard navigation - calendarStr = translate['Calendar'] - if newCalendarEvent: - calendarStr = '' + calendarStr + '' - dmStr = translate['DM'] - if newDM: - dmStr = '' + dmStr + '' - repliesStr = translate['Replies'] - if newReply: - repliesStr = '' + repliesStr + '' - sharesStr = translate['Shares'] - if newShare: - sharesStr = '' + sharesStr + '' - 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) + tlStr += \ + _htmlTimelineKeyboard(moderator, textModeBanner, usersPath, nickname, + newCalendarEvent, newDM, newReply, newShare, + followApprovals, accessKeys, translate) # banner and row of buttons tlStr += \ @@ -563,78 +663,9 @@ def htmlTimeline(cssCache: {}, defaultTimeline: str, tlStr += '
\n' # second row of buttons for moderator actions - if moderator and boxName == 'moderation': - tlStr += \ - '
' - tlStr += '
\n' - idx = 'Nickname or URL. Block using *@domain or nickname@domain' - tlStr += \ - ' ' + translate[idx] + '
\n' - if moderationActionStr: - tlStr += '
\n' - else: - tlStr += '
\n' - - tlStr += \ - ' \n' - tlStr += \ - ' \n' - - tlStr += \ - ' \n' - tlStr += \ - ' \n' - - tlStr += \ - ' \n' - tlStr += \ - ' \n' - - tlStr += \ - ' \n' - tlStr += \ - ' \n' - - tlStr += '
\n
\n' + tlStr += \ + _htmlTimelineModerationButtons(moderator, boxName, nickname, + moderationActionStr, translate) _logTimelineTiming(enableTimingLog, timelineStartTime, boxName, '6')