Publish button position

main
Bob Mottram 2020-10-26 21:32:08 +00:00
parent 7942abf11a
commit 292001479c
5 changed files with 128 additions and 50 deletions

View File

@ -3488,6 +3488,9 @@ class PubServer(BaseHTTPRequestHandler):
self.server.rssIconAtTop = \
getConfigParam(self.server.baseDir,
'rssIconAtTop')
self.server.publishButtonAtTop = \
getConfigParam(self.server.baseDir,
'publishButtonAtTop')
setNewsAvatar(baseDir,
fields['themeDropdown'],
httpPrefix,
@ -3845,6 +3848,9 @@ class PubServer(BaseHTTPRequestHandler):
self.server.rssIconAtTop = \
getConfigParam(self.server.baseDir,
'rssIconAtTop')
self.server.publishButtonAtTop = \
getConfigParam(self.server.baseDir,
'publishButtonAtTop')
# only receive DMs from accounts you follow
followDMsFilename = \
@ -6482,7 +6488,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
if GETstartTime:
self._benchmarkGETtimings(GETstartTime, GETtimings,
'show status done',
@ -6602,7 +6609,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -6715,7 +6723,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -6828,7 +6837,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -6941,7 +6951,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -7063,7 +7074,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -7144,7 +7156,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
self.server.fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -7241,7 +7254,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -7357,7 +7371,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -7465,7 +7480,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -7563,7 +7579,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.showPublishAsIcon,
fullWidthTimelineButtonHeader,
self.server.iconsAsButtons,
self.server.rssIconAtTop)
self.server.rssIconAtTop,
self.server.publishButtonAtTop)
msg = msg.encode('utf-8')
self._set_headers('text/html', len(msg),
cookie, callingDomain)
@ -12079,7 +12096,8 @@ def loadTokens(baseDir: str, tokensDict: {}, tokensLookup: {}) -> None:
tokensLookup[token] = nickname
def runDaemon(rssIconAtTop: bool,
def runDaemon(publishButtonAtTop: bool,
rssIconAtTop: bool,
iconsAsButtons: bool,
fullWidthTimelineButtonHeader: bool,
showPublishAsIcon: bool,
@ -12252,6 +12270,10 @@ def runDaemon(rssIconAtTop: bool,
# whether to show the RSS icon at the top or the bottom of the timeline
httpd.rssIconAtTop = rssIconAtTop
# Whether to show the newswire publish button at the top,
# above the header image
httpd.publishButtonAtTop = publishButtonAtTop
if registration == 'open':
httpd.registration = True
else:

View File

@ -238,6 +238,12 @@ parser.add_argument("--rssIconAtTop",
const=True, default=True,
help="Whether to show the rss icon at teh top or bottom" +
"of the timeline")
parser.add_argument("--publishButtonAtTop",
dest='publishButtonAtTop',
type=str2bool, nargs='?',
const=True, default=False,
help="Whether to show the publish button at the top of " +
"the newswire column")
parser.add_argument("--noapproval", type=str2bool, nargs='?',
const=True, default=False,
help="Allow followers without approval")
@ -2024,6 +2030,11 @@ rssIconAtTop = \
if rssIconAtTop is not None:
args.rssIconAtTop = bool(rssIconAtTop)
publishButtonAtTop = \
getConfigParam(baseDir, 'publishButtonAtTop')
if publishButtonAtTop is not None:
args.publishButtonAtTop = bool(publishButtonAtTop)
fullWidthTimelineButtonHeader = \
getConfigParam(baseDir, 'fullWidthTimelineButtonHeader')
if fullWidthTimelineButtonHeader is not None:
@ -2042,7 +2053,8 @@ if setTheme(baseDir, themeName, domain):
print('Theme set to ' + themeName)
if __name__ == "__main__":
runDaemon(args.rssIconAtTop,
runDaemon(args.publishButtonAtTop,
args.rssIconAtTop,
args.iconsAsButtons,
args.fullWidthTimelineButtonHeader,
args.showPublishAsIcon,

View File

@ -291,7 +291,7 @@ def createServerAlice(path: str, domain: str, port: int,
onionDomain = None
i2pDomain = None
print('Server running: Alice')
runDaemon(True, False, False, True, 10, False,
runDaemon(False, True, False, False, True, 10, False,
0, 100, 1024, 5, False,
0, False, 1, False, False, False,
5, True, True, 'en', __version__,
@ -356,7 +356,7 @@ def createServerBob(path: str, domain: str, port: int,
onionDomain = None
i2pDomain = None
print('Server running: Bob')
runDaemon(True, False, False, True, 10, False,
runDaemon(False, True, False, False, True, 10, False,
0, 100, 1024, 5, False, 0,
False, 1, False, False, False,
5, True, True, 'en', __version__,
@ -395,7 +395,7 @@ def createServerEve(path: str, domain: str, port: int, federationList: [],
onionDomain = None
i2pDomain = None
print('Server running: Eve')
runDaemon(True, False, False, True, 10, False,
runDaemon(False, True, False, False, True, 10, False,
0, 100, 1024, 5, False, 0,
False, 1, False, False, False,
5, True, True, 'en', __version__,

View File

@ -80,6 +80,18 @@ def setRssIconAtTop(baseDir: str, atTop: bool) -> bool:
configJson['rssIconAtTop'] = atTop
return saveJson(configJson, configFilename)
def setPublishButtonAtTop(baseDir: str, atTop: bool) -> bool:
"""Whether to show the publish button above the title image in the newswire column
"""
configFilename = baseDir + '/config.json'
if not os.path.isfile(configFilename):
return False
configJson = loadJson(configFilename, 0)
if not configJson:
return False
configJson['publishButtonAtTop'] = atTop
return saveJson(configJson, configFilename)
def setFullWidthTimelineButtonHeader(baseDir: str, fullWidth: bool) -> bool:
"""Shows the timeline button header containing inbox, outbox,
@ -290,6 +302,7 @@ def setThemeDefault(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
bgParams = {
"login": "jpg",
"follow": "jpg",
@ -310,6 +323,7 @@ def setThemeIndymediaClassic(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, True)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
bgParams = {
"login": "jpg",
"follow": "jpg",
@ -393,6 +407,7 @@ def setThemeBlue(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
themeParams = {
"newswire-date-color": "blue",
"font-size-header": "22px",
@ -434,6 +449,7 @@ def setThemeNight(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
fontStr = \
"url('./fonts/solidaric.woff2') format('woff2')"
fontStrItalic = \
@ -496,6 +512,7 @@ def setThemeStarlight(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
themeParams = {
"column-left-image-width-mobile": "40vw",
"line-spacing-newswire": "120%",
@ -567,6 +584,7 @@ def setThemeHenge(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
themeParams = {
"column-left-image-width-mobile": "40vw",
"column-right-image-width-mobile": "40vw",
@ -633,6 +651,7 @@ def setThemeZen(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
themeParams = {
"main-bg-color": "#5c4e41",
"column-left-color": "#5c4e41",
@ -695,6 +714,7 @@ def setThemeHighVis(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
def setThemeLCD(baseDir: str):
@ -777,6 +797,7 @@ def setThemeLCD(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
def setThemePurple(baseDir: str):
@ -842,6 +863,7 @@ def setThemePurple(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
def setThemeHacker(baseDir: str):
@ -904,6 +926,7 @@ def setThemeHacker(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
def setThemeLight(baseDir: str):
@ -967,6 +990,7 @@ def setThemeLight(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
def setThemeIndymediaModern(baseDir: str):
@ -1064,6 +1088,7 @@ def setThemeIndymediaModern(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, True)
setIconsAsButtons(baseDir, True)
setRssIconAtTop(baseDir, False)
setPublishButtonAtTop(baseDir, True)
def setThemeSolidaric(baseDir: str):
@ -1133,6 +1158,7 @@ def setThemeSolidaric(baseDir: str):
setFullWidthTimelineButtonHeader(baseDir, False)
setIconsAsButtons(baseDir, False)
setRssIconAtTop(baseDir, True)
setPublishButtonAtTop(baseDir, False)
def setThemeImages(baseDir: str, name: str) -> None:

View File

@ -3613,7 +3613,7 @@ def htmlProfile(defaultTimeline: str,
iconsDir, False, False,
newswire, False,
False, None, False, False,
False)
False, True)
profileFooterStr += ' </td>\n'
profileFooterStr += ' </tr>\n'
profileFooterStr += ' </tbody>\n'
@ -5711,7 +5711,8 @@ def getRightColumnContent(baseDir: str, nickname: str, domainFull: str,
showBackButton: bool, timelinePath: str,
showPublishButton: bool,
showPublishAsIcon: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Returns html content for the right column
"""
htmlStr = ''
@ -5720,6 +5721,16 @@ def getRightColumnContent(baseDir: str, nickname: str, domainFull: str,
if ':' in domain:
domain = domain.split(':')
publishButtonStr = \
' <a href="' + \
'/users/' + nickname + '/newblog" ' + \
'title="' + translate['Publish a news article'] + '">' + \
'<button class="publishbtn">' + \
translate['Publish'] + '</button></a>\n'
if publishButtonAtTop:
htmlStr += '<center>' + publishButtonStr + '</center>'
rightColumnImageFilename = \
baseDir + '/accounts/' + nickname + '@' + domain + \
'/right_col_image.png'
@ -5754,14 +5765,9 @@ def getRightColumnContent(baseDir: str, nickname: str, domainFull: str,
'<button class="cancelbtn">' + \
translate['Go Back'] + '</button></a>\n'
if showPublishButton:
if showPublishButton and not publishButtonAtTop:
if not showPublishAsIcon:
htmlStr += \
' <a href="' + \
'/users/' + nickname + '/newblog" ' + \
'title="' + translate['Publish a news article'] + '">' + \
'<button class="publishbtn">' + \
translate['Publish'] + '</button></a>\n'
htmlStr += publishButtonStr
if editor:
if os.path.isfile(baseDir + '/accounts/newswiremoderation.txt'):
@ -5900,7 +5906,7 @@ def htmlNewswireMobile(baseDir: str, nickname: str,
iconsDir, moderator, editor,
newswire, positiveVoting,
True, timelinePath, True,
showPublishAsIcon, True)
showPublishAsIcon, True, False)
htmlStr += htmlFooter()
return htmlStr
@ -6222,7 +6228,8 @@ def htmlTimeline(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the timeline as html
"""
timelineStartTime = time.time()
@ -6747,7 +6754,7 @@ def htmlTimeline(defaultTimeline: str,
newswire, positiveVoting,
False, None, True,
showPublishAsIcon,
rssIconAtTop)
rssIconAtTop, publishButtonAtTop)
tlStr += ' <td valign="top" class="col-right">' + \
rightColumnStr + ' </td>\n'
tlStr += ' </tr>\n'
@ -6794,7 +6801,8 @@ def htmlShares(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the shares timeline as html
"""
manuallyApproveFollowers = \
@ -6811,7 +6819,7 @@ def htmlShares(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlInbox(defaultTimeline: str,
@ -6827,7 +6835,8 @@ def htmlInbox(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the inbox as html
"""
manuallyApproveFollowers = \
@ -6844,7 +6853,7 @@ def htmlInbox(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlBookmarks(defaultTimeline: str,
@ -6860,7 +6869,8 @@ def htmlBookmarks(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the bookmarks as html
"""
manuallyApproveFollowers = \
@ -6877,7 +6887,7 @@ def htmlBookmarks(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlEvents(defaultTimeline: str,
@ -6893,7 +6903,8 @@ def htmlEvents(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the events as html
"""
manuallyApproveFollowers = \
@ -6910,7 +6921,7 @@ def htmlEvents(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlInboxDMs(defaultTimeline: str,
@ -6926,7 +6937,8 @@ def htmlInboxDMs(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the DM timeline as html
"""
return htmlTimeline(defaultTimeline, recentPostsCache, maxRecentPosts,
@ -6938,7 +6950,7 @@ def htmlInboxDMs(defaultTimeline: str,
newswire, False, False, positiveVoting,
showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlInboxReplies(defaultTimeline: str,
@ -6954,7 +6966,8 @@ def htmlInboxReplies(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the replies timeline as html
"""
return htmlTimeline(defaultTimeline, recentPostsCache, maxRecentPosts,
@ -6967,7 +6980,7 @@ def htmlInboxReplies(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlInboxMedia(defaultTimeline: str,
@ -6983,7 +6996,8 @@ def htmlInboxMedia(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the media timeline as html
"""
return htmlTimeline(defaultTimeline, recentPostsCache, maxRecentPosts,
@ -6996,7 +7010,7 @@ def htmlInboxMedia(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlInboxBlogs(defaultTimeline: str,
@ -7012,7 +7026,8 @@ def htmlInboxBlogs(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the blogs timeline as html
"""
return htmlTimeline(defaultTimeline, recentPostsCache, maxRecentPosts,
@ -7025,7 +7040,7 @@ def htmlInboxBlogs(defaultTimeline: str,
newswire, False, False,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlInboxNews(defaultTimeline: str,
@ -7041,7 +7056,8 @@ def htmlInboxNews(defaultTimeline: str,
positiveVoting: bool, showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the news timeline as html
"""
return htmlTimeline(defaultTimeline, recentPostsCache, maxRecentPosts,
@ -7054,7 +7070,7 @@ def htmlInboxNews(defaultTimeline: str,
newswire, moderator, editor,
positiveVoting, showPublishAsIcon,
fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlModeration(defaultTimeline: str,
@ -7070,7 +7086,8 @@ def htmlModeration(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the moderation feed as html
"""
return htmlTimeline(defaultTimeline, recentPostsCache, maxRecentPosts,
@ -7081,7 +7098,7 @@ def htmlModeration(defaultTimeline: str,
YTReplacementDomain, showPublishedDateOnly,
newswire, False, False, positiveVoting,
showPublishAsIcon, fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlOutbox(defaultTimeline: str,
@ -7097,7 +7114,8 @@ def htmlOutbox(defaultTimeline: str,
showPublishAsIcon: bool,
fullWidthTimelineButtonHeader: bool,
iconsAsButtons: bool,
rssIconAtTop: bool) -> str:
rssIconAtTop: bool,
publishButtonAtTop: bool) -> str:
"""Show the Outbox as html
"""
manuallyApproveFollowers = \
@ -7111,7 +7129,7 @@ def htmlOutbox(defaultTimeline: str,
YTReplacementDomain, showPublishedDateOnly,
newswire, False, False, positiveVoting,
showPublishAsIcon, fullWidthTimelineButtonHeader,
iconsAsButtons, rssIconAtTop)
iconsAsButtons, rssIconAtTop, publishButtonAtTop)
def htmlIndividualPost(recentPostsCache: {}, maxRecentPosts: int,