mirror of https://gitlab.com/bashrc2/epicyon
Keyboard navigation menu for calendar
parent
49e5eda823
commit
f24f26a31f
|
@ -11085,7 +11085,8 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.translate,
|
self.server.translate,
|
||||||
self.server.baseDir, self.path,
|
self.server.baseDir, self.path,
|
||||||
self.server.httpPrefix,
|
self.server.httpPrefix,
|
||||||
self.server.domainFull).encode('utf-8')
|
self.server.domainFull,
|
||||||
|
self.server.textModeBanner).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen, cookie, callingDomain)
|
self._set_headers('text/html', msglen, cookie, callingDomain)
|
||||||
self._write(msg)
|
self._write(msg)
|
||||||
|
|
|
@ -21,6 +21,8 @@ from happening import getCalendarEvents
|
||||||
from webapp_utils import htmlHeaderWithExternalStyle
|
from webapp_utils import htmlHeaderWithExternalStyle
|
||||||
from webapp_utils import htmlFooter
|
from webapp_utils import htmlFooter
|
||||||
from webapp_utils import getAltPath
|
from webapp_utils import getAltPath
|
||||||
|
from webapp_utils import htmlHideFromScreenReader
|
||||||
|
from webapp_utils import htmlKeyboardNavigation
|
||||||
|
|
||||||
|
|
||||||
def htmlCalendarDeleteConfirm(cssCache: {}, translate: {}, baseDir: str,
|
def htmlCalendarDeleteConfirm(cssCache: {}, translate: {}, baseDir: str,
|
||||||
|
@ -200,7 +202,8 @@ def _htmlCalendarDay(cssCache: {}, translate: {},
|
||||||
|
|
||||||
def htmlCalendar(cssCache: {}, translate: {},
|
def htmlCalendar(cssCache: {}, translate: {},
|
||||||
baseDir: str, path: str,
|
baseDir: str, path: str,
|
||||||
httpPrefix: str, domainFull: str) -> str:
|
httpPrefix: str, domainFull: str,
|
||||||
|
textModeBanner: str) -> str:
|
||||||
"""Show the calendar for a person
|
"""Show the calendar for a person
|
||||||
"""
|
"""
|
||||||
domain = domainFull
|
domain = domainFull
|
||||||
|
@ -297,8 +300,10 @@ def htmlCalendar(cssCache: {}, translate: {},
|
||||||
|
|
||||||
instanceTitle = \
|
instanceTitle = \
|
||||||
getConfigParam(baseDir, 'instanceTitle')
|
getConfigParam(baseDir, 'instanceTitle')
|
||||||
calendarStr = htmlHeaderWithExternalStyle(cssFilename, instanceTitle)
|
headerStr = htmlHeaderWithExternalStyle(cssFilename, instanceTitle)
|
||||||
calendarStr += '<main><table class="calendar">\n'
|
|
||||||
|
# the main graphical calendar as a table
|
||||||
|
calendarStr = '<main><table class="calendar">\n'
|
||||||
calendarStr += '<caption class="calendar__banner--month">\n'
|
calendarStr += '<caption class="calendar__banner--month">\n'
|
||||||
calendarStr += \
|
calendarStr += \
|
||||||
' <a href="' + calActor + '/calendar?year=' + str(prevYear) + \
|
' <a href="' + calActor + '/calendar?year=' + str(prevYear) + \
|
||||||
|
@ -338,6 +343,12 @@ def htmlCalendar(cssCache: {}, translate: {},
|
||||||
calendarStr += '</thead>\n'
|
calendarStr += '</thead>\n'
|
||||||
calendarStr += '<tbody>\n'
|
calendarStr += '<tbody>\n'
|
||||||
|
|
||||||
|
# beginning of the links used for accessibility
|
||||||
|
navLinks = {}
|
||||||
|
timelineLinkStr = htmlHideFromScreenReader('🏠') + ' ' + \
|
||||||
|
translate['Switch to timeline view']
|
||||||
|
navLinks[timelineLinkStr] = calActor + '/inbox'
|
||||||
|
|
||||||
dayOfMonth = 0
|
dayOfMonth = 0
|
||||||
dow = weekDayOfMonthStart(monthNumber, year)
|
dow = weekDayOfMonthStart(monthNumber, year)
|
||||||
for weekOfMonth in range(1, 7):
|
for weekOfMonth in range(1, 7):
|
||||||
|
@ -362,6 +373,11 @@ def htmlCalendar(cssCache: {}, translate: {},
|
||||||
dayLink = '<a href="' + url + '" ' + \
|
dayLink = '<a href="' + url + '" ' + \
|
||||||
'title="' + dayDescription + '">' + \
|
'title="' + dayDescription + '">' + \
|
||||||
str(dayOfMonth) + '</a>'
|
str(dayOfMonth) + '</a>'
|
||||||
|
# accessibility menu links
|
||||||
|
menuOptionStr = \
|
||||||
|
htmlHideFromScreenReader('📅') + ' ' + \
|
||||||
|
dayDescription
|
||||||
|
navLinks[menuOptionStr] = url
|
||||||
# there are events for this day
|
# there are events for this day
|
||||||
if not isToday:
|
if not isToday:
|
||||||
calendarStr += \
|
calendarStr += \
|
||||||
|
@ -389,5 +405,16 @@ def htmlCalendar(cssCache: {}, translate: {},
|
||||||
|
|
||||||
calendarStr += '</tbody>\n'
|
calendarStr += '</tbody>\n'
|
||||||
calendarStr += '</table></main>\n'
|
calendarStr += '</table></main>\n'
|
||||||
calendarStr += htmlFooter()
|
|
||||||
return calendarStr
|
# end of the links used for accessibility
|
||||||
|
nextMonthStr = \
|
||||||
|
htmlHideFromScreenReader('→') + ' ' + translate['Next month']
|
||||||
|
navLinks[nextMonthStr] = calActor + '/calendar?year=' + str(nextYear) + \
|
||||||
|
'?month=' + str(nextMonthNumber)
|
||||||
|
prevMonthStr = \
|
||||||
|
htmlHideFromScreenReader('←') + ' ' + translate['Previous month']
|
||||||
|
navLinks[prevMonthStr] = calActor + '/calendar?year=' + str(prevYear) + \
|
||||||
|
'?month=' + str(prevMonthNumber)
|
||||||
|
screenReaderCal = htmlKeyboardNavigation(textModeBanner, navLinks)
|
||||||
|
|
||||||
|
return headerStr + screenReaderCal + calendarStr + htmlFooter()
|
||||||
|
|
Loading…
Reference in New Issue