[Seaside] Some thoughts and cs to improve Seaside

stephane ducasse stephane.ducasse at free.fr
Sun Nov 28 15:35:40 CET 2004


hi avi

Thanks for your anwsers. I like the new logo :))

>> - How can I get the WAAllTests running?
>> I added a initialize method so that we can get AllTests up and running
>> in the browser.
>
> The other way would be through the /seaside/config app:
> - add a new application named "tests"
> - choose WAAllTests as the root component

Ok I remember now I could not figure it out when I tried.
I tried for WAExampleBrowser
But I could not understand where I can choose WAExampleBrowser.
Then in addition in Path I typed /seaside/Examples
and then I got /seaside/seaside/Examples so may be you should provide a 
default text "name of your application (without seaside in front)"

Should I change main class in the configuration pane? I got lost.Really 
lost. I even tried to look at counter but could not find WAcounter in 
the config interface to remove counter and add it again to see where 
WACounter should be entered


>> I guess like that so may be this should be in the distribution...
>
> AllTests is really meant more as a (non-automated) regression test
> suite than as a set of examples.  Ideally we would have a
> better/prettier set of components that were meant purely as examples.

But better than nothing :) I took me a while to understand that path 
could be a tab :)

>> - What is the process to add comments to seaside? Should we send
>> something to this list and avi will review it and include it?
>
> Yes, preferably as a .mcz.  If you have a bunch of comments to submit,
> it's probably best to just send one version that has all of them
> added.

Ok

>> - There are a lot of widgets but I could not find example (may be this
>> is in WAAllTests)?
>> Is there a simple process to have examples of the widgets.
>
> Actually, yes, although it's little known and little used (but please,
> let's change that).  Just add class-side creation methods to
> subclasses of WAComponent, with selectors that start with #example.
> These will then automatically show up in WAExampleBrowser.



When I do  http://localhost:9090/seaside.....I get an error
So how do I get the configuration so that I can add WAExampleBrowser to 
see the demoes...
Ok I see http://localhost:9090/seaside/config ! Now how can I reset the 
password :)

I saw that there is WAauthMain createRoot but I do not know how I can 
reset it.
So now I redefined verify to ^true (a bit radical but works quite well 
:))


So can I also deduce when canBeRoot ^ true this means that the 
component can be manually regsitered
using the config panel. ifTrue: we should add it in the method comments.


>> - Is there an FAQ? Is there a Wiki that we can add some examples?
>> - Is there a process to collect and document other widgets?
>> - Is there a database of widgets?
>
> Not yet.  These are definitly things we need to do.  Does anybody want
> to volunteer to organize this?

Please someone do it Seaside and avi deserve it

>> Would he make sense to have
>> www.seasideSource.com (a SqueakSource containing only seaside 
>> examples?)
>
> That would certainly be one way to organize the above... if someone
> sets that up, I'll be happy to move the development of the Seaside
> package itself to it as well.

Ok bernish seasiders can we do that (besides rebooting kilana since the 
roots changed the file system
but did reboot kilana :(.

>> What is the difference between a task and a component?
>
> This is a FAQ.  Both of them are reusable, embeddable, callable pieces
> of user interface.  A component has state (instance variables),
> behavior (it may change its state, and it may also choose to display
> other components with #call:), and appearance (it renders HTML).  A
> Task has only the first two - it doesn't render any HTML directly, but
> only through the components it calls.  This is useful when what you
> want to encapsulate/embed/call is purely a process (show this
> component, then this one, then this one).
>
> The key method for WATask is #go - as soon as a task is displayed,
> this method will get invoked, and will presumably #call: other
> components.
>

Excellent I added that into the new class comment of task joined with 
all the rest
as a mcz file of course :)


>> What is the difference between renderOn: and renderContentOn:?
>
> #renderOn: is the low level method that gets sent to any object
> encountered by the HtmlRenderer (for example, if you do "html bold:
> 'foo'", then String>>renderOn: will get called).
>
> Components need to do various special things when they are rendered
> (for example, they need to render any Decoration objects that have
> been applied to them).  So subclasses are expected to override
> #renderContentOn: instead (this is the Template Method pattern, I
> guess).

By the way just for the record: I guess that what you call decorator 
are chains of
responsibilities since the interface of the decorated objects does not 
grow but it just give the power
to other guys to talk and act. I may be wrong but this was always 
confusing me when I learned
that you used decorators.


>> In
>> WAStoreFillCart>>displayItems: aCollection
>>         | list |
>>         aCollection size = 1 ifTrue: [^ self displayItem: aCollection 
>> first].
>>         list := WABatchSelection
>>                          items: aCollection
>>                          link: #title
>>                          text: #subtitle.
>>         [self displayItem: (main call: list)] repeat
>>
>> I do not understand the repeat.
>
> Yeah, that's a little subtle.  Why don't you try removing it and see
> what happens?

Ok I will. So many stuff were not breaking that I did a divide and 
conquire onmy problems :)
Now I'm getting over a lot of them. It was smelling fishy to me ;)


> "self displayItem: (main call: list)" is letting the user pick and
> examine a single item from the collection.  But usually when you're
> looking at a list of search results, you want to browse through many
> items.  So all this is doing is letting you pick another one (by
> showing you the list again) when you're done with the first one.

I like the trick

>> my domain objects have accents in its string representation
>> and I do not know how from the model object I can specify that the
>> text should be encoded.
>
> It's best to have your domain objects encoded in UTF-8; then you
> shouldn't need to do any conversion.

Ok I will try to understand how I can do that.

>> In a batchSelection I wanted to have my own element displayer. Because
>> I would like
>> to have more information. Is it possible?
>
> Yes, if you look at WABatchSelection you'll see that the list of page
> numbers is in fact another, smaller component called WABatchedList.

yes I saw that guy since originally I started to use it.

> You can use WABatchedList with your own way of displaying the list.
> You give it the full collection with #items:, and retrieve and display
> just the current batch with #batch.

Ok I was wondering if there was a pluggableItemSlectionBatchedList :)

>> So if you really like seaside (like me for example) I can't imagine
>> that you can only use it without willing to help making it better. So 
>> I'm sure that if we
>> take each us some times to comment a bit the classes we know and the 
>> key methods in
>> no time we will get a much better version. I think that this is our 
>> responsibility as a community
>> to help seaside inventors to make it better.
>
> I certainly won't argue with that :).

So community, avi explicitly says that he would appreciate our support 
:)
So let us make him having more time to invent his and our future.

Stef


-------------- next part --------------
A non-text attachment was scrubbed...
Name: Seaside2.5b5-sd.1.mcz
Type: application/text
Size: 185383 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20041128/6dc0ffc7/Seaside2.5b5-sd.1-0001.bin
-------------- next part --------------



More information about the Seaside mailing list