From 1cc81c5138b977b5cba5aad874f26a92ba871d9b Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Wed, 31 Jul 2019 21:37:19 +0100 Subject: [PATCH] Page up and down icons --- daemon.py | 20 +++++++++++++++++--- epicyon-profile.css | 4 ++++ img/icons/pagedown.png | Bin 0 -> 1166 bytes img/icons/pageup.png | Bin 0 -> 1024 bytes webinterface.py | 19 ++++++++++++++----- 5 files changed, 35 insertions(+), 8 deletions(-) create mode 100644 img/icons/pagedown.png create mode 100644 img/icons/pageup.png diff --git a/daemon.py b/daemon.py index f8b1af6b..98506e52 100644 --- a/daemon.py +++ b/daemon.py @@ -82,7 +82,7 @@ import os import sys # maximum number of posts to list in outbox feed -maxPostsInFeed=20 +maxPostsInFeed=4 # number of follows/followers per page followsPerPage=12 @@ -944,8 +944,14 @@ class PubServer(BaseHTTPRequestHandler): if inboxFeed: if 'text/html' in self.headers['Accept']: nickname=self.path.replace('/users/','').replace('/inbox','') + 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 inboxFeed=personBoxJson(self.server.baseDir, \ @@ -956,7 +962,8 @@ class PubServer(BaseHTTPRequestHandler): maxPostsInFeed, 'inbox', \ True,self.server.ocapAlways) self._set_headers('text/html',cookie) - self.wfile.write(htmlInbox(self.server.session, \ + self.wfile.write(htmlInbox(pageNumber,maxPostsInFeed, \ + self.server.session, \ self.server.baseDir, \ self.server.cachedWebfingers, \ self.server.personCache, \ @@ -990,8 +997,14 @@ class PubServer(BaseHTTPRequestHandler): if outboxFeed: if 'text/html' in self.headers['Accept']: nickname=self.path.replace('/users/','').replace('/outbox','') + 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 a page wasn't specified then show the first one outboxFeed=personBoxJson(self.server.baseDir,self.server.domain, \ @@ -1002,7 +1015,8 @@ class PubServer(BaseHTTPRequestHandler): self.server.ocapAlways) self._set_headers('text/html',cookie) - self.wfile.write(htmlOutbox(self.server.session, \ + self.wfile.write(htmlOutbox(pageNumber,maxPostsInFeed, \ + self.server.session, \ self.server.baseDir, \ self.server.cachedWebfingers, \ self.server.personCache, \ diff --git a/epicyon-profile.css b/epicyon-profile.css index a60ab40b..4c6d636c 100644 --- a/epicyon-profile.css +++ b/epicyon-profile.css @@ -22,6 +22,10 @@ body, html { display: none; } +.pageicon { + width: 5%; +} + .timeline-banner { background-image: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url("banner.png"); height: 10%; diff --git a/img/icons/pagedown.png b/img/icons/pagedown.png new file mode 100644 index 0000000000000000000000000000000000000000..b6b8c16665e1624a38941c735338a364556691e5 GIT binary patch literal 1166 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrU~I{Bb`J1#c2+1T%1_J8No8Qr zm{>c}*5j~)%+dJZrAngg%v~I5EA*lSL<_HIi7a$lAsSU`u=9&^#-#~cc35z&V`aA& zTg|6;ZkN>#uBHd<9o?%ZFY2E1WB-y1O2?WX*X`N;eMdDr$5y4wZ?_pbn4bzWlAC;K zrl{tZE&(>hMdHd_o6kl@`W+~*xvPBO`fiQ$pX|Rse{pG(88eg6M;_y~Mjx#{UP-(8 zWRJhjrlv)L^M(7PN*o`#uUjp*zwq2{oew@2y;PrfxF%`dKa|D2xoN4ezmU7h-32v@ zZ#N#R?A{!=X2UVtpWKHdlPf!4o3INUXA)C%ZtCJP3viJPjN%Q-QOUG__V|7IU!$EN zMY#-5ML24`~3Hf!dL1JA0&4e&H5L_ zJL8|q-dk6c+#SA~6%^jRa>e#R5&Mg3BT?_dr3$`^)0yv`e=*z0;k@pJov*%LyK(#_ z^Mpm~gv<{dR5X~g{Eg}S^71X;zP+F6R&PIdO3{u}Gi{uK(ZZJG?e4b zCYGe8D3oWGWGJ|M`UZqI@`*DrFr|6AIEGZ*dVANih{;gEB{1rt_94ZcDb>mD0*PmC zG_3mcck15k(0_6!3c9a%y_;}4fQhMrL4kpTfkbNA^VeVIAAXpyy@R3e_~TE%zi(Q% z`a!en2QH5EoA1BBtCMe3U@&5}_^Z^?@1U}e$%eJ)IMcD62N_dZ{y$fqz!Ldz{#(`w z3hICAcQ>k>;Q0T@f`Ri_dwn2-&=>yt?Z0R8?qM}<`+I2rFP0A`FJ%A4GEG|o z)3m$=dXM&)ANI(rsrnJjF+t}b&s({!iFfZU)VTRprfc%ueG5HqzLn~ldUsxbKeI}Y z=oy{Q0SDe>%X7`FJ?read41`Q)tg*(cLu*W!@BOc}*5j~)%+dJZrAngg%v~I5EA*lSL<_HIi7a$lAsSU`u=9&^#-#~cc35z&V`aA& zTg|6;ZkN>#uBHd<9o?%ZFY2E1WB-y1O2?WX*X`N;eMdDr$5y4wZ?_pbn4bzWlAC;K zrl{tZE&(>hMdHd_o6kl@`W+~*xvPBO`fiQ$pX|Rse{pG(88eg6M;_y~Mjx#{UP-(8 zWRJhjrlv)L^M(7PN*o`#uUjp*zwq2{oew@2y;PrfxF%`dKa|D2xoN4ezmU7h-32v@ zZ#N#R?A{!=X2UVtpWKHdlPf!4o3INUXA)C%ZtCJP3viJPjN%Q-QOUG__V|7IU!$EN zMY#-5ML24`~3Hf!dL1JA0&4e&H5L_ zJL8|q-dk6c+#SA~6%^jRa>e#R5&Mg3BT?_dr3$`^)0yv`e=*z0;k@pJov*%LyK(#_ z^Mpm~gv<{dR5X~g{Eg}S^71X;zP+F6R&PIdO3{u}Gi{uK(ZZJG?e4!MP|k zu_QG`p**uBL&4qCHz2%`PaGKCH#}V&Ln>~)z3b?u9LV4r`1+yPWY=qImzft%bQ54- zc=}H9a=)Peb49|MDs1HX%}Zx1GdM7CFfb}Gurx3TFfifg{9SeLHG9GS`~UxyzNwt& z{`Ob@t9bT$xqtV)1k(P@|1Z-ZF1Noe;aI-%jE}cD(*Bq=N$&4`kSfnS-}J_6TcvY9 z-dZ2*x$kE1c)Q@4AGs{Xb<)_m@vmhvew&_m+!p_P>3-gtrRVRg|E2q==l;HVmTSJ1 zo>knsKA&%S?c8FGx3A|O&WQgmOO_wRSnM\n' -def htmlTimeline(session,baseDir: str,wfRequest: {},personCache: {}, \ +def htmlTimeline(pageNumber: int,itemsPerPage: int,session,baseDir: str, \ + wfRequest: {},personCache: {}, \ nickname: str,domain: str,port: int,timelineJson: {}, \ boxName: str) -> str: """Show the timeline as html @@ -642,25 +643,33 @@ def htmlTimeline(session,baseDir: str,wfRequest: {},personCache: {}, \ followApprovals+ \ '' tlStr+='' + if pageNumber>1: + tlStr+='
Page up
' + itemCtr=0 for item in timelineJson['orderedItems']: if item['type']=='Create' or item['type']=='Announce': + itemCtr+=1 tlStr+=individualPostAsHtml(baseDir,session,wfRequest,personCache, \ nickname,domain,port,item,None,True,showIndividualPostIcons) + if itemCtr>=itemsPerPage: + tlStr+='
Page down
' tlStr+=htmlFooter() return tlStr -def htmlInbox(session,baseDir: str,wfRequest: {},personCache: {}, \ +def htmlInbox(pageNumber: int,itemsPerPage: int, \ + session,baseDir: str,wfRequest: {},personCache: {}, \ nickname: str,domain: str,port: int,inboxJson: {}) -> str: """Show the inbox as html """ - return htmlTimeline(session,baseDir,wfRequest,personCache, \ + return htmlTimeline(pageNumber,itemsPerPage,session,baseDir,wfRequest,personCache, \ nickname,domain,port,inboxJson,'inbox') -def htmlOutbox(session,baseDir: str,wfRequest: {},personCache: {}, \ +def htmlOutbox(pageNumber: int,itemsPerPage: int, \ + session,baseDir: str,wfRequest: {},personCache: {}, \ nickname: str,domain: str,port: int,outboxJson: {}) -> str: """Show the Outbox as html """ - return htmlTimeline(session,baseDir,wfRequest,personCache, \ + return htmlTimeline(pageNumber,itemsPerPage,session,baseDir,wfRequest,personCache, \ nickname,domain,port,outboxJson,'outbox') def htmlIndividualPost(baseDir: str,session,wfRequest: {},personCache: {}, \