#coding: utf-8 # +------------------------------------------------------------------- # | 宝塔Linux面板 # +------------------------------------------------------------------- # | Copyright (c) 2015-2016 宝塔软件(http://bt.cn) All rights reserved. # +------------------------------------------------------------------- # | Author: 黄文良 <2879625666@qq.com> # +------------------------------------------------------------------- import math,string,public class Page(): #-------------------------- # 分页类 - JS回调版 #-------------------------- __PREV = '上一页' __NEXT = '下一页' __START = '首页' __END = '尾页' __COUNT_START = '共' __COUNT_END = '条数据' __FO = '从' __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): tmp = public.getMsg('PAGE'); if tmp: self.__PREV = tmp['PREV']; self.__NEXT = tmp['NEXT']; self.__START = tmp['START']; self.__END = tmp['END']; self.__COUNT_START = tmp['COUNT_START']; self.__COUNT_END = tmp['COUNT_END']; self.__FO = tmp['FO']; self.__LINE = tmp['LINE']; 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'] = "" + bytes(self.__C_PAGE) + "/" + bytes(self.__COUNT_PAGE) + "" #本页显示开始与结束行 pages['7'] = "" + self.__FO + bytes(self.__START_NUM) + "-" + bytes(self.__END_NUM) + self.__LINE + "" #行数 pages['8'] = "" + self.__COUNT_START + bytes(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 += "" + bytes(page) + "" else: pages += "" + bytes(page) + "" #当前页 if self.__C_PAGE > 0: pages += "" + bytes(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 += "" + bytes(page) + "" else: pages += "" + bytes(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,input): #构造URI uri = '?' for key in input: if key == 'p': continue uri += key+'='+input[key]+'&' return str(uri)