Merge branch 'main' of gitlab.com:bashrc2/epicyon

merge-requests/30/head
Bob Mottram 2022-07-13 17:06:32 +01:00
commit dd36ffbc28
4 changed files with 336 additions and 296 deletions

View File

@ -183,6 +183,7 @@ from webapp_confirm import html_confirm_unblock
from webapp_person_options import person_minimize_images from webapp_person_options import person_minimize_images
from webapp_person_options import person_undo_minimize_images from webapp_person_options import person_undo_minimize_images
from webapp_person_options import html_person_options from webapp_person_options import html_person_options
from webapp_timeline import text_mode_browser
from webapp_timeline import html_shares from webapp_timeline import html_shares
from webapp_timeline import html_wanted from webapp_timeline import html_wanted
from webapp_timeline import html_inbox from webapp_timeline import html_inbox
@ -655,11 +656,11 @@ class PubServer(BaseHTTPRequestHandler):
if 'audio/' in accept_str: if 'audio/' in accept_str:
if 'text/html' not in accept_str: if 'text/html' not in accept_str:
return False return False
if accept_str.startswith('*'): if accept_str.startswith('*') or 'text/html' in accept_str:
if self.headers.get('User-Agent'): if self.headers.get('User-Agent'):
if 'ELinks' in self.headers['User-Agent'] or \ if text_mode_browser(self.headers['User-Agent']):
'Lynx' in self.headers['User-Agent']:
return True return True
if 'text/html' not in accept_str:
return False return False
if 'json' in accept_str: if 'json' in accept_str:
return False return False
@ -11751,7 +11752,8 @@ class PubServer(BaseHTTPRequestHandler):
allow_deletion: bool, allow_deletion: bool,
project_version: str, project_version: str,
yt_replace_domain: str, yt_replace_domain: str,
twitter_replacement_domain: str) -> bool: twitter_replacement_domain: str,
ua_str: str) -> bool:
"""Shows the inbox timeline """Shows the inbox timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -11865,7 +11867,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles,
ua_str)
if getreq_start_time: if getreq_start_time:
fitness_performance(getreq_start_time, fitness_performance(getreq_start_time,
self.server.fitness, self.server.fitness,
@ -11928,7 +11931,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the DMs timeline """Shows the DMs timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -12036,7 +12039,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -12088,7 +12091,7 @@ class PubServer(BaseHTTPRequestHandler):
onion_domain: str, i2p_domain: str, onion_domain: str, i2p_domain: str,
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, debug: str, proxy_type: str, cookie: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the replies timeline """Shows the replies timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -12196,7 +12199,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles,
ua_str)
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,
@ -12248,7 +12252,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the media timeline """Shows the media timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -12354,7 +12358,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -12406,7 +12410,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the blogs timeline """Shows the blogs timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -12512,7 +12516,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -12565,7 +12569,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the news timeline """Shows the news timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -12679,7 +12683,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -12731,7 +12735,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the features timeline (all local blogs) """Shows the features timeline (all local blogs)
""" """
if '/users/' in path: if '/users/' in path:
@ -12849,7 +12853,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -12900,7 +12904,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the shares timeline """Shows the shares timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -12968,7 +12972,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.signing_priv_key_pem, self.server.signing_priv_key_pem,
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, timezone, self.server.lists_enabled, timezone,
bold_reading, self.server.dogwhistles) bold_reading, self.server.dogwhistles,
ua_str)
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,
@ -12994,7 +12999,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the wanted timeline """Shows the wanted timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -13062,7 +13067,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -13089,7 +13094,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the bookmarks timeline """Shows the bookmarks timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -13199,7 +13204,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -13250,7 +13255,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the outbox timeline """Shows the outbox timeline
""" """
# get outbox feed for a person # get outbox feed for a person
@ -13350,7 +13355,7 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles, ua_str)
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,
@ -13390,7 +13395,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type: str, cookie: str, proxy_type: str, cookie: str,
debug: str, debug: str,
curr_session) -> bool: curr_session, ua_str: str) -> bool:
"""Shows the moderation timeline """Shows the moderation timeline
""" """
if '/users/' in path: if '/users/' in path:
@ -13498,7 +13503,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.cw_lists, self.server.cw_lists,
self.server.lists_enabled, self.server.lists_enabled,
timezone, bold_reading, timezone, bold_reading,
self.server.dogwhistles) self.server.dogwhistles,
ua_str)
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,
@ -18091,7 +18097,8 @@ class PubServer(BaseHTTPRequestHandler):
self.server.allow_deletion, self.server.allow_deletion,
self.server.project_version, self.server.project_version,
self.server.yt_replace_domain, self.server.yt_replace_domain,
self.server.twitter_replacement_domain): self.server.twitter_replacement_domain,
ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18114,7 +18121,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18137,7 +18144,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18160,7 +18167,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18183,7 +18190,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18206,7 +18213,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18226,7 +18233,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18248,7 +18255,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18266,7 +18273,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18368,7 +18375,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18392,7 +18399,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return
@ -18416,7 +18423,7 @@ class PubServer(BaseHTTPRequestHandler):
getreq_start_time, getreq_start_time,
proxy_type, proxy_type,
cookie, self.server.debug, cookie, self.server.debug,
curr_session): curr_session, ua_str):
self.server.getreq_busy = False self.server.getreq_busy = False
return return

