mirror of https://gitlab.com/bashrc2/epicyon
Key shortcuts screen
parent
e91cc35fd9
commit
ae44a88144
192
daemon.py
192
daemon.py
|
@ -134,6 +134,8 @@ from webapp_utils import getBlogAddress
|
||||||
from webapp_calendar import htmlCalendarDeleteConfirm
|
from webapp_calendar import htmlCalendarDeleteConfirm
|
||||||
from webapp_calendar import htmlCalendar
|
from webapp_calendar import htmlCalendar
|
||||||
from webapp_about import htmlAbout
|
from webapp_about import htmlAbout
|
||||||
|
from webapp_accesskeys import htmlAccessKeys
|
||||||
|
from webapp_accesskeys import loadAccessKeysForAccounts
|
||||||
from webapp_confirm import htmlConfirmDelete
|
from webapp_confirm import htmlConfirmDelete
|
||||||
from webapp_confirm import htmlConfirmRemoveSharedItem
|
from webapp_confirm import htmlConfirmRemoveSharedItem
|
||||||
from webapp_confirm import htmlConfirmUnblock
|
from webapp_confirm import htmlConfirmUnblock
|
||||||
|
@ -7342,6 +7344,11 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.YTReplacementDomain
|
self.server.YTReplacementDomain
|
||||||
iconsAsButtons = \
|
iconsAsButtons = \
|
||||||
self.server.iconsAsButtons
|
self.server.iconsAsButtons
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlProfile(self.server.rssIconAtTop,
|
htmlProfile(self.server.rssIconAtTop,
|
||||||
self.server.cssCache,
|
self.server.cssCache,
|
||||||
|
@ -7365,7 +7372,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.accessKeys,
|
accessKeys,
|
||||||
actorJson['roles'],
|
actorJson['roles'],
|
||||||
None, None)
|
None, None)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
|
@ -7432,6 +7439,10 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.iconsAsButtons
|
self.server.iconsAsButtons
|
||||||
allowLocalNetworkAccess = \
|
allowLocalNetworkAccess = \
|
||||||
self.server.allowLocalNetworkAccess
|
self.server.allowLocalNetworkAccess
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
msg = \
|
msg = \
|
||||||
htmlProfile(self.server.rssIconAtTop,
|
htmlProfile(self.server.rssIconAtTop,
|
||||||
self.server.cssCache,
|
self.server.cssCache,
|
||||||
|
@ -7455,7 +7466,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
allowLocalNetworkAccess,
|
allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.accessKeys,
|
accessKeys,
|
||||||
actorJson['skills'],
|
actorJson['skills'],
|
||||||
None, None)
|
None, None)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
|
@ -7823,6 +7834,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = htmlInbox(self.server.cssCache,
|
msg = htmlInbox(self.server.cssCache,
|
||||||
defaultTimeline,
|
defaultTimeline,
|
||||||
recentPostsCache,
|
recentPostsCache,
|
||||||
|
@ -7855,7 +7872,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
if GETstartTime:
|
if GETstartTime:
|
||||||
self._benchmarkGETtimings(GETstartTime, GETtimings,
|
self._benchmarkGETtimings(GETstartTime, GETtimings,
|
||||||
'show status done',
|
'show status done',
|
||||||
|
@ -7953,6 +7970,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlInboxDMs(self.server.cssCache,
|
htmlInboxDMs(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -7985,7 +8008,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8076,6 +8099,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlInboxReplies(self.server.cssCache,
|
htmlInboxReplies(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8108,7 +8137,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8199,6 +8228,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlInboxMedia(self.server.cssCache,
|
htmlInboxMedia(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8232,7 +8267,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8323,6 +8358,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlInboxBlogs(self.server.cssCache,
|
htmlInboxBlogs(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8356,7 +8397,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8455,6 +8496,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlInboxNews(self.server.cssCache,
|
htmlInboxNews(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8489,7 +8536,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8585,6 +8632,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlInboxFeatures(self.server.cssCache,
|
htmlInboxFeatures(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8618,7 +8671,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8678,6 +8731,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
pageNumber = int(pageNumber)
|
pageNumber = int(pageNumber)
|
||||||
else:
|
else:
|
||||||
pageNumber = 1
|
pageNumber = 1
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlShares(self.server.cssCache,
|
htmlShares(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8708,7 +8767,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8782,6 +8841,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlBookmarks(self.server.cssCache,
|
htmlBookmarks(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8815,7 +8880,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -8909,6 +8974,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlEvents(self.server.cssCache,
|
htmlEvents(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -8942,7 +9013,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -9028,6 +9099,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
minimalNick = self._isMinimal(nickname)
|
minimalNick = self._isMinimal(nickname)
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlOutbox(self.server.cssCache,
|
htmlOutbox(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -9061,7 +9138,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -9138,6 +9215,12 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
fullWidthTimelineButtonHeader = \
|
fullWidthTimelineButtonHeader = \
|
||||||
self.server.fullWidthTimelineButtonHeader
|
self.server.fullWidthTimelineButtonHeader
|
||||||
moderationActionStr = ''
|
moderationActionStr = ''
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlModeration(self.server.cssCache,
|
htmlModeration(self.server.cssCache,
|
||||||
self.server.defaultTimeline,
|
self.server.defaultTimeline,
|
||||||
|
@ -9170,7 +9253,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.peertubeInstances,
|
self.server.peertubeInstances,
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.accessKeys)
|
accessKeys)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -9249,6 +9332,16 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self._404()
|
self._404()
|
||||||
self.server.GETbusy = False
|
self.server.GETbusy = False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if '/users/' in path:
|
||||||
|
nickname = path.split('/users/')[1]
|
||||||
|
if '/' in nickname:
|
||||||
|
nickname = nickname.split('/')[0]
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlProfile(self.server.rssIconAtTop,
|
htmlProfile(self.server.rssIconAtTop,
|
||||||
self.server.cssCache,
|
self.server.cssCache,
|
||||||
|
@ -9273,7 +9366,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.accessKeys,
|
accessKeys,
|
||||||
shares,
|
shares,
|
||||||
pageNumber, sharesPerPage)
|
pageNumber, sharesPerPage)
|
||||||
msg = msg.encode('utf-8')
|
msg = msg.encode('utf-8')
|
||||||
|
@ -9350,6 +9443,15 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.GETbusy = False
|
self.server.GETbusy = False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if '/users/' in path:
|
||||||
|
nickname = path.split('/users/')[1]
|
||||||
|
if '/' in nickname:
|
||||||
|
nickname = nickname.split('/')[0]
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlProfile(self.server.rssIconAtTop,
|
htmlProfile(self.server.rssIconAtTop,
|
||||||
self.server.cssCache,
|
self.server.cssCache,
|
||||||
|
@ -9374,7 +9476,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.accessKeys,
|
accessKeys,
|
||||||
following,
|
following,
|
||||||
pageNumber,
|
pageNumber,
|
||||||
followsPerPage).encode('utf-8')
|
followsPerPage).encode('utf-8')
|
||||||
|
@ -9449,6 +9551,16 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self._404()
|
self._404()
|
||||||
self.server.GETbusy = False
|
self.server.GETbusy = False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if '/users/' in path:
|
||||||
|
nickname = path.split('/users/')[1]
|
||||||
|
if '/' in nickname:
|
||||||
|
nickname = nickname.split('/')[0]
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlProfile(self.server.rssIconAtTop,
|
htmlProfile(self.server.rssIconAtTop,
|
||||||
self.server.cssCache,
|
self.server.cssCache,
|
||||||
|
@ -9474,7 +9586,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.accessKeys,
|
accessKeys,
|
||||||
followers,
|
followers,
|
||||||
pageNumber,
|
pageNumber,
|
||||||
followsPerPage).encode('utf-8')
|
followsPerPage).encode('utf-8')
|
||||||
|
@ -9572,6 +9684,16 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self._404()
|
self._404()
|
||||||
self.server.GETbusy = False
|
self.server.GETbusy = False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if '/users/' in path:
|
||||||
|
nickname = path.split('/users/')[1]
|
||||||
|
if '/' in nickname:
|
||||||
|
nickname = nickname.split('/')[0]
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
msg = \
|
msg = \
|
||||||
htmlProfile(self.server.rssIconAtTop,
|
htmlProfile(self.server.rssIconAtTop,
|
||||||
self.server.cssCache,
|
self.server.cssCache,
|
||||||
|
@ -9597,7 +9719,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
self.server.allowLocalNetworkAccess,
|
self.server.allowLocalNetworkAccess,
|
||||||
self.server.textModeBanner,
|
self.server.textModeBanner,
|
||||||
self.server.debug,
|
self.server.debug,
|
||||||
self.server.accessKeys,
|
accessKeys,
|
||||||
None, None).encode('utf-8')
|
None, None).encode('utf-8')
|
||||||
msglen = len(msg)
|
msglen = len(msg)
|
||||||
self._set_headers('text/html', msglen,
|
self._set_headers('text/html', msglen,
|
||||||
|
@ -11015,6 +11137,33 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
'show about screen')
|
'show about screen')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if htmlGET and usersInPath and authorized and \
|
||||||
|
self.path.endswith('/accesskeys'):
|
||||||
|
nickname = self.path.split('/users/')[1]
|
||||||
|
if '/' in nickname:
|
||||||
|
nickname = nickname.split('/')[0]
|
||||||
|
|
||||||
|
accessKeys = self.server.accessKeys
|
||||||
|
if self.server.keyShortcuts.get(nickname):
|
||||||
|
accessKeys = \
|
||||||
|
self.server.keyShortcuts[nickname]
|
||||||
|
|
||||||
|
msg = \
|
||||||
|
htmlAccessKeys(self.server.cssCache,
|
||||||
|
self.server.baseDir,
|
||||||
|
nickname, self.server.domain,
|
||||||
|
self.server.translate,
|
||||||
|
accessKeys,
|
||||||
|
self.server.accessKeys)
|
||||||
|
msg = msg.encode('utf-8')
|
||||||
|
msglen = len(msg)
|
||||||
|
self._login_headers('text/html', msglen, callingDomain)
|
||||||
|
self._write(msg)
|
||||||
|
self._benchmarkGETtimings(GETstartTime, GETtimings,
|
||||||
|
'following accounts done',
|
||||||
|
'show accesskeys screen')
|
||||||
|
return
|
||||||
|
|
||||||
self._benchmarkGETtimings(GETstartTime, GETtimings,
|
self._benchmarkGETtimings(GETstartTime, GETtimings,
|
||||||
'following accounts done',
|
'following accounts done',
|
||||||
'show about screen done')
|
'show about screen done')
|
||||||
|
@ -14507,7 +14656,7 @@ def runDaemon(brochMode: bool,
|
||||||
'menuDM': 'd',
|
'menuDM': 'd',
|
||||||
'menuReplies': 'r',
|
'menuReplies': 'r',
|
||||||
'menuOutbox': 's',
|
'menuOutbox': 's',
|
||||||
'menuBookmarks': 'k',
|
'menuBookmarks': 'q',
|
||||||
'menuShares': 'h',
|
'menuShares': 'h',
|
||||||
'menuBlogs': 'b',
|
'menuBlogs': 'b',
|
||||||
'menuNewswire': 'w',
|
'menuNewswire': 'w',
|
||||||
|
@ -14517,8 +14666,11 @@ def runDaemon(brochMode: bool,
|
||||||
'menuFollowers': 'g',
|
'menuFollowers': 'g',
|
||||||
'menuRoles': 'o',
|
'menuRoles': 'o',
|
||||||
'menuSkills': 'a',
|
'menuSkills': 'a',
|
||||||
'menuLogout': 'x'
|
'menuLogout': 'x',
|
||||||
|
'menuKeys': 'k'
|
||||||
}
|
}
|
||||||
|
httpd.keyShortcuts = {}
|
||||||
|
loadAccessKeysForAccounts(baseDir, httpd.keyShortcuts)
|
||||||
|
|
||||||
httpd.unitTest = unitTest
|
httpd.unitTest = unitTest
|
||||||
httpd.allowLocalNetworkAccess = allowLocalNetworkAccess
|
httpd.allowLocalNetworkAccess = allowLocalNetworkAccess
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "صدمت",
|
"shocked": "صدمت",
|
||||||
"Encrypted": "مشفر",
|
"Encrypted": "مشفر",
|
||||||
"Direct Message permitted instances": "الرسالة المباشرة المسموح بها",
|
"Direct Message permitted instances": "الرسالة المباشرة المسموح بها",
|
||||||
"Direct messages are always allowed from these instances.": "الرسائل المباشرة مسموح بها دائما من هذه المثيلات."
|
"Direct messages are always allowed from these instances.": "الرسائل المباشرة مسموح بها دائما من هذه المثيلات.",
|
||||||
|
"Key Shortcuts": "الاختصارات الرئيسية",
|
||||||
|
"menuTimeline": "عرض الجدول الزمني",
|
||||||
|
"menuEdit": "يحرر",
|
||||||
|
"menuProfile": "عرض الملف الشخصي",
|
||||||
|
"menuInbox": "صندوق الوارد",
|
||||||
|
"menuSearch": "البحث / المتتالية",
|
||||||
|
"menuNewPost": "منشور جديد",
|
||||||
|
"menuCalendar": "تقويم",
|
||||||
|
"menuDM": "رسالة مباشرة",
|
||||||
|
"menuReplies": "الردود",
|
||||||
|
"menuOutbox": "مرسل",
|
||||||
|
"menuBookmarks": "إشارات مرجعية",
|
||||||
|
"menuShares": "البنود المشتركة",
|
||||||
|
"menuBlogs": "المدونات",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "روابط انترنت",
|
||||||
|
"menuModeration": "الاعتدال",
|
||||||
|
"menuFollowing": "التالية",
|
||||||
|
"menuFollowers": "متابعون",
|
||||||
|
"menuRoles": "أدوار",
|
||||||
|
"menuSkills": "مهارات",
|
||||||
|
"menuLogout": "تسجيل خروج",
|
||||||
|
"menuKeys": "الاختصارات الرئيسية"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "sorprès",
|
"shocked": "sorprès",
|
||||||
"Encrypted": "Xifrat",
|
"Encrypted": "Xifrat",
|
||||||
"Direct Message permitted instances": "Instàncies permeses del missatge directe",
|
"Direct Message permitted instances": "Instàncies permeses del missatge directe",
|
||||||
"Direct messages are always allowed from these instances.": "Els missatges directes sempre estan permesos d'aquests casos."
|
"Direct messages are always allowed from these instances.": "Els missatges directes sempre estan permesos d'aquests casos.",
|
||||||
|
"Key Shortcuts": "Dreceres clau",
|
||||||
|
"menuTimeline": "Vista de la línia de temps",
|
||||||
|
"menuEdit": "Preprarar una edició",
|
||||||
|
"menuProfile": "Vista de perfil",
|
||||||
|
"menuInbox": "Capa inferior",
|
||||||
|
"menuSearch": "Cerca / Segueix",
|
||||||
|
"menuNewPost": "Nou missatge",
|
||||||
|
"menuCalendar": "Calendari",
|
||||||
|
"menuDM": "Missatges directes",
|
||||||
|
"menuReplies": "Resum",
|
||||||
|
"menuOutbox": "Present",
|
||||||
|
"menuBookmarks": "Adreces d'interès",
|
||||||
|
"menuShares": "Articles compartits",
|
||||||
|
"menuBlogs": "Blocs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Enllaços web",
|
||||||
|
"menuModeration": "Moderació",
|
||||||
|
"menuFollowing": "Proper",
|
||||||
|
"menuFollowers": "Seguidors",
|
||||||
|
"menuRoles": "Rols",
|
||||||
|
"menuSkills": "Habilitats",
|
||||||
|
"menuLogout": "Tancar sessió",
|
||||||
|
"menuKeys": "Dreceres clau"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "sioc",
|
"shocked": "sioc",
|
||||||
"Encrypted": "Amgryptio",
|
"Encrypted": "Amgryptio",
|
||||||
"Direct Message permitted instances": "Achosion a ganiateir negeseuon uniongyrchol",
|
"Direct Message permitted instances": "Achosion a ganiateir negeseuon uniongyrchol",
|
||||||
"Direct messages are always allowed from these instances.": "Caniateir negeseuon uniongyrchol bob amser o'r achosion hyn."
|
"Direct messages are always allowed from these instances.": "Caniateir negeseuon uniongyrchol bob amser o'r achosion hyn.",
|
||||||
|
"Key Shortcuts": "Llwybrau byr allweddol",
|
||||||
|
"menuTimeline": "View View",
|
||||||
|
"menuEdit": "Golygaf",
|
||||||
|
"menuProfile": "Gweld Proffil",
|
||||||
|
"menuInbox": "Mewnflwch",
|
||||||
|
"menuSearch": "Chwilio / Dilyn",
|
||||||
|
"menuNewPost": "Swydd newydd",
|
||||||
|
"menuCalendar": "Galendr",
|
||||||
|
"menuDM": "Negeseuon Uniongyrchol",
|
||||||
|
"menuReplies": "Atebion",
|
||||||
|
"menuOutbox": "Hanfon",
|
||||||
|
"menuBookmarks": "Nodau tudalen",
|
||||||
|
"menuShares": "Eitemau a Rennir",
|
||||||
|
"menuBlogs": "Blogiau",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Cysylltiadau",
|
||||||
|
"menuModeration": "Safoniad",
|
||||||
|
"menuFollowing": "Ddilynol",
|
||||||
|
"menuFollowers": "Ddilynwyr",
|
||||||
|
"menuRoles": "Rolau",
|
||||||
|
"menuSkills": "Medrau",
|
||||||
|
"menuLogout": "Allgofnodi",
|
||||||
|
"menuKeys": "Llwybrau byr allweddol"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "schockiert",
|
"shocked": "schockiert",
|
||||||
"Encrypted": "Verschlüsselt",
|
"Encrypted": "Verschlüsselt",
|
||||||
"Direct Message permitted instances": "Direktnachricht erlaubte Instanzen",
|
"Direct Message permitted instances": "Direktnachricht erlaubte Instanzen",
|
||||||
"Direct messages are always allowed from these instances.": "Direkte Nachrichten sind in diesen Fällen immer zulässig."
|
"Direct messages are always allowed from these instances.": "Direkte Nachrichten sind in diesen Fällen immer zulässig.",
|
||||||
|
"Key Shortcuts": "Schlüsselverknüpfungen",
|
||||||
|
"menuTimeline": "Timeline-Ansicht",
|
||||||
|
"menuEdit": "Bearbeiten",
|
||||||
|
"menuProfile": "Profilansicht",
|
||||||
|
"menuInbox": "Inbox",
|
||||||
|
"menuSearch": "Suche / Folgen",
|
||||||
|
"menuNewPost": "Neuer Beitrag",
|
||||||
|
"menuCalendar": "Kalender",
|
||||||
|
"menuDM": "Direkte Nachrichten",
|
||||||
|
"menuReplies": "Antworten",
|
||||||
|
"menuOutbox": "Geschickt",
|
||||||
|
"menuBookmarks": "Lesezeichen",
|
||||||
|
"menuShares": "Gemeinsame Artikel",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Web-Links",
|
||||||
|
"menuModeration": "Mäßigung",
|
||||||
|
"menuFollowing": "Folgen",
|
||||||
|
"menuFollowers": "Anhänger",
|
||||||
|
"menuRoles": "Rollen",
|
||||||
|
"menuSkills": "Kompetenzen",
|
||||||
|
"menuLogout": "Ausloggen",
|
||||||
|
"menuKeys": "Schlüsselverknüpfungen"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "shocked",
|
"shocked": "shocked",
|
||||||
"Encrypted": "Encrypted",
|
"Encrypted": "Encrypted",
|
||||||
"Direct Message permitted instances": "Direct Message permitted instances",
|
"Direct Message permitted instances": "Direct Message permitted instances",
|
||||||
"Direct messages are always allowed from these instances.": "Direct messages are always allowed from these instances."
|
"Direct messages are always allowed from these instances.": "Direct messages are always allowed from these instances.",
|
||||||
|
"Key Shortcuts": "Key Shortcuts",
|
||||||
|
"menuTimeline": "Timeline view",
|
||||||
|
"menuEdit": "Edit",
|
||||||
|
"menuProfile": "Profile view",
|
||||||
|
"menuInbox": "Inbox",
|
||||||
|
"menuSearch": "Search/follow",
|
||||||
|
"menuNewPost": "New post",
|
||||||
|
"menuCalendar": "Calendar",
|
||||||
|
"menuDM": "Direct Messages",
|
||||||
|
"menuReplies": "Replies",
|
||||||
|
"menuOutbox": "Sent",
|
||||||
|
"menuBookmarks": "Bookmarks",
|
||||||
|
"menuShares": "Shared items",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Links",
|
||||||
|
"menuModeration": "Moderation",
|
||||||
|
"menuFollowing": "Following",
|
||||||
|
"menuFollowers": "Followers",
|
||||||
|
"menuRoles": "Roles",
|
||||||
|
"menuSkills": "Skills",
|
||||||
|
"menuLogout": "Logout",
|
||||||
|
"menuKeys": "Key Shortcuts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "conmocionada",
|
"shocked": "conmocionada",
|
||||||
"Encrypted": "Cifrada",
|
"Encrypted": "Cifrada",
|
||||||
"Direct Message permitted instances": "Mensaje directo permitido instancias",
|
"Direct Message permitted instances": "Mensaje directo permitido instancias",
|
||||||
"Direct messages are always allowed from these instances.": "Los mensajes directos siempre están permitidos de estas instancias."
|
"Direct messages are always allowed from these instances.": "Los mensajes directos siempre están permitidos de estas instancias.",
|
||||||
|
"Key Shortcuts": "Atajos clave",
|
||||||
|
"menuTimeline": "Vista de la línea de tiempo",
|
||||||
|
"menuEdit": "Editar",
|
||||||
|
"menuProfile": "Vista del perfil",
|
||||||
|
"menuInbox": "Bandeja de entrada",
|
||||||
|
"menuSearch": "Búsqueda / Seguir",
|
||||||
|
"menuNewPost": "Nueva publicación",
|
||||||
|
"menuCalendar": "Calendario",
|
||||||
|
"menuDM": "Mensajes directos",
|
||||||
|
"menuReplies": "Respuestas",
|
||||||
|
"menuOutbox": "Enviada",
|
||||||
|
"menuBookmarks": "Marcadores",
|
||||||
|
"menuShares": "Artículos compartidos",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Enlaces web",
|
||||||
|
"menuModeration": "Moderación",
|
||||||
|
"menuFollowing": "Siguiente",
|
||||||
|
"menuFollowers": "De seguidores",
|
||||||
|
"menuRoles": "Roles",
|
||||||
|
"menuSkills": "Habilidades",
|
||||||
|
"menuLogout": "Cerrar sesión",
|
||||||
|
"menuKeys": "Atajos clave"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "sous le choc",
|
"shocked": "sous le choc",
|
||||||
"Encrypted": "Crypté",
|
"Encrypted": "Crypté",
|
||||||
"Direct Message permitted instances": "Message direct des instances autorisées",
|
"Direct Message permitted instances": "Message direct des instances autorisées",
|
||||||
"Direct messages are always allowed from these instances.": "Les messages directs sont toujours autorisés dans ces instances."
|
"Direct messages are always allowed from these instances.": "Les messages directs sont toujours autorisés dans ces instances.",
|
||||||
|
"Key Shortcuts": "Raccourcis clés",
|
||||||
|
"menuTimeline": "Vue de la chronologie",
|
||||||
|
"menuEdit": "Éditer",
|
||||||
|
"menuProfile": "Voir",
|
||||||
|
"menuInbox": "Boîte de réception",
|
||||||
|
"menuSearch": "Rechercher / suivre",
|
||||||
|
"menuNewPost": "Nouveau poste",
|
||||||
|
"menuCalendar": "Calendrier",
|
||||||
|
"menuDM": "Messages directs",
|
||||||
|
"menuReplies": "réponses",
|
||||||
|
"menuOutbox": "Envoyée",
|
||||||
|
"menuBookmarks": "Favoris",
|
||||||
|
"menuShares": "Articles partagés",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Liens web",
|
||||||
|
"menuModeration": "Modération",
|
||||||
|
"menuFollowing": "Suivante",
|
||||||
|
"menuFollowers": "Suiveuses",
|
||||||
|
"menuRoles": "Les rôles",
|
||||||
|
"menuSkills": "Compétences",
|
||||||
|
"menuLogout": "Se déconnecter",
|
||||||
|
"menuKeys": "Raccourcis clés"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "ionadh",
|
"shocked": "ionadh",
|
||||||
"Encrypted": "Criptithe",
|
"Encrypted": "Criptithe",
|
||||||
"Direct Message permitted instances": "Ceadaíonn teachtaireacht dhíreach cásanna",
|
"Direct Message permitted instances": "Ceadaíonn teachtaireacht dhíreach cásanna",
|
||||||
"Direct messages are always allowed from these instances.": "Ceadaítear teachtaireachtaí díreacha i gcónaí ó na cásanna seo."
|
"Direct messages are always allowed from these instances.": "Ceadaítear teachtaireachtaí díreacha i gcónaí ó na cásanna seo.",
|
||||||
|
"Key Shortcuts": "Príomh-aicearraí",
|
||||||
|
"menuTimeline": "Amlíne View",
|
||||||
|
"menuEdit": "Eagarthóireacht a dhéanamh ar",
|
||||||
|
"menuProfile": "Dearcadh próifíle",
|
||||||
|
"menuInbox": "Bosca isteach",
|
||||||
|
"menuSearch": "Cuardaigh / Lean",
|
||||||
|
"menuNewPost": "Post nua",
|
||||||
|
"menuCalendar": "Caileandar",
|
||||||
|
"menuDM": "Teachtaireachtaí díreacha",
|
||||||
|
"menuReplies": "Freagraí",
|
||||||
|
"menuOutbox": "Seoltar",
|
||||||
|
"menuBookmarks": "Leabharmharcanna",
|
||||||
|
"menuShares": "Míreanna Comhroinnte",
|
||||||
|
"menuBlogs": "Blaganna",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Naisc Ghréasáin",
|
||||||
|
"menuModeration": "Modhnóireacht a dhéanamh ar",
|
||||||
|
"menuFollowing": "Lucht tacaíochta",
|
||||||
|
"menuFollowers": "Leanúna",
|
||||||
|
"menuRoles": "Róil",
|
||||||
|
"menuSkills": "Scileanna",
|
||||||
|
"menuLogout": "Logáil Amach",
|
||||||
|
"menuKeys": "Príomh-aicearraí"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "हैरान",
|
"shocked": "हैरान",
|
||||||
"Encrypted": "को गोपित",
|
"Encrypted": "को गोपित",
|
||||||
"Direct Message permitted instances": "प्रत्यक्ष संदेश अनुमत उदाहरण",
|
"Direct Message permitted instances": "प्रत्यक्ष संदेश अनुमत उदाहरण",
|
||||||
"Direct messages are always allowed from these instances.": "इन उदाहरणों से प्रत्यक्ष संदेश हमेशा अनुमति देते हैं।"
|
"Direct messages are always allowed from these instances.": "इन उदाहरणों से प्रत्यक्ष संदेश हमेशा अनुमति देते हैं।",
|
||||||
|
"Key Shortcuts": "कुंजी शॉर्टकट",
|
||||||
|
"menuTimeline": "समयरेखा दृश्य",
|
||||||
|
"menuEdit": "संपादित करें",
|
||||||
|
"menuProfile": "प्रोफ़ाइल दृश्य",
|
||||||
|
"menuInbox": "इनबॉक्स",
|
||||||
|
"menuSearch": "खोज / अनुसरण करें",
|
||||||
|
"menuNewPost": "नई पोस्ट",
|
||||||
|
"menuCalendar": "पंचांग",
|
||||||
|
"menuDM": "सीधे संदेश",
|
||||||
|
"menuReplies": "जवाब",
|
||||||
|
"menuOutbox": "भेज दिया",
|
||||||
|
"menuBookmarks": "बुकमार्क",
|
||||||
|
"menuShares": "साझा आइटम",
|
||||||
|
"menuBlogs": "ब्लॉग",
|
||||||
|
"menuNewswire": "न्यूज़वायर",
|
||||||
|
"menuLinks": "वेब लिंक",
|
||||||
|
"menuModeration": "संयम",
|
||||||
|
"menuFollowing": "निम्नलिखित",
|
||||||
|
"menuFollowers": "समर्थक",
|
||||||
|
"menuRoles": "भूमिकाएँ",
|
||||||
|
"menuSkills": "कौशल",
|
||||||
|
"menuLogout": "लॉग आउट",
|
||||||
|
"menuKeys": "कुंजी शॉर्टकट"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "scioccata",
|
"shocked": "scioccata",
|
||||||
"Encrypted": "Crittografato",
|
"Encrypted": "Crittografato",
|
||||||
"Direct Message permitted instances": "Messaggio diretto istanze consentite",
|
"Direct Message permitted instances": "Messaggio diretto istanze consentite",
|
||||||
"Direct messages are always allowed from these instances.": "I messaggi diretti sono sempre ammessi da questi casi."
|
"Direct messages are always allowed from these instances.": "I messaggi diretti sono sempre ammessi da questi casi.",
|
||||||
|
"Key Shortcuts": "Scorciatoie chiave",
|
||||||
|
"menuTimeline": "Vista della cronologia",
|
||||||
|
"menuEdit": "Modificare",
|
||||||
|
"menuProfile": "Visualizzazione del profilo",
|
||||||
|
"menuInbox": "Posta in arrivo",
|
||||||
|
"menuSearch": "Cerca / Segui",
|
||||||
|
"menuNewPost": "Nuovo post.",
|
||||||
|
"menuCalendar": "Calendario",
|
||||||
|
"menuDM": "Messaggi diretti",
|
||||||
|
"menuReplies": "Risposte",
|
||||||
|
"menuOutbox": "Inviata",
|
||||||
|
"menuBookmarks": "Segnalibri",
|
||||||
|
"menuShares": "Articoli condivisi",
|
||||||
|
"menuBlogs": "Blog",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Link internet",
|
||||||
|
"menuModeration": "Moderazione",
|
||||||
|
"menuFollowing": "A seguire",
|
||||||
|
"menuFollowers": "Seguaci",
|
||||||
|
"menuRoles": "Ruoli",
|
||||||
|
"menuSkills": "Competenze",
|
||||||
|
"menuLogout": "Disconnettersi",
|
||||||
|
"menuKeys": "Scorciatoie chiave"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "ショックを受けた",
|
"shocked": "ショックを受けた",
|
||||||
"Encrypted": "暗号化",
|
"Encrypted": "暗号化",
|
||||||
"Direct Message permitted instances": "直接メッセージ許可インスタンス",
|
"Direct Message permitted instances": "直接メッセージ許可インスタンス",
|
||||||
"Direct messages are always allowed from these instances.": "直接メッセージは常にこれらのインスタンスから許可されています。"
|
"Direct messages are always allowed from these instances.": "直接メッセージは常にこれらのインスタンスから許可されています。",
|
||||||
|
"Key Shortcuts": "キーショートカット",
|
||||||
|
"menuTimeline": "タイムラインビュー",
|
||||||
|
"menuEdit": "編集する",
|
||||||
|
"menuProfile": "プロファイルビュー",
|
||||||
|
"menuInbox": "受信箱",
|
||||||
|
"menuSearch": "検索/フォロー",
|
||||||
|
"menuNewPost": "新しい投稿",
|
||||||
|
"menuCalendar": "カレンダー",
|
||||||
|
"menuDM": "ダイレクトメッセージ",
|
||||||
|
"menuReplies": "返信",
|
||||||
|
"menuOutbox": "送り返した",
|
||||||
|
"menuBookmarks": "ブックマーク",
|
||||||
|
"menuShares": "共有アイテム",
|
||||||
|
"menuBlogs": "ブログ",
|
||||||
|
"menuNewswire": "ニューワイヤー",
|
||||||
|
"menuLinks": "Webリンク",
|
||||||
|
"menuModeration": "節度",
|
||||||
|
"menuFollowing": "以下",
|
||||||
|
"menuFollowers": "フォロワー",
|
||||||
|
"menuRoles": "役割",
|
||||||
|
"menuSkills": "スキル",
|
||||||
|
"menuLogout": "ログアウト",
|
||||||
|
"menuKeys": "キーショートカット"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "şok kirin",
|
"shocked": "şok kirin",
|
||||||
"Encrypted": "Encîfre kirin",
|
"Encrypted": "Encîfre kirin",
|
||||||
"Direct Message permitted instances": "Peyama rasterast destûrê",
|
"Direct Message permitted instances": "Peyama rasterast destûrê",
|
||||||
"Direct messages are always allowed from these instances.": "Peyamên rasterast her gav ji van deman têne destûr kirin."
|
"Direct messages are always allowed from these instances.": "Peyamên rasterast her gav ji van deman têne destûr kirin.",
|
||||||
|
"Key Shortcuts": "Kurteyên Key",
|
||||||
|
"menuTimeline": "Dîtina Timeline",
|
||||||
|
"menuEdit": "Weşandin",
|
||||||
|
"menuProfile": "View Profîl",
|
||||||
|
"menuInbox": "Inbott",
|
||||||
|
"menuSearch": "Lêgerîn / bişopîne",
|
||||||
|
"menuNewPost": "Peyama nû",
|
||||||
|
"menuCalendar": "Salname",
|
||||||
|
"menuDM": "Peyamên rasterast",
|
||||||
|
"menuReplies": "Bersiv",
|
||||||
|
"menuOutbox": "Şandin",
|
||||||
|
"menuBookmarks": "Emîrê",
|
||||||
|
"menuShares": "Tiştên parvekirî",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Girêdanên malperê",
|
||||||
|
"menuModeration": "Nermbûn",
|
||||||
|
"menuFollowing": "Pêketînî",
|
||||||
|
"menuFollowers": "Followers",
|
||||||
|
"menuRoles": "Roles",
|
||||||
|
"menuSkills": "Şarezayên",
|
||||||
|
"menuLogout": "Derkeve",
|
||||||
|
"menuKeys": "Kurteyên Key"
|
||||||
}
|
}
|
||||||
|
|
|
@ -399,5 +399,28 @@
|
||||||
"shocked": "shocked",
|
"shocked": "shocked",
|
||||||
"Encrypted": "Encrypted",
|
"Encrypted": "Encrypted",
|
||||||
"Direct Message permitted instances": "Direct Message permitted instances",
|
"Direct Message permitted instances": "Direct Message permitted instances",
|
||||||
"Direct messages are always allowed from these instances.": "Direct messages are always allowed from these instances."
|
"Direct messages are always allowed from these instances.": "Direct messages are always allowed from these instances.",
|
||||||
|
"Key Shortcuts": "Key Shortcuts",
|
||||||
|
"menuTimeline": "Timeline view",
|
||||||
|
"menuEdit": "Edit",
|
||||||
|
"menuProfile": "Profile view",
|
||||||
|
"menuInbox": "Inbox",
|
||||||
|
"menuSearch": "Search/follow",
|
||||||
|
"menuNewPost": "New post",
|
||||||
|
"menuCalendar": "Calendar",
|
||||||
|
"menuDM": "Direct Messages",
|
||||||
|
"menuReplies": "Replies",
|
||||||
|
"menuOutbox": "Sent",
|
||||||
|
"menuBookmarks": "Bookmarks",
|
||||||
|
"menuShares": "Shared items",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Links",
|
||||||
|
"menuModeration": "Moderation",
|
||||||
|
"menuFollowing": "Following",
|
||||||
|
"menuFollowers": "Followers",
|
||||||
|
"menuRoles": "Roles",
|
||||||
|
"menuSkills": "Skills",
|
||||||
|
"menuLogout": "Logout",
|
||||||
|
"menuKeys": "Key Shortcuts"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "chocada",
|
"shocked": "chocada",
|
||||||
"Encrypted": "Criptografada",
|
"Encrypted": "Criptografada",
|
||||||
"Direct Message permitted instances": "Mensagens diretas permitidas instâncias",
|
"Direct Message permitted instances": "Mensagens diretas permitidas instâncias",
|
||||||
"Direct messages are always allowed from these instances.": "Mensagens diretas são sempre permitidas a partir dessas instâncias."
|
"Direct messages are always allowed from these instances.": "Mensagens diretas são sempre permitidas a partir dessas instâncias.",
|
||||||
|
"Key Shortcuts": "Atalhos-chave",
|
||||||
|
"menuTimeline": "Vista da linha do tempo",
|
||||||
|
"menuEdit": "Editar",
|
||||||
|
"menuProfile": "Vista de perfil",
|
||||||
|
"menuInbox": "Caixa de entrada",
|
||||||
|
"menuSearch": "Pesquisa / Siga",
|
||||||
|
"menuNewPost": "Nova postagem",
|
||||||
|
"menuCalendar": "Calendário",
|
||||||
|
"menuDM": "Mensagens diretas",
|
||||||
|
"menuReplies": "Respostas",
|
||||||
|
"menuOutbox": "Enviei",
|
||||||
|
"menuBookmarks": "Favoritas",
|
||||||
|
"menuShares": "Itens compartilhados",
|
||||||
|
"menuBlogs": "Blogs",
|
||||||
|
"menuNewswire": "Newswire",
|
||||||
|
"menuLinks": "Links da Web",
|
||||||
|
"menuModeration": "Moderação",
|
||||||
|
"menuFollowing": "Seguindo",
|
||||||
|
"menuFollowers": "Seguidoras",
|
||||||
|
"menuRoles": "Papéis",
|
||||||
|
"menuSkills": "Habilidades",
|
||||||
|
"menuLogout": "Sair",
|
||||||
|
"menuKeys": "Atalhos-chave"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "потрясенный",
|
"shocked": "потрясенный",
|
||||||
"Encrypted": "Зашифрованный",
|
"Encrypted": "Зашифрованный",
|
||||||
"Direct Message permitted instances": "Прямое сообщение разрешено экземпляры",
|
"Direct Message permitted instances": "Прямое сообщение разрешено экземпляры",
|
||||||
"Direct messages are always allowed from these instances.": "Прямые сообщения всегда допускаются из этих экземпляров."
|
"Direct messages are always allowed from these instances.": "Прямые сообщения всегда допускаются из этих экземпляров.",
|
||||||
|
"Key Shortcuts": "Клавичные ярлыки",
|
||||||
|
"menuTimeline": "Сроки зрения",
|
||||||
|
"menuEdit": "Редактировать",
|
||||||
|
"menuProfile": "вид профиля",
|
||||||
|
"menuInbox": "Входящие",
|
||||||
|
"menuSearch": "Поиск / следующее",
|
||||||
|
"menuNewPost": "Новый пост",
|
||||||
|
"menuCalendar": "Календарь",
|
||||||
|
"menuDM": "Прямые сообщения",
|
||||||
|
"menuReplies": "Отвечает",
|
||||||
|
"menuOutbox": "Отправил",
|
||||||
|
"menuBookmarks": "Закладки",
|
||||||
|
"menuShares": "Общие предметы",
|
||||||
|
"menuBlogs": "Блоги",
|
||||||
|
"menuNewswire": "Новобранец",
|
||||||
|
"menuLinks": "веб ссылки",
|
||||||
|
"menuModeration": "На модерации",
|
||||||
|
"menuFollowing": "Следующий",
|
||||||
|
"menuFollowers": "Подписчики",
|
||||||
|
"menuRoles": "Роли",
|
||||||
|
"menuSkills": "Навыки и умения",
|
||||||
|
"menuLogout": "Выйти",
|
||||||
|
"menuKeys": "Клавичные ярлыки"
|
||||||
}
|
}
|
||||||
|
|
|
@ -403,5 +403,28 @@
|
||||||
"shocked": "震惊的",
|
"shocked": "震惊的",
|
||||||
"Encrypted": "加密的",
|
"Encrypted": "加密的",
|
||||||
"Direct Message permitted instances": "直接留言允许实例",
|
"Direct Message permitted instances": "直接留言允许实例",
|
||||||
"Direct messages are always allowed from these instances.": "这些实例始终允许直接消息。"
|
"Direct messages are always allowed from these instances.": "这些实例始终允许直接消息。",
|
||||||
|
"Key Shortcuts": "关键捷径",
|
||||||
|
"menuTimeline": "时间表视图",
|
||||||
|
"menuEdit": "编辑",
|
||||||
|
"menuProfile": "个人资料视图",
|
||||||
|
"menuInbox": "收件箱",
|
||||||
|
"menuSearch": "搜索/关注",
|
||||||
|
"menuNewPost": "最新帖子",
|
||||||
|
"menuCalendar": "日历",
|
||||||
|
"menuDM": "直接留言",
|
||||||
|
"menuReplies": "答案",
|
||||||
|
"menuOutbox": "发送",
|
||||||
|
"menuBookmarks": "书签",
|
||||||
|
"menuShares": "共享项目",
|
||||||
|
"menuBlogs": "博客",
|
||||||
|
"menuNewswire": "新闻界.",
|
||||||
|
"menuLinks": "网页链接",
|
||||||
|
"menuModeration": "适度",
|
||||||
|
"menuFollowing": "下列的",
|
||||||
|
"menuFollowers": "追随者",
|
||||||
|
"menuRoles": "角色",
|
||||||
|
"menuSkills": "技能",
|
||||||
|
"menuLogout": "登出",
|
||||||
|
"menuKeys": "关键捷径"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,95 @@
|
||||||
|
__filename__ = "webapp_accesskeys.py"
|
||||||
|
__author__ = "Bob Mottram"
|
||||||
|
__license__ = "AGPL3+"
|
||||||
|
__version__ = "1.2.0"
|
||||||
|
__maintainer__ = "Bob Mottram"
|
||||||
|
__email__ = "bob@freedombone.net"
|
||||||
|
__status__ = "Production"
|
||||||
|
|
||||||
|
import os
|
||||||
|
from utils import loadJson
|
||||||
|
from utils import getConfigParam
|
||||||
|
from webapp_utils import htmlHeaderWithExternalStyle
|
||||||
|
from webapp_utils import htmlFooter
|
||||||
|
|
||||||
|
|
||||||
|
def loadAccessKeysForAccounts(baseDir: str, keyShortcuts: {}) -> None:
|
||||||
|
"""Loads key shortcuts for each account
|
||||||
|
"""
|
||||||
|
for subdir, dirs, files in os.walk(baseDir + '/accounts'):
|
||||||
|
for acct in dirs:
|
||||||
|
if '@' not in acct:
|
||||||
|
continue
|
||||||
|
if 'inbox@' in acct or 'news@' in acct:
|
||||||
|
continue
|
||||||
|
accountDir = os.path.join(baseDir + '/accounts', acct)
|
||||||
|
accessKeysFilename = accountDir + '/accessKeys.json'
|
||||||
|
if not os.path.isfile(accessKeysFilename):
|
||||||
|
continue
|
||||||
|
nickname = acct.split('@')[0]
|
||||||
|
accessKeys = loadJson(accessKeysFilename)
|
||||||
|
if accessKeys:
|
||||||
|
keyShortcuts[nickname] = accessKeys
|
||||||
|
break
|
||||||
|
|
||||||
|
|
||||||
|
def htmlAccessKeys(cssCache: {}, baseDir: str,
|
||||||
|
nickname: str, domain: str,
|
||||||
|
translate: {}, accessKeys: {},
|
||||||
|
defaultAccessKeys: {}) -> str:
|
||||||
|
"""Show and edit key shortcuts
|
||||||
|
"""
|
||||||
|
accessKeysFilename = \
|
||||||
|
baseDir + '/accounts/' + nickname + '@' + domain + '/accessKeys.json'
|
||||||
|
if os.path.isfile(accessKeysFilename):
|
||||||
|
accessKeysFromFile = loadJson(accessKeysFilename)
|
||||||
|
if accessKeysFromFile:
|
||||||
|
accessKeys = accessKeysFromFile
|
||||||
|
|
||||||
|
accessKeysForm = ''
|
||||||
|
cssFilename = baseDir + '/epicyon-profile.css'
|
||||||
|
if os.path.isfile(baseDir + '/epicyon.css'):
|
||||||
|
cssFilename = baseDir + '/epicyon.css'
|
||||||
|
|
||||||
|
instanceTitle = \
|
||||||
|
getConfigParam(baseDir, 'instanceTitle')
|
||||||
|
accessKeysForm = htmlHeaderWithExternalStyle(cssFilename, instanceTitle)
|
||||||
|
accessKeysForm += '<div class="container">\n'
|
||||||
|
|
||||||
|
accessKeysForm += \
|
||||||
|
' <h1>' + translate['Key Shortcuts'] + '</h1>\n'
|
||||||
|
|
||||||
|
accessKeysForm += ' <form method="POST" action="' + \
|
||||||
|
'/users/' + nickname + '/changeAccessKeys">\n'
|
||||||
|
|
||||||
|
accessKeysForm += \
|
||||||
|
' <center>' + \
|
||||||
|
'<button type="submit" class="button" name="submitAccessKeys">' + \
|
||||||
|
translate['Submit'] + '</button></center>\n'
|
||||||
|
|
||||||
|
accessKeysForm += ' <table class="accesskeys">\n'
|
||||||
|
accessKeysForm += ' <colgroup>\n'
|
||||||
|
accessKeysForm += ' <col span="1" class="accesskeys-left">\n'
|
||||||
|
accessKeysForm += ' <col span="1" class="accesskeys-center">\n'
|
||||||
|
accessKeysForm += ' </colgroup>\n'
|
||||||
|
accessKeysForm += ' <tbody>\n'
|
||||||
|
|
||||||
|
for variableName, key in defaultAccessKeys.items():
|
||||||
|
if not translate.get(variableName):
|
||||||
|
continue
|
||||||
|
keyStr = '<tr>'
|
||||||
|
keyStr += \
|
||||||
|
'<td><label class="labels">' + \
|
||||||
|
translate[variableName] + '</label></td>'
|
||||||
|
if accessKeys.get(variableName):
|
||||||
|
key = accessKeys[variableName]
|
||||||
|
keyStr += \
|
||||||
|
'<td><input type="text" value="' + key + '" style="width:1ch">'
|
||||||
|
keyStr = '</td></tr>'
|
||||||
|
|
||||||
|
accessKeysForm += ' </tbody>\n'
|
||||||
|
accessKeysForm += ' </table>\n'
|
||||||
|
accessKeysForm += ' </form>\n'
|
||||||
|
accessKeysForm += '</div>\n'
|
||||||
|
accessKeysForm += htmlFooter()
|
||||||
|
return accessKeysForm
|
Loading…
Reference in New Issue