[Seaside] Usage of Canvas' #select and #labels
rickf at ca-flower.com
Sun Apr 8 07:19:24 UTC 2007
Rick Flower wrote:
> Philippe Marschall wrote:
>> html select
>> list: orgs;
>> on: #orgId of: self;
>> labels: [:org | org name ];
>> optionalLabel: 'Select One...'.
> Well.. This works fine for regular times when using regular callbacks
> but fails when using a liveCallback (care of SeasideAsync) as the
> index is off by 1.. I'll see about making a fix to do the right thing
> when I'm a bit less tired.. I guess we need to teach it about the use
> of beOptional and friends. Once that is done then it should work ok.
OK -- here's a quick fix to the SeasideAsync version of #liveCallback..
This version fixes the issue but only for single selections -- not
multiples -- I've got no code that uses multiples currently and am not
really sure what modifications need to be done at this point. Perhaps
someone could make the relevant updates for that case? Anyway, below is
the modified code -- feel free to change the logic, but it seems to work
in my case.
| uri id realEach|
id := self ensureId.
uri := canvas
urlForLiveAction: [:event :h |
| values value |
values := event value asArray collect:
[:each | (self isOptional)
ifTrue: [ realEach := each
asInteger - 1]
ifFalse: [ realEach := each
list at: realEach].
More information about the Seaside