[Seaside] Two part input.

Lukas Renggli renggli at gmail.com
Mon Feb 8 19:54:43 UTC 2010


> renderInputOn: html
>        html select
>                id: self labelId , 'predefinedOptions';
>                addAll: self predefinedOptions;
>                callback: [:v | self take: v ];
>                selected: ((self predefinedOptions includes: self string) ifTrue:
> [self string] ifFalse: [nil]).
>        html textInput
>                callback: [:v | self take: v ];
>                id: self labelId;
>                value: ((self predefinedOptions includes: self string) ifTrue: ['']
> ifFalse: [self string]).
>
> take: anObject
>        anObject isEmpty ifFalse: [self string: anObject ]
>
>
> predefinedOptions
>        ^ self description propertyAt: #predefinedOptions ifAbsent:[Array new.]
>
> That works, but is very unelegant, since it relies of the order of
> inputs, for example. Anyone a better Idea how to update using two
> callbacks at once? ^^

Earlier versions on Seaside had the possibility to add a special menu
item to the select list that popped up an input box asking the user
for a new value. Then the Javascript code modified the form so that it
would display and submit the custom value correctly.

The infrastructure is still in the Magritte model, see #beExtensible
and #isExtensible on MASingleOptionDescription. It is not anymore in
Seaside and Magritte-Seaside though, but I guess you could dig it out
again if needed.

Lukas

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


More information about the seaside mailing list