From 8ea1e3306bf5288021eafbb1ce42842181949ab9 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Mon, 23 Sep 2019 21:09:11 +0100 Subject: [PATCH] Replies timeline --- daemon.py | 71 +++++++++++++++++++++++++++++++++++++++++++- translations/cy.json | 3 +- translations/de.json | 3 +- translations/en.json | 3 +- translations/es.json | 3 +- translations/fr.json | 3 +- translations/ga.json | 3 +- translations/it.json | 3 +- webinterface.py | 16 ++++++++++ 9 files changed, 100 insertions(+), 8 deletions(-) diff --git a/daemon.py b/daemon.py index 2f3a9661..d7a6818c 100644 --- a/daemon.py +++ b/daemon.py @@ -83,6 +83,7 @@ from webinterface import htmlDeletePost from webinterface import htmlAbout from webinterface import htmlRemoveSharedItem from webinterface import htmlInboxDMs +from webinterface import htmlInboxReplies from webinterface import htmlUnblockConfirm from webinterface import htmlPersonOptions from webinterface import htmlIndividualPost @@ -1704,7 +1705,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.GETbusy=False return - # get the inbox for a given person + # get the direct messages for a given person if self.path.endswith('/dm') or '/dm?page=' in self.path: if '/users/' in self.path: if authorized: @@ -1770,6 +1771,74 @@ class PubServer(BaseHTTPRequestHandler): self.server.GETbusy=False return + # get the replies for a given person + if self.path.endswith('/replies') or '/replies?page=' in self.path: + if '/users/' in self.path: + if authorized: + inboxRepliesFeed= \ + personBoxJson(self.server.baseDir, \ + self.server.domain, \ + self.server.port, \ + self.path, \ + self.server.httpPrefix, \ + maxPostsInFeed, 'replies', \ + True,self.server.ocapAlways) + if inboxRepliesFeed: + if self._requestHTTP(): + nickname=self.path.replace('/users/','').replace('/replies','') + pageNumber=1 + if '?page=' in nickname: + pageNumber=nickname.split('?page=')[1] + nickname=nickname.split('?page=')[0] + if pageNumber.isdigit(): + pageNumber=int(pageNumber) + else: + pageNumber=1 + if 'page=' not in self.path: + # if no page was specified then show the first + inboxRepliesFeed= \ + personBoxJson(self.server.baseDir, \ + self.server.domain, \ + self.server.port, \ + self.path+'?page=1', \ + self.server.httpPrefix, \ + maxPostsInFeed, 'replies', \ + True,self.server.ocapAlways) + msg=htmlInboxReplies(self.server.translate, \ + pageNumber,maxPostsInFeed, \ + self.server.session, \ + self.server.baseDir, \ + self.server.cachedWebfingers, \ + self.server.personCache, \ + nickname, \ + self.server.domain, \ + self.server.port, \ + inboxRepliesFeed, \ + self.server.allowDeletion, \ + self.server.httpPrefix, \ + self.server.projectVersion).encode('utf-8') + self._set_headers('text/html',len(msg),cookie) + self.wfile.write(msg) + else: + msg=json.dumps(inboxDMFeed).encode('utf-8') + self._set_headers('application/json',len(msg),None) + self.wfile.write(msg) + self.server.GETbusy=False + return + else: + if self.server.debug: + nickname=self.path.replace('/users/','').replace('/replies','') + print('DEBUG: '+nickname+ \ + ' was not authorized to access '+self.path) + if self.path!='/replies': + # not the replies inbox + if self.server.debug: + print('DEBUG: GET access to inbox is unauthorized') + self.send_response(405) + self.end_headers() + self.server.GETbusy=False + return + # get outbox feed for a person outboxFeed=personBoxJson(self.server.baseDir,self.server.domain, \ self.server.port,self.path, \ diff --git a/translations/cy.json b/translations/cy.json index b4635fce..99544d0a 100644 --- a/translations/cy.json +++ b/translations/cy.json @@ -137,5 +137,6 @@ "Approve follow requests": "Cymeradwyo dilyn ceisiadau", "Page down": "Tudalen lawr", "Page up": "Tudalen i fyny", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/translations/de.json b/translations/de.json index 776c7788..6a37a8ac 100644 --- a/translations/de.json +++ b/translations/de.json @@ -137,5 +137,6 @@ "Approve follow requests": "Follow-Anfragen genehmigen", "Page down": "Bild runter", "Page up": "Bild auf", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/translations/en.json b/translations/en.json index 3792e3e3..b68eeacf 100644 --- a/translations/en.json +++ b/translations/en.json @@ -137,5 +137,6 @@ "Approve follow requests": "Approve follow requests", "Page down": "Page down", "Page up": "Page up", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/translations/es.json b/translations/es.json index 789692c4..0fc0b462 100644 --- a/translations/es.json +++ b/translations/es.json @@ -137,5 +137,6 @@ "Approve follow requests": "Aprobar seguir solicitudes", "Page down": "Página abajo", "Page up": "Página arriba", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/translations/fr.json b/translations/fr.json index 0ae615cd..76e65f14 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -137,5 +137,6 @@ "Approve follow requests": "Approuver les demandes de suivi", "Page down": "Bas de page", "Page up": "Haut de page", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/translations/ga.json b/translations/ga.json index 0ef9e8d7..cae38507 100644 --- a/translations/ga.json +++ b/translations/ga.json @@ -137,5 +137,6 @@ "Approve follow requests": "Iarratais a leanúint a cheadú", "Page down": "Leathanach Síos", "Page up": "Leathanach suas", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/translations/it.json b/translations/it.json index cf7ec876..994fe696 100644 --- a/translations/it.json +++ b/translations/it.json @@ -137,5 +137,6 @@ "Approve follow requests": "Approvare seguire le richieste", "Page down": "Pagina giù", "Page up": "Pagina su", - "Vote": "Vote" + "Vote": "Vote", + "Replies": "Replies" } diff --git a/webinterface.py b/webinterface.py index 808181cf..d435bf57 100644 --- a/webinterface.py +++ b/webinterface.py @@ -2076,12 +2076,15 @@ def htmlTimeline(translate: {},pageNumber: int, \ inboxButton='button' dmButton='button' + repliesButton='button' sentButton='button' moderationButton='button' if boxName=='inbox': inboxButton='buttonselected' elif boxName=='dm': dmButton='buttonselected' + elif boxName=='replies': + repliesButton='buttonselected' elif boxName=='outbox': sentButton='buttonselected' elif boxName=='moderation': @@ -2127,6 +2130,7 @@ def htmlTimeline(translate: {},pageNumber: int, \ '
\n'+ \ ' ' \ ' ' \ + ' ' \ ' '+ \ moderationButtonStr+newPostButtonStr+ \ ' '+translate['Search and follow']+''+ \ @@ -2204,6 +2208,18 @@ def htmlInboxDMs(translate: {},pageNumber: int,itemsPerPage: int, \ nickname,domain,port,inboxJson,'dm',allowDeletion, \ httpPrefix,projectVersion,False) +def htmlInboxReplies(translate: {},pageNumber: int,itemsPerPage: int, \ + session,baseDir: str,wfRequest: {},personCache: {}, \ + nickname: str,domain: str,port: int,inboxJson: {}, \ + allowDeletion: bool, \ + httpPrefix: str,projectVersion: str) -> str: + """Show the replies timeline as html + """ + return htmlTimeline(translate,pageNumber, \ + itemsPerPage,session,baseDir,wfRequest,personCache, \ + nickname,domain,port,inboxJson,'replies',allowDeletion, \ + httpPrefix,projectVersion,False) + def htmlModeration(translate: {},pageNumber: int,itemsPerPage: int, \ session,baseDir: str,wfRequest: {},personCache: {}, \ nickname: str,domain: str,port: int,inboxJson: {}, \