## Licensed to the Apache Software Foundation (ASF) under one
## or more contributor license agreements.  See the NOTICE file
## distributed with this work for additional information
## regarding copyright ownership.  The ASF licenses this file
## to you under the Apache License, Version 2.0 (the
## "License"); you may not use this file except in compliance
## with the License.  You may obtain a copy of the License at
##
##   http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing,
## software distributed under the License is distributed on an
## "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
## KIND, either express or implied.  See the License for the
## specific language governing permissions and limitations
## under the License.
#title( 'LinkTool' )
<p>
#set( $demo = $text.demo )
$demo.thisPage.insert("#doclink( 'LinkTool' false )"). This tool
is somewhat unusual in that every method that takes parameters will return a new
instance of the tool that is a copy of the one the method was called upon, with
the additional change specified by the method call.
</p>

#demoTableStart()

#set( $desc = "Returns a new ${esc.d}link with the addition of the specified anchor value." )
#demo1( 'link' 'anchor' 6 $desc )

#set( $desc = "Returns the anchor set for the ${esc.d}link" )
#if( $params.anchor )
  #set( $result = $link.anchor($params.anchor) )
#else
  #set( $result = $!link.anchor )
#end
#demoAlt( 'link' 'anchor' $result $desc )

#set( $desc = "Returns a new ${esc.d}link with the addition of the specified path value." )
#demo1( 'link' 'path' 6 $desc )

#set( $desc = "Returns a new ${esc.d}link with the addition of the specified relative value." )
#demo1( 'link' 'relative' 6 $desc )

#set( $desc = "Returns a new ${esc.d}link with the addition of the specified absolute value." )
#demo1( 'link' 'absolute' 6 $desc )

#set( $desc = "Returns the path currently set for this ${esc.d}link." )
#demoAlt( 'link' 'path' $link.path $desc )

#set( $desc = "Returns a new ${esc.d}link with the addition of the specified parameter." )
#demo2( 'link' 'param' 6 $desc )


#set( $desc = "Returns the query data set for this ${esc.d}link" )
#if( $params.param )
  #set( $result = $link.param($params.param).params )
#else
  #set( $result = $link.params )
#end
#demoAlt( 'link' 'params' $result $desc )


#set( $desc = "Returns the URI that addresses this web application. E.g. <code>http://myserver.net/myapp</code>. This string may not end with a ${esc.q}/${esc.q}." )
#demo( 'link' 'contextURL' $desc )

#set( $desc = "Returns the context path that addresses this web application, e.g. <code>/myapp</code>. This string starts with a ${esc.q}/${esc.q} but does not end with a ${esc.q}/${esc.q}." )
#demo( 'link' 'contextPath' $desc )

#set( $desc = "Retrieves the path for the current request regardless of whether this is a direct request or an include by the RequestDispatcher." )
#demo( 'link' 'requestPath' $desc )

#set( $desc = "Returns the full URI of this template without any query data. e.g. <code>http://myserver.net/myapp/stuff/View.vm</code>" )
#demo( 'link' 'baseRef' $desc )

#set( $desc = "This method returns a new self-referencing ${esc.d}link for the current request (e.g. <code>/myapp/stuff/View.vm</code>).  However, the behavior can be changed via toolbox configuration to use absolute URIs and/or add the current request parameters." )
#demo( 'link' 'self' $desc )

#set( $desc = "Performs URL encoding on the specified text." )
#demo1( 'link' 'encode' 6 $desc )

#demoCustom( 'link' )
</table>

#set( $base = $link.self.anchor('fullDemo') )

<div align="center">
  <a name="fullDemo"><h3>$demo.mainExampleHeader</h3></a>
<form method="post" action="$link.self.anchor('fullDemo')">
<textarea name="fullDemo" rows="5" cols="65">##
#if( $params.fullDemo )##
$params.fullDemo##
#else##
${esc.h}${esc.h} NOTE: this first line is done in the actual page,
${esc.h}${esc.h}       because ${esc.h}set() doesn't work in these demos
${esc.h}set( ${esc.d}base = ${esc.d}link.self.anchor('fullDemo') )
<a href="${esc.d}base.param('select','this')">this</a>
<a href="${esc.d}base.param('select','that')">that</a>##
#end##
</textarea>
  <br>
  <input type="submit" value="$demo.try">
  #if( $params.layout )
  <input type="hidden" name="layout" value="$params.layout">
  #end
</form>

#if( $params.fullDemo )
$demo.mainResultsIntro:
<pre>
  $render.eval($params.fullDemo)
</pre>
#end
</div>
