aMeeNeeMa

Pagination Function

Apr 29th, 2012
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <style>
  2.     .pageing{text-align:right;padding:3px;font-weight:bold;color:#879057;display:block;margin:5px 0;clear:both;}
  3.     .pageing a{text-decoration:none;color:#7D0000;}
  4.     /*.pageing a{text-decoration:none;padding:0px 4px;text-align:center;height:16px;line-height:15px;
  5.     font-size:12px;font-weight:bold;font-family:Arial, Helvetica, sans-serif;border:1px solid #09C;
  6.     background-color:#EDEFE0;color:#718224;border:1px solid #718224;}
  7.     .pageing a.current{background-color:#718224;color:#EDEFE0;border:1px solid #718224;}
  8.    
  9.     .pageing a.current:hover{text-decoration:none;color:#EDEFE0;}
  10.     .pageing a:hover{text-decoration:none;color:#718224;}*/
  11. /* /Page Navigator */
  12.  
  13.  
  14.     .pageing .p_r{padding:0;margin:0;display:inline-block;}
  15.     .pageing .p_l{padding:0;margin:0;display:inline-block;}
  16.     .pageing .p_m{padding:2px 4px;margin:0;display:inline-block;border:1px solid #C6C6C6;}
  17.  
  18.     .p_norm ,.p_act ,.p_hover{}
  19.     .p_norm .p_r{}
  20.     .p_norm .p_l{}
  21.     .p_norm .p_m{background:#F1F1F1;color:#7D0000}
  22.    
  23.     .p_norm:hover .p_r{}
  24.     .p_norm:hover .p_l{}
  25.     .p_norm:hover .p_m{background:#7D0000;}
  26.     .p_norm:hover .p_m a{color:#FFFFFF}
  27.    
  28.     .p_hover .p_r{}
  29.     .p_hover .p_l{}
  30.     .p_hover .p_m{background:#fff;}
  31.    
  32.     .p_act .p_r{}
  33.     .p_act .p_l{}
  34.     .p_act .p_m{background:#000;color:#fff}
  35.  
  36.     .p_act a{text-decoration:none;color:#fff;}
  37. </style>
  38.     <cffunction name="Pageing">
  39.         <cfargument name="Query" required="yes" type="query">
  40.         <cfargument name="MaxRow" default="50" type="numeric">
  41.         <cfargument name="pageURL" required="yes" type="string">
  42.         <cfset var local = StructNew()>
  43.        
  44.         <cfset local.q = arguments.Query>
  45.         <cfset local.ret.startRow = 1>
  46.         <cfset local.ret.endRow = local.q.recordCount>
  47.         <cfset local.ret.offset = arguments.maxRow>
  48.         <cfset local.ret.pageCount = Ceiling(local.q.recordCount / local.ret.offset)> <!--- 5.4 = 6 --->
  49.         <cfset local.ret.HTML = "">
  50.        
  51.    
  52.         <cfif IsDefined("URL.page") AND URL.page LTE local.ret.pageCount AND URL.page GT 0>
  53.             <cfset local.ret.page = Val(url.page)>
  54.         <cfelse>
  55.             <cfset local.ret.page = 1>
  56.         </cfif>
  57.        
  58.         <cfif NOT local.q.recordCount>
  59.             <cfreturn local.ret>
  60.         </cfif>
  61.        
  62.    
  63.         <cfset local.ret.startRow = ((local.ret.page * arguments.maxRow) - arguments.maxRow) + 1>
  64.         <!--- <cfset local.ret.endRow = (local.ret.page * arguments.maxRow)> --->
  65.     <cfset local.ret.lastRow = (local.ret.page * arguments.maxRow)>
  66.     <cfset local.ret.endRow = local.ret.lastRow>
  67.         <cfif local.q.recordCount GT local.ret.offset>
  68.             <cfif local.ret.lastRow GT local.q.recordCount>
  69.                 <cfset local.ret.lastRow = local.q.recordCount>
  70.             <cfset local.ret.endRow = local.ret.lastRow>
  71.             </cfif>
  72.             <cfsavecontent variable="local.ret.HTML">
  73.                 <cfoutput>
  74.                 <div class="pageing">
  75.      
  76.        
  77.         <!--- Get Median of the page --->
  78.         <cfset median = 1>
  79.         <cfset median_range = 5>
  80.        
  81.        
  82.         <!--- display as median sets --->
  83.         <cfif local.ret.page LT median_range>
  84.                     <cfset startpage = 1>
  85.           <cfset endpage = median_range>
  86.           <cfif endpage GT local.ret.pagecount>
  87.             <cfset endpage = local.ret.pagecount>
  88.             <cfset startpage = 1>
  89.                     </cfif>
  90.         <cfelse>
  91.             <cfset startpage    = local.ret.page - 2>
  92.             <cfset endpage      = local.ret.page + 2>
  93.           <cfif endpage GTE local.ret.pagecount>
  94.             <cfset endpage = local.ret.pagecount>
  95.             <cfset startpage = endpage - median_range + 1>
  96.                     </cfif>
  97.  
  98.           <!--- again a small manipulation to maintain the look and feel --->
  99.                     <cfif startpage EQ 3>
  100.             <cfset startpage = 1>
  101.             <cfset endpage = median_range>
  102.                     </cfif>
  103.          
  104.                     <cfif endpage EQ local.ret.pagecount-1>
  105.             <cfset endpage = endpage-1>
  106.                     </cfif>          
  107.           <!--- /again a small manipulation to maintain the look and feel --->
  108.                    
  109.                 </cfif>
  110.                
  111.         <cfset page = local.ret.page>        
  112.         <!--- <a href="##">Pages #page# of #local.ret.pagecount#</a> --->
  113.                 <cfif local.ret.page GT 1>
  114.                     <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=#page-1#">السابقة</a></span></span></span></span>
  115.                 </cfif>
  116.         <cfif page GT median_range>
  117.                     <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=1">1</a></span></span></span></span>
  118.          
  119.                     <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=2">2</a></span></span></span></span>
  120.  
  121.           <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m">&nbsp;...&nbsp;</span></span></span></span>
  122.                 </cfif>
  123.        
  124.         <cfloop from="#startpage#" to="#endpage#" index="j">
  125.             <!--- #<div dir="ltr">#startpage# GT 0 AND #j# LTE #endpage#</div># --->
  126.             <cfif j EQ page>
  127.                         <span class="p_act"><span class="p_r"><span class="p_l"><span class="p_m"><a href="javascript:void(0);" class="current">#j#</a></span></span></span></span>
  128.           <cfelse>
  129.                         <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=#j#">#j#</a></span></span></span></span>
  130.           </cfif>
  131.         </cfloop>
  132.        
  133.         <cfif endpage LT local.ret.pagecount>
  134.                     <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m">&nbsp;...&nbsp;</span></span></span></span>
  135.                     <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=#local.ret.pagecount-1#">#local.ret.pagecount-1#</a></span></span></span></span>
  136.                     <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=#local.ret.pagecount#">#local.ret.pagecount#</a></span></span></span></span>
  137.                 </cfif>
  138.        
  139.         <cfif local.ret.page LT local.ret.pagecount>
  140.             <span class="p_norm"><span class="p_r"><span class="p_l"><span class="p_m"><a href="#arguments.pageURL#&page=#page+1#">التالية</a></span></span></span></span>
  141.         </cfif>
  142.                 </div>
  143.                 </cfoutput>
  144.             </cfsavecontent>
  145.             <cfset local.ret.HTML = REReplace(local.ret.HTML,">[[:space:]]+",">","ALL")>
  146.             <cfset local.ret.HTML = REReplace(local.ret.HTML,"[[:space:]]+<","<","ALL")>
  147.             <cfset local.ret.HTML = Replace(local.ret.HTML,"><","> <","ALL")>
  148.         </cfif>
  149.         <cfreturn local.ret>
  150.     </cffunction>
Advertisement
Add Comment
Please, Sign In to add comment