alright, again. version 2

I reviewd the documentation on annotations and simplified the .jwc

I still want to know how to add a component to a library without a jwc file?

Fernando Padilla wrote:
Alright, I had reason to stay up anyhow.

Attached is a version of a NameLink component that takes a name parameter. Tapestry 4. I've tested this component only on linux/firefox at home, but the same technique has been working on our site for the last few months; I'll test this component out on a few other browsers tomorrow. Anyone can feel free to absorb this into Tapestry.

comments?


Questions: I'm trying to learn how to get rid of the jwc. Anybody know the last few things I need to do? ReservedParameters through annotations, and how to add a component to a component library without refering to a jwc.



Fernando Padilla wrote:

I couldn't read through the threads ( didn't seem like the right solution anyhow ). This is what our html developer came up with, a nice javascript hack: (right off of our site) He simply created a javascript function that is called that does the named-anchor dereference, instead of letting the anchor-link do it (which takes into account base-href).


<!-- don't reload the page when linking to anchors... -->
<script type="text/javascript">
function anchorMessages(){
  location.hash = "messages";
}
</script>

<a href="javascript:anchorMessages()">blah</a>




Wow I just realized that I could easily make a component to wrap this. I'll see about that in work tomorrow, or if someone else feels like it, should be pretty darn easy.



Daniel Lydiard wrote:

This will helpful too

http://www.tapestryforums.com/anchor-tags-vt2957.html?highlight=shell+anchor+base+tag

----- Original Message ----- From: "Jason Suplizio" <[EMAIL PROTECTED]>
To: "Tapestry users" <tapestry-user@jakarta.apache.org>
Sent: Thursday, February 09, 2006 8:37 PM
Subject: Re: anchors with @Shell


http://www.nabble.com/Specifying-my-own-tapestry.url.BaseTagWriter-t1049395.html

On 2/9/06, Chris Chiappone <[EMAIL PROTECTED]> wrote:


There is a lot of info on this topic.  Just do a search for "anchor
tags" in the tapestryforum.

On 2/9/06, Daniel Lydiard <[EMAIL PROTECTED]> wrote:
> I'm using the @Shell which creates a base tag with the application base
url.
>
> if i do a
>
> [a name="top"][/a]
>
> and a link [a href="#top"]Back to top[/a]
>
> the application won't scroll to the top of the page because of the base
tag
> produced by @Shell, it just goes back to the home page.  Is there a
quick
> away around this?
>
> Thanks.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
~chris

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification
      PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
      "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd";>

<component-specification class="com.protrade.basesite.common.NameLink" allow-body="yes" 
allow-informal-parameters="yes">
  <reserved-parameter name="href"/>
  <inject property="script" type="script" object="NameLink.script"/>
</component-specification>


------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script PUBLIC
        "-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
        "http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd";>

<script>
  <body>
    <unique>
      function gotoNamedAnchor( name ) {
        location.hash = name;
      }
    </unique>
  </body>
</script>


------------------------------------------------------------------------

package com.protrade.basesite.common;

import java.util.HashMap;
import java.util.Map;

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.IScript;
import org.apache.tapestry.PageRenderSupport;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Parameter;

@ComponentClass( allowBody=true, allowInformalParameters=true )
public abstract class NameLink extends AbstractComponent {
        
        @Parameter( name="name", required=true )
        public abstract String getName();
        
        public abstract IScript getScript();
        
        protected void renderComponent( IMarkupWriter writer, IRequestCycle 
cycle ) {
                if ( !cycle.isRewinding() ) {
                        // add javascript
                        PageRenderSupport pageRenderSupport = 
TapestryUtils.getPageRenderSupport( cycle, this );
                        Map symbols = new HashMap();
                        getScript().execute( cycle, pageRenderSupport, symbols 
);
                }
                writer.begin( "a" );
                writer.attribute( "href", 
"javascript:gotoNamedAnchor(\""+getName()+"\")" );
                renderInformalParameters( writer, cycle );
                renderBody( writer, cycle );
                writer.end();
        }
}



------------------------------------------------------------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
package com.protrade.basesite.common;

import java.util.HashMap;
import java.util.Map;

import org.apache.tapestry.AbstractComponent;
import org.apache.tapestry.IMarkupWriter;
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.IScript;
import org.apache.tapestry.PageRenderSupport;
import org.apache.tapestry.TapestryUtils;
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.InjectScript;
import org.apache.tapestry.annotations.Parameter;

@ComponentClass( allowBody=true, allowInformalParameters=true, reservedParameters="href" )
public abstract class NameLink extends AbstractComponent {
	
	@Parameter( name="name", required=true )
	public abstract String getName();
	
	@InjectScript( "NameLink.script" )
	public abstract IScript getScript();
	
	protected void renderComponent( IMarkupWriter writer, IRequestCycle cycle ) {
		if ( !cycle.isRewinding() ) {
			// add javascript
			PageRenderSupport pageRenderSupport = TapestryUtils.getPageRenderSupport( cycle, this );
			Map symbols = new HashMap();
			getScript().execute( cycle, pageRenderSupport, symbols );
		}
		writer.begin( "a" );
		writer.attribute( "href", "javascript:gotoNamedAnchor(\""+getName()+"\")" );
		renderInformalParameters( writer, cycle );
		renderBody( writer, cycle );
		writer.end();
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE component-specification
      PUBLIC "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
      "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd";>

<component-specification class="com.protrade.basesite.common.NameLink" allow-body="yes" allow-informal-parameters="yes">
</component-specification>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script PUBLIC
	"-//Apache Software Foundation//Tapestry Script Specification 3.0//EN"
	"http://jakarta.apache.org/tapestry/dtd/Script_3_0.dtd";>

<script>
  <body>
    <unique>
      function gotoNamedAnchor( name ) {
        location.hash = name;
      }
    </unique>
  </body>
</script>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to