Pager vs. Pager_Sliding

Pager vs. Pager_Sliding -- Feature comparison of the two classes

What are the differences with Pager?

While Pager has a "jumping window" style, Pager_Sliding has a "sliding window" style. What does that mean? Let's see an example:

Pager logic

Let's suppose that the data spans on 15 pages, and the window width is 5 page links. The links are built on "frames" of 5 pages each: [1-5] [6-10] [11-15] Pager always shows the same 5 page links while you are on one of these pages. Here's a temporal succession of the links, starting from page 1 and moving forward. There are brakets around current page number to highlight this:
a)    {1} 2 3 4 5  =>   // first frame: [1-5]
b) <= 1 {2} 3 4 5  =>
c) <= 1 2 {3} 4 5  =>
d) <= 1 2 3 {4} 5  =>
e) <= 1 2 3 4 {5}  =>   // HERE IT JUMPS TO THE NEXT FRAME
f) <= {6} 7 8 9 10 =>   // second frame: [6-10]
g) <= 6 {7} 8 9 10 =>
h) <= 6 7 {8} 9 10 =>
and so on. See what a "jumping window" frame is? When you reach a limit (in the example, you go from page 5 to page 6), it "jumps" to next frame (links from page 6 to 10).

Pager_Sliding logic

Instead of jumping from one frame to the other, with Pager_Sliding the change is done smoothly, and the current page is always shown at the center of the "window" (except of course for the first and the last pages):
a)        {1} 2 3 4 5  => [15]
b) [1] <= {2} 3 4 5 6  => [15]
c) [1] <= 2 {3} 4 5 6  => [15]
d) [1] <= 2 3 {4} 5 6  => [15]  // HERE IT's STARTING WORKING AS DESIGNED
e) [1] <= 3 4 {5} 6 7  => [15]  // see: current page number is at the center of the window
f) [1] <= 4 5 {6} 7 8  => [15]  // and it stays there...
g) [1] <= 5 6 {7} 8 9  => [15]
h) [1] <= 6 7 {8} 9 10 => [15]
and so on.

Other differences

Apart from the different "philosophy", Pager_Sliding is also designed to be highly customizable.