Working navigable page index
This commit is contained in:
		
							parent
							
								
									55bdc78582
								
							
						
					
					
						commit
						fc0b9c47cb
					
				| @ -22,6 +22,8 @@ | ||||
|             <h4>%s total posts</h4> | ||||
|             <h3>Tags</h3> | ||||
|             <p>%s</p> | ||||
|             <h3>Pages</h3> | ||||
|             <p>%s</p> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
|  | ||||
							
								
								
									
										33
									
								
								microblog.py
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								microblog.py
									
									
									
									
									
								
							| @ -136,28 +136,33 @@ class Paginator: | ||||
|             self.SUBDIR = loc | ||||
|             if not os.path.exists(loc): | ||||
|                 os.makedirs(loc) | ||||
|             self.FILENAME = "%i.html" | ||||
|         pass | ||||
| 
 | ||||
|     def toc(self, n=None, page=None): #style 1 | ||||
|         if self.TOTAL_PAGES < 1 or (n == None or page == None): | ||||
|     def toc(self, current_page=None, path=None): #style 1 | ||||
|         if self.TOTAL_PAGES < 1: | ||||
|             return "[no pages]" | ||||
|         if path == None: | ||||
|             path = self.SUBDIR | ||||
|         # For page 'n' do not create an anchor tag | ||||
|         fmt = "<a href=\"%s/%s\">[%i]</a>" #(self.subdir, page, page number) | ||||
|         fmt = "<a href=\"%s\">[%i]</a>" #(filename, page number) | ||||
|         anchors = [] | ||||
|         for i in range(self.TOTAL_PAGES): | ||||
|             if i != n: | ||||
|                 anchors.append(fmt % (self.SUBDIR, page, i)) | ||||
|         for i in reversed(range(self.TOTAL_PAGES)): | ||||
|             if i != current_page: | ||||
|                 x = path + "/" + (self.FILENAME % i) | ||||
|                 anchors.append(fmt % (x, i)) | ||||
|             else: | ||||
|                 anchors.append("<b>[%i]</b>" % i) | ||||
|         return "\n".join(anchors) | ||||
| 
 | ||||
|     def singlepage(self, template, tagcloud, timeline): | ||||
|         tc = "\n".join(tagcloud) | ||||
|         tl = "\n\n".join(timeline) | ||||
|         return (template % (self.TOTAL_POSTS, tc, tl)) | ||||
|     def singlepage(self, template, tagcloud, timeline, i=None, p=None): | ||||
|         tc  = "\n".join(tagcloud) | ||||
|         tl  = "\n\n".join(timeline) | ||||
|         tbl = self.toc(i, p) | ||||
|         return (template % (self.TOTAL_POSTS, tc, tbl, tl)) | ||||
| 
 | ||||
|     def paginate(self, template, tagcloud, timeline): | ||||
|         outfile = self.SUBDIR + "/%i.html" | ||||
|         outfile = "%s/%s" % (self.SUBDIR, self.FILENAME) | ||||
|         timeline.reverse() # reorder from oldest to newest | ||||
|         for i in range(self.TOTAL_PAGES): | ||||
|             with open(outfile % i, 'w') as fout: | ||||
| @ -166,7 +171,7 @@ class Paginator: | ||||
|                 sliced = timeline[prev:curr] | ||||
|                 sliced.reverse() | ||||
|                 fout.write( | ||||
|                     self.singlepage(template, tagcloud, sliced)) | ||||
|                     self.singlepage(template, tagcloud, sliced, i, ".")) | ||||
|         pass | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
| @ -205,10 +210,10 @@ if __name__ == "__main__": | ||||
|             html = f.read() | ||||
|             #print(html % (count, "\n".join(tcl), "\n\n".join(tl))) | ||||
|         count = len(tl) | ||||
|         posts_per_page = 20 | ||||
|         posts_per_page = 5 | ||||
|         pagectrl = Paginator(count, posts_per_page) | ||||
|         if count <= posts_per_page: | ||||
|             print(pagectrl.paginate(html, tcl, timeline)) | ||||
|             print(pagectrl.singlepage(html, tcl, tl)) | ||||
|         else: | ||||
|             latest   = tl[:posts_per_page] | ||||
|             print(pagectrl.singlepage(html, tcl, latest)) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user