Search
j0ke.net Open Build Service
>
Projects
>
server:search
>
htdig
> htdig-google-style.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File htdig-google-style.patch of Package htdig
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) {