diff --git a/webapp_profile.py b/webapp_profile.py index ece805d96..b9ea1948b 100644 --- a/webapp_profile.py +++ b/webapp_profile.py @@ -41,6 +41,7 @@ from filters import isFiltered from follow import isFollowerOfPerson from webapp_frontscreen import htmlFrontScreen from webapp_utils import htmlKeyboardNavigation +from webapp_utils import htmlHideFromScreenReader from webapp_utils import scheduledPostsExist from webapp_utils import getPersonAvatarUrl from webapp_utils import htmlHeaderWithExternalStyle @@ -712,15 +713,31 @@ def htmlProfile(rssIconAtTop: bool, # keyboard navigation userPathStr = '/users/' + nickname deft = defaultTimeline + menuTimeline = \ + htmlHideFromScreenReader('🏠 ') + translate['Switch to timeline view'] + menuEdit = \ + htmlHideFromScreenReader('✍ ') + translate['Edit'] + menuFollowing = \ + htmlHideFromScreenReader('đŸ‘Ĩ ') + translate['Following'] + menuFollowers = \ + htmlHideFromScreenReader('đŸ‘Ē ') + translate['Followers'] + menuRoles = \ + htmlHideFromScreenReader('🤚 ') + translate['Roles'] + menuSkills = \ + htmlHideFromScreenReader('đŸ› ī¸') + translate['Skills'] + menuShares = \ + htmlHideFromScreenReader('đŸ¤ī¸') + translate['Shares'] + menuLogout = \ + htmlHideFromScreenReader('âŽī¸') + translate['Logout'] navLinks = { - translate['Switch to timeline view']: userPathStr + '/' + deft, - translate['Edit']: userPathStr + '/editprofile', - translate['Following']: userPathStr + '/following#timeline', - translate['Followers']: userPathStr + '/followers#timeline', - translate['Roles']: userPathStr + '/roles#timeline', - translate['Skills']: userPathStr + '/skills#timeline', - translate['Shares']: userPathStr + '/shares#timeline', - translate['Logout']: '/logout' + menuTimeline: userPathStr + '/' + deft, + menuEdit: userPathStr + '/editprofile', + menuFollowing: userPathStr + '/following#timeline', + menuFollowers: userPathStr + '/followers#timeline', + menuRoles: userPathStr + '/roles#timeline', + menuSkills: userPathStr + '/skills#timeline', + menuShares: userPathStr + '/shares#timeline', + menuLogout: '/logout' } profileStr = htmlKeyboardNavigation(textModeBanner, navLinks) @@ -1347,9 +1364,13 @@ def htmlEditProfile(cssCache: {}, translate: {}, baseDir: str, path: str, # keyboard navigation userPathStr = '/users/' + nickname userTimalineStr = '/users/' + nickname + '/' + defaultTimeline + menuTimeline = \ + htmlHideFromScreenReader('🏠 ') + translate['Switch to timeline view'] + menuProfile = \ + htmlHideFromScreenReader('👤 ') + translate['Switch to profile view'] navLinks = { - translate['Switch to profile view']: userPathStr, - translate['Switch to timeline view']: userTimalineStr + menuProfile: userPathStr, + menuTimeline: userTimalineStr } editProfileForm += htmlKeyboardNavigation(textModeBanner, navLinks) diff --git a/webapp_timeline.py b/webapp_timeline.py index cecac724e..70f5d3451 100644 --- a/webapp_timeline.py +++ b/webapp_timeline.py @@ -15,6 +15,7 @@ from utils import removeIdEnding from follow import followerApprovalActive from person import isPersonSnoozed from webapp_utils import htmlKeyboardNavigation +from webapp_utils import htmlHideFromScreenReader from webapp_utils import htmlPostSeparator from webapp_utils import getBannerFile from webapp_utils import htmlHeaderWithExternalStyle @@ -378,21 +379,49 @@ def htmlTimeline(cssCache: {}, defaultTimeline: str, sharesStr = translate['Shares'] if newShare: sharesStr = '*' + sharesStr + '*' + menuProfile = \ + htmlHideFromScreenReader('👤 ') + translate['Switch to profile view'] + menuInbox = \ + htmlHideFromScreenReader('đŸ“Ĩ ') + translate['Inbox'] + menuOutbox = \ + htmlHideFromScreenReader('📤 ') + translate['Outbox'] + 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'] navLinks = { - translate['Switch to profile view']: '/users/' + nickname, - translate['Inbox']: usersPath + '/inbox#timeline', - translate['Search and follow']: usersPath + '/search', - translate['Create a new post']: usersPath + '/newpost', - calendarStr: usersPath + '/calendar', - dmStr: usersPath + '/dm#timeline', - repliesStr: usersPath + '/tlreplies#timeline', - translate['Outbox']: usersPath + '/inbox#timeline', - translate['Bookmarks']: usersPath + '/tlbookmarks#timeline', - sharesStr: usersPath + '/tlshares#timeline', - translate['Blogs']: usersPath + '/tlblogs#timeline', - translate['Events']: usersPath + '/tlevents#timeline', - translate['Skip to Newswire']: '#newswire', - translate['Skip to Links']: '#links' + menuProfile: '/users/' + nickname, + menuInbox: usersPath + '/inbox#timeline', + menuSearch: usersPath + '/search', + menuNewPost: usersPath + '/newpost', + menuCalendar: usersPath + '/calendar', + menuDM: usersPath + '/dm#timeline', + menuReplies: usersPath + '/tlreplies#timeline', + menuOutbox: usersPath + '/inbox#timeline', + menuBookmarks: usersPath + '/tlbookmarks#timeline', + menuShares: usersPath + '/tlshares#timeline', + menuBlogs: usersPath + '/tlblogs#timeline', + menuEvents: usersPath + '/tlevents#timeline', + menuNewswire: '#newswire', + menuLinks: '#links' } if moderator: navLinks[translate['Mod']] = usersPath + '/moderation' diff --git a/webapp_utils.py b/webapp_utils.py index 1083eddb7..1bad83836 100644 --- a/webapp_utils.py +++ b/webapp_utils.py @@ -880,6 +880,12 @@ def getAvatarImageUrl(session, return avatarUrl +def htmlHideFromScreenReader(htmlStr: str) -> str: + """Returns html which is hidden from screen readers + """ + return '' + + def htmlKeyboardNavigation(banner: str, links: {}, usersPath=None, translate=None, followApprovals=False) -> str: