(migrating thread from the Tapestry users list)

Thanks Andreas!

That helped a lot -- needed to make sure implementing those functions 
was going to get me further.

I added the following implementations of buildEventProperties, 
buildTargetProperties, and buildNodeProperties inside tapestry.event = { 
... }

    /**
     * Function: buildEventProperties
     *
     * Takes an incoming browser generated event (like key/mouse events) and
     * creates a js object holding the basic values of the event in 
order for
     * it to be submitted to the server.
     *
     * Parameters:
     *
     *  event - The javascript event method is based on, if it isn't a valid
     *              browser event it will be ignored.
     *  props - The existing property object to set the values on, if it 
doesn't
     *              exist one will be created.
     *  args  - The arguments from an method-call interception
     * Returns:
     *
     * The desired event properties bound to an object. Ie 
obj.target,obj.charCode, etc..
     */
    buildEventProperties:function(event, props, args){
        if (!props) props={};

        var isEvent = (typeof event != "undefined")
            && (event)
            && (typeof Event != "undefined") && (event.eventPhase);
        if (isEvent) {
            if(event["type"]) props.beventtype=event.type;
            if(event["keys"]) props.beventkeys=event.keys;
            if(event["charCode"]) props.beventcharCode=event.charCode;
            if(event["pageX"]) props.beventpageX=event.pageX;
            if(event["pageY"]) props.beventpageY=event.pageY;
            if(event["layerX"]) props.beventlayerX=event.layerX;
            if(event["layerY"]) props.beventlayerY=event.layerY;

            if (event["target"]) this.buildTargetProperties(props, 
event.target);
        }

        props.methodArguments = dojo.toJson( args );

        return props;
    },
   
    /**
     * Function: buildTargetProperties
     *
     * Generic function to build a properties object populated with
     * relevent target data.
     *
     * Parameters:
     *
     *  props - The object that event properties are being set on to 
return to
     *          the server.
     *  target - The javscript Event.target object that the original 
event was targeted for.
     *
     * Returns:
     *  The original props object passed in, populated with any data found.
     */
    buildTargetProperties:function(props, target){
        if(!target) { return; }

        var isNode = target.nodeType && target.cloneNode;
        if (isNode) {
            return this.buildNodeProperties(props, target);
        } else {
            dojo.raise("buildTargetProperties() Unknown target type:" + 
target);
        }
    },
   
    /**
     * Function: buildNodeProperties
     *
     * Builds needed target node properties, like the node's id.
     *
     * Parameters:
     *  props - The object that event properties are being set on to 
return to
     *          the server.
     *  node - The dom node specified as the Event.target in a 
javascript event.
     */
    buildNodeProperties:function(props, node) {
        if (node.getAttribute("id")) {
            props["beventtarget.id"]=node.getAttribute("id");
        }
    },


I just copied over the implementations from Tap 4.1.5's core.js, and:
  1.  replaced dojo.event.browser.isEvent(event) with an inline 
implementation
  2.  replaced dojo.dom.isNode(target) with an inline implementation
  3.  changed dojo.json.serialize( args ) to dojo.toJson ( args )

This got my simple test case going of an in-page button 
triggering-via-AJAX an @EventListener in the backing page.

Thanks!
Jim


Andreas Andreou wrote:
> Hi... good to see people starting work on that!
>
> tapestry.event.buildEventProperties is an obvious omission
> from skeleton/core.js - that file however is just for reference, so
> if you just declare  buildEventProperties in your adapter js you
> should be able to go on.
>
> I must admit that I haven't made that much progress lately on that
> project + the issues described at
> http://tacos.sourceforge.net/tacos4.1/tacos-dojo/index.html
> are still pending... so, if you've already got improvements, additions
> i'd be happy to take a look and include them directly into tacos-dojo
>
> Of course, the same apply to tacos-jquery (in case someone is checking
> that out as well - http://andyhot.gr/tacos-demo/jquery/Index.html has an
> 'ugly' little demo...)
>
> On Feb 14, 2008 1:53 AM, Jim <[EMAIL PROTECTED]> wrote:
>   
>> Howdy!
>>
>> I'm using Tapestry 4.1.5, and would like to use our own Dojo 1.0.2
>> instead of the default Dojo 0.4.3.  I tried using the tacos-dojo module
>> from the Tacos project but there are still bugs with that. I hacked a
>> couple things in the source to get it going, but when running a simple
>> test case of having a button associated with an @EventListener, when I
>> click the button I get the following JS error:
>> "tapestry.event.buildEventProperties is not a function".
>>
>> I checked Tacos' adapter JS file and buildEventProperties wasn't here,
>> but before declaring it to be a Tacos issue:
>> tapestry.event.buildEventProperties exists in
>> tapestry-framework-4.1.5.jar/tapestry-4.1.5/core.js, but not in
>> tapestry-framework-4.1.5.jar/tapestry-4.1.5/skeleton/core.js, which is
>> what the online documentation claims is the JS adapter API to provide
>> implementations for, which probably explains why it wasn't implemented
>> in the Tacos JS adapter-file.
>>
>> Has anyone run into this and/or can tell me if I'm missing something?
>> Is this an oversight in the skeleton/core.js, or is Tap 4.1.5 still not
>> ready for replacing Dojo 0.4.3 with another library?
>>
>> Thanks,
>> Jim
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>     
>
>
>
>   


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Tacos-devel mailing list
Tacos-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tacos-devel

Reply via email to