Here's a little snippet that I keep in my snippets folder. It creates a
creates a dropdown of all the subsequent pages. I use it instead of the 110
lines of code in the next X / previous X buttons. It doesn't show links like
you wanted, but the idea is the same. It could be easily modified to make
links instead of a dropdown.

The longer lines will wrap in inappropriate places.

There's one method called in it, method="repeatArgs('_start')", which
re-creates all the args as hidden form fields except _start. I can post the
code for that too if you want.

<@if expr="'<@totalRows>'>'<@numrows>'"> <@! more data to show >
<table>
<tr valign=top>
<form method=post action="<@cgi><@appfile>">
<@callmethod object=sys method="repeatArgs('_start')" encoding=none>
<td>Page:</td>
<td><select name="_start" onChange="this.form.submit()">
<@for stop=<@totalrows> step=<@maxRows>>
        <option value="<@currow>" <@if expr="('<@currow>'='<@arg _start>') OR
(('<@currow>'='1') AND !len(<@arg _start>))" true="selected">><@calc
expr="floor((<@currow>/<@maxRows>)+1)"></option>
</@for>
</select>
</td>
<td>Of <@calc expr="ceil(<@totalrows>/<@maxRows>)"></td>
</tr>
</form>
</table>
</@if>

Dave Shelley
[EMAIL PROTECTED]

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]]On Behalf Of Garth Penglase
Sent: Tuesday, December 10, 2002 12:22 AM
To: Multiple recipients of list witango-talk
Subject: Re: Witango-Talk: ebay-style 1 2 3 4 page numbering
(revisited). Javascript help needed!


earlier versions would be great too. really appreciate it since this
of great interest to me.
cheers
Garth

