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:
htdig-dev@lists.sourceforge.net
List information (subscribe/unsubscribe, etc.)
https://lists.sourceforge.net/lists/listinfo/htdig-dev

Reply via email to