Images can be accessed via tab key

merge-requests/8/head
Bob Mottram 2020-08-14 20:31:19 +01:00
parent 9e023d4ea8
commit fe4571fa6c
2 changed files with 26 additions and 15 deletions

View File

@ -76,6 +76,10 @@ body, html {
font-size: var(--font-size); font-size: var(--font-size);
} }
.imageAnchor:focus img{
border: 2px solid blue;
}
h1 { h1 {
color: var(--title-color); color: var(--title-color);
} }

View File

@ -3718,7 +3718,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
nickname, domain, nickname, domain,
displayName, False) displayName, False)
avatarLink = ' <a href="' + postActor + '">' avatarLink = ' <a class="imageAnchor" href="' + postActor + '">'
avatarLink += \ avatarLink += \
' <img loading="lazy" src="' + avatarUrl + '" title="' + \ ' <img loading="lazy" src="' + avatarUrl + '" title="' + \
translate['Show profile'] + '" alt=" "' + avatarPosition + '/></a>' translate['Show profile'] + '" alt=" "' + avatarPosition + '/></a>'
@ -3726,7 +3726,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
if showAvatarOptions and \ if showAvatarOptions and \
fullDomain + '/users/' + nickname not in postActor: fullDomain + '/users/' + nickname not in postActor:
avatarLink = \ avatarLink = \
' <a href="/users/' + nickname + '?options=' + postActor + \ ' <a class="imageAnchor" href="/users/' + \
nickname + '?options=' + postActor + \
';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + '">\n' ';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + '">\n'
avatarLink += \ avatarLink += \
' <img loading="lazy" title="' + \ ' <img loading="lazy" title="' + \
@ -3798,7 +3799,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
nickname, domain, nickname, domain,
displayName, False) displayName, False)
titleStr += \ titleStr += \
'<a href="/users/' + nickname + '?options=' + postActor + \ '<a class="imageAnchor" href="/users/' + \
nickname + '?options=' + postActor + \
';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + \ ';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + \
'">' + displayName + '</a>\n' '">' + displayName + '</a>\n'
else: else:
@ -3812,7 +3814,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
# pprint(postJsonObject) # pprint(postJsonObject)
print('ERROR: no actorDomain') print('ERROR: no actorDomain')
titleStr += \ titleStr += \
'<a href="/users/' + nickname + '?options=' + postActor + \ '<a class="imageAnchor" href="/users/' + \
nickname + '?options=' + postActor + \
';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + \ ';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + \
'">@' + actorNickname + '@' + actorDomain + '</a>\n' '">@' + actorNickname + '@' + actorDomain + '</a>\n'
@ -3843,19 +3846,20 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
replyStr = '' replyStr = ''
if isPublicRepeat: if isPublicRepeat:
replyStr += \ replyStr += \
'<a href="/users/' + nickname + '?replyto=' + replyToLink + \ '<a class="imageAnchor" href="/users/' + \
nickname + '?replyto=' + replyToLink + \
'?actor=' + postJsonObject['actor'] + \ '?actor=' + postJsonObject['actor'] + \
'" title="' + translate['Reply to this post'] + '">\n' '" title="' + translate['Reply to this post'] + '">\n'
else: else:
if isDM(postJsonObject): if isDM(postJsonObject):
replyStr += \ replyStr += \
'<a href="/users/' + nickname + \ '<a class="imageAnchor" href="/users/' + nickname + \
'?replydm=' + replyToLink + \ '?replydm=' + replyToLink + \
'?actor=' + postJsonObject['actor'] + \ '?actor=' + postJsonObject['actor'] + \
'" title="' + translate['Reply to this post'] + '">\n' '" title="' + translate['Reply to this post'] + '">\n'
else: else:
replyStr += \ replyStr += \
'<a href="/users/' + nickname + \ '<a class="imageAnchor" href="/users/' + nickname + \
'?replyfollowers=' + replyToLink + \ '?replyfollowers=' + replyToLink + \
'?actor=' + postJsonObject['actor'] + \ '?actor=' + postJsonObject['actor'] + \
'" title="' + translate['Reply to this post'] + '">\n' '" title="' + translate['Reply to this post'] + '">\n'
@ -3871,7 +3875,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
if isBlogPost(postJsonObject): if isBlogPost(postJsonObject):
if '/statuses/' in postJsonObject['object']['id']: if '/statuses/' in postJsonObject['object']['id']:
editStr += \ editStr += \
'<a href="/users/' + nickname + \ '<a class="imageAnchor" href="/users/' + nickname + \
'/tlblogs?editblogpost=' + \ '/tlblogs?editblogpost=' + \
postJsonObject['object']['id'].split('/statuses/')[1] + \ postJsonObject['object']['id'].split('/statuses/')[1] + \
'?actor=' + actorNickname + \ '?actor=' + actorNickname + \
@ -3895,7 +3899,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
announceLink = 'unrepeatprivate' announceLink = 'unrepeatprivate'
announceTitle = translate['Undo the repeat'] announceTitle = translate['Undo the repeat']
announceStr = \ announceStr = \
'<a href="/users/' + nickname + '?' + announceLink + \ '<a class="imageAnchor" href="/users/' + \
nickname + '?' + announceLink + \
'=' + postJsonObject['object']['id'] + pageNumberParam + \ '=' + postJsonObject['object']['id'] + pageNumberParam + \
'?actor=' + postJsonObject['actor'] + \ '?actor=' + postJsonObject['actor'] + \
'?bm=' + timelinePostBookmark + \ '?bm=' + timelinePostBookmark + \
@ -3923,7 +3928,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
likeLink = 'unlike' likeLink = 'unlike'
likeTitle = translate['Undo the like'] likeTitle = translate['Undo the like']
likeStr = \ likeStr = \
'<a href="/users/' + nickname + '?' + \ '<a class="imageAnchor" href="/users/' + nickname + '?' + \
likeLink + '=' + postJsonObject['object']['id'] + \ likeLink + '=' + postJsonObject['object']['id'] + \
pageNumberParam + \ pageNumberParam + \
'?actor=' + postJsonObject['actor'] + \ '?actor=' + postJsonObject['actor'] + \
@ -3945,7 +3950,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
bookmarkLink = 'unbookmark' bookmarkLink = 'unbookmark'
bookmarkTitle = translate['Undo the bookmark'] bookmarkTitle = translate['Undo the bookmark']
bookmarkStr = \ bookmarkStr = \
'<a href="/users/' + nickname + '?' + \ '<a class="imageAnchor" href="/users/' + nickname + '?' + \
bookmarkLink + '=' + postJsonObject['object']['id'] + \ bookmarkLink + '=' + postJsonObject['object']['id'] + \
pageNumberParam + \ pageNumberParam + \
'?actor=' + postJsonObject['actor'] + \ '?actor=' + postJsonObject['actor'] + \
@ -3965,7 +3970,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
messageId.startswith(postActor))): messageId.startswith(postActor))):
if '/users/' + nickname + '/' in messageId: if '/users/' + nickname + '/' in messageId:
deleteStr = \ deleteStr = \
'<a href="/users/' + nickname + \ '<a class="imageAnchor" href="/users/' + nickname + \
'?delete=' + messageId + pageNumberParam + \ '?delete=' + messageId + pageNumberParam + \
'" title="' + translate['Delete this post'] + '">\n' '" title="' + translate['Delete this post'] + '">\n'
deleteStr += \ deleteStr += \
@ -3975,7 +3980,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
else: else:
if not isMuted: if not isMuted:
muteStr = \ muteStr = \
'<a href="/users/' + nickname + \ '<a class="imageAnchor" href="/users/' + nickname + \
'?mute=' + messageId + pageNumberParam + '?tl=' + boxName + \ '?mute=' + messageId + pageNumberParam + '?tl=' + boxName + \
'?bm=' + timelinePostBookmark + \ '?bm=' + timelinePostBookmark + \
'" title="' + translate['Mute this post'] + '">\n' '" title="' + translate['Mute this post'] + '">\n'
@ -3986,7 +3991,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
'" src="/' + iconsDir + '/mute.png"/></a>\n' '" src="/' + iconsDir + '/mute.png"/></a>\n'
else: else:
muteStr = \ muteStr = \
'<a href="/users/' + nickname + '?unmute=' + messageId + \ '<a class="imageAnchor" href="/users/' + \
nickname + '?unmute=' + messageId + \
pageNumberParam + '?tl=' + boxName + '?bm=' + \ pageNumberParam + '?tl=' + boxName + '?bm=' + \
timelinePostBookmark + '" title="' + \ timelinePostBookmark + '" title="' + \
translate['Undo mute'] + '">\n' translate['Undo mute'] + '">\n'
@ -4044,7 +4050,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
idx = 'Show options for this person' idx = 'Show options for this person'
replyAvatarImageInPost = \ replyAvatarImageInPost = \
'<div class="timeline-avatar-reply">\n' \ '<div class="timeline-avatar-reply">\n' \
'<a href="/users/' + nickname + \ '<a class="imageAnchor" ' + \
'href="/users/' + nickname + \
'?options=' + \ '?options=' + \
announceActor + ';' + str(pageNumber) + \ announceActor + ';' + str(pageNumber) + \
';' + announceAvatarUrl + \ ';' + announceAvatarUrl + \