On July 13, Jose Ortiz wrote:
> Hi,
>
> Regarding bug #1236435, here is a patch for htsearch/Display.cc.
>
> The patch is similar to this one:
> http://sourceforge.net/mailarchive/forum.php?thread_id=1377415&forum_id=2688
>
> The patch I'm attaching has these features:
>
> 1. It provides a Google-style paging. Say the current page is 9,
> maximum_page_buttons
> is 10 and the number of pages matching the search is bigger than 30, we
> get this
> for PAGELIST:
>
> [prev] 4 5 6 7 8 9 10 11 12 13 [next]
>
> The current page is centered if possible.
>
> 2. If an insufficient number of pictures is provided, it mixes up
> graphics and text:
>
> [pic prev] [pic 4] [pic 5] [pic 6] [pic 7] [pic 8] [pic 9] [pic 10] 11
> 12 13 [pic next]
>
> To install the patch, update htsearch/Display.cc, compile the code and copy
> % cp htsearch/.lig/htsearch to your cgi-bin directory.
>
> Jose
Thanks, Jose. Sorry for the delay in responding. Looking over your
code, I do think it's an improvement on Adam Ness's patch. By the way,
your patch was reversed. You should use "diff -up oldsource newsource"
to get a forward patch. Not a problem, though. Here's a reposting of
it with the fix. It can be applied to the htdig-3.2.0b6 source using
"patch -p0 < this-message-file".
As it turns out, this seems all to be a moot point. Looking at the CVS
source tree, I see that Lachalan already committed a third variation
on this theme over a year ago (just after 3.2.0b6 was released).
His is a bit more elaborate, in that it will make all page links text
if there aren't enough images for all of them. In his ChangeLog entry,
he cites 3 RFE numbers (#601177, #600959, #405679) but no bug entries.
We can probably close bug #1236435.
--- htsearch/Display.cc.back 2005-07-12 23:11:39.000000000 -0400
+++ htsearch/Display.cc 2005-07-13 20:10:25.000000000 -0400
@@ -694,6 +694,38 @@ Display::setVariables(int pageNumber, Li
//
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,8 @@ Display::setVariables(int pageNumber, Li
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)
{
--
Gilles R. Detillieux E-mail: <[EMAIL PROTECTED]>
Spinal Cord Research Centre WWW: http://www.scrc.umanitoba.ca/
Dept. Physiology, U. of Manitoba Winnipeg, MB R3E 3J7 (Canada)
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
ht://Dig Developer mailing list:
[email protected]
List information (subscribe/unsubscribe, etc.)
https://lists.sourceforge.net/lists/listinfo/htdig-dev