Page numbers for shared item search

master
Bob Mottram 2019-08-14 10:45:51 +01:00
parent 23462f1380
commit 41616734dd
2 changed files with 59 additions and 18 deletions

View File

@ -2204,8 +2204,17 @@ class PubServer(BaseHTTPRequestHandler):
self.server.POSTbusy=False self.server.POSTbusy=False
return return
# decision to follow in the web interface is confirmed # a search was made
if authorized and self.path.endswith('/searchhandle'): if authorized and \
(self.path.endswith('/searchhandle') or '/searchhandle?page=' in self.path):
# get the page number
pageNumber=1
if '/searchhandle?page=' in self.path:
pageNumberStr=self.path.split('/searchhandle?page=')[1]
if pageNumberStr.isdigit():
pageNumber=int(pageNumberStr)
self.path=self.path.split('?page=')[0]
actorStr=self.path.replace('/searchhandle','') actorStr=self.path.replace('/searchhandle','')
length = int(self.headers['Content-length']) length = int(self.headers['Content-length'])
searchParams=self.rfile.read(length).decode('utf-8') searchParams=self.rfile.read(length).decode('utf-8')
@ -2231,7 +2240,9 @@ class PubServer(BaseHTTPRequestHandler):
nickname=getNicknameFromActor(self.path) nickname=getNicknameFromActor(self.path)
if not self.server.session: if not self.server.session:
self.server.session= \ self.server.session= \
createSession(self.server.domain,self.server.port,self.server.useTor) createSession(self.server.domain, \
self.server.port, \
self.server.useTor)
profileStr= \ profileStr= \
htmlProfileAfterSearch(self.server.baseDir, \ htmlProfileAfterSearch(self.server.baseDir, \
self.path.replace('/searchhandle',''), \ self.path.replace('/searchhandle',''), \
@ -2251,7 +2262,9 @@ class PubServer(BaseHTTPRequestHandler):
else: else:
# shared items search # shared items search
sharedItemsStr= \ sharedItemsStr= \
htmlSearchSharedItems(self.server.baseDir,searchStr) htmlSearchSharedItems(self.server.baseDir, \
searchStr,pageNumber, \
maxPostsInFeed,actorStr)
if sharedItemsStr: if sharedItemsStr:
self._login_headers('text/html') self._login_headers('text/html')
self.wfile.write(sharedItemsStr.encode('utf-8')) self.wfile.write(sharedItemsStr.encode('utf-8'))

View File

@ -35,7 +35,11 @@ from content import getMentionsFromHtml
from config import getConfigParam from config import getConfigParam
from skills import getSkills from skills import getSkills
def htmlSearchSharedItems(baseDir: str,searchStr: str) -> str: def htmlSearchSharedItems(baseDir: str,searchStr: str,pageNumber: int,resultsPerPage: int,actor: str) -> str:
"""Search results for shared items
"""
currPage=1
ctr=0
sharedItemsForm='' sharedItemsForm=''
searchStrLower=searchStr.replace('%2B','+').replace('%40','@').replace('%3A',':').replace('%23','#').lower().strip('\n') searchStrLower=searchStr.replace('%2B','+').replace('%40','@').replace('%3A',':').replace('%23','#').lower().strip('\n')
searchStrLowerList=searchStrLower.split('+') searchStrLowerList=searchStrLower.split('+')
@ -55,7 +59,6 @@ def htmlSearchSharedItems(baseDir: str,searchStr: str) -> str:
sharesJson=commentjson.load(fp) sharesJson=commentjson.load(fp)
for name,sharedItem in sharesJson.items(): for name,sharedItem in sharesJson.items():
matched=True matched=True
ctr=0
for searchSubstr in searchStrLowerList: for searchSubstr in searchStrLowerList:
subStrMatched=False subStrMatched=False
searchSubstr=searchSubstr.strip() searchSubstr=searchSubstr.strip()
@ -70,8 +73,8 @@ def htmlSearchSharedItems(baseDir: str,searchStr: str) -> str:
if not subStrMatched: if not subStrMatched:
matched=False matched=False
break break
ctr+=1
if matched: if matched:
if currPage==pageNumber:
sharedItemsForm+='<div class="container">' sharedItemsForm+='<div class="container">'
sharedItemsForm+='<p class="share-title">'+sharedItem['displayName']+'</p>' sharedItemsForm+='<p class="share-title">'+sharedItem['displayName']+'</p>'
sharedItemsForm+='<a href="'+sharedItem['imageUrl']+'">' sharedItemsForm+='<a href="'+sharedItem['imageUrl']+'">'
@ -81,7 +84,32 @@ def htmlSearchSharedItems(baseDir: str,searchStr: str) -> str:
sharedItemsForm+='<b>Category:</b> '+sharedItem['category']+' ' sharedItemsForm+='<b>Category:</b> '+sharedItem['category']+' '
sharedItemsForm+='<b>Location:</b> '+sharedItem['location']+'</p>' sharedItemsForm+='<b>Location:</b> '+sharedItem['location']+'</p>'
sharedItemsForm+='</div>' sharedItemsForm+='</div>'
if not resultsExist and currPage>1:
# previous page link, needs to be a POST
sharedItemsForm+= \
'<form method="POST" action="'+actor+'/searchhandle?page='+str(pageNumber-1)+'">' \
' <input type="hidden" name="actor" value="'+actor+'">' \
' <input type="hidden" name="searchtext" value="'+searchStrLower+'"><br>' \
' <center><a href="'+actor+'" type="submit" name="submitSearch">' \
' <img class="pageicon" src="/icons/pageup.png" title="Page up" alt="Page up"/></a>' \
' </center>' \
'</form>'
resultsExist=True resultsExist=True
ctr+=1
if ctr>=resultsPerPage:
currPage+=1
if currPage>pageNumber:
# next page link, needs to be a POST
sharedItemsForm+= \
'<form method="POST" action="'+actor+'/searchhandle?page='+str(pageNumber+1)+'">' \
' <input type="hidden" name="actor" value="'+actor+'">' \
' <input type="hidden" name="searchtext" value="'+searchStrLower+'"><br>' \
' <center><a href="'+actor+'" type="submit" name="submitSearch">' \
' <img class="pageicon" src="/icons/pagedown.png" title="Page down" alt="Page down"/></a>' \
' </center>' \
'</form>'
break
ctr=0
if not resultsExist: if not resultsExist:
sharedItemsForm+='<center><h5>No results</h5></center>' sharedItemsForm+='<center><h5>No results</h5></center>'
sharedItemsForm+=htmlFooter() sharedItemsForm+=htmlFooter()
@ -181,7 +209,7 @@ def htmlHashtagSearch(baseDir: str,hashtag: str,pageNumber: int,postsPerPage: in
if endIndex>0: if endIndex>0:
# next page link # next page link
hashtagSearchForm+='<center><a href="/tags/'+hashtag+'?page='+str(pageNumber+1)+'"><img class="pageicon" src="/icons/pageup.png" title="Page up" alt="Page up"></a></center>' hashtagSearchForm+='<center><a href="/tags/'+hashtag+'?page='+str(pageNumber+1)+'"><img class="pageicon" src="/icons/pagedown.png" title="Page down" alt="Page down"></a></center>'
hashtagSearchForm+=htmlFooter() hashtagSearchForm+=htmlFooter()
return hashtagSearchForm return hashtagSearchForm