forked from indymedia/epicyon
Page numbers for shared item search
parent
23462f1380
commit
41616734dd
21
daemon.py
21
daemon.py
|
@ -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'))
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue