55 lines
1.7 KiB
Diff
55 lines
1.7 KiB
Diff
Index: htsearch/Display.cc
|
|
===================================================================
|
|
--- htsearch/Display.cc.orig
|
|
+++ htsearch/Display.cc
|
|
@@ -694,6 +694,38 @@
|
|
//
|
|
if (nPages > 1)
|
|
{
|
|
+ // Assume number of page links is equal to maximum_page_buttons
|
|
+ // For example, if pageNumber=9, maximum_page_buttons=10,
|
|
+ // and nPages>=13, we get:
|
|
+ //
|
|
+ // [prev] 4 5 6 7 8 9 10 11 12 13 [next]
|
|
+
|
|
+ int nPageButtons = config->Value("maximum_page_buttons", 10);
|
|
+
|
|
+ // Initialize indexes of pages links
|
|
+ int first_page_index = 1;
|
|
+ int last_page_index = nPages;
|
|
+
|
|
+ if (nPages > nPageButtons)
|
|
+ {
|
|
+ // Try to center the current page
|
|
+ int links_on_the_left = nPageButtons/2;
|
|
+ first_page_index = pageNumber - links_on_the_left;
|
|
+ last_page_index = first_page_index + nPageButtons - 1;
|
|
+
|
|
+ // Adjust if required
|
|
+ if (first_page_index < 1)
|
|
+ {
|
|
+ first_page_index = 1;
|
|
+ last_page_index = nPageButtons;
|
|
+ }
|
|
+ else if (last_page_index > nPages )
|
|
+ {
|
|
+ last_page_index = nPages;
|
|
+ first_page_index = nPages - nPageButtons + 1;
|
|
+ }
|
|
+ }
|
|
+
|
|
if (pageNumber > 1)
|
|
{
|
|
str = new String("<a href=\"");
|
|
@@ -725,9 +757,7 @@
|
|
QuotedStringList pnt(config->Find("page_number_text"), " \t\r\n");
|
|
QuotedStringList npnt(config->Find("no_page_number_text"), " \t\r\n");
|
|
QuotedStringList sep(config->Find("page_number_separator"), " \t\r\n");
|
|
- if (nPages > config->Value("maximum_page_buttons", 10))
|
|
- nPages = config->Value("maximum_page_buttons", 10);
|
|
- for (i = 1; i <= nPages; i++)
|
|
+ for (i = first_page_index; i <= last_page_index; i++)
|
|
{
|
|
if (i == pageNumber)
|
|
{
|