>Hi Garth,
>
>Attached is a file which demonstrates how to do an
>ebay style navigation in Witango as described by
>Nicholas below. There is only a small piece of extra
>code required - I have included comments in the file
>but basically a limit is set on the number of results
>to be returned and from that the total number of pages
>is calculated with a simple for loop to show the |1|
>|2| |3| stuff.
>
>This could be modified to work like the google
>(Gooooooogle) search results navigation which is
>similar.....
>
>I would have liked to make this ready to go and set up
>a resultset to demonstrate on - this wasn't possible
>though as in the search I needed to show where the
>limit (@@request$limit) and start (<@ARG _start>)
>variables are used...
>
>Also can I make the suggestion of implementing this
>with the use of a custom tag - that way anytime you
>want this functionality all you need to do is add 2
>lines of code! - If anyone needs to know how to do
>this I can post a solution/instructions.
>
>Finally the attached will only work with version 5
>server (which I might add is very reliable and stable)
>....if necessary I can post a taf that will work with
>earlier versions.
>
>Regards,
>JJ
>
>--- Garth Penglase <[EMAIL PROTECTED]> wrote:
>>  I'm interested in how best to do this in Witango
>>  Garth
>>
>>  >Hi Nicholas,
>>  >
>>  >Why does it have to be done in Javascript anyway?
>>  It
>>  >can be done relatively straight forward with
>>  Witango
>>  >and still look exactly the same to the user as the
>>  >Javascript you've given below.
>>  >
>>  >If you change your mind let me know and I can
>>  describe
>>  >how to do it in Witango.
>>  >
>>  >JJ
>>  >
>>  >
>>  >
>>  >--- Nicholas Froome <[EMAIL PROTECTED]>
>>  wrote:
>>  >>  I posted a while ago about generating page
>>  numbers
>>  >>  eBay-style for multiple result pages. I'd rather
>>  do
>>  >>  this in javascript on a per-page basis than do
>>  it
>>  >>  with Witango, and this is as far as I've got:
>>  >>
>>  >>  <HEAD>
>>  >>
>>  >>  <SCRIPT LANGUAGE="JAVASCRIPT">
>>  >>  function GoToPage( id )
>>  >>  {
>>  >>  window.location = (
>>  >>
>>
>>'http://www.bolide.co.uk/actions/image.taf?link=&start='
>>  >>  + id);
>>  >>  }
>>  >>  </SCRIPT>
>>  >>
>>  >>  </head>
>>  >>
>>  >>  <BODY>
>>  >>
>>  >>  <!----------------- nav bar starts here
>>  >>  ------------------>
>>  >>
>>  >>  <a href="javascript: GoToPage('1');">1</A> | <a
>>  >>  href="javascript: GoToPage('11');">2</A> | <a
>>  >>  href="javascript: GoToPage('21');">3</A>
>>  >>
>>  >>  <!------------------ nav bar ends here
>>  >>  ------------------->
>>  >>
>>  >>  etc, etc
>>  >>
>>  >>  What I'd like to do is to calculate the number
>  > of
>  > >>  pages from <@TOTALROWS> / <@NUMROWS>, round this
>  > >>  total up, then use javascript to populate the
>  > nav
>  > >>  bar automagically with the right numbers, and
>>  >>  calculate the record number to start from from
>>  >>  <@NUMROWS>
>>  >>
>>  >>  The id number is the page number, and the start
>>  >>  record = ((page number x
>>  <@NUMROWS>)-(<@NUMROWS>-1))
>>  >>
>>  >>  The final wrinkle would be to make the current
>>  page
>>  >>  number bold
>>  >>
>>  >>
>>  >>
>>  >>  I know I can't do the javascript - can anyone
>>  help?
>>  >>  I'll post the completed, tested code back to the
>>  >>  list. The final results would be applicable
>>  across
>>  >>  the board for any dynamically-generated pages
>>  >>
>>
>>________________________________________________________________________
>>  >>  TO UNSUBSCRIBE: send a plain text/US ASCII email
>>  to
>>  >>  [EMAIL PROTECTED]
>>  >>                  with unsubscribe witango-talk in
>>  the
>>  >>  message body
>>  >
>>  >
>>  >__________________________________________________
>>  >Do you Yahoo!?
>>  >Yahoo! Mail Plus - Powerful. Affordable. Sign up
>>  now.
>>  >http://mailplus.yahoo.com
>>
>>________________________________________________________________________
>>  >TO UNSUBSCRIBE: send a plain text/US ASCII email to
>  > [EMAIL PROTECTED]
>>  >                 with unsubscribe witango-talk in
>>  the message body
>>
>>
>>  --
>>
>________________________________________________________________________
>>  TO UNSUBSCRIBE: send a plain text/US ASCII email to
>>  [EMAIL PROTECTED]
>>                  with unsubscribe witango-talk in the
>>  message body
>
>
>__________________________________________________
>Do you Yahoo!?
>Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
>http://mailplus.yahoo.com
>Content-Type: text/xml; name="ebay.taf"
>Content-Description: ebay.taf
>Content-Disposition: inline; filename="ebay.taf"
>
><?xml version="1.0" encoding="ISO-8859-1" ?>
><!DOCTYPE TAF SYSTEM "tango.dtd" >
><TAF Version="0x02000002">
>       <Comments>Demonstration of ebay type navigation...</Comments>
>
>       <!--Main program-->
>       <Program>
>               <ActionRef Ref="Assign_the_limit" />
>               <ActionRef Ref="IfForm">
>                       <ActionRef Ref="Form" />
>               </ActionRef>
>               <ActionRef Ref="ElseIfList">
>                       <ActionRef Ref="RecordList" />
>               </ActionRef>
>               <ActionRef Ref="ElseError">
>                       <ActionRef Ref="InvalidFunction" />
>               </ActionRef>
>               <ActionRef Ref="Readme_dot_txt" />
>       </Program>
>
>       <!--Program actions-->
>       <Actions>
>               <ResultAction ID="Assign_the_limit" Sig="null">
>                       <ResultsOutput Ref="Assign_the_limit.Results" />
>               </ResultAction>
>               <IfAction ID="IfForm" Sig="if  " Expanded="True">
>                       <Expression><![CDATA[('<@ARG
>_function>'='sform') or (!LEN('<@ARG _function>'))]]></Expression>
>                       <ExpressionInfo>
>                               <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
>                               <ExpRight>sform</ExpRight>
>                               <Operator>iseq</Operator>
>                       </ExpressionInfo>
>                       <ExpressionInfo>
>                               <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
>                               <ExpRight />
>                               <Conjunction>or  </Conjunction>
>                               <Operator>iemp</Operator>
>                       </ExpressionInfo>
>               </IfAction>
>               <ResultAction ID="Form" Sig="null">
>                       <ResultsOutput Ref="Form.Results" />
>               </ResultAction>
>               <ElseIfAction ID="ElseIfList" Sig="elif" Expanded="True">
>                       <Expression><![CDATA[('<@ARG
>_function>'='list')]]></Expression>
>                       <ExpressionInfo>
>                               <ExpLeft><![CDATA[<@ARG _function>]]></ExpLeft>
>                               <ExpRight>list</ExpRight>
>                               <Operator>iseq</Operator>
>                       </ExpressionInfo>
>               </ElseIfAction>
>               <SearchAction TotalRows="True"
>UseDevelopmentDataSource="TRUE" DSID="MyDataSource"
>DeploymentDSID="MyDataSource.1" ID="RecordList" Sig="srch">
>                       <Tables>
>                               <TableName>userstable</TableName>
>                       </Tables>
>                       <DataDictionary>
>                               <Column DataType="long" ColumnType="0">
>                                       <TableName>userstable</TableName>
>                                       <ColumnName>User_ID</ColumnName>
>                               </Column>
>                               <Column DataType="vcha" ColumnType="0">
>                                       <TableName>userstable</TableName>
>                                       <ColumnName>Username</ColumnName>
>                               </Column>
>                       </DataDictionary>
>                       <SearchColumns>
>                               <ColumnReference>
>                                       <TableName>userstable</TableName>
>                                       <ColumnName>User_ID</ColumnName>
>                               </ColumnReference>
>                               <ColumnReference>
>                                       <TableName>userstable</TableName>
>                                       <ColumnName>Username</ColumnName>
>                               </ColumnReference>
>                       </SearchColumns>
>                       <OrderColumns>
>                               <OrderColumn>
>                                       <Ascending>True</Ascending>
>                                       <TableOwner />
>                                       <TableName />
>                                       <ColumnName>1</ColumnName>
>                               </OrderColumn>
>                       </OrderColumns>
>                       <Criteria>
>                               <CriteriaItem>
>                                       <TableName>userstable</TableName>
>                                       <ColumnName>User_ID</ColumnName>
>                                       <Operator>iseq</Operator>
>                                       <Value><![CDATA[<@ARG
>User_ID>]]></Value>
>                                       <QuoteValue>false</QuoteValue>
>                                       <IncludeIfEmpty>false</IncludeIfEmpty>
>                               </CriteriaItem>
>                               <CriteriaItem>
>                                       <Conjunction>and </Conjunction>
>                                       <TableName>userstable</TableName>
>                                       <ColumnName>Username</ColumnName>
>                                       <Operator>swth</Operator>
>                                       <Value><![CDATA[<@ARG
>Username>]]></Value>
>                                       <QuoteValue>true</QuoteValue>
>                                       <IncludeIfEmpty>false</IncludeIfEmpty>
>                               </CriteriaItem>
>                       </Criteria>
>                       <StartRow><![CDATA[<@ARG _start>]]></StartRow>
>                       <MaxRows>@@request$limit</MaxRows>
>                       <ResultSet Type="Array" />
>                       <ResultsOutput Ref="RecordList.Results" />
>                       <NoResultsOutput Ref="RecordList.NoResults" />
>               </SearchAction>
>               <ElseAction ID="ElseError" Sig="else" Expanded="True" />
>               <ResultAction ID="InvalidFunction" Sig="null">
>                       <ResultsOutput Ref="InvalidFunction.Results" />
>               </ResultAction>
>               <ResultAction ID="Readme_dot_txt" Sig="null">
>                       <ResultsOutput Ref="Readme_dot_txt.Results" />
>               </ResultAction>
>       </Actions>
>
>       <!--Data sources-->
>       <DataSources>
>               <DataSource ID="MyDataSource">
>                       <DSType>ODBC</DSType>
>                       <DSN>MyDataSource</DSN>
>                       <DBMS />
>                       <Host>MyDataSource</Host>
>                       <Database />
>                       <UserInfo Encrypted="True">
>
>       <UserName>set%20me%20u%D5%C3%8A%07%F5%E1%AD%AF</UserName>
>
>       <Password>set%20me%20u%D5%C3%8A%07%F5%E1%AD%AF</Password>
>                       </UserInfo>
>               </DataSource>
>               <DataSource ID="MyDataSource.1">
>                       <DSType />
>                       <DSN>MyDataSource</DSN>
>                       <DBMS />
>                       <Host>MyDataSource</Host>
>                       <Database />
>                       <UserInfo Encrypted="True">
>                               <UserName />
>                               <Password />
>                       </UserInfo>
>               </DataSource>
>       </DataSources>
>
>       <!--Output blocks-->
>       <Outputs>
>               <Output ID="Assign_the_limit.Results"
>Type="HTML"><![CDATA[<@comment>
>Assign how many results you want to appear on each page
>This in turn will determine on how many pages there are.....
></@comment>
><@assign request$limit value="5">]]></Output>
>               <Output ID="Form.Results"
>Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
>3.2//EN">
><HTML>
><HEAD>
>       <TITLE>Search</TITLE>
></HEAD>
><BODY>
>
><FORM METHOD="POST"
>ACTION="<@CGI><@APPFILE>?_function=list&<@UserReferenceArgument>&_start=1">
><TABLE BORDER=0>
><TR VALIGN=TOP ALIGN=LEFT>     <TD>
>               User ID:
>       </TD>
>
>       <TD>
>               <INPUT NAME="User_ID" TYPE=TEXT SIZE=10 MAXLENGTH=30 VALUE="">
>       </TD>
></TR>
><TR VALIGN=TOP ALIGN=LEFT>     <TD>
>               Username:
>       </TD>
>
>       <TD>
>               <INPUT NAME="Username" TYPE=TEXT SIZE=40 MAXLENGTH=40 VALUE="">
>       </TD>
></TR>
></TABLE>
><INPUT TYPE=SUBMIT VALUE="Find"> <INPUT TYPE=RESET VALUE="Reset Values">
></FORM>
></BODY>
></HTML>
>]]></Output>
>               <Output ID="RecordList.Results"
>Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
>3.2//EN">
><HTML>
><HEAD>
>       <TITLE>Matching Records</TITLE>
></HEAD>
>
><BODY>
>
>
><TABLE BORDER=0>
><TR VALIGN=TOP ALIGN=LEFT>
>       <TD>
>               <B>User ID</B>
>       </TD>
>       <TD>
>               <B>Username</B>
>       </TD>
></TR>
><@ROWS>
><TR VALIGN=TOP>
>       <TD>
>               <A
>HREF="<@CGI><@APPFILE>?_function=detail&userstable_uid1=<@COLUMN
>"userstable.User_ID"
>ENCODING=URL>&<@UserReferenceArgument>"><@COLUMN
>"userstable.User_ID"></A>
>       </TD>
>       <TD>
>               <@COLUMN "userstable.Username">
>       </TD>
></TR>
></@ROWS>
></TABLE>
>
><@comment>
>Start of Ebay type navigation
></@comment>
><p>
>
>
><@FOR START="1" STEP="@@request$limit" STOP="<@TOTALROWS>">
>       <@assign request$page value="<@calc '@@request$page+1'>">
>       <@comment>
>               If the page shown is the one we are on make the page
>number bold and remove the link....
>       </@comment>
>       <@if '<@STARTROW>=<@currow>'>
>               | <b>@@request$page</b>|
>       <@else>
>       <@comment>
>               otherwise add a link and set where the start should be....
>       </@comment>
>               | <A
>HREF="<@CGI><@APPFILE>?_function=list&_start=<@currow>&<@UserReferenceArgum
ent>">@@request$page</A>|
>       </@if>
></@FOR>
>
></p>
>
><@comment>
>End of Ebay type navigation
></@comment>
>
></BODY>
></HTML>
>]]></Output>
>               <Output ID="RecordList.NoResults"
>Type="HTML"><![CDATA[<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
>3.2//EN">
><HTML>
><HEAD>
>       <TITLE>No Matching Records</TITLE>
></HEAD>
>
><BODY>
>       <H2>No Matching Records</H2>
>       <P>No records match your search criteria.</P>
>       <P><A HREF="<@CGI><@APPFILE>?<@UserReferenceArgument>">Search
>Again</A></P>
></BODY>
></HTML>]]></Output>
>               <Output ID="InvalidFunction.Results"
>Type="HTML"><![CDATA[<B>Error: Invalid function value specified in
>CGI call.</B>]]></Output>
>               <Output ID="Readme_dot_txt.Results"
>Type="HTML"><![CDATA[<@comment>
>Before this will work you will need to set up the appropriate datasource
>
>I would have liked to make this ready to go and set up a resultset
>to demonstrate on -
>this wasn't possible though as in the search I needed to show where the
limit
>and start variables are used...
>
>In the results of the search return the columns you have selected.
>Nothing else needs to be done as the ebay part of the bottom will
>work as long as there
>are results returned
>
>
>JJ Smith - no copyright - use whenever, wherever.....
>
>Comments/Suggestions to [EMAIL PROTECTED]
>
>
></@comment>
>]]></Output>
>       </Outputs>
></TAF>


--
________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

Reply via email to