[Seaside] adding parameters to updater

Lukas Renggli renggli at gmail.com
Mon Oct 23 20:46:31 UTC 2006


> Is there a way to update the attributes of the tag that is called in the
> SUUpdater?

No, you can only update the contents of the tag identified with the
#id: as a whole.

> I thought that insertion might be it (see below), I also saw

#insertion: goes together with instances of SUInsertion. It is used to
add a new element into the DOM tree, either before/after the element
or within at the top/bottom the element identified with #id:.

This is always the #callback: block used to render the element.

> SUEvent>>element but could not figure out how to get to SUEvent from
> updater?

This is the current JavaScript event within the Web-browser. It
provides the coordinates of the mouse-pointer, keyboard state, etc. It
is also possible to use SUEvent to cancel the event and stop it from
bubbling.

>             onClick: (html updater id: 'myID';
>
>                         insertion: 'background-color: ''blue'';';
>
> callback: [:rend | self renderContentsOn: rend]);

You can basically do what you want using the evaluator by injecting
JavaScript code into the page (untested):

    onClick: (html evaluator callback: [ :script |
       script element
          id: 'myId';
          addClassNamed: 'foo' ])

when you have a style-sheet with the class foo

    .foo { background-color: blue }

Since you can inject any kind of JavaScript using #evaluator you could
also try to do it directly with something like by not using what
Scriptaculous provides (untested as well):

    onClick: (html evaluator callback: [ :script |
       script add: (SUStream on: '$("myId").style.backgroundColor = "blue"') ])

Cheers,
Lukas

-- 
Lukas Renggli
http://www.lukas-renggli.ch


More information about the Seaside mailing list