#coding: utf-8 # +------------------------------------------------------------------- # | YakPanel # +------------------------------------------------------------------- # | Copyright (c) 2015-2016 YakPanel(www.yakpanel.com) All rights reserved. # +------------------------------------------------------------------- # | Author: hwliang # +------------------------------------------------------------------- import math,string,public,re class Page(): #-------------------------- # 分页类 - JS回调版 #-------------------------- __PREV = public.lang("Prev") __NEXT = public.lang("Next") __START = public.lang("Start") __END = public.lang("Last") __COUNT_START = "Total" __COUNT_END = '' __FO = public.lang("From") __LINE = '' __LIST_NUM = 4 SHIFT = None #偏移量 ROW = None #每页行数 __C_PAGE = None #当前页 __COUNT_PAGE = None #总页数 __COUNT_ROW = None #总行数 __URI = None #URI __RTURN_JS = False #是否返回JS回调 __START_NUM = None #起始行 __END_NUM = None #结束行 def __init__(self): pass # tmp = public.lang("Depends on the following software, please install [{1}] first") # if tmp: # self.__PREV = tmp['Prev'] # self.__NEXT = tmp['Next'] # self.__START = tmp['Start'] # self.__END = tmp['Last'] # self.__COUNT_START = tmp['Total'] # self.__COUNT_END = tmp[''] # self.__FO = tmp['From'] # self.__LINE = tmp[''] def GetPage(self,pageInfo,limit = '1,2,3,4,5,6,7,8'): # 取分页信息 # @param pageInfo 传入分页参数字典 # @param limit 返回系列 self.__RTURN_JS = pageInfo['return_js'] self.__COUNT_ROW = pageInfo['count'] self.ROW = pageInfo['row'] self.__C_PAGE = self.__GetCpage(pageInfo['p']) self.__START_NUM = self.__StartRow() self.__END_NUM = self.__EndRow() self.__COUNT_PAGE = self.__GetCountPage() self.__URI = self.__SetUri(pageInfo['uri']) self.SHIFT = self.__START_NUM - 1 keys = limit.split(',') pages = {} #起始页 pages['1'] = self.__GetStart() #上一页 pages['2'] = self.__GetPrev() #分页 pages['3'] = self.__GetPages() #下一页 pages['4'] = self.__GetNext() #尾页 pages['5'] = self.__GetEnd() #当前显示页与总页数 pages['6'] = "" + str(self.__C_PAGE) + "/" + str(self.__COUNT_PAGE) + "" #本页显示开始与结束行 pages['7'] = "" + self.__FO + str(self.__START_NUM) + "-" + str(self.__END_NUM) + self.__LINE + "" #行数 pages['8'] = "" + self.__COUNT_START +' '+ str(self.__COUNT_ROW) + self.__COUNT_END + "" #构造返回数据 retuls = '
'; for value in keys: retuls += pages[value] retuls +='
'; #返回分页数据 return retuls; def __GetEnd(self): #构造尾页 endStr = "" if self.__C_PAGE >= self.__COUNT_PAGE: endStr = ''; else: if self.__RTURN_JS == "": endStr = "" + self.__END + "" else: endStr = "" + self.__END + "" return endStr def __GetNext(self): #构造下一页 nextStr = "" if self.__C_PAGE >= self.__COUNT_PAGE: nextStr = ''; else: if self.__RTURN_JS == "": nextStr = "" + self.__NEXT + "" else: nextStr = "" + self.__NEXT + "" return nextStr def __GetPages(self): #构造分页 pages = '' num = 0 #当前页之前 if (self.__COUNT_PAGE - self.__C_PAGE) < self.__LIST_NUM: num = self.__LIST_NUM + (self.__LIST_NUM - (self.__COUNT_PAGE - self.__C_PAGE)); else: num = self.__LIST_NUM n = 0 for i in range(num): n = num - i page = self.__C_PAGE - n; if page > 0: if self.__RTURN_JS == "": pages += "" + str(page) + "" else: pages += "" + str(page) + "" #当前页 if self.__C_PAGE > 0: pages += "" + str(self.__C_PAGE) + "" #当前页之后 if self.__C_PAGE <= self.__LIST_NUM: num = self.__LIST_NUM + (self.__LIST_NUM - self.__C_PAGE) + 1 else: num = self.__LIST_NUM; for i in range(num): if i == 0: continue page = self.__C_PAGE + i; if page > self.__COUNT_PAGE: break; if self.__RTURN_JS == "": pages += "" + str(page) + "" else: pages += "" + str(page) + "" return pages; def __GetPrev(self): #构造上一页 startStr = '' if self.__C_PAGE == 1: startStr = ''; else: if self.__RTURN_JS == "": startStr = "" + self.__PREV + "" else: startStr = "" + self.__PREV + "" return startStr def __GetStart(self): #构造起始分页 startStr = '' if self.__C_PAGE == 1: startStr = ''; else: if self.__RTURN_JS == "": startStr = "" + self.__START + "" else: startStr = "" + self.__START + "" return startStr; def __GetCpage(self,p): #取当前页 if p: return p return 1 def __StartRow(self): #从多少行开始 return (self.__C_PAGE - 1) * self.ROW + 1 def __EndRow(self): #从多少行结束 if self.ROW > self.__COUNT_ROW: return self.__COUNT_ROW return self.__C_PAGE * self.ROW def __GetCountPage(self): #取总页数 return int(math.ceil(self.__COUNT_ROW / float(self.ROW))) def __SetUri(self,request_uri): #构造URI try: request_uri = re.sub(r"&p=\d+",'&',request_uri) request_uri = re.sub(r"\?p=\d+",'?',request_uri) if request_uri.find('&') == -1: if request_uri[-1] != '?': request_uri += '?' else: if request_uri[-1] != '&': request_uri += '&' return request_uri except: return ''