diff --git a/webinterface.py b/webinterface.py
index d03683217..7ae0865bc 100644
--- a/webinterface.py
+++ b/webinterface.py
@@ -2895,20 +2895,20 @@ def individualFollowAsHtml(translate: {},
'' + \
- translate['Block'] + ' '
+ translate['Block'] + '\n'
if b == 'unfollow':
buttonsStr += \
'' + \
- translate['Unfollow'] + ' '
+ translate['Unfollow'] + '\n'
resultStr = '
\n'
return resultStr
@@ -2948,13 +2948,13 @@ def addEmbeddedAudio(translate: {}, content: str) -> str:
'/' in w):
continue
url = w
- content += ''
+ content += '\n\n'
content += \
''
content += \
translate['Your browser does not support the audio element.']
- content += ' '
+ content += ' \n \n'
return content
@@ -2996,14 +2996,14 @@ def addEmbeddedVideo(translate: {}, content: str,
continue
url = w
content += \
- ''
+ '\n\n'
content += \
''
+ extension.replace('.', '') + '">\n'
content += \
translate['Your browser does not support the video element.']
- content += ' '
+ content += ' \n \n'
return content
@@ -3016,12 +3016,12 @@ def addEmbeddedVideoFromSites(translate: {}, content: str,
if '<' in url:
url = url.split('<')[0]
content = \
- content + " "
+ "fullscreen\" allowfullscreen>\n\n"
return content
videoSite = 'https://www.youtube.com'
@@ -3032,11 +3032,11 @@ def addEmbeddedVideoFromSites(translate: {}, content: str,
if '&' in url:
url = url.split('&')[0]
content = \
- content + "\n "
+ "allowfullscreen>\n\n"
return content
invidiousSites = ('https://invidio.us',
@@ -3050,11 +3050,11 @@ def addEmbeddedVideoFromSites(translate: {}, content: str,
if '&' in url:
url = url.split('&')[0]
content = \
- content + "\n "
+ "allowfullscreen>\n\n"
return content
videoSite = 'https://media.ccc.de'
@@ -3065,11 +3065,11 @@ def addEmbeddedVideoFromSites(translate: {}, content: str,
if not url.endswith('/oembed'):
url = url + '/oembed'
content = \
- content + "\n "
+ "allowfullscreen>\n\n"
return content
if '"https://' in content:
@@ -3108,13 +3108,13 @@ def addEmbeddedVideoFromSites(translate: {}, content: str,
if '"' in url:
url = url.split('"')[0].replace('/watch/', '/embed/')
content = \
- content + "\n "
+ "fullscreen\" allowfullscreen>\n\n"
return content
return content
@@ -3171,10 +3171,10 @@ def insertQuestion(baseDir: str, translate: {},
content += ''
content += \
'
'
+ translate['Vote'] + '" class="vote"> \n'
+ content += '\n\n'
else:
# show the responses to a question
- content += ''
+ content += '
'
+ content += '
\n'
return content
@@ -3414,7 +3414,7 @@ def getPostAttachmentsAsHtml(postJsonObject: {}, boxName: str, translate: {},
return attachmentStr, galleryStr
attachmentCtr = 0
- attachmentStr += '\n'
- attachmentStr += ''
+ attachmentStr += '\n\n'
attachmentStr += \
''
attachmentStr += \
translate['Your browser does not support the audio tag.']
- attachmentStr += ' '
+ attachmentStr += ' \n \n'
attachmentCtr += 1
attachmentStr += ''
return attachmentStr, galleryStr
@@ -3693,13 +3693,13 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
fullDomain + '/users/' + nickname not in postActor:
avatarLink = \
' '
+ ';' + str(pageNumber) + ';' + avatarUrl + messageIdStr + '">\n'
avatarLink += \
' '
+ '" src="' + avatarUrl + '" ' + avatarPosition + '/>\n'
avatarImageInPost = \
- ' ' + avatarLink + '
'
+ ' ' + avatarLink + '
\n'
# don't create new html within the bookmarks timeline
# it should already have been created for the inbox
@@ -3765,7 +3765,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
titleStr += \
'' + displayName + ' '
+ '">' + displayName + '\n'
else:
if not messageId:
# pprint(postJsonObject)
@@ -3779,13 +3779,13 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
titleStr += \
'@' + actorNickname + '@' + actorDomain + ' '
+ '">@' + actorNickname + '@' + actorDomain + '\n'
# Show a DM icon for DMs in the inbox timeline
if showDMicon:
titleStr = \
titleStr + ' '
+ iconsDir + '/dm.png" class="DMicon"/>\n'
replyStr = ''
if showIcons:
@@ -3809,26 +3809,26 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
replyStr += \
''
+ '" title="' + translate['Reply to this post'] + '">\n'
else:
if isDM(postJsonObject):
replyStr += \
' '
+ '" title="' + translate['Reply to this post'] + '">\n'
else:
replyStr += \
' '
+ '" title="' + translate['Reply to this post'] + '">\n'
replyStr += \
' '
+ ' |" src="/' + iconsDir + '/reply.png"/>\n'
editStr = ''
if fullDomain + '/users/' + nickname in postJsonObject['actor']:
@@ -3843,7 +3843,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
' '
+ ' |" src="/' + iconsDir + '/edit.png"/>\n'
announceStr = ''
if not isModerationPost and showRepeatIcon:
@@ -3863,11 +3863,11 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
'=' + postJsonObject['object']['id'] + pageNumberParam + \
'?actor=' + postJsonObject['actor'] + \
'?bm=' + timelinePostBookmark + \
- '?tl=' + boxName + '" title="' + announceTitle + '">'
+ '?tl=' + boxName + '" title="' + announceTitle + '">\n'
announceStr += \
' '
+ ' |" src="/' + iconsDir + '/' + announceIcon + '"/>\n'
likeStr = ''
if not isModerationPost:
@@ -3893,11 +3893,11 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
'?actor=' + postJsonObject['actor'] + \
'?bm=' + timelinePostBookmark + \
'?tl=' + boxName + '" title="' + \
- likeTitle + likeCountStr + '">'
+ likeTitle + likeCountStr + '">\n'
likeStr += \
' '
+ ' |" src="/' + iconsDir + '/' + likeIcon + '"/>\n'
bookmarkStr = ''
if not isModerationPost:
@@ -3914,11 +3914,11 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
pageNumberParam + \
'?actor=' + postJsonObject['actor'] + \
'?bm=' + timelinePostBookmark + \
- '?tl=' + boxName + '" title="' + bookmarkTitle + '">'
+ '?tl=' + boxName + '" title="' + bookmarkTitle + '">\n'
bookmarkStr += \
' '
+ '/' + bookmarkIcon + '"/>\n'
isMuted = postIsMuted(baseDir, nickname, domain, postJsonObject, messageId)
@@ -3931,33 +3931,33 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
deleteStr = \
''
+ '" title="' + translate['Delete this post'] + '">\n'
deleteStr += \
' '
+ '" src="/' + iconsDir + '/delete.png"/>\n'
else:
if not isMuted:
muteStr = \
''
+ '" title="' + translate['Mute this post'] + '">\n'
muteStr += \
' '
+ '" src="/' + iconsDir + '/mute.png"/>\n'
else:
muteStr = \
''
+ translate['Undo mute'] + '">\n'
muteStr += \
' '
+ '" src="/' + iconsDir+'/unmute.png"/>\n'
replyAvatarImageInPost = ''
if showRepeatIcon:
@@ -3970,7 +3970,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
translate['announces'] + \
'" alt="' + translate['announces'] + \
'" src="/' + iconsDir + \
- '/repeat_inactive.png" class="announceOrReply"/>'
+ '/repeat_inactive.png" class="announceOrReply"/>\n'
else:
announceNickname = \
getNicknameFromActor(attributedTo)
@@ -3994,7 +3994,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
iconsDir + '/repeat_inactive.png" ' + \
'class="announceOrReply"/> ' + \
- announceDisplayName + ' '
+ announceDisplayName + '\n'
# show avatar of person replied to
announceActor = \
postJsonObject['object']['attributedTo']
@@ -4004,7 +4004,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
if announceAvatarUrl:
idx = 'Show options for this person'
replyAvatarImageInPost = \
- '\n'
else:
titleStr += \
' @' + \
announceNickname + '@' + \
- announceDomain + ' '
+ announceDomain + '\n'
else:
titleStr += \
' @unattributed '
+ '">@unattributed\n'
else:
titleStr += \
' @unattributed '
+ postJsonObject['object']['id'] + '">@unattributed\n'
else:
if postJsonObject['object'].get('inReplyTo'):
containerClassIcons = 'containericons darker'
@@ -4053,7 +4053,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
translate['replying to themselves'] + \
'" alt="' + translate['replying to themselves'] + \
'" src="/' + iconsDir + \
- '/reply.png" class="announceOrReply"/>'
+ '/reply.png" class="announceOrReply"/>\n'
else:
if '/statuses/' in postJsonObject['object']['inReplyTo']:
inReplyTo = postJsonObject['object']['inReplyTo']
@@ -4087,7 +4087,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
iconsDir + '/reply.png" ' + \
'class="announceOrReply"/> ' + \
'' + replyDisplayName + ' '
+ '">' + replyDisplayName + '\n'
# show avatar of person replied to
replyAvatarUrl = \
@@ -4097,13 +4097,13 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
if replyAvatarUrl:
replyAvatarImageInPost = \
''
+ avatarPosition + '/>\n\n'
else:
inReplyTo = \
postJsonObject['object']['inReplyTo']
@@ -4127,7 +4127,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
'@' + \
replyNickname + '@' + \
- replyDomain + ' '
+ replyDomain + '\n'
else:
titleStr += \
' ' + \
'@unknown '
+ '">@unknown\n'
else:
postDomain = \
postJsonObject['object']['inReplyTo']
@@ -4157,7 +4157,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
iconsDir + '/reply.png" ' + \
'class="announceOrReply"/> ' + postDomain + ' '
+ '">' + postDomain + '\n'
attachmentStr, galleryStr = \
getPostAttachmentsAsHtml(postJsonObject, boxName, translate,
@@ -4255,7 +4255,7 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
contentStr = ''
if postJsonObject['object'].get('summary'):
contentStr += \
- '' + postJsonObject['object']['summary'] + ' '
+ '' + postJsonObject['object']['summary'] + ' \n '
if isModerationPost:
containerClass = 'container report'
# get the content warning text
@@ -4282,11 +4282,11 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
contentStr = ''
else:
if not isPatch:
- contentStr = '' + contentStr + '
'
+ contentStr = '' + contentStr + '
\n'
else:
contentStr = \
''
+ '\n'
postHtml = ''
if boxName != 'tlmedia':
@@ -4294,8 +4294,8 @@ def individualPostAsHtml(recentPostsCache: {}, maxRecentPosts: int,
'" class="' + containerClass + '">\n'
postHtml += avatarImageInPost
postHtml += '' + titleStr + \
- replyAvatarImageInPost + '
'
- postHtml += contentStr + footerStr
+ replyAvatarImageInPost + '\n'
+ postHtml += contentStr + footerStr + '\n'
postHtml += '\n'
else:
postHtml = galleryStr
@@ -4497,7 +4497,7 @@ def htmlTimeline(defaultTimeline: str,
'class="timelineicon" alt="' + \
translate['Approve follow requests'] + \
'" title="' + translate['Approve follow requests'] + \
- '" src="/' + iconsDir + '/person.png"/>'
+ '" src="/' + iconsDir + '/person.png"/>\n'
break
moderationButtonStr = ''
@@ -4507,7 +4507,7 @@ def htmlTimeline(defaultTimeline: str,
'/moderation">' + \
htmlHighlightLabel(translate['Mod'], newReport) + \
- ' '
+ ' \n'
sharesButtonStr = ''
bookmarksButtonStr = ''
@@ -4516,12 +4516,12 @@ def htmlTimeline(defaultTimeline: str,
'' + \
htmlHighlightLabel(translate['Shares'], newShare) + \
- ' '
+ ' \n'
bookmarksButtonStr = \
'' + translate['Bookmarks'] + \
- ' '
+ ' \n'
tlStr = htmlHeader(cssFilename, profileStyle)
@@ -4534,7 +4534,7 @@ def htmlTimeline(defaultTimeline: str,
iconsDir + '/newpost.png" title="' + \
translate['Create a new post'] + '" alt="| ' + \
translate['Create a new post'] + \
- '" class="timelineicon"/>'
+ '" class="timelineicon"/>\n'
else:
newPostButtonStr = \
' '
+ '" class="timelineicon"/>\n'
else:
newPostButtonStr = \
' '
+ '" class="timelineicon"/>\n'
else:
newPostButtonStr = \
' '
+ '" class="timelineicon"/>\n'
# This creates a link to the profile page when viewed
# in lynx, but should be invisible in a graphical web browser
tlStr += \
'' + \
- translate['Switch to profile view'] + ' '
+ translate['Switch to profile view'] + '\n'
# banner and row of buttons
tlStr += \
''
+ translate['Switch to profile view'] + '">\n'
tlStr += ''
- tlStr += '
'
+ tlStr += '\n\n'
tlStr += '\n'
# first button
@@ -4581,30 +4581,30 @@ def htmlTimeline(defaultTimeline: str,
'
' + translate['Media'] + \
- ' '
+ '\n'
elif defaultTimeline == 'tlblogs':
tlStr += \
'
' + translate['Blogs'] + \
- ' '
+ '\n'
else:
tlStr += \
'
' + \
- translate['Inbox'] + ' '
+ translate['Inbox'] + '\n'
tlStr += \
'
' + htmlHighlightLabel(translate['DM'], newDM) + \
- ' '
+ '\n'
tlStr += \
'
' + \
htmlHighlightLabel(translate['Replies'], newReply) + \
- ' '
+ '\n'
# typically the media button
if defaultTimeline != 'tlmedia':
@@ -4613,14 +4613,14 @@ def htmlTimeline(defaultTimeline: str,
'
' + translate['Media'] + \
- ' '
+ '\n'
else:
if not minimal:
tlStr += \
'
' + translate['Inbox'] + \
- ' '
+ '\n'
# typically the blogs button
if defaultTimeline != 'tlblogs':
@@ -4629,20 +4629,20 @@ def htmlTimeline(defaultTimeline: str,
'
' + translate['Blogs'] + \
- ' '
+ '\n'
else:
if not minimal:
tlStr += \
'
' + translate['Inbox'] + \
- ' '
+ '\n'
tlStr += \
'
' + translate['Outbox'] + \
- ' '
+ '\n'
tlStr += \
sharesButtonStr + bookmarksButtonStr + \
moderationButtonStr + newPostButtonStr
@@ -4651,7 +4651,7 @@ def htmlTimeline(defaultTimeline: str,
'/search">
'
+ translate['Search and follow'] + '" class="timelineicon"/>\n'
calendarAltText = translate['Calendar']
if newCalendarEvent:
@@ -4661,14 +4661,14 @@ def htmlTimeline(defaultTimeline: str,
'
'
+ '" alt="| ' + calendarAltText + '" class="timelineicon"/>\n'
tlStr += \
'
'
+ '" class="timelineicon"/>\n'
tlStr += followApprovals
tlStr += '
'
@@ -4687,29 +4687,29 @@ def htmlTimeline(defaultTimeline: str,
' '
+ translate['Remove'] + '">\n'
tlStr += \
' '
+ '" name="submitSuspend" value="' + translate['Suspend'] + '">\n'
tlStr += \
' '
+ translate['Unsuspend'] + '">\n'
tlStr += \
' '
+ '" name="submitBlock" value="' + translate['Block'] + '">\n'
tlStr += \
' '
+ '" name="submitUnblock" value="' + translate['Unblock'] + '">\n'
tlStr += \
' '
- tlStr += ''
+ '" name="submitInfo" value="' + translate['Info'] + '">\n'
+ tlStr += '\n\n'
if boxName == 'tlshares':
maxSharesPerAccount = itemsPerPage
@@ -4724,32 +4724,33 @@ def htmlTimeline(defaultTimeline: str,
if todaysEventsCheck(baseDir, nickname, domain):
now = datetime.now()
tlStr += \
- '' + \
- translate['Happening Today'] + ' '
+ translate['Happening Today'] + '\n'
if thisWeeksEventsCheck(baseDir, nickname, domain):
tlStr += \
'' + \
- translate['Happening This Week'] + ' '
- tlStr += ' '
+ translate['Happening This Week'] + '\n'
+ tlStr += '\n'
else:
if thisWeeksEventsCheck(baseDir, nickname, domain):
tlStr += \
- '' + \
- translate['Happening This Week'] + ' '
+ translate['Happening This Week'] + '\n' + \
+ '\n'
# page up arrow
if pageNumber > 1:
tlStr += \
- ' '
+ translate['Page up'] + '">\n\n'
# show the posts
itemCtr = 0
@@ -4806,12 +4807,12 @@ def htmlTimeline(defaultTimeline: str,
# page down arrow
if itemCtr > 2:
tlStr += \
- ' '
+ translate['Page down'] + '">\n\n'
tlStr += htmlFooter()
return tlStr
@@ -5008,7 +5009,7 @@ def htmlIndividualPost(recentPostsCache: {}, maxRecentPosts: int,
postStr += \
'' + translate['Liked by'] + \
' @' + \
- likedByHandle + ' '
+ likedByHandle + '\n'
domainFull = domain
if port:
@@ -5016,18 +5017,18 @@ def htmlIndividualPost(recentPostsCache: {}, maxRecentPosts: int,
domainFull = domain + ':' + str(port)
actor = '/users/' + nickname
followStr = '
'
+ 'name="submitBack">' + translate['Go Back'] + '\n'
+ followStr += ' \n'
postStr += followStr + '\n'
postStr += \
@@ -5168,30 +5169,31 @@ def htmlRemoveSharedItem(translate: {}, baseDir: str,
with open(cssFilename, 'r') as cssFile:
profileStyle = cssFile.read()
sharesStr = htmlHeader(cssFilename, profileStyle)
- sharesStr += ''
- sharesStr += '
'
- sharesStr += '
'
+ sharesStr += '\n'
+ sharesStr += '
\n'
+ sharesStr += '
\n'
if sharedItemImageUrl:
sharesStr += ' '
+ sharedItemImageUrl + '"/>\n'
sharesStr += \
' ' + translate['Remove'] + \
- ' ' + sharedItemDisplayName + ' ?
'
+ ' ' + sharedItemDisplayName + ' ?\n'
postActor = getAltPath(actor, domainFull, callingDomain)
- sharesStr += ' '
- sharesStr += ' '
- sharesStr += '
'
- sharesStr += '
'
+ translate['No'] + '\n'
+ sharesStr += ' \n'
+ sharesStr += ' \n'
+ sharesStr += '
\n'
+ sharesStr += '
\n'
sharesStr += htmlFooter()
return sharesStr
@@ -5253,21 +5255,21 @@ def htmlDeletePost(recentPostsCache: {}, maxRecentPosts: int,
postActor = getAltPath(actor, domainFull, callingDomain)
deletePostStr += \
- ' '
- deletePostStr += ''
+ translate['No'] + '\n'
+ deletePostStr += ' \n'
+ deletePostStr += '\n'
deletePostStr += htmlFooter()
return deletePostStr
@@ -5317,28 +5319,28 @@ def htmlCalendarDeleteConfirm(translate: {}, baseDir: str,
postActor = getAltPath(actor, domainFull, callingDomain)
deletePostStr += \
- ' '
- deletePostStr += ''
+ translate['No'] + '\n'
+ deletePostStr += ' \n'
+ deletePostStr += '\n'
deletePostStr += htmlFooter()
return deletePostStr
@@ -5362,28 +5364,28 @@ def htmlFollowConfirm(translate: {}, baseDir: str,
with open(cssFilename, 'r') as cssFile:
profileStyle = cssFile.read()
followStr = htmlHeader(cssFilename, profileStyle)
- followStr += ''
- followStr += '
'
- followStr += '
'
- followStr += ' '
- followStr += ' '
+ followStr += '\n'
+ followStr += '
\n'
+ followStr += '
\n'
+ followStr += ' \n'
+ followStr += ' \n'
followStr += \
' ' + translate['Follow'] + ' ' + \
- getNicknameFromActor(followActor) + '@' + followDomain + ' ?
'
+ getNicknameFromActor(followActor) + '@' + followDomain + ' ?\n'
followStr += ' '
- followStr += ' '
- followStr += '
'
- followStr += '
'
+ translate['No'] + '\n'
+ followStr += ' \n'
+ followStr += ' \n'
+ followStr += '
\n'
+ followStr += '
\n'
followStr += htmlFooter()
return followStr
@@ -5407,28 +5409,29 @@ def htmlUnfollowConfirm(translate: {}, baseDir: str,
with open(cssFilename, 'r') as cssFile:
profileStyle = cssFile.read()
followStr = htmlHeader(cssFilename, profileStyle)
- followStr += ''
- followStr += '
'
- followStr += '
'
- followStr += ' '
- followStr += ' '
+ followStr += '\n'
+ followStr += '
\n'
+ followStr += '
\n'
+ followStr += ' \n'
+ followStr += ' \n'
followStr += \
' ' + translate['Stop following'] + \
- ' ' + getNicknameFromActor(followActor) + '@' + followDomain + ' ?
'
+ ' ' + getNicknameFromActor(followActor) + \
+ '@' + followDomain + ' ?\n'
followStr += ' '
- followStr += ' '
- followStr += '
'
- followStr += '
'
+ translate['No'] + '\n'
+ followStr += ' \n'
+ followStr += ' \n'
+ followStr += '
\n'
+ followStr += '
\n'
followStr += htmlFooter()
return followStr
@@ -5509,7 +5512,7 @@ def htmlPersonOptions(translate: {}, baseDir: str,
donateStr = \
' ' + \
- translate['Donate'] + ' '
+ translate['Donate'] + '\n'
optionsStr = htmlHeader(cssFilename, profileStyle)
optionsStr += ' \n'
@@ -5638,28 +5641,28 @@ def htmlUnblockConfirm(translate: {}, baseDir: str,
with open(cssFilename, 'r') as cssFile:
profileStyle = cssFile.read()
blockStr = htmlHeader(cssFilename, profileStyle)
- blockStr += ''
- blockStr += '
'
- blockStr += '
'
- blockStr += ' '
- blockStr += ' '
+ blockStr += '\n'
+ blockStr += '
\n'
+ blockStr += '
\n'
+ blockStr += ' \n'
+ blockStr += ' \n'
blockStr += \
' ' + translate['Stop blocking'] + ' ' + \
- getNicknameFromActor(blockActor) + '@' + blockDomain + ' ?
'
+ getNicknameFromActor(blockActor) + '@' + blockDomain + ' ?\n'
blockStr += ' '
- blockStr += ' '
- blockStr += '
'
- blockStr += '
'
+ translate['No'] + '\n'
+ blockStr += ' \n'
+ blockStr += ' \n'
+ blockStr += '
\n'
+ blockStr += '
\n'
blockStr += htmlFooter()
return blockStr
@@ -5688,24 +5691,24 @@ def htmlSearchEmojiTextEntry(translate: {},
with open(cssFilename, 'r') as cssFile:
profileStyle = cssFile.read()
emojiStr = htmlHeader(cssFilename, profileStyle)
- emojiStr += ''
- emojiStr += '
'
- emojiStr += '
'
+ emojiStr += '\n'
+ emojiStr += '
\n'
+ emojiStr += '
\n'
emojiStr += \
' ' + \
- translate['Enter an emoji name to search for'] + '
'
+ translate['Enter an emoji name to search for'] + '\n'
emojiStr += ' '
- emojiStr += ' '
- emojiStr += '
'
- emojiStr += '
'
+ translate['Submit'] + '\n'
+ emojiStr += ' \n'
+ emojiStr += ' \n'
+ emojiStr += '
\n'
+ emojiStr += '
\n'
emojiStr += htmlFooter()
return emojiStr
@@ -5745,7 +5748,7 @@ def htmlCalendarDay(translate: {},
calendarStr += '\n'
calendarStr += \
' '
+ '?month=' + str(monthNumber) + '">\n'
calendarStr += \
' ' + str(dayNumber) + ' ' + monthName + \
' ' + str(year) + ' \n'
@@ -5783,10 +5786,10 @@ def htmlCalendarDay(translate: {},
'/eventdelete?id=' + postId + '?year=' + str(year) + \
'?month=' + str(monthNumber) + '?day=' + str(dayNumber) + \
'?time=' + eventTime + \
- '"> \n '
+ iconsDir + '/delete.png" />\n'
if eventTime and eventDescription and eventPlace:
calendarStr += \
@@ -6155,32 +6158,33 @@ def htmlSearch(translate: {},
if os.path.isfile(themeSearchBannerFilename):
copyfile(themeSearchBannerFilename, searchBannerFilename)
if os.path.isfile(searchBannerFilename):
- followStr += '' + \
+ followStr += '
\n\n' + \
' ' + \
- '
\n'
+ '
\n
\n \n'
# show the search box
- followStr += ''
- followStr += '
'
- followStr += '
'
+ followStr += '\n'
+ followStr += '
\n'
+ followStr += '
\n'
idx = 'Enter an address, shared item, !history, #hashtag, ' + \
'*skill or :emoji: to search for'
followStr += \
- ' ' + translate[idx] + '
'
+ ' ' + translate[idx] + '
\n'
followStr += ' '
+ 'name="submitBack">' + translate['Go Back'] + '\n'
+ followStr += ' \n'
followStr += ' ' + \
- htmlHashTagSwarm(baseDir, actor) + '
'
- followStr += ' '
- followStr += '
'
- followStr += '
'
+ htmlHashTagSwarm(baseDir, actor) + '\n'
+ followStr += ' \n'
+ followStr += '
\n'
+ followStr += '
\n'
followStr += htmlFooter()
return followStr
@@ -6346,38 +6350,38 @@ def htmlProfileAfterSearch(recentPostsCache: {}, maxRecentPosts: int,
avatarDescription = avatarDescription.replace('', '')
if '<' in avatarDescription:
avatarDescription = removeHtml(avatarDescription)
- profileStr = ' '
- profileStr += '
'
+ profileStr = '
\n'
+ profileStr += '
\n'
if avatarUrl:
profileStr += \
'
'
- profileStr += '
' + displayName + ' '
+ avatarDescription + '" class="title">\n'
+ profileStr += '
' + displayName + ' \n'
profileStr += '
@' + searchNickname + '@' + \
- searchDomainFull + '
'
- profileStr += '
' + profileDescriptionShort + '
'
- profileStr += '
'
- profileStr += '
'
+ searchDomainFull + '\n'
+ profileStr += '
' + profileDescriptionShort + '
\n'
+ profileStr += '
\n'
+ profileStr += '
\n'
profileStr += '\n'
profileStr += '
'
- profileStr += '
'
+ translate['Go Back'] + '\n'
+ profileStr += ' \n'
+ profileStr += ' \n'
+ profileStr += '\n'
iconsDir = getIconsDir(baseDir)
i = 0