View File

@ -47,12 +47,21 @@ def header_buttons_timeline(default_timeline: str,
calendar_image: str, calendar_image: str,
follow_approvals: str, follow_approvals: str,
icons_as_buttons: bool, icons_as_buttons: bool,
access_keys: {}) -> str: access_keys: {},
is_text_browser: str) -> str:
"""Returns the header at the top of the timeline, containing """Returns the header at the top of the timeline, containing
buttons for inbox, outbox, search, calendar, etc buttons for inbox, outbox, search, calendar, etc
""" """
# start of the button header with inbox, outbox, etc # start of the button header with inbox, outbox, etc
tl_str = '<div id="containerHeader" class="containerHeader"><nav>\n' tl_str = '<div id="containerHeader" class="containerHeader"><nav>\n'
# if this is a news instance and we are viewing the news timeline
features_header = False
if default_timeline == 'tlfeatures' and box_name == 'tlfeatures':
features_header = True
if not is_text_browser:
# first button # first button
if default_timeline == 'tlmedia': if default_timeline == 'tlmedia':
tl_str += \ tl_str += \
@ -95,11 +104,6 @@ def header_buttons_timeline(default_timeline: str,
' accesskey="' + access_keys['menuInbox'] + '">' + \ ' accesskey="' + access_keys['menuInbox'] + '">' + \
'<span>' + translate['Inbox'] + '</span></button></a>' '<span>' + translate['Inbox'] + '</span></button></a>'
# if this is a news instance and we are viewing the news timeline
features_header = False
if default_timeline == 'tlfeatures' and box_name == 'tlfeatures':
features_header = True
if not features_header: if not features_header:
tl_str += \ tl_str += \
'<a href="' + users_path + '/dm" tabindex="2"' '<a href="' + users_path + '/dm" tabindex="2"'
@ -189,8 +193,8 @@ def header_buttons_timeline(default_timeline: str,
tl_str += \ tl_str += \
'><button class="' + \ '><button class="' + \
inbox_button + '" accesskey="' + \ inbox_button + '" accesskey="' + \
access_keys['menuInbox'] + '"><span>' + translate['Inbox'] + \ access_keys['menuInbox'] + '"><span>' + \
'</span></button></a>' translate['Inbox'] + '</span></button></a>'
# show todays events buttons on the first inbox page # show todays events buttons on the first inbox page
happening_str = '' happening_str = ''
@ -245,6 +249,7 @@ def header_buttons_timeline(default_timeline: str,
'<button class="button">' + \ '<button class="button">' + \
translate['Happening This Week'] + '</button></a>' translate['Happening This Week'] + '</button></a>'
if not is_text_browser:
if not features_header: if not features_header:
# button for the outbox # button for the outbox
tl_str += \ tl_str += \
@ -259,10 +264,13 @@ def header_buttons_timeline(default_timeline: str,
# add other buttons # add other buttons
tl_str += \ tl_str += \
shares_button_str + wanted_button_str + bookmarks_button_str + \ shares_button_str + wanted_button_str + \
events_button_str + \ bookmarks_button_str + events_button_str + \
moderation_button_str + happening_str + new_post_button_str moderation_button_str + happening_str + new_post_button_str
else:
tl_str += happening_str
if not is_text_browser:
if not features_header: if not features_header:
if not icons_as_buttons: if not icons_as_buttons:
# the search icon # the search icon
@ -291,6 +299,7 @@ def header_buttons_timeline(default_timeline: str,
print('TIMELINE TIMING ' + box_name + ' 5 = ' + str(time_diff)) print('TIMELINE TIMING ' + box_name + ' 5 = ' + str(time_diff))
# the calendar button # the calendar button
if not is_text_browser:
if not features_header: if not features_header:
calendar_alt_text = translate['Calendar'] calendar_alt_text = translate['Calendar']
if new_calendar_event: if new_calendar_event:
@ -321,7 +330,8 @@ def header_buttons_timeline(default_timeline: str,
' <a class="imageAnchor" href="' + \ ' <a class="imageAnchor" href="' + \
users_path + '/minimal" tabindex="3">' + \ users_path + '/minimal" tabindex="3">' + \
'<img loading="lazy" decoding="async" src="/icons' + \ '<img loading="lazy" decoding="async" src="/icons' + \
'/showhide.png" title="' + translate['Show/Hide Buttons'] + \ '/showhide.png" title="' + \
translate['Show/Hide Buttons'] + \
'" alt="| ' + translate['Show/Hide Buttons'] + \ '" alt="| ' + translate['Show/Hide Buttons'] + \
'" class="timelineicon"/></a>\n' '" class="timelineicon"/></a>\n'
else: else:
@ -340,6 +350,7 @@ def header_buttons_timeline(default_timeline: str,
'><button class="button">' + \ '><button class="button">' + \
'<span>' + translate['User'] + '</span></button></a>' '<span>' + translate['User'] + '</span></button></a>'
if not is_text_browser:
# the newswire button to show right column links # the newswire button to show right column links
if not icons_as_buttons: if not icons_as_buttons:
tl_str += \ tl_str += \

View File

@ -58,7 +58,7 @@ def html_moderation(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the moderation feed as html """Show the moderation feed as html
This is what you see when selecting the "mod" timeline This is what you see when selecting the "mod" timeline
""" """
@ -84,7 +84,7 @@ def html_moderation(default_timeline: str,
text_mode_banner, access_keys, system_language, text_mode_banner, access_keys, system_language,
max_like_count, shared_items_federated_domains, max_like_count, shared_items_federated_domains,
signing_priv_key_pem, cw_lists, lists_enabled, signing_priv_key_pem, cw_lists, lists_enabled,
timezone, bold_reading, dogwhistles) timezone, bold_reading, dogwhistles, ua_str)
def html_account_info(translate: {}, def html_account_info(translate: {},

View File

@ -382,6 +382,16 @@ def _html_timeline_keyboard(moderator: bool, text_mode_banner: str,
follow_approvals) follow_approvals)
def text_mode_browser(ua_str: str) -> bool:
"""Does the user agent indicate a text mode browser?
"""
text_mode_agents = ('Lynx/', 'w3m/', 'Links (', 'Emacs/', 'ELinks')
for agent in text_mode_agents:
if agent in ua_str:
return True
return False
def _html_timeline_end(base_dir: str, nickname: str, domain_full: str, def _html_timeline_end(base_dir: str, nickname: str, domain_full: str,
http_prefix: str, translate: {}, http_prefix: str, translate: {},
moderator: bool, editor: bool, moderator: bool, editor: bool,
@ -391,7 +401,8 @@ def _html_timeline_end(base_dir: str, nickname: str, domain_full: str,
authorized: bool, theme: str, authorized: bool, theme: str,
default_timeline: str, access_keys: {}, default_timeline: str, access_keys: {},
box_name: str, box_name: str,
enable_timing_log: bool, timeline_start_time) -> str: enable_timing_log: bool, timeline_start_time,
ua_str: str) -> str:
"""Ending of the timeline, containing the right column """Ending of the timeline, containing the right column
""" """
# end of timeline-posts # end of timeline-posts
@ -401,6 +412,8 @@ def _html_timeline_end(base_dir: str, nickname: str, domain_full: str,
tl_str += ' </td>\n' tl_str += ' </td>\n'
# right column # right column
right_column_str = ''
if not text_mode_browser(ua_str):
right_column_str = \ right_column_str = \
get_right_column_content(base_dir, nickname, domain_full, get_right_column_content(base_dir, nickname, domain_full,
http_prefix, translate, http_prefix, translate,
@ -494,7 +507,7 @@ def html_timeline(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the timeline as html """Show the timeline as html
""" """
enable_timing_log = False enable_timing_log = False
@ -780,6 +793,7 @@ def html_timeline(default_timeline: str,
'</header>\n' '</header>\n'
if full_width_tl_button_header: if full_width_tl_button_header:
is_text_browser = text_mode_browser(ua_str)
tl_str += \ tl_str += \
header_buttons_timeline(default_timeline, box_name, page_number, header_buttons_timeline(default_timeline, box_name, page_number,
translate, users_path, media_button, translate, users_path, media_button,
@ -794,7 +808,8 @@ def html_timeline(default_timeline: str,
domain, timeline_start_time, domain, timeline_start_time,
new_calendar_event, calendar_path, new_calendar_event, calendar_path,
calendar_image, follow_approvals, calendar_image, follow_approvals,
icons_as_buttons, access_keys) icons_as_buttons, access_keys,
is_text_browser)
# start the timeline # start the timeline
tl_str += \ tl_str += \
@ -811,10 +826,13 @@ def html_timeline(default_timeline: str,
domain_full = get_full_domain(domain, port) domain_full = get_full_domain(domain, port)
# left column # left column
left_column_str = ''
if not text_mode_browser(ua_str):
left_column_str = \ left_column_str = \
get_left_column_content(base_dir, nickname, domain_full, get_left_column_content(base_dir, nickname, domain_full,
http_prefix, translate, http_prefix, translate,
editor, artist, False, None, rss_icon_at_top, editor, artist, False, None,
rss_icon_at_top,
True, False, theme, access_keys, True, False, theme, access_keys,
shared_items_federated_domains) shared_items_federated_domains)
tl_str += ' <td valign="top" class="col-left" ' + \ tl_str += ' <td valign="top" class="col-left" ' + \
@ -828,6 +846,7 @@ def html_timeline(default_timeline: str,
tl_str += ' <td valign="top" class="col-center" tabindex="-1">\n' tl_str += ' <td valign="top" class="col-center" tabindex="-1">\n'
if not full_width_tl_button_header: if not full_width_tl_button_header:
is_text_browser = text_mode_browser(ua_str)
tl_str += \ tl_str += \
header_buttons_timeline(default_timeline, box_name, page_number, header_buttons_timeline(default_timeline, box_name, page_number,
translate, users_path, media_button, translate, users_path, media_button,
@ -842,7 +861,8 @@ def html_timeline(default_timeline: str,
domain, timeline_start_time, domain, timeline_start_time,
new_calendar_event, calendar_path, new_calendar_event, calendar_path,
calendar_image, follow_approvals, calendar_image, follow_approvals,
icons_as_buttons, access_keys) icons_as_buttons, access_keys,
is_text_browser)
tl_str += \ tl_str += \
' <div id="timelineposts" class="timeline-posts" ' + \ ' <div id="timelineposts" class="timeline-posts" ' + \
@ -872,7 +892,8 @@ def html_timeline(default_timeline: str,
authorized, theme, authorized, theme,
default_timeline, access_keys, default_timeline, access_keys,
box_name, box_name,
enable_timing_log, timeline_start_time) + enable_timing_log, timeline_start_time,
ua_str) +
html_footer()) html_footer())
elif box_name == 'tlwanted': elif box_name == 'tlwanted':
max_shares_per_account = items_per_page max_shares_per_account = items_per_page
@ -891,7 +912,8 @@ def html_timeline(default_timeline: str,
authorized, theme, authorized, theme,
default_timeline, access_keys, default_timeline, access_keys,
box_name, box_name,
enable_timing_log, timeline_start_time) + enable_timing_log, timeline_start_time,
ua_str) +
html_footer()) html_footer())
_log_timeline_timing(enable_timing_log, timeline_start_time, box_name, '7') _log_timeline_timing(enable_timing_log, timeline_start_time, box_name, '7')
@ -1051,7 +1073,7 @@ def html_timeline(default_timeline: str,
authorized, theme, authorized, theme,
default_timeline, access_keys, default_timeline, access_keys,
box_name, box_name,
enable_timing_log, timeline_start_time) enable_timing_log, timeline_start_time, ua_str)
tl_str += html_footer() tl_str += html_footer()
return tl_str return tl_str
@ -1244,7 +1266,7 @@ def html_shares(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the shares timeline as html """Show the shares timeline as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1275,7 +1297,7 @@ def html_shares(default_timeline: str,
shared_items_federated_domains, shared_items_federated_domains,
signing_priv_key_pem, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles) bold_reading, dogwhistles, ua_str)
def html_wanted(default_timeline: str, def html_wanted(default_timeline: str,
@ -1305,7 +1327,7 @@ def html_wanted(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the wanted timeline as html """Show the wanted timeline as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1336,7 +1358,7 @@ def html_wanted(default_timeline: str,
shared_items_federated_domains, shared_items_federated_domains,
signing_priv_key_pem, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles) bold_reading, dogwhistles, ua_str)
def html_inbox(default_timeline: str, def html_inbox(default_timeline: str,
@ -1367,7 +1389,7 @@ def html_inbox(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the inbox as html """Show the inbox as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1398,7 +1420,7 @@ def html_inbox(default_timeline: str,
shared_items_federated_domains, shared_items_federated_domains,
signing_priv_key_pem, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles) bold_reading, dogwhistles, ua_str)
def html_bookmarks(default_timeline: str, def html_bookmarks(default_timeline: str,
@ -1429,7 +1451,7 @@ def html_bookmarks(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the bookmarks as html """Show the bookmarks as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1459,7 +1481,7 @@ def html_bookmarks(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles) bold_reading, dogwhistles, ua_str)
def html_inbox_dms(default_timeline: str, def html_inbox_dms(default_timeline: str,
@ -1490,7 +1512,7 @@ def html_inbox_dms(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the DM timeline as html """Show the DM timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1516,7 +1538,7 @@ def html_inbox_dms(default_timeline: str,
shared_items_federated_domains, shared_items_federated_domains,
signing_priv_key_pem, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, cw_lists, lists_enabled, timezone,
bold_reading, dogwhistles) bold_reading, dogwhistles, ua_str)
def html_inbox_replies(default_timeline: str, def html_inbox_replies(default_timeline: str,
@ -1547,7 +1569,7 @@ def html_inbox_replies(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the replies timeline as html """Show the replies timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1572,7 +1594,7 @@ def html_inbox_replies(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles) dogwhistles, ua_str)
def html_inbox_media(default_timeline: str, def html_inbox_media(default_timeline: str,
@ -1603,7 +1625,7 @@ def html_inbox_media(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the media timeline as html """Show the media timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1628,7 +1650,7 @@ def html_inbox_media(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles) dogwhistles, ua_str)
def html_inbox_blogs(default_timeline: str, def html_inbox_blogs(default_timeline: str,
@ -1659,7 +1681,7 @@ def html_inbox_blogs(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the blogs timeline as html """Show the blogs timeline as html
""" """
artist = is_artist(base_dir, nickname) artist = is_artist(base_dir, nickname)
@ -1684,7 +1706,7 @@ def html_inbox_blogs(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles) dogwhistles, ua_str)
def html_inbox_features(default_timeline: str, def html_inbox_features(default_timeline: str,
@ -1716,7 +1738,7 @@ def html_inbox_features(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the features timeline as html """Show the features timeline as html
""" """
return html_timeline(default_timeline, return html_timeline(default_timeline,
@ -1740,7 +1762,7 @@ def html_inbox_features(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles) dogwhistles, ua_str)
def html_inbox_news(default_timeline: str, def html_inbox_news(default_timeline: str,
@ -1771,7 +1793,7 @@ def html_inbox_news(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the news timeline as html """Show the news timeline as html
""" """
return html_timeline(default_timeline, return html_timeline(default_timeline,
@ -1795,7 +1817,7 @@ def html_inbox_news(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles) dogwhistles, ua_str)
def html_outbox(default_timeline: str, def html_outbox(default_timeline: str,
@ -1826,7 +1848,7 @@ def html_outbox(default_timeline: str,
signing_priv_key_pem: str, signing_priv_key_pem: str,
cw_lists: {}, lists_enabled: str, cw_lists: {}, lists_enabled: str,
timezone: str, bold_reading: bool, timezone: str, bold_reading: bool,
dogwhistles: {}) -> str: dogwhistles: {}, ua_str: str) -> str:
"""Show the Outbox as html """Show the Outbox as html
""" """
manually_approve_followers = \ manually_approve_followers = \
@ -1853,4 +1875,4 @@ def html_outbox(default_timeline: str,
access_keys, system_language, max_like_count, access_keys, system_language, max_like_count,
shared_items_federated_domains, signing_priv_key_pem, shared_items_federated_domains, signing_priv_key_pem,
cw_lists, lists_enabled, timezone, bold_reading, cw_lists, lists_enabled, timezone, bold_reading,
dogwhistles) dogwhistles, ua_str)