From mac.hive at me.com Mon May 7 01:03:03 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Mon May 7 01:03:09 2012 Subject: [Seaside] Truncated imageButton on iPad In-Reply-To: References: Message-ID: <2DC3AE87-E9DE-48B2-987D-519736DE9A02@me.com> Hello, I have run into a weird rendering issue on the iPad. One of my imageButtons is truncated so that part of it is not visible. The button works fine, it's just that a part of it is missing. This only happens to one of my imageButtons so I don't know what is going on. Any ideas? Larry From dtrussardi at tiscali.it Mon May 7 16:43:54 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Mon May 7 16:43:59 2012 Subject: [Seaside] Generating text with some magic anchor Message-ID: Ciao, i need to rendering text based on fixed string but with some dynamic reference. For example a string with anchor relative to href for email link : 'Send a e-mail to: ', ...................... ' for exception.' where ................. i think it's a dynamic code for rendering the

info-mail

> > > I can generate it with specific renderContentOn: html > > html text: 'Send a e-mail to: '. > > (html anchor) > attributeAt: 'href' put: 'mailto:', info@onsite.info; with: 'e-mail'. > html text: 'for exception.' > > but because i have some different text with some link scattered into self > > i'm interested to solve it with some magic reference when generating the text. > > I think something similar to: html withLineBreaks: self text > > Anyone have any idea on how resolve, set the question ? > > Thank, > > Dario > > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From dtrussardi at tiscali.it Tue May 8 08:07:00 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Tue May 8 08:07:05 2012 Subject: [Seaside] Generating text with some magic anchor In-Reply-To: <4FA7FCB4.20100@gmail.com> References: <4FA7FCB4.20100@gmail.com> Message-ID: <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> Ciao Paul, thank. > Does this cover what you want to do? > > http://book.seaside.st/book/fundamentals/anchors/mailto-anchor This is a standard method do create a mailto-anchor. But i'm interest to create a dynamic text with some mailto-anchor on it. I think to generate a text with something like: ' This is my text with a master email link *info@onsite.com* and some other e-mail link : office e-mail *office@onsite.com* direction e-mail *direction@onsite.com* ' I think to use *...* how in Pier links . Now in the text rendering phase, i'm interested to create a specific mailto-anchor when encounter *...... * There is something that does it? Some considerations? Thank, Dario > > On 05/07/2012 09:43 AM, dtrussardi@tiscali.it wrote: >> Ciao, >> >> i need to rendering text based on fixed string but with some dynamic reference. >> >> For example a string with anchor relative to href for email link : >> >> 'Send a e-mail to: ', ...................... ' for exception.' >> >> where ................. i think it's a dynamic code for rendering the
References: <1336583552777-4621122.post@n4.nabble.com> <4FAAA6E4.8050706@gmail.com> <1336629470804-4622584.post@n4.nabble.com> Message-ID: On Thu, May 10, 2012 at 7:57 AM, Dav wrote: > Hi Paul, > ?I can't get to to work. Following my code: > > | application | > application := WADispatcher default handlerAt: 'myapp'. > > application > preferenceAt: #serverProtocol put: 'http'; > preferenceAt: #serverHostname put: 'localhost'; > preferenceAt: #serverPort put: 8080; > preferenceAt: #serverPath put: '/' WADispatcher default defaultName: 'myapp' Cheers Philippe From lasmiste at gmail.com Thu May 10 08:13:52 2012 From: lasmiste at gmail.com (Dav) Date: Thu May 10 08:13:56 2012 Subject: [Seaside] Re: From www.mysite.com:8080/myapp to www.mysite.com In-Reply-To: References: <1336583552777-4621122.post@n4.nabble.com> <4FAAA6E4.8050706@gmail.com> <1336629470804-4622584.post@n4.nabble.com> Message-ID: <1336637632720-4622821.post@n4.nabble.com> Philippe Marschall wrote > > On Thu, May 10, 2012 at 7:57 AM, Dav <lasmiste@> wrote: >> Hi Paul, >> ?I can't get to to work. Following my code: >> >> | application | >> application := WADispatcher default handlerAt: 'myapp'. >> >> application >> preferenceAt: #serverProtocol put: 'http'; >> preferenceAt: #serverHostname put: 'localhost'; >> preferenceAt: #serverPort put: 8080; >> preferenceAt: #serverPath put: '/' > > WADispatcher default defaultName: 'myapp' > > Cheers > Philippe > _______________________________________________ > seaside mailing list > seaside@.squeakfoundation > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > Thanks Philippe now it works, but it should be added to the book I'll write a comment here http://book.seaside.st/book/advanced/deployment/deployment-preparing Cheers Dav -- View this message in context: http://forum.world.st/From-www-mysite-com-8080-myapp-to-www-mysite-com-tp4621122p4622821.html Sent from the Seaside General mailing list archive at Nabble.com. From lasmiste at gmail.com Thu May 10 09:55:32 2012 From: lasmiste at gmail.com (Dav) Date: Thu May 10 09:55:42 2012 Subject: [Seaside] Re: From www.mysite.com:8080/myapp to www.mysite.com In-Reply-To: References: <1336583552777-4621122.post@n4.nabble.com> <4FAAA6E4.8050706@gmail.com> <1336629470804-4622584.post@n4.nabble.com> Message-ID: <1336643732788-4623040.post@n4.nabble.com> Philippe Marschall wrote > > On Thu, May 10, 2012 at 7:57 AM, Dav <lasmiste@> wrote: >> Hi Paul, >> ?I can't get to to work. Following my code: >> >> | application | >> application := WADispatcher default handlerAt: 'myapp'. >> >> application >> preferenceAt: #serverProtocol put: 'http'; >> preferenceAt: #serverHostname put: 'localhost'; >> preferenceAt: #serverPort put: 8080; >> preferenceAt: #serverPath put: '/' > > WADispatcher default defaultName: 'myapp' > > Cheers > Philippe > _______________________________________________ > seaside mailing list > seaside@.squeakfoundation > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > Further hint for list members: If you have a reverse proxy like me and if you want to use default http port (80), you shouldn't put application preferenceAt: #serverPort put: 8080 but application preferenceAt: #serverPort put: '' otherwise all your links will have port 8080 set Dav -- View this message in context: http://forum.world.st/From-www-mysite-com-8080-myapp-to-www-mysite-com-tp4621122p4623040.html Sent from the Seaside General mailing list archive at Nabble.com. From sean at clipperadams.com Thu May 10 13:56:52 2012 From: sean at clipperadams.com (Sean P. DeNigris) Date: Thu May 10 13:56:57 2012 Subject: [Seaside] Parsing HTTP dates Message-ID: <1336658212524-4623583.post@n4.nabble.com> In HTTP/1.1, valid dates come in 3 forms (per http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) : Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format All 3 fail in Pharo 1.4 with #asDateAndTime. It'd be easy enough to write a parser for them, but it seems so common... I searched google and the seaside lists but found no mention of "date parse HTTP". -- View this message in context: http://forum.world.st/Parsing-HTTP-dates-tp4623583.html Sent from the Seaside General mailing list archive at Nabble.com. From thereluctantprogrammer at fastmail.fm Thu May 10 13:58:34 2012 From: thereluctantprogrammer at fastmail.fm (Helene Bilbo) Date: Thu May 10 13:58:39 2012 Subject: [Seaside] Is Seaside responsive to other users while it serves one user? Esp. during Fileupload? Message-ID: <1336658314983-4623586.post@n4.nabble.com> Hi, if i allow uploading files, and someones upload takes lets say 10 minutes - when somebody else tries to connect to my seaside application during this 10 minutes, does it respond? Or can it serve only one user at a time? Best regards, helene. -- View this message in context: http://forum.world.st/Is-Seaside-responsive-to-other-users-while-it-serves-one-user-Esp-during-Fileupload-tp4623586.html Sent from the Seaside General mailing list archive at Nabble.com. From philippe.marschall at gmail.com Thu May 10 14:09:44 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Thu May 10 14:09:47 2012 Subject: [Seaside] Is Seaside responsive to other users while it serves one user? Esp. during Fileupload? In-Reply-To: <1336658314983-4623586.post@n4.nabble.com> References: <1336658314983-4623586.post@n4.nabble.com> Message-ID: On Thu, May 10, 2012 at 3:58 PM, Helene Bilbo wrote: > Hi, > > if i allow uploading files, and someones upload takes lets say 10 minutes - > when somebody else tries to connect to my seaside application during this 10 > minutes, does it respond? ... It should, in theory. Specifics depend on the platform. A gem can handle only one request at a time, but you can have several gems. > Or can it serve only one user at a time? The same session can only be accessed at a time. Cheers Philippe From thereluctantprogrammer at fastmail.fm Thu May 10 14:18:48 2012 From: thereluctantprogrammer at fastmail.fm (Helene Bilbo) Date: Thu May 10 14:18:52 2012 Subject: [Seaside] Re: Is Seaside responsive to other users while it serves one user? Esp. during Fileupload? In-Reply-To: References: <1336658314983-4623586.post@n4.nabble.com> Message-ID: <1336659528519-4623637.post@n4.nabble.com> Philippe Marschall wrote > > On Thu, May 10, 2012 at 3:58 PM, Helene Bilbo > <thereluctantprogrammer@> wrote: >> if i allow uploading files, and someones upload takes lets say 10 minutes >> - >> when somebody else tries to connect to my seaside application during this >> 10 >> minutes, does it respond? ... > > It should, in theory. Specifics depend on the platform. A gem can > handle only one request at a time, but you can have several gems. > i wanted to install one single seaside-pharo (zinc server) image on linode behind an apache server. -- View this message in context: http://forum.world.st/Is-Seaside-responsive-to-other-users-while-it-serves-one-user-Esp-during-Fileupload-tp4623586p4623637.html Sent from the Seaside General mailing list archive at Nabble.com. From mac.hive at me.com Thu May 10 14:32:47 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Thu May 10 14:32:54 2012 Subject: [Seaside] Setting up MixPanel and Seaside In-Reply-To: <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> Message-ID: <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> Hello, So, I want to use MixPanel (www.mixpanel.com) to monitor user actions in realtime. How do I configure this from within Seaside? I am told that I have to include this: html script: ''. and html script: 'mixpanel.track("User Login");' The first call seems to work ok, but the second call crashes in: openTag "Open the receiving and all associated attributes onto the document." self document openTag: self tag attributes: attributes closed: self isClosed with this walk back, as document seems to be nil: MessageNotUnderstood 2010: No method was found for the selector <#'openTag:attributes:closed:'> when sent to with arguments contained in 'text/javascript'), false)>. Any thoughts as to what I am doing wrong? Larry -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120510/394d39d4/attachment.htm From sven at beta9.be Thu May 10 15:00:58 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Thu May 10 15:01:02 2012 Subject: [Seaside] Re: [Pharo-project] Parsing HTTP dates In-Reply-To: <1336660785337-4623688.post@n4.nabble.com> References: <1336660785337-4623688.post@n4.nabble.com> Message-ID: Sean, On 10 May 2012, at 16:39, Sean P. DeNigris wrote: > Excerpt from http://forum.world.st/Parsing-HTTP-dates-td4623583.html : > > In HTTP/1.1, valid dates come in 3 forms (per > http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) : > Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 > Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 > Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format > > All 3 fail in Pharo 1.4 with #asDateAndTime. > > I posted this to the Seaside list because it seems like there *must* be some > code out there... This would be a nice utility for Zinc? You are underestimating me again ;-) This has been in Zn since a very long time: ZnUtils>>parseHttpDate: string "self parseHttpDate: 'Tue, 13 Sep 2011 08:04:49 GMT'." "self parseHttpDate: 'Tue, 13-Sep-2011 08:04:51 GMT'." "self parseHttpDate: 'Tue Jan 01 00:00:01 2036 GMT'." That should cover the spec, no ? Regards, Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill From milan.mimica at gmail.com Thu May 10 15:11:28 2012 From: milan.mimica at gmail.com (Milan Mimica) Date: Thu May 10 15:11:32 2012 Subject: [Seaside] Re: [Pharo-project] Parsing HTTP dates In-Reply-To: References: <1336660785337-4623688.post@n4.nabble.com> Message-ID: GRPrinter httpDate print: DateAndTime now 'Thu, 10 May 2012 15:11:09 GMT' On 10 May 2012 17:00, Sven Van Caekenberghe wrote: > Sean, > > On 10 May 2012, at 16:39, Sean P. DeNigris wrote: > > > Excerpt from http://forum.world.st/Parsing-HTTP-dates-td4623583.html : > > > > In HTTP/1.1, valid dates come in 3 forms (per > > http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) : > > Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 > > Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 > > Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format > > > > All 3 fail in Pharo 1.4 with #asDateAndTime. > > > > I posted this to the Seaside list because it seems like there *must* be > some > > code out there... This would be a nice utility for Zinc? > > You are underestimating me again ;-) > > This has been in Zn since a very long time: > > ZnUtils>>parseHttpDate: string > "self parseHttpDate: 'Tue, 13 Sep 2011 08:04:49 GMT'." > "self parseHttpDate: 'Tue, 13-Sep-2011 08:04:51 GMT'." > "self parseHttpDate: 'Tue Jan 01 00:00:01 2036 GMT'." > > That should cover the spec, no ? > > Regards, > > Sven > > -- > Sven Van Caekenberghe > http://stfx.eu > Smalltalk is the Red Pill > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -- Milan Mimica http://sparklet.sf.net -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120510/75f86e0f/attachment.htm From milan.mimica at gmail.com Thu May 10 15:15:37 2012 From: milan.mimica at gmail.com (Milan Mimica) Date: Thu May 10 15:15:42 2012 Subject: [Seaside] Re: [Pharo-project] Parsing HTTP dates In-Reply-To: References: <1336660785337-4623688.post@n4.nabble.com> Message-ID: ah, I see, you want parsing On 10 May 2012 17:11, Milan Mimica wrote: > GRPrinter httpDate print: DateAndTime now 'Thu, 10 May 2012 15:11:09 GMT' > > > On 10 May 2012 17:00, Sven Van Caekenberghe wrote: > >> Sean, >> >> On 10 May 2012, at 16:39, Sean P. DeNigris wrote: >> >> > Excerpt from http://forum.world.st/Parsing-HTTP-dates-td4623583.html : >> > >> > In HTTP/1.1, valid dates come in 3 forms (per >> > http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) : >> > Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 >> > Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 >> > Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format >> > >> > All 3 fail in Pharo 1.4 with #asDateAndTime. >> > >> > I posted this to the Seaside list because it seems like there *must* be >> some >> > code out there... This would be a nice utility for Zinc? >> >> You are underestimating me again ;-) >> >> This has been in Zn since a very long time: >> >> ZnUtils>>parseHttpDate: string >> "self parseHttpDate: 'Tue, 13 Sep 2011 08:04:49 GMT'." >> "self parseHttpDate: 'Tue, 13-Sep-2011 08:04:51 GMT'." >> "self parseHttpDate: 'Tue Jan 01 00:00:01 2036 GMT'." >> >> That should cover the spec, no ? >> >> Regards, >> >> Sven >> >> -- >> Sven Van Caekenberghe >> http://stfx.eu >> Smalltalk is the Red Pill >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> > > > > -- > Milan Mimica > http://sparklet.sf.net > -- Milan Mimica http://sparklet.sf.net -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120510/31f33864/attachment-0001.htm From philippe.marschall at gmail.com Thu May 10 18:52:48 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Thu May 10 18:52:51 2012 Subject: [Seaside] Parsing HTTP dates In-Reply-To: <1336658212524-4623583.post@n4.nabble.com> References: <1336658212524-4623583.post@n4.nabble.com> Message-ID: On Thu, May 10, 2012 at 3:56 PM, Sean P. DeNigris wrote: > In HTTP/1.1, valid dates come in 3 forms (per > http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1) : > ?Sun, 06 Nov 1994 08:49:37 GMT ?; RFC 822, updated by RFC 1123 > ?Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 > ?Sun Nov ?6 08:49:37 1994 ? ? ? ; ANSI C's asctime() format > > All 3 fail in Pharo 1.4 with #asDateAndTime. > > It'd be easy enough to write a parser for them, but it seems so common... I > searched google and the seaside lists but found no mention of "date parse > HTTP". Feel free to submit a bug ? and code ? and tests ;-) Cheers Philippe From sean at clipperadams.com Thu May 10 19:24:18 2012 From: sean at clipperadams.com (Sean P. DeNigris) Date: Thu May 10 19:24:26 2012 Subject: [Seaside] Re: Parsing HTTP dates In-Reply-To: References: <1336658212524-4623583.post@n4.nabble.com> Message-ID: <1336677858837-4624378.post@n4.nabble.com> Philippe Marschall wrote > > Feel free to submit a bug ? and code ? and tests ;-) > If anyone needs such functionality, it is part of Zinc (see ZincUtils). I fixed the code and tests to handle all three cases. Sean -- View this message in context: http://forum.world.st/Parsing-HTTP-dates-tp4623583p4624378.html Sent from the Seaside General mailing list archive at Nabble.com. From norbert at hartl.name Fri May 11 10:14:21 2012 From: norbert at hartl.name (Norbert Hartl) Date: Fri May 11 10:14:27 2012 Subject: [Seaside] Lowering the entry barrier for REST style access Message-ID: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> I'm trying to wrap my head around how to integrate REST style access within a normal seaside application. Looking at how seaside works there are basically two possible scenarios: (1) I request a seaside url and have no session information. In this case a session is created and that is the one and only entry to the render-action-phase-cycle. To any callback/link I get my session and callback parameter to proceed in the processing (2) I request a seaside url carrying session and callback information. There I jump middle in render-action-phase-cycle and turn it once more. I get the next parameters for the new callbacks. Next thing is (2) again Let's assume we add a WARestfulFilter to the seaside application and implement a handler /foo. Using cookies it would lead to a situation that I have access to the seaside session (without parameters I mean, of course the parameters can also be present) from within the handler but no callback information. To me it seems that seaside isn't made that way because it assumes there is a single entry point to the application which is also the start of the one and only render-action-phase-cycle (my focus here is two things: session creation, start of action-render-cycle). But the situation is IMHO desirable. I like to share the session between those calls I probably just like to render a different component when invoked through the /foo handler. I assembled a bad hack to prove my point. It is probably very stupid but then I'm no seaside expert. foo | ctx cookie session url k | ctx := self requestContext. cookie := ctx request cookieAt: '_s'. cookie ifNotNil: [ session := self handler cache at: cookie value ] ifNil: [ session := self handler newSession. self handler register: session. self handler useCookies ifTrue: [ self handler addCookieForHandler: session to: ctx ]. ctx request setCookies: (ctx request cookies asOrderedCollection add: ctx response cookies first; yourself). ]. session properties at: #presenter put: MyOtherComponent new; yourself. self next handleFiltered: ctx For this work I needed to change WARenderLoopMain>>#start from start | root | root := self createRoot. self session properties at: #presenter put: root. self prepareRoot: root. ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke to start | root | root := self session properties at: #presenter ifAbsentPut: [ self createRoot ]. self prepareRoot: root. ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke Basically it is straight forward. If the request handlers methods would be slightly different the creation of a new session would be very easy. The biggest problem is the injection of a newly created session. I did it by forcing the added response cookie header into the request header. That's for sure no solution. And I'm not quite sure if the setting of the presenter this way is somewhat ok. What it really means is that there can be multiple entry points to a session adding callbacks. At the moment I would use it to make a few things more lazily accessible. But the bigger goals would be that it might be easy to add url paths to seaside components without having to do everything in initialRequest: And to the extreme it would open a possibility to add seaside components to plain HTML pages. I did first tests where I have a simple app that only needs the seaside power at certain points in interaction. I have a simple plain HTML page with javascript that uses seaside components for login and for data entry. But data retrieval is done just via rest calls. I mean for the retrieval I wouldn't even need the session information because the information is public and accesible to anyone. What do you think? Norbert From cdrick65 at gmail.com Fri May 11 12:18:54 2012 From: cdrick65 at gmail.com (=?iso-8859-1?Q?C=E9drick_B=E9ler?=) Date: Fri May 11 12:19:05 2012 Subject: [Seaside] SSO - CAS Client in Smalltalk ? Message-ID: <870A234F-002E-4445-B95C-2847FEB609E2@gmail.com> Hi all, I'd like to develop some web apps for our university but one prerequisite is to use the Central Authentication Service [1]. It's an open source authentication service and I wonder if somebody has ever worked with it and if there are any client available. Do you have any experience and/or pointers ? If not, I may dog into the protocol and see what I can do. I've spotted PHP implementation and also Ruby [2]. I think that could be a nice addition to Zinc even if not as widespread as OAuth/OpenID stuffs. TIA C?drick [1] http://en.wikipedia.org/wiki/Central_Authentication_Service [2] https://github.com/rubycas/rubycas-client From cdrick65 at gmail.com Fri May 11 12:23:59 2012 From: cdrick65 at gmail.com (=?iso-8859-1?Q?C=E9drick_B=E9ler?=) Date: Fri May 11 12:24:08 2012 Subject: [Seaside] Re: SSO - CAS Client in Smalltalk ? In-Reply-To: <870A234F-002E-4445-B95C-2847FEB609E2@gmail.com> References: <870A234F-002E-4445-B95C-2847FEB609E2@gmail.com> Message-ID: as a complement, here are the links to CAS protocol: http://www.jasig.org/cas/protocol Cheers, C?drick From philippe.marschall at gmail.com Fri May 11 18:49:29 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Fri May 11 18:49:33 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> Message-ID: On Fri, May 11, 2012 at 12:14 PM, Norbert Hartl wrote: > I'm trying to wrap my head around how to integrate REST style access within a normal seaside application. > > Looking at how seaside works there are basically two possible scenarios: > > (1) I request a seaside url and have no session information. In this case a session is created and that is the one and only entry to the render-action-phase-cycle. To any callback/link I get my session and callback parameter to proceed in the processing > (2) I request a seaside url carrying session and callback information. There I jump middle in render-action-phase-cycle and turn it once more. I get the next parameters for the new callbacks. Next thing is (2) again Right, render loop it's called. > Let's assume we add a WARestfulFilter to the seaside application and implement a handler /foo. Using cookies it would lead to a situation that I have access to the seaside session (without parameters I mean, of course the parameters can also be present) from within the handler but no callback information. To me it seems that seaside isn't made that way because it assumes there is a single entry point to the application which is also the start of the one and only render-action-phase-cycle (my focus here is two things: session creation, start of action-render-cycle). But the situation is IMHO desirable. I like to share the session between those calls I probably just like to render a different component when invoked through the /foo handler. > > I assembled a bad hack to prove my point. It is probably very stupid but then I'm no seaside expert. > > foo > ? ? ? ? > ? ? ? ? > ? ? ? ?| ctx ?cookie session url k | > ? ? ? ?ctx := self requestContext. > ? ? ? ?cookie := ctx request cookieAt: '_s'. > ? ? ? ?cookie > ? ? ? ? ? ? ? ?ifNotNil: [ > ? ? ? ? ? ? ? ? ? ? ? ?session := self ?handler cache at: cookie value ] > ? ? ? ? ? ? ? ?ifNil: [ > ? ? ? ? ? ? ? ? ? ? ? ?session := ?self handler newSession. > ? ? ? ? ? ? ? ? ? ? ? ?self handler register: session. > ? ? ? ? ? ? ? ? ? ? ? ?self handler useCookies ifTrue: [ self handler addCookieForHandler: session to: ctx ]. > ? ? ? ? ? ? ? ? ? ? ? ?ctx request setCookies: (ctx request cookies asOrderedCollection add: ctx response cookies first; yourself). > ? ? ? ? ? ? ? ? ? ? ? ? ]. > ? ? ? ? ? ? ? ?session properties > ? ? ? ? ? ? ? ? ? ? ? ?at: #presenter put: MyOtherComponent new; > ? ? ? ? ? ? ? ? ? ? ? ?yourself. > ? ? ? ?self next handleFiltered: ctx > > For this work I needed to change WARenderLoopMain>>#start from > > start > ? ? ? ?| root | > ? ? ? ?root := self createRoot. > ? ? ? ?self session properties at: #presenter put: root. > ? ? ? ?self prepareRoot: root. > ? ? ? ?((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke > > to > > start > ? ? ? ?| root | > ? ? ? ?root := self session properties at: #presenter ifAbsentPut: [ self createRoot ]. > ? ? ? ?self prepareRoot: root. > ? ? ? ?((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke > > Basically it is straight forward. If the request handlers methods would be slightly different the creation of a new session would be very easy. The biggest problem is the injection of a newly created session. I did it by forcing the ?added response cookie header into the request header. That's for sure no solution. And I'm not quite sure if the setting of the presenter this way is somewhat ok. > > What it really means is that there can be multiple entry points to a session adding callbacks. At the moment I would use it to make a few things more lazily accessible. But the bigger goals would be that it might be easy to add url paths to seaside components without having to do everything in initialRequest: And to the extreme it would open a possibility to add seaside components to plain HTML pages. I did first tests where I have a simple app that only needs the seaside power at certain points in interaction. I have a simple plain HTML page with javascript that uses seaside components for login and for data entry. But data retrieval is done just via rest calls. I mean for the retrieval I wouldn't even need the session information because the information is public and accesible to anyone. > > What do you think? Let's see if you understood you right. You want to: - render presenters (they're not really components since you can't #call: and #anser:) without a session, eg. in a rest filter - dynamically start a session & render loop from a component (that you created in a rest filter or similar) Cheers Philippe From pdebruic at gmail.com Sat May 12 00:57:47 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Sat May 12 00:57:58 2012 Subject: [Seaside] Zinc as static file server In-Reply-To: <4F91F793.5090808@gmail.com> References: <1334880829775-4572468.post@n4.nabble.com> <434EFC71-EE43-4C77-8F2F-BC0CA2661A61@beta9.be> <4F91F793.5090808@gmail.com> Message-ID: <4FADB58B.7010801@gmail.com> I added the ability to specify Cache-Control headers for static files served by Zinc and added an API to the ZnZincStaticServerAdaptor that allows you to use the defaults or provide a custom specification. On 04/20/2012 04:56 PM, Paul DeBruicker wrote: > Hi Sven, > > I don't have a blog and I'm not doing anything sophisticated with it. It > just seems an easier way to serve static files than messing with Apache > or Nginx for development purposes. But I will try find the time to write > something up. > > Thanks for your upgrades. I modified the interface so now you can do: > > ZnZincStaticServerAdaptor startOn: 8080 andServeFilesFrom: '/var/www/' > > > > I uploaded the revised Zinc-Seaside package. > > > Paul > > > > On 04/20/2012 02:09 AM, Sven Van Caekenberghe wrote: >> Hi Paul, >> >> On 20 Apr 2012, at 02:13, Paul DeBruicker wrote: >> >>> Yes. There is a way. >>> >>> I uploaded some changes to >>> http://www.squeaksource.com/ZincHTTPComponents >>> that allow Zinc to serve both Seaside requests and static files from the >>> same server adaptor. >>> >>> >>> Let me know if they're inappropriate for the ZincHTTPComponents archive >>> >>> >>> Paul >> >> Thanks for this contribution, I think it is really useful. >> >> I did some merging and some small changes (like making >> wwwRootDirectory a variable). >> So it would be best to update. >> >> Do you have a blog or could you pubish a short writeup of how to use >> this as you envisioned it ? >> >> Thanks again. >> >> Regards, >> >> Sven >> >> >> -- >> Sven Van Caekenberghe >> http://stfx.eu >> Smalltalk is the Red Pill >> >> >> >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > From sven at beta9.be Sat May 12 07:52:34 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Sat May 12 07:52:40 2012 Subject: [Seaside] Zinc as static file server In-Reply-To: <4FADB58B.7010801@gmail.com> References: <1334880829775-4572468.post@n4.nabble.com> <434EFC71-EE43-4C77-8F2F-BC0CA2661A61@beta9.be> <4F91F793.5090808@gmail.com> <4FADB58B.7010801@gmail.com> Message-ID: <0B498375-D0A1-43B0-A4B7-BCEA68D05CFC@beta9.be> Hi Paul, On 12 May 2012, at 02:57, Paul DeBruicker wrote: > I added the ability to specify Cache-Control headers for static files served by Zinc and added an API to the ZnZincStaticServerAdaptor that allows you to use the defaults or provide a custom specification. Thanks for the contribution (again). Yes, this is useful, having an expiration time per mime-type seems a bit heavy, but OK. BTW, we (or I) definitively need to add If-Modified-Since and 304 Not Modified behavior to ZnZincStaticServerAdaptor. And I know that you know, but let me repeat that in production situations you definitively have to let apache or nginx serve the statis files, to take load of Seaside. Your hack in ZnSeasideStaticServerAdaptorDelegate>>#handleRequest: lets Seaside first try and make an error before you consider static file serving, this almost defeats the purpose of not doing it by Seaside itself. Just a hunch, I haven't tested or benchmarked this. But I know you want this for easier development setup, and it is instructive code for others as well. Thanks again, Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill From dtrussardi at tiscali.it Sat May 12 15:46:26 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Sat May 12 15:46:31 2012 Subject: [Seaside] JQ accordion with Time now Message-ID: <3B54F921-0CCD-4158-9C5D-C61175755B78@tiscali.it> Hi, i use JQ accordion how in the the JQAccordionFunctionalTest : > renderContentOn: html > html div > script: ( html jQuery new accordion > animated: 'bounceslide'; > active: 1; > collapsible: true ) ; > with: [ > self berries keysAndValuesDo: [ :name :description | > html div: [ html anchor: name ]. > html div: [ > > html text: Time now asString > > html break. > > html paragraph: description ] ] ] I add the html text: Time now asString Now the accordion don't report the time update ad the expand time but at the JQ accordion creation. How i can rendering the time update at the expand time ? Thanks, Dario From mac.hive at me.com Sat May 12 15:49:29 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Sat May 12 15:49:34 2012 Subject: [Seaside] Setting up MixPanel and Seaside In-Reply-To: <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> Message-ID: <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> Any ideas? Perhaps, I just don't understand the Seaside Javascript interface. Larry On May 10, 2012, at 10:32 AM, Lawrence Kellogg wrote: > Hello, > So, I want to use MixPanel (www.mixpanel.com) to monitor user actions in realtime. How do I > configure this from within Seaside? > > I am told that I have to include this: > > html script: ''. > > > and > > html script: 'mixpanel.track("User Login");' > > The first call seems to work ok, but the second call crashes in: > > openTag > "Open the receiving and all associated attributes onto the document." > > self document openTag: self tag attributes: attributes closed: self isClosed > > with this walk back, as document seems to be nil: > > MessageNotUnderstood 2010: No method was found for the selector <#'openTag:attributes:closed:'> when sent to with arguments contained in 'text/javascript'), false)>. > > > Any thoughts as to what I am doing wrong? > > Larry > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120512/933cde53/attachment.htm From pdebruic at gmail.com Sat May 12 16:13:02 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Sat May 12 16:13:10 2012 Subject: [Seaside] JQ accordion with Time now In-Reply-To: <3B54F921-0CCD-4158-9C5D-C61175755B78@tiscali.it> References: <3B54F921-0CCD-4158-9C5D-C61175755B78@tiscali.it> Message-ID: <4FAE8C0E.2010009@gmail.com> You either need to load the accordion contents using ajax or set a click event on the anchor that uses javascript to put the current time in the accordion body. I haven't tested any of this but it should get you started. First option is set the accordion body to an empty div with an id e.g.: html div id:'accordion-body' and change the link to load the accordion body with the current time from the server when clicked: html anchor onClick:(html jQuery id:'accordion-body') load html:[:h | self renderAccordionBody: h]; with: name and renderAccordionBody:html html text: Time now asString html break. html paragraph: description The second option is to do it all on the client with javascript: Change html text: Time now asString to: html div id:'time'. and change html anchor: name to: html anchor onClick(JSStream on: '$("#time").empty().text(Date())'; with: name Getting a format for the time string is a job and here is a link to see some options: http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript On 05/12/2012 08:46 AM, dtrussardi@tiscali.it wrote: > Hi, > > > i use JQ accordion how in the the JQAccordionFunctionalTest : > >> renderContentOn: html >> html div >> script: ( html jQuery new accordion >> animated: 'bounceslide'; >> active: 1; >> collapsible: true ) ; >> with: [ >> self berries keysAndValuesDo: [ :name :description | >> html div: [ html anchor: name ]. >> html div: [ >> >> html text: Time now asString >> >> html break. >> >> html paragraph: description ] ] ] > > > I add the html text: Time now asString > > Now the accordion don't report the time update ad the expand time but at the JQ accordion creation. > > > How i can rendering the time update at the expand time ? > > > Thanks, > > Dario > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From pdebruic at gmail.com Sat May 12 16:24:07 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Sat May 12 16:24:14 2012 Subject: [Seaside] Setting up MixPanel and Seaside In-Reply-To: <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> Message-ID: <4FAE8EA7.5060104@gmail.com> Without being able to see whats actually rendered its not easy to guess whats going wrong. I'g guess that for the first bit you actuatlly want: html html:''. And for the second you want: html script (JSStream on: 'mixpanel.track("User Login");'). The 3 steps I would do are: 1. paste their code into a page and try to run mixpanel.track() 2. get seaside to insert their code into a page then manually run mixpanel.track() from the browser console. 3. get seaside to insert the mixpanel.track() whereever you want it. So first make sure its loaded into your browser by manually checking in the page you want it to run in, then worry about getting Seaside to emit the necessary JS. And its easier to help when you provide both the Smalltalk code and the resulting HTML that's generated in a page. On 05/12/2012 08:49 AM, Lawrence Kellogg wrote: > Any ideas? Perhaps, I just don't understand the Seaside Javascript > interface. > > Larry > > > On May 10, 2012, at 10:32 AM, Lawrence Kellogg wrote: > >> Hello, >> So, I want to use MixPanel (www.mixpanel.com >> ) to monitor user actions in realtime. How do I >> configure this from within Seaside? >> >> I am told that I have to include this: >> >> html script: ''. >> >> >> and >> >> html script: 'mixpanel.track("User Login");' >> >> The first call seems to work ok, but the second call crashes in: >> >> openTag >> "Open the receiving and all associated attributes onto the document." >> >> self document openTag: self tag attributes: attributes closed: self >> isClosed >> >> with this walk back, as document seems to be nil: >> >> MessageNotUnderstood 2010: No method was found for the selector >> <#'openTag:attributes:closed:'> when sent to with arguments >> contained in > aWAHtmlAttributes('type'->'text/javascript'), false)>. >> >> >> Any thoughts as to what I am doing wrong? >> >> Larry >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From pdebruic at gmail.com Sat May 12 17:17:29 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Sat May 12 17:17:37 2012 Subject: [Seaside] Zinc as static file server In-Reply-To: <0B498375-D0A1-43B0-A4B7-BCEA68D05CFC@beta9.be> References: <1334880829775-4572468.post@n4.nabble.com> <434EFC71-EE43-4C77-8F2F-BC0CA2661A61@beta9.be> <4F91F793.5090808@gmail.com> <4FADB58B.7010801@gmail.com> <0B498375-D0A1-43B0-A4B7-BCEA68D05CFC@beta9.be> Message-ID: <4FAE9B29.1030902@gmail.com> On 05/12/2012 12:52 AM, Sven Van Caekenberghe wrote: > Thanks for the contribution (again). > You're welcome. Thanks for doing the bulk of the work. > Yes, this is useful, having an expiration time per mime-type seems a bit heavy, but OK. > I figured that since the mimeType had already been figured out in the #responseForFileNamed: method to just use it. I'm happy for any revisions. > BTW, we (or I) definitively need to add If-Modified-Since and 304 Not Modified behavior to ZnZincStaticServerAdaptor. > OK. I added that to the version I just uploaded. > And I know that you know, but let me repeat that in production situations you definitively have to let apache or nginx serve the statis files, to take load of Seaside. > Yes definitely. > Your hack in ZnSeasideStaticServerAdaptorDelegate>>#handleRequest: lets Seaside first try and make an error before you consider static file serving, this almost defeats the purpose of not doing it by Seaside itself. Just a hunch, I haven't tested or benchmarked this. > Does Seaside have the ability to serve files from disk without loading them into a WAFileLibrary? I couldn't figure that out, or gave up before trying really. I edit all my CSS and JS in emacs and its a pain to reload after saving/committing. And for my use case the performance is fine. > But I know you want this for easier development setup, and it is instructive code for others as well. > Its certainly a niche market/product. > Thanks again, > > Sven From mac.hive at me.com Sat May 12 19:10:10 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Sat May 12 19:10:15 2012 Subject: [Seaside] Setting up MixPanel and Seaside In-Reply-To: <4FAE8EA7.5060104@gmail.com> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> Message-ID: Thanks, Paul! I think my problem was that I wasn't rendering the first Mixpanel declaration on every single page, thereby causing a crash. Now, I think I have it working. Regards, Larry On May 12, 2012, at 12:24 PM, Paul DeBruicker wrote: > Without being able to see whats actually rendered its not easy to guess whats going wrong. I'g guess that for the first bit you actuatlly want: > > html html:''. > > > And for the second you want: > > html script (JSStream on: 'mixpanel.track("User Login");'). > > > The 3 steps I would do are: > 1. paste their code into a page and try to run mixpanel.track() > 2. get seaside to insert their code into a page then manually run mixpanel.track() from the browser console. > 3. get seaside to insert the mixpanel.track() whereever you want it. > > > So first make sure its loaded into your browser by manually checking in the page you want it to run in, then worry about getting Seaside to emit the necessary JS. > > > And its easier to help when you provide both the Smalltalk code and the resulting HTML that's generated in a page. > > > > > On 05/12/2012 08:49 AM, Lawrence Kellogg wrote: >> Any ideas? Perhaps, I just don't understand the Seaside Javascript >> interface. >> >> Larry >> >> >> On May 10, 2012, at 10:32 AM, Lawrence Kellogg wrote: >> >>> Hello, >>> So, I want to use MixPanel (www.mixpanel.com >>> ) to monitor user actions in realtime. How do I >>> configure this from within Seaside? >>> >>> I am told that I have to include this: >>> >>> html script: ''. >>> >>> >>> and >>> >>> html script: 'mixpanel.track("User Login");' >>> >>> The first call seems to work ok, but the second call crashes in: >>> >>> openTag >>> "Open the receiving and all associated attributes onto the document." >>> >>> self document openTag: self tag attributes: attributes closed: self >>> isClosed >>> >>> with this walk back, as document seems to be nil: >>> >>> MessageNotUnderstood 2010: No method was found for the selector >>> <#'openTag:attributes:closed:'> when sent to with arguments >>> contained in >> aWAHtmlAttributes('type'->'text/javascript'), false)>. >>> >>> >>> Any thoughts as to what I am doing wrong? >>> >>> Larry >>> _______________________________________________ >>> seaside mailing list >>> seaside@lists.squeakfoundation.org >>> >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From sven at beta9.be Sat May 12 21:59:05 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Sat May 12 21:59:08 2012 Subject: [Seaside] Zinc as static file server In-Reply-To: <4FAE9B29.1030902@gmail.com> References: <1334880829775-4572468.post@n4.nabble.com> <434EFC71-EE43-4C77-8F2F-BC0CA2661A61@beta9.be> <4F91F793.5090808@gmail.com> <4FADB58B.7010801@gmail.com> <0B498375-D0A1-43B0-A4B7-BCEA68D05CFC@beta9.be> <4FAE9B29.1030902@gmail.com> Message-ID: On 12 May 2012, at 19:17, Paul DeBruicker wrote: >> BTW, we (or I) definitively need to add If-Modified-Since and 304 Not Modified behavior to ZnZincStaticServerAdaptor. >> > > OK. I added that to the version I just uploaded. I'll have a look later on (I have little time this weekend). We also need at least one simple test (another one of Marcus' quotes; if there is no actively run test, it does not exist). We just need an extra version of #testIfModifiedSinceNotModified directly on a local server, it will require some setup, be it should be doable. >> And I know that you know, but let me repeat that in production situations you definitively have to let apache or nginx serve the statis files, to take load of Seaside. >> > > Yes definitely. > >> Your hack in ZnSeasideStaticServerAdaptorDelegate>>#handleRequest: lets Seaside first try and make an error before you consider static file serving, this almost defeats the purpose of not doing it by Seaside itself. Just a hunch, I haven't tested or benchmarked this. > > Does Seaside have the ability to serve files from disk without loading them into a WAFileLibrary? I couldn't figure that out, or gave up before trying really. I edit all my CSS and JS in emacs and its a pain to reload after saving/committing. And for my use case the performance is fine. Yes, your use case is perfectly valid. Sven From norbert at hartl.name Sun May 13 12:59:27 2012 From: norbert at hartl.name (Norbert Hartl) Date: Sun May 13 12:59:33 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> Message-ID: <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Am 11.05.2012 um 20:49 schrieb Philippe Marschall: > On Fri, May 11, 2012 at 12:14 PM, Norbert Hartl wrote: >> I'm trying to wrap my head around how to integrate REST style access within a normal seaside application. >> >> Looking at how seaside works there are basically two possible scenarios: >> >> (1) I request a seaside url and have no session information. In this case a session is created and that is the one and only entry to the render-action-phase-cycle. To any callback/link I get my session and callback parameter to proceed in the processing >> (2) I request a seaside url carrying session and callback information. There I jump middle in render-action-phase-cycle and turn it once more. I get the next parameters for the new callbacks. Next thing is (2) again > > Right, render loop it's called. > >> Let's assume we add a WARestfulFilter to the seaside application and implement a handler /foo. Using cookies it would lead to a situation that I have access to the seaside session (without parameters I mean, of course the parameters can also be present) from within the handler but no callback information. To me it seems that seaside isn't made that way because it assumes there is a single entry point to the application which is also the start of the one and only render-action-phase-cycle (my focus here is two things: session creation, start of action-render-cycle). But the situation is IMHO desirable. I like to share the session between those calls I probably just like to render a different component when invoked through the /foo handler. >> >> I assembled a bad hack to prove my point. It is probably very stupid but then I'm no seaside expert. >> >> foo >> >> >> | ctx cookie session url k | >> ctx := self requestContext. >> cookie := ctx request cookieAt: '_s'. >> cookie >> ifNotNil: [ >> session := self handler cache at: cookie value ] >> ifNil: [ >> session := self handler newSession. >> self handler register: session. >> self handler useCookies ifTrue: [ self handler addCookieForHandler: session to: ctx ]. >> ctx request setCookies: (ctx request cookies asOrderedCollection add: ctx response cookies first; yourself). >> ]. >> session properties >> at: #presenter put: MyOtherComponent new; >> yourself. >> self next handleFiltered: ctx >> >> For this work I needed to change WARenderLoopMain>>#start from >> >> start >> | root | >> root := self createRoot. >> self session properties at: #presenter put: root. >> self prepareRoot: root. >> ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >> >> to >> >> start >> | root | >> root := self session properties at: #presenter ifAbsentPut: [ self createRoot ]. >> self prepareRoot: root. >> ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >> >> Basically it is straight forward. If the request handlers methods would be slightly different the creation of a new session would be very easy. The biggest problem is the injection of a newly created session. I did it by forcing the added response cookie header into the request header. That's for sure no solution. And I'm not quite sure if the setting of the presenter this way is somewhat ok. >> >> What it really means is that there can be multiple entry points to a session adding callbacks. At the moment I would use it to make a few things more lazily accessible. But the bigger goals would be that it might be easy to add url paths to seaside components without having to do everything in initialRequest: And to the extreme it would open a possibility to add seaside components to plain HTML pages. I did first tests where I have a simple app that only needs the seaside power at certain points in interaction. I have a simple plain HTML page with javascript that uses seaside components for login and for data entry. But data retrieval is done just via rest calls. I mean for the retrieval I wouldn't even need the session information because the information is public and accesible to anyone. >> >> What do you think? > > Let's see if you understood you right. You want to: > - render presenters (they're not really components since you can't > #call: and #anser:) without a session, eg. in a rest filter > - dynamically start a session & render loop from a component (that > you created in a rest filter or similar) > Yes, the latter being more important. I think rendering a component isn't that hard. But having more than one entry to a session is (at the moment). Norbert From dtrussardi at tiscali.it Mon May 14 08:30:57 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Mon May 14 08:31:05 2012 Subject: [Seaside] JQ accordion with Time now In-Reply-To: <4FAE8C0E.2010009@gmail.com> References: <3B54F921-0CCD-4158-9C5D-C61175755B78@tiscali.it> <4FAE8C0E.2010009@gmail.com> Message-ID: <2A68D615-B34F-4E68-A83D-7E7649DD2F04@tiscali.it> Thank Paul, > First option is set the accordion body to an empty div with an id e.g.: > > html div id:'accordion-body' > > and change the link to load the accordion body with the current time from the server when clicked: > > html anchor > onClick:(html jQuery id:'accordion-body') load html:[:h | self renderAccordionBody: h]; > with: name > > and > > renderAccordionBody:html > html text: Time now asString > html break. > html paragraph: description > > This is my case where i use Time now asString only as example for test dynamic rendering of smalltalk data. Your solution work, but the rendering create a ' flicker ' because when i click on the accordion header anchor ( several times ) the system first rendering the hold accordion body data and after rendering the update data generating by onClick: load Ciao, Dario -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120514/a400f5c4/attachment.htm From norbert at hartl.name Mon May 14 08:51:02 2012 From: norbert at hartl.name (Norbert Hartl) Date: Mon May 14 08:51:03 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: To be honest I thought there would be little more discussion on that topic. Now I'm wondering if I could describe at all what I'm after. I really like to have feedback on that even if it states that it is totally stupid to do things I mentioned. So nobody is using bookmarkable seaside urls or needs to start the whole stuff from an REST interface? Or is anyone happy repeating parsing in initialRequest: ? thanks, Norbert Am 13.05.2012 um 14:59 schrieb Norbert Hartl: > > Am 11.05.2012 um 20:49 schrieb Philippe Marschall: > >> On Fri, May 11, 2012 at 12:14 PM, Norbert Hartl wrote: >>> I'm trying to wrap my head around how to integrate REST style access within a normal seaside application. >>> >>> Looking at how seaside works there are basically two possible scenarios: >>> >>> (1) I request a seaside url and have no session information. In this case a session is created and that is the one and only entry to the render-action-phase-cycle. To any callback/link I get my session and callback parameter to proceed in the processing >>> (2) I request a seaside url carrying session and callback information. There I jump middle in render-action-phase-cycle and turn it once more. I get the next parameters for the new callbacks. Next thing is (2) again >> >> Right, render loop it's called. >> >>> Let's assume we add a WARestfulFilter to the seaside application and implement a handler /foo. Using cookies it would lead to a situation that I have access to the seaside session (without parameters I mean, of course the parameters can also be present) from within the handler but no callback information. To me it seems that seaside isn't made that way because it assumes there is a single entry point to the application which is also the start of the one and only render-action-phase-cycle (my focus here is two things: session creation, start of action-render-cycle). But the situation is IMHO desirable. I like to share the session between those calls I probably just like to render a different component when invoked through the /foo handler. >>> >>> I assembled a bad hack to prove my point. It is probably very stupid but then I'm no seaside expert. >>> >>> foo >>> >>> >>> | ctx cookie session url k | >>> ctx := self requestContext. >>> cookie := ctx request cookieAt: '_s'. >>> cookie >>> ifNotNil: [ >>> session := self handler cache at: cookie value ] >>> ifNil: [ >>> session := self handler newSession. >>> self handler register: session. >>> self handler useCookies ifTrue: [ self handler addCookieForHandler: session to: ctx ]. >>> ctx request setCookies: (ctx request cookies asOrderedCollection add: ctx response cookies first; yourself). >>> ]. >>> session properties >>> at: #presenter put: MyOtherComponent new; >>> yourself. >>> self next handleFiltered: ctx >>> >>> For this work I needed to change WARenderLoopMain>>#start from >>> >>> start >>> | root | >>> root := self createRoot. >>> self session properties at: #presenter put: root. >>> self prepareRoot: root. >>> ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >>> >>> to >>> >>> start >>> | root | >>> root := self session properties at: #presenter ifAbsentPut: [ self createRoot ]. >>> self prepareRoot: root. >>> ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >>> >>> Basically it is straight forward. If the request handlers methods would be slightly different the creation of a new session would be very easy. The biggest problem is the injection of a newly created session. I did it by forcing the added response cookie header into the request header. That's for sure no solution. And I'm not quite sure if the setting of the presenter this way is somewhat ok. >>> >>> What it really means is that there can be multiple entry points to a session adding callbacks. At the moment I would use it to make a few things more lazily accessible. But the bigger goals would be that it might be easy to add url paths to seaside components without having to do everything in initialRequest: And to the extreme it would open a possibility to add seaside components to plain HTML pages. I did first tests where I have a simple app that only needs the seaside power at certain points in interaction. I have a simple plain HTML page with javascript that uses seaside components for login and for data entry. But data retrieval is done just via rest calls. I mean for the retrieval I wouldn't even need the session information because the information is public and accesible to anyone. >>> >>> What do you think? >> >> Let's see if you understood you right. You want to: >> - render presenters (they're not really components since you can't >> #call: and #anser:) without a session, eg. in a rest filter >> - dynamically start a session & render loop from a component (that >> you created in a rest filter or similar) >> > Yes, the latter being more important. I think rendering a component isn't that hard. But having more than one entry to a session is (at the moment). > > Norbert > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From sven at beta9.be Mon May 14 09:19:08 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Mon May 14 09:19:18 2012 Subject: [Seaside] Zinc as static file server In-Reply-To: References: <1334880829775-4572468.post@n4.nabble.com> <434EFC71-EE43-4C77-8F2F-BC0CA2661A61@beta9.be> <4F91F793.5090808@gmail.com> <4FADB58B.7010801@gmail.com> <0B498375-D0A1-43B0-A4B7-BCEA68D05CFC@beta9.be> <4FAE9B29.1030902@gmail.com> Message-ID: Paul, On 12 May 2012, at 23:59, Sven Van Caekenberghe wrote: > I'll have a look later on (I have little time this weekend). > > We also need at least one simple test (another one of Marcus' quotes; if there is no actively run test, it does not exist). We just need an extra version of #testIfModifiedSinceNotModified directly on a local server, it will require some setup, be it should be doable. I integrated your changes and added 3 tests: --- Name: Zinc-HTTP-SvenVanCaekenberghe.275 Author: SvenVanCaekenberghe Time: 14 May 2012, 10:59:51 am UUID: 94f2451b-b7e0-4d74-866b-d55b01c98ed9 Ancestors: Zinc-HTTP-PaulDeBruicker.274 refactored ZnStaticFileServerDelegate a bit: - store expiration times as seconds in #defaultMimeTypeExpiration & #mimeTypeExpiration map - add not only Cache-Control but Expires header as well - removed unused #responseForFile: fixed a bug in ZnMessage>>#clearEntity (didn't #close streaming entities with HEAD requests) --- Name: Zinc-Tests-SvenVanCaekenberghe.142 Author: SvenVanCaekenberghe Time: 14 May 2012, 11:11:41 am UUID: 9f8498a3-c576-4844-a0f5-bafc5c5cbeca Ancestors: Zinc-Tests-SvenVanCaekenberghe.141 added ZnStaticFileServerDelegateTests for - expiration - cache-control - if-modified-since, not-modified --- Have a look and tell me what you think. Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill From mac.hive at me.com Mon May 14 11:03:27 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Mon May 14 11:03:35 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> Message-ID: <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> Hello, Do I need to do anything special to enable sending data for POST or PUT requests to a WARequestHandler in Seaside? Something in nginx.conf? GETs have been working fine for me. My client app is sending a POST, with data, but nginx shows no data and the value in the dictionary fields shows nil for that entry. Perhaps the POST should be a PUT, but still, I don't get any data. Also, is there some way to put a halt in a subclass of WARequestHandler so that I can get a continuation that I can debug? Halts just seem to throw a message to the log, but not pop up a continuation. Regards, Larry -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120514/be9e2073/attachment-0001.htm From philippe.marschall at gmail.com Mon May 14 12:38:54 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 12:39:04 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> Message-ID: On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: > Hello, > ? Do I need to do anything special to enable sending data for POST or PUT > requests to a WARequestHandler in Seaside? Something in nginx.conf? > GETs have been working fine for me. > > ? My client app is sending a POST, with data, but nginx shows no > data and the value in the dictionary fields shows nil for that entry. > Perhaps the POST should be a PUT, but still, I don't get any data. > > ? Also, is there some way to put a halt in a subclass of WARequestHandler > so that I can get a continuation that I can debug? Halts just seem to > throw a message to the log, but not pop up a continuation. Can you provide a bit more context? Are you on GemStone with FastCGI? Cheers Philippe From mac.hive at me.com Mon May 14 12:43:26 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Mon May 14 12:43:34 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> Message-ID: On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: > On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >> Hello, >> Do I need to do anything special to enable sending data for POST or PUT >> requests to a WARequestHandler in Seaside? Something in nginx.conf? >> GETs have been working fine for me. >> >> My client app is sending a POST, with data, but nginx shows no >> data and the value in the dictionary fields shows nil for that entry. >> Perhaps the POST should be a PUT, but still, I don't get any data. >> >> Also, is there some way to put a halt in a subclass of WARequestHandler >> so that I can get a continuation that I can debug? Halts just seem to >> throw a message to the log, but not pop up a continuation. > > Can you provide a bit more context? Are you on GemStone with FastCGI? > Yes, I am on Gemstone using FastCGI. > Cheers > Philippe > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From tulipe.moutarde at gmail.com Mon May 14 13:09:56 2012 From: tulipe.moutarde at gmail.com (Francois Stephany) Date: Mon May 14 13:10:06 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: <4FB10424.6080101@gmail.com> Hi Norbert, Nope, that's the kind of things I'm also interested in. At the moment, I just have a small layer using initialRequest: but you're right, it would be nice to have the possibility to access the session from a RestfulFilter. > So nobody is using bookmarkable seaside urls or needs to start the whole stuff from an REST interface? Or is anyone happy repeating parsing in initialRequest: ? > > thanks, > > Norbert > > > Am 13.05.2012 um 14:59 schrieb Norbert Hartl: > >> >> Am 11.05.2012 um 20:49 schrieb Philippe Marschall: >> >>> On Fri, May 11, 2012 at 12:14 PM, Norbert Hartl wrote: >>>> I'm trying to wrap my head around how to integrate REST style access within a normal seaside application. >>>> >>>> Looking at how seaside works there are basically two possible scenarios: >>>> >>>> (1) I request a seaside url and have no session information. In this case a session is created and that is the one and only entry to the render-action-phase-cycle. To any callback/link I get my session and callback parameter to proceed in the processing >>>> (2) I request a seaside url carrying session and callback information. There I jump middle in render-action-phase-cycle and turn it once more. I get the next parameters for the new callbacks. Next thing is (2) again >>> >>> Right, render loop it's called. >>> >>>> Let's assume we add a WARestfulFilter to the seaside application and implement a handler /foo. Using cookies it would lead to a situation that I have access to the seaside session (without parameters I mean, of course the parameters can also be present) from within the handler but no callback information. To me it seems that seaside isn't made that way because it assumes there is a single entry point to the application which is also the start of the one and only render-action-phase-cycle (my focus here is two things: session creation, start of action-render-cycle). But the situation is IMHO desirable. I like to share the session between those calls I probably just like to render a different component when invoked through the /foo handler. >>>> >>>> I assembled a bad hack to prove my point. It is probably very stupid but then I'm no seaside expert. >>>> >>>> foo >>>> >>>> >>>> | ctx cookie session url k | >>>> ctx := self requestContext. >>>> cookie := ctx request cookieAt: '_s'. >>>> cookie >>>> ifNotNil: [ >>>> session := self handler cache at: cookie value ] >>>> ifNil: [ >>>> session := self handler newSession. >>>> self handler register: session. >>>> self handler useCookies ifTrue: [ self handler addCookieForHandler: session to: ctx ]. >>>> ctx request setCookies: (ctx request cookies asOrderedCollection add: ctx response cookies first; yourself). >>>> ]. >>>> session properties >>>> at: #presenter put: MyOtherComponent new; >>>> yourself. >>>> self next handleFiltered: ctx >>>> >>>> For this work I needed to change WARenderLoopMain>>#start from >>>> >>>> start >>>> | root | >>>> root := self createRoot. >>>> self session properties at: #presenter put: root. >>>> self prepareRoot: root. >>>> ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >>>> >>>> to >>>> >>>> start >>>> | root | >>>> root := self session properties at: #presenter ifAbsentPut: [ self createRoot ]. >>>> self prepareRoot: root. >>>> ((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >>>> >>>> Basically it is straight forward. If the request handlers methods would be slightly different the creation of a new session would be very easy. The biggest problem is the injection of a newly created session. I did it by forcing the added response cookie header into the request header. That's for sure no solution. And I'm not quite sure if the setting of the presenter this way is somewhat ok. >>>> >>>> What it really means is that there can be multiple entry points to a session adding callbacks. At the moment I would use it to make a few things more lazily accessible. But the bigger goals would be that it might be easy to add url paths to seaside components without having to do everything in initialRequest: And to the extreme it would open a possibility to add seaside components to plain HTML pages. I did first tests where I have a simple app that only needs the seaside power at certain points in interaction. I have a simple plain HTML page with javascript that uses seaside components for login and for data entry. But data retrieval is done just via rest calls. I mean for the retrieval I wouldn't even need the session information because the information is public and accesible to anyone. >>>> >>>> What do you think? >>> >>> Let's see if you understood you right. You want to: >>> - render presenters (they're not really components since you can't >>> #call: and #anser:) without a session, eg. in a rest filter >>> - dynamically start a session& render loop from a component (that >>> you created in a rest filter or similar) >>> >> Yes, the latter being more important. I think rendering a component isn't that hard. But having more than one entry to a session is (at the moment). >> >> Norbert >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -- http://tulipemoutarde.be CA: +1 778 558 3225 BE: +32 65 709 131 From philippe.marschall at gmail.com Mon May 14 13:46:47 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 13:46:57 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: On Sun, May 13, 2012 at 2:59 PM, Norbert Hartl wrote: > > Am 11.05.2012 um 20:49 schrieb Philippe Marschall: > >> On Fri, May 11, 2012 at 12:14 PM, Norbert Hartl wrote: >>> I'm trying to wrap my head around how to integrate REST style access within a normal seaside application. >>> >>> Looking at how seaside works there are basically two possible scenarios: >>> >>> (1) I request a seaside url and have no session information. In this case a session is created and that is the one and only entry to the render-action-phase-cycle. To any callback/link I get my session and callback parameter to proceed in the processing >>> (2) I request a seaside url carrying session and callback information. There I jump middle in render-action-phase-cycle and turn it once more. I get the next parameters for the new callbacks. Next thing is (2) again >> >> Right, render loop it's called. >> >>> Let's assume we add a WARestfulFilter to the seaside application and implement a handler /foo. Using cookies it would lead to a situation that I have access to the seaside session (without parameters I mean, of course the parameters can also be present) from within the handler but no callback information. To me it seems that seaside isn't made that way because it assumes there is a single entry point to the application which is also the start of the one and only render-action-phase-cycle (my focus here is two things: session creation, start of action-render-cycle). But the situation is IMHO desirable. I like to share the session between those calls I probably just like to render a different component when invoked through the /foo handler. >>> >>> I assembled a bad hack to prove my point. It is probably very stupid but then I'm no seaside expert. >>> >>> foo >>> ? ? ? ? >>> ? ? ? ? >>> ? ? ? ?| ctx ?cookie session url k | >>> ? ? ? ?ctx := self requestContext. >>> ? ? ? ?cookie := ctx request cookieAt: '_s'. >>> ? ? ? ?cookie >>> ? ? ? ? ? ? ? ?ifNotNil: [ >>> ? ? ? ? ? ? ? ? ? ? ? ?session := self ?handler cache at: cookie value ] >>> ? ? ? ? ? ? ? ?ifNil: [ >>> ? ? ? ? ? ? ? ? ? ? ? ?session := ?self handler newSession. >>> ? ? ? ? ? ? ? ? ? ? ? ?self handler register: session. >>> ? ? ? ? ? ? ? ? ? ? ? ?self handler useCookies ifTrue: [ self handler addCookieForHandler: session to: ctx ]. >>> ? ? ? ? ? ? ? ? ? ? ? ?ctx request setCookies: (ctx request cookies asOrderedCollection add: ctx response cookies first; yourself). >>> ? ? ? ? ? ? ? ? ? ? ? ? ]. >>> ? ? ? ? ? ? ? ?session properties >>> ? ? ? ? ? ? ? ? ? ? ? ?at: #presenter put: MyOtherComponent new; >>> ? ? ? ? ? ? ? ? ? ? ? ?yourself. >>> ? ? ? ?self next handleFiltered: ctx >>> >>> For this work I needed to change WARenderLoopMain>>#start from >>> >>> start >>> ? ? ? ?| root | >>> ? ? ? ?root := self createRoot. >>> ? ? ? ?self session properties at: #presenter put: root. >>> ? ? ? ?self prepareRoot: root. >>> ? ? ? ?((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >>> >>> to >>> >>> start >>> ? ? ? ?| root | >>> ? ? ? ?root := self session properties at: #presenter ifAbsentPut: [ self createRoot ]. >>> ? ? ? ?self prepareRoot: root. >>> ? ? ? ?((self application preferenceAt: #renderPhaseContinuationClass) new) captureAndInvoke >>> >>> Basically it is straight forward. If the request handlers methods would be slightly different the creation of a new session would be very easy. The biggest problem is the injection of a newly created session. I did it by forcing the ?added response cookie header into the request header. That's for sure no solution. And I'm not quite sure if the setting of the presenter this way is somewhat ok. >>> >>> What it really means is that there can be multiple entry points to a session adding callbacks. At the moment I would use it to make a few things more lazily accessible. But the bigger goals would be that it might be easy to add url paths to seaside components without having to do everything in initialRequest: And to the extreme it would open a possibility to add seaside components to plain HTML pages. I did first tests where I have a simple app that only needs the seaside power at certain points in interaction. I have a simple plain HTML page with javascript that uses seaside components for login and for data entry. But data retrieval is done just via rest calls. I mean for the retrieval I wouldn't even need the session information because the information is public and accesible to anyone. >>> >>> What do you think? >> >> Let's see if you understood you right. You want to: >> - render presenters (they're not really components since you can't >> #call: and #anser:) without a session, eg. in a rest filter >> - dynamically start a session & render loop from a component (that >> you created in a rest filter or similar) >> > Yes, the latter being more important. I think rendering a component isn't that hard. But having more than one entry to a session is (at the moment). Sounds reasonable. I don't have a good solution right now but will think about it. Cheers Philippe From jfitzell at gmail.com Mon May 14 18:30:12 2012 From: jfitzell at gmail.com (Julian Fitzell) Date: Mon May 14 18:30:35 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: I can't tell for sure, but this *sounds* like it's related to work I was playing with at ESUG last year. There were two parts: 1) Making session continuations into request handlers. This is implemented in the 3.1 repository. A new render loop can thus be easily started by creating a new request handler and delegating to it or registering it in a dispatcher or registry. 2) Splitting out the concept of a session (in terms of session data) from an instance of a render loop. I got part way into this but then ran into a couple of conceptual questions and a concern that doing it properly would break backwards compatibility for something that I wasn't sure people wanted. The idea was that you should be able to have session data pulled up by a cookie even in REST-style handlers and could create render loops as needed, which would use that data. Both of these should be really helpful for creating callbacks for external APIs, sending emails with links, and so on. Plus, hopefully, the usual problem of wanting to move from a restful "guest" application to a signed in application using continuations. I'm fairly swamped at the moment with school, but am happy to discuss further if that sounds relevant. Like you, my biggest problem was feeling like I was writing in a (partial?thanks Nick!) vacuum and not knowing if I was going in the right direction. Probably best to email (or at least CC) me directly as I'm not following the list on a day to day basis. Julian On Mon, May 14, 2012 at 9:51 AM, Norbert Hartl wrote: > To be honest I thought there would be little more discussion on that > topic. Now I'm wondering if I could describe at all what I'm after. I > really like to have feedback on that even if it states that it is totally > stupid to do things I mentioned. > > So nobody is using bookmarkable seaside urls or needs to start the whole > stuff from an REST interface? Or is anyone happy repeating parsing in > initialRequest: ? > > thanks, > > Norbert > > > Am 13.05.2012 um 14:59 schrieb Norbert Hartl: > > > > > Am 11.05.2012 um 20:49 schrieb Philippe Marschall: > > > >> On Fri, May 11, 2012 at 12:14 PM, Norbert Hartl > wrote: > >>> I'm trying to wrap my head around how to integrate REST style access > within a normal seaside application. > >>> > >>> Looking at how seaside works there are basically two possible > scenarios: > >>> > >>> (1) I request a seaside url and have no session information. In this > case a session is created and that is the one and only entry to the > render-action-phase-cycle. To any callback/link I get my session and > callback parameter to proceed in the processing > >>> (2) I request a seaside url carrying session and callback information. > There I jump middle in render-action-phase-cycle and turn it once more. I > get the next parameters for the new callbacks. Next thing is (2) again > >> > >> Right, render loop it's called. > >> > >>> Let's assume we add a WARestfulFilter to the seaside application and > implement a handler /foo. Using cookies it would lead to a situation that I > have access to the seaside session (without parameters I mean, of course > the parameters can also be present) from within the handler but no callback > information. To me it seems that seaside isn't made that way because it > assumes there is a single entry point to the application which is also the > start of the one and only render-action-phase-cycle (my focus here is two > things: session creation, start of action-render-cycle). But the situation > is IMHO desirable. I like to share the session between those calls I > probably just like to render a different component when invoked through the > /foo handler. > >>> > >>> I assembled a bad hack to prove my point. It is probably very stupid > but then I'm no seaside expert. > >>> > >>> foo > >>> > >>> > >>> | ctx cookie session url k | > >>> ctx := self requestContext. > >>> cookie := ctx request cookieAt: '_s'. > >>> cookie > >>> ifNotNil: [ > >>> session := self handler cache at: cookie value ] > >>> ifNil: [ > >>> session := self handler newSession. > >>> self handler register: session. > >>> self handler useCookies ifTrue: [ self handler > addCookieForHandler: session to: ctx ]. > >>> ctx request setCookies: (ctx request cookies > asOrderedCollection add: ctx response cookies first; yourself). > >>> ]. > >>> session properties > >>> at: #presenter put: MyOtherComponent new; > >>> yourself. > >>> self next handleFiltered: ctx > >>> > >>> For this work I needed to change WARenderLoopMain>>#start from > >>> > >>> start > >>> | root | > >>> root := self createRoot. > >>> self session properties at: #presenter put: root. > >>> self prepareRoot: root. > >>> ((self application preferenceAt: #renderPhaseContinuationClass) > new) captureAndInvoke > >>> > >>> to > >>> > >>> start > >>> | root | > >>> root := self session properties at: #presenter ifAbsentPut: [ > self createRoot ]. > >>> self prepareRoot: root. > >>> ((self application preferenceAt: #renderPhaseContinuationClass) > new) captureAndInvoke > >>> > >>> Basically it is straight forward. If the request handlers methods > would be slightly different the creation of a new session would be very > easy. The biggest problem is the injection of a newly created session. I > did it by forcing the added response cookie header into the request > header. That's for sure no solution. And I'm not quite sure if the setting > of the presenter this way is somewhat ok. > >>> > >>> What it really means is that there can be multiple entry points to a > session adding callbacks. At the moment I would use it to make a few things > more lazily accessible. But the bigger goals would be that it might be easy > to add url paths to seaside components without having to do everything in > initialRequest: And to the extreme it would open a possibility to add > seaside components to plain HTML pages. I did first tests where I have a > simple app that only needs the seaside power at certain points in > interaction. I have a simple plain HTML page with javascript that uses > seaside components for login and for data entry. But data retrieval is done > just via rest calls. I mean for the retrieval I wouldn't even need the > session information because the information is public and accesible to > anyone. > >>> > >>> What do you think? > >> > >> Let's see if you understood you right. You want to: > >> - render presenters (they're not really components since you can't > >> #call: and #anser:) without a session, eg. in a rest filter > >> - dynamically start a session & render loop from a component (that > >> you created in a rest filter or similar) > >> > > Yes, the latter being more important. I think rendering a component > isn't that hard. But having more than one entry to a session is (at the > moment). > > > > Norbert > > > > _______________________________________________ > > seaside mailing list > > seaside@lists.squeakfoundation.org > > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120514/149f251b/attachment-0001.htm From mark.smith at objectbynature.com Mon May 14 19:22:00 2012 From: mark.smith at objectbynature.com (Mark Smith) Date: Mon May 14 19:22:05 2012 Subject: [Seaside] Zinc Callback Limit Message-ID: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> Hi all, I realise that this might not be typical usage however I have an application with a lot of checkboxes, well over 100, and have run into a small problem using the ZnZincServerAdaptor. When the form is submitted, by clicking the submit button, the final callback isn't executed, and the server appears to drop the connection. The following reliably replicates the issue ? renderContentOn: html html form: [ (1 to: 256) do: [ :aNumber | html checkbox callback: [ :aValue | ]. html space; text: 'checkbox', aNumber asString; break ]. html submitButton callback: [ self inform: 'clicked' ]; value: 'click' ] Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. Unfortunately that's as far as I've got :). Does anyone have any suggestions? All the best, Mark From philippe.marschall at gmail.com Mon May 14 19:22:24 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 19:22:28 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> Message-ID: On Mon, May 14, 2012 at 2:43 PM, Lawrence Kellogg wrote: > > On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: > >> On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >>> Hello, >>> ? Do I need to do anything special to enable sending data for POST or PUT >>> requests to a WARequestHandler in Seaside? Something in nginx.conf? >>> GETs have been working fine for me. >>> >>> ? My client app is sending a POST, with data, but nginx shows no >>> data and the value in the dictionary fields shows nil for that entry. >>> Perhaps the POST should be a PUT, but still, I don't get any data. >>> >>> ? Also, is there some way to put a halt in a subclass of WARequestHandler >>> so that I can get a continuation that I can debug? Halts just seem to >>> throw a message to the log, but not pop up a continuation. >> >> Can you provide a bit more context? Are you on GemStone with FastCGI? >> > > ?Yes, I am on Gemstone using FastCGI. Hmm, I can remember some posts (pun) from Norbert about this. Cheers Philippe From philippe.marschall at gmail.com Mon May 14 19:26:55 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 19:26:58 2012 Subject: [Seaside] Zinc as static file server In-Reply-To: <4FAE9B29.1030902@gmail.com> References: <1334880829775-4572468.post@n4.nabble.com> <434EFC71-EE43-4C77-8F2F-BC0CA2661A61@beta9.be> <4F91F793.5090808@gmail.com> <4FADB58B.7010801@gmail.com> <0B498375-D0A1-43B0-A4B7-BCEA68D05CFC@beta9.be> <4FAE9B29.1030902@gmail.com> Message-ID: On Sat, May 12, 2012 at 7:17 PM, Paul DeBruicker wrote: > On 05/12/2012 12:52 AM, Sven Van Caekenberghe wrote: >> >> Thanks for the contribution (again). >> > > You're welcome. ?Thanks for doing the bulk of the work. > > > >> Yes, this is useful, having an expiration time per mime-type seems a bit >> heavy, but OK. >> > > I figured that since the mimeType had already been figured out in the > #responseForFileNamed: method to just use it. ?I'm happy for any revisions. > > >> BTW, we (or I) definitively need to add If-Modified-Since and 304 Not >> Modified behavior to ?ZnZincStaticServerAdaptor. >> > > OK. ?I added that to the version I just uploaded. > > >> And I know that you know, but let me repeat that in production situations >> you definitively have to let apache or nginx serve the statis files, to take >> load of Seaside. >> > > Yes definitely. > > >> Your hack in ZnSeasideStaticServerAdaptorDelegate>>#handleRequest: lets >> Seaside first try and make an error before you consider static file serving, >> this almost defeats the purpose of not doing it by Seaside itself. Just a >> hunch, I haven't tested or benchmarked this. >> > > Does Seaside have the ability to serve files from disk without loading them > into a WAFileLibrary? ?I couldn't figure that out, or gave up before trying > really. ?I edit all my CSS and JS in emacs and its a pain to reload after > saving/committing. ?And for my use case the performance is fine. You can write a request handler that writes on the response stream. Cheers Philippe From philippe.marschall at gmail.com Mon May 14 19:32:58 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 19:33:01 2012 Subject: [Seaside] Zinc Callback Limit In-Reply-To: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> References: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> Message-ID: On Mon, May 14, 2012 at 9:22 PM, Mark Smith wrote: > Hi all, > > I realise that this might not be typical usage however I have an application with a lot of checkboxes, well over 100, and have run into a small problem using the ZnZincServerAdaptor. When the form is submitted, by clicking the submit button, the final callback isn't executed, and the server appears to drop the connection. > > The following reliably replicates the issue ? > > renderContentOn: html > ? ? ? ?html form: [ > ? ? ? ? ? ? ? ?(1 to: 256) do: [ :aNumber | > ? ? ? ? ? ? ? ? ? ? ? ?html checkbox > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?callback: [ :aValue | ]. > ? ? ? ? ? ? ? ? ? ? ? ?html > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?space; > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?text: 'checkbox', aNumber asString; > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break ]. > ? ? ? ? ? ? ? ?html submitButton > ? ? ? ? ? ? ? ? ? ? ? ?callback: [ > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?self inform: 'clicked' ]; > ? ? ? ? ? ? ? ? ? ? ? ?value: 'click' ] > > Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. > > Unfortunately that's as far as I've got :). > > Does anyone have any suggestions? Can you check out http://127.0.0.1:8080/tests/functional/WALotsaLinksFunctionalTest Cheers Philippe From mac.hive at me.com Mon May 14 19:45:07 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Mon May 14 19:45:14 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> Message-ID: On May 14, 2012, at 3:22 PM, Philippe Marschall wrote: > On Mon, May 14, 2012 at 2:43 PM, Lawrence Kellogg wrote: >> >> On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: >> >>> On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >>>> Hello, >>>> Do I need to do anything special to enable sending data for POST or PUT >>>> requests to a WARequestHandler in Seaside? Something in nginx.conf? >>>> GETs have been working fine for me. >>>> >>>> My client app is sending a POST, with data, but nginx shows no >>>> data and the value in the dictionary fields shows nil for that entry. >>>> Perhaps the POST should be a PUT, but still, I don't get any data. >>>> >>>> Also, is there some way to put a halt in a subclass of WARequestHandler >>>> so that I can get a continuation that I can debug? Halts just seem to >>>> throw a message to the log, but not pop up a continuation. >>> >>> Can you provide a bit more context? Are you on GemStone with FastCGI? >>> >> >> Yes, I am on Gemstone using FastCGI. > > Hmm, I can remember some posts (pun) from Norbert about this. ;-) This one: http://forum.world.st/About-Zinc-to-replace-HTTPClient-td3453621.html ? > > Cheers > Philippe > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From sven at beta9.be Mon May 14 19:50:39 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Mon May 14 19:50:44 2012 Subject: [Seaside] Zinc Callback Limit In-Reply-To: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> References: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> Message-ID: <48F1DB0F-F563-44CD-8539-35E226197523@beta9.be> Hi Mark, On 14 May 2012, at 21:22, Mark Smith wrote: > Hi all, > > I realise that this might not be typical usage however I have an application with a lot of checkboxes, well over 100, and have run into a small problem using the ZnZincServerAdaptor. When the form is submitted, by clicking the submit button, the final callback isn't executed, and the server appears to drop the connection. > > The following reliably replicates the issue ? > > renderContentOn: html > html form: [ > (1 to: 256) do: [ :aNumber | > html checkbox > callback: [ :aValue | ]. > html > space; > text: 'checkbox', aNumber asString; > break ]. > html submitButton > callback: [ > self inform: 'clicked' ]; > value: 'click' ] > > Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. > > Unfortunately that's as far as I've got :). > > Does anyone have any suggestions? Yes, this is part of Zn server protecting itself against general resource overconsumption as well as against a well-known, recently discovered attack vector. This is hardcoded at ZnConstants class>>#maximumNumberOfDictionaryEntries to 256. You could overwrite it. In any case, you are the first one hitting the limit ;-) Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill From philippe.marschall at gmail.com Mon May 14 19:55:41 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 19:55:56 2012 Subject: [Seaside] Zinc Callback Limit In-Reply-To: <48F1DB0F-F563-44CD-8539-35E226197523@beta9.be> References: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> <48F1DB0F-F563-44CD-8539-35E226197523@beta9.be> Message-ID: On Mon, May 14, 2012 at 9:50 PM, Sven Van Caekenberghe wrote: > Hi Mark, > > On 14 May 2012, at 21:22, Mark Smith wrote: > >> Hi all, >> >> I realise that this might not be typical usage however I have an application with a lot of checkboxes, well over 100, and have run into a small problem using the ZnZincServerAdaptor. When the form is submitted, by clicking the submit button, the final callback isn't executed, and the server appears to drop the connection. >> >> The following reliably replicates the issue ? >> >> renderContentOn: html >> ? ? ? html form: [ >> ? ? ? ? ? ? ? (1 to: 256) do: [ :aNumber | >> ? ? ? ? ? ? ? ? ? ? ? html checkbox >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? callback: [ :aValue | ]. >> ? ? ? ? ? ? ? ? ? ? ? html >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? space; >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? text: 'checkbox', aNumber asString; >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break ]. >> ? ? ? ? ? ? ? html submitButton >> ? ? ? ? ? ? ? ? ? ? ? callback: [ >> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? self inform: 'clicked' ]; >> ? ? ? ? ? ? ? ? ? ? ? value: 'click' ] >> >> Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. >> >> Unfortunately that's as far as I've got :). >> >> Does anyone have any suggestions? > > Yes, this is part of Zn server protecting itself against general resource overconsumption as well as against a well-known, recently discovered attack vector. This is hardcoded at ZnConstants class>>#maximumNumberOfDictionaryEntries to 256. It's checkboxes, not links, I overlooked that at first. Makes sense now. Cheers Philippe From philippe.marschall at gmail.com Mon May 14 20:00:51 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Mon May 14 20:00:54 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: On Mon, May 14, 2012 at 8:30 PM, Julian Fitzell wrote: > I can't tell for sure, but this *sounds* like it's related to work I was > playing with at ESUG last year. There were two parts: > ?1) Making session continuations into request handlers. This is implemented > in the 3.1 repository. A new render loop can thus be easily started by > creating a new request handler and delegating to it or registering it in a > dispatcher or registry. I though about that too. But I haven't yet figured out the details. Should it be an application, a registry or something else? In which object should the request hander cache be an in which the REST methods? I guess we should experiment. Also, I'm a bit worried about our senders of #application :-( Cheers Philippe From pdebruic at gmail.com Mon May 14 20:18:54 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Mon May 14 20:19:01 2012 Subject: [Seaside] Zinc Callback Limit In-Reply-To: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> References: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> Message-ID: <4FB168AE.5090200@gmail.com> On 05/14/2012 12:22 PM, Mark Smith wrote: > Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. > > Unfortunately that's as far as I've got:). > > Does anyone have any suggestions? Other than increasing the limit like Sven suggests if you can use jQuery you could: 1. In your component create a callback dictionary in an inst var with a randomly chosen id # as the key and each checkbox's callback as the value. 2. Assign the id # as the html id for the checkbox. 3. Set a onclick handler on a div that contains the checkboxes that posts the callback id # when it is clicked and triggers just one callback in your seaside app. 4. have the container div callback in your seaside app lookup which checkbox callback to run from the dictionary in step 1 and run the checkbox callback. From mark.smith at objectbynature.com Mon May 14 20:49:20 2012 From: mark.smith at objectbynature.com (Mark Smith) Date: Mon May 14 20:49:24 2012 Subject: [Seaside] Zinc Callback Limit In-Reply-To: <48F1DB0F-F563-44CD-8539-35E226197523@beta9.be> References: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> <48F1DB0F-F563-44CD-8539-35E226197523@beta9.be> Message-ID: On 14 May 2012, at 20:50, Sven Van Caekenberghe wrote: > Hi Mark, > > On 14 May 2012, at 21:22, Mark Smith wrote: > >> Hi all, >> >> I realise that this might not be typical usage however I have an application with a lot of checkboxes, well over 100, and have run into a small problem using the ZnZincServerAdaptor. When the form is submitted, by clicking the submit button, the final callback isn't executed, and the server appears to drop the connection. >> >> The following reliably replicates the issue ? >> >> renderContentOn: html >> html form: [ >> (1 to: 256) do: [ :aNumber | >> html checkbox >> callback: [ :aValue | ]. >> html >> space; >> text: 'checkbox', aNumber asString; >> break ]. >> html submitButton >> callback: [ >> self inform: 'clicked' ]; >> value: 'click' ] >> >> Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. >> >> Unfortunately that's as far as I've got :). >> >> Does anyone have any suggestions? > > Yes, this is part of Zn server protecting itself against general resource overconsumption as well as against a well-known, recently discovered attack vector. This is hardcoded at ZnConstants class>>#maximumNumberOfDictionaryEntries to 256. Thanks Sven :). That makes a lot of sense. 256 seems like a good limit. > You could overwrite it. In any case, you are the first one hitting the limit ;-) When I have more time I might try to redesign the application so that it doesn't present quite so many checkboxes at one time ;). > Sven > > -- > Sven Van Caekenberghe > http://stfx.eu > Smalltalk is the Red Pill > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From mark.smith at objectbynature.com Mon May 14 20:51:45 2012 From: mark.smith at objectbynature.com (Mark Smith) Date: Mon May 14 20:51:51 2012 Subject: [Seaside] Zinc Callback Limit In-Reply-To: <4FB168AE.5090200@gmail.com> References: <857B44C6-1419-4B58-8203-9EF2ECA32246@objectbynature.com> <4FB168AE.5090200@gmail.com> Message-ID: <9D8C82C5-A4F6-49CA-A662-B8F298F09920@objectbynature.com> On 14 May 2012, at 21:18, Paul DeBruicker wrote: > On 05/14/2012 12:22 PM, Mark Smith wrote: >> Although the exact number of fields/callbacks needed seems to vary. I arrived at 256 by a binary search. >> >> Unfortunately that's as far as I've got:). >> >> Does anyone have any suggestions? > > Other than increasing the limit like Sven suggests if you can use jQuery you could: > > 1. In your component create a callback dictionary in an inst var with a randomly chosen id # as the key and each checkbox's callback as the value. > 2. Assign the id # as the html id for the checkbox. > 3. Set a onclick handler on a div that contains the checkboxes that posts the callback id # when it is clicked and triggers just one callback in your seaside app. > 4. have the container div callback in your seaside app lookup which checkbox callback to run from the dictionary in step 1 and run the checkbox callback. That seems like a good suggestion. I'll look into doing that :). Thanks. > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From norbert at hartl.name Mon May 14 21:57:43 2012 From: norbert at hartl.name (Norbert Hartl) Date: Mon May 14 21:57:47 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> Message-ID: <2BC1E81D-7304-4561-879C-C86725EAABC6@hartl.name> Am 14.05.2012 um 21:45 schrieb Lawrence Kellogg: > > On May 14, 2012, at 3:22 PM, Philippe Marschall wrote: > >> On Mon, May 14, 2012 at 2:43 PM, Lawrence Kellogg wrote: >>> >>> On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: >>> >>>> On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >>>>> Hello, >>>>> Do I need to do anything special to enable sending data for POST or PUT >>>>> requests to a WARequestHandler in Seaside? Something in nginx.conf? >>>>> GETs have been working fine for me. >>>>> >>>>> My client app is sending a POST, with data, but nginx shows no >>>>> data and the value in the dictionary fields shows nil for that entry. >>>>> Perhaps the POST should be a PUT, but still, I don't get any data. >>>>> >>>>> Also, is there some way to put a halt in a subclass of WARequestHandler >>>>> so that I can get a continuation that I can debug? Halts just seem to >>>>> throw a message to the log, but not pop up a continuation. >>>> >>>> Can you provide a bit more context? Are you on GemStone with FastCGI? >>>> >>> >>> Yes, I am on Gemstone using FastCGI. >> >> Hmm, I can remember some posts (pun) from Norbert about this. > > > ;-) This one: http://forum.world.st/About-Zinc-to-replace-HTTPClient-td3453621.html > > ? > :) Yes, it is a unfortunate postion at the moment. There is Kom, Swazoo and Hyper. Kom is really basic (and not existent in gemstone, but pharo). Swazoo and Hyper are more into "the real thing". But even swazoo and Hyper seriously lack support for most of the stuff. They support GET and also POST in a urlencoded fashion. That is everything seaside needs. If your needs are beyond that you're out of luck. To repeat my rant I would call it that they are overengineered for what they support working. There was good thinking in both of them as far as I can see but probably they are just unfinished. Zinc is different because it has full support for most things you really need. Zinc should be working in gemstone but I wasn't lucky to get it running reliably. Some more effort needs to be done. If you want to do POST then you should think if you can live with urlencoded data. That should work in any of the mentioned adaptors. Of course you want to just use the body but that's a no-go as far as I can tell. I don't like the situation and I don't like my free time only leaves enough space to complain (instead of just fixing it) but anyhow we need to get zinc running on gemstone. In pharo the situation is just wonderful and I did newer projects in pharo instead of gemstone because of that (and SSL). Sorry, for not being of any help here, Norbert > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From jfitzell at gmail.com Mon May 14 22:20:27 2012 From: jfitzell at gmail.com (Julian Fitzell) Date: Mon May 14 22:20:53 2012 Subject: [Seaside] Lowering the entry barrier for REST style access In-Reply-To: References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: On Mon, May 14, 2012 at 9:00 PM, Philippe Marschall < philippe.marschall@gmail.com> wrote: > On Mon, May 14, 2012 at 8:30 PM, Julian Fitzell > wrote: > > I can't tell for sure, but this *sounds* like it's related to work I was > > playing with at ESUG last year. There were two parts: > > 1) Making session continuations into request handlers. This is > implemented > > in the 3.1 repository. A new render loop can thus be easily started by > > creating a new request handler and delegating to it or registering it in > a > > dispatcher or registry. > > I though about that too. But I haven't yet figured out the details. > Should it be an application, a registry or something else? In which > object should the request hander cache be an in which the REST > methods? I guess we should experiment. > > Also, I'm a bit worried about our senders of #application :-( > How so? (apologies, the details of the change are fuzzy at the moment, but I thought the impacts were pretty minor) -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120514/e45ec3ba/attachment.htm From mac.hive at me.com Mon May 14 23:22:47 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Mon May 14 23:22:52 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: <2BC1E81D-7304-4561-879C-C86725EAABC6@hartl.name> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> <2BC1E81D-7304-4561-879C-C86725EAABC6@hartl.name> Message-ID: <9F31BB4B-ACD9-4866-BAB8-D945FE520556@me.com> On May 14, 2012, at 5:57 PM, Norbert Hartl wrote: > > Am 14.05.2012 um 21:45 schrieb Lawrence Kellogg: > >> >> On May 14, 2012, at 3:22 PM, Philippe Marschall wrote: >> >>> On Mon, May 14, 2012 at 2:43 PM, Lawrence Kellogg wrote: >>>> >>>> On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: >>>> >>>>> On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >>>>>> Hello, >>>>>> Do I need to do anything special to enable sending data for POST or PUT >>>>>> requests to a WARequestHandler in Seaside? Something in nginx.conf? >>>>>> GETs have been working fine for me. >>>>>> >>>>>> My client app is sending a POST, with data, but nginx shows no >>>>>> data and the value in the dictionary fields shows nil for that entry. >>>>>> Perhaps the POST should be a PUT, but still, I don't get any data. >>>>>> >>>>>> Also, is there some way to put a halt in a subclass of WARequestHandler >>>>>> so that I can get a continuation that I can debug? Halts just seem to >>>>>> throw a message to the log, but not pop up a continuation. >>>>> >>>>> Can you provide a bit more context? Are you on GemStone with FastCGI? >>>>> >>>> >>>> Yes, I am on Gemstone using FastCGI. >>> >>> Hmm, I can remember some posts (pun) from Norbert about this. >> >> >> ;-) This one: http://forum.world.st/About-Zinc-to-replace-HTTPClient-td3453621.html >> >> ? >> > :) Yes, it is a unfortunate postion at the moment. There is Kom, Swazoo and Hyper. Kom is really basic (and not existent in gemstone, but pharo). Swazoo and Hyper are more into "the real thing". But even swazoo and Hyper seriously lack support for most of the stuff. They support GET and also POST in a urlencoded fashion. That is everything seaside needs. If your needs are beyond that you're out of luck. To repeat my rant I would call it that they are overengineered for what they support working. There was good thinking in both of them as far as I can see but probably they are just unfinished. Zinc is different because it has full support for most things you really need. Zinc should be working in gemstone but I wasn't lucky to get it running reliably. Some more effort needs to be done. > If you want to do POST then you should think if you can live with urlencoded data. That should work in any of the mentioned adaptors. Of course you want to just use the body but that's a no-go as far as I can tell. > I don't like the situation and I don't like my free time only leaves enough space to complain (instead of just fixing it) but anyhow we need to get zinc running on gemstone. In pharo the situation is just wonderful and I did newer projects in pharo instead of gemstone because of that (and SSL). > > Sorry, for not being of any help here, > Norbert, Thanks for your perspective. Well, we got it working this afternoon so that we could pass in a JSON string and parse it. I was just a little confused with how to access the fields in the WARequest, but I finally figured it out. It's too bad that putting a halt in the handleFIltered: method does not pop a continuation. Is there some way to make that happen? Subclasses of WAComponent spin off a continuation when they hit a halt, So, I think I have what I need to go forward, unless I'm missing something. Regards, Larry > Norbert > >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From norbert at hartl.name Tue May 15 08:31:03 2012 From: norbert at hartl.name (Norbert Hartl) Date: Tue May 15 08:31:06 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: <9F31BB4B-ACD9-4866-BAB8-D945FE520556@me.com> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> <2BC1E81D-7304-4561-879C-C86725EAABC6@hartl.name> <9F31BB4B-ACD9-4866-BAB8-D945FE520556@me.com> Message-ID: <5FD139AE-BBBE-40B7-B654-8EA0D4A0E4F2@hartl.name> Am 15.05.2012 um 01:22 schrieb Lawrence Kellogg: > > On May 14, 2012, at 5:57 PM, Norbert Hartl wrote: > >> >> Am 14.05.2012 um 21:45 schrieb Lawrence Kellogg: >> >>> >>> On May 14, 2012, at 3:22 PM, Philippe Marschall wrote: >>> >>>> On Mon, May 14, 2012 at 2:43 PM, Lawrence Kellogg wrote: >>>>> >>>>> On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: >>>>> >>>>>> On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >>>>>>> Hello, >>>>>>> Do I need to do anything special to enable sending data for POST or PUT >>>>>>> requests to a WARequestHandler in Seaside? Something in nginx.conf? >>>>>>> GETs have been working fine for me. >>>>>>> >>>>>>> My client app is sending a POST, with data, but nginx shows no >>>>>>> data and the value in the dictionary fields shows nil for that entry. >>>>>>> Perhaps the POST should be a PUT, but still, I don't get any data. >>>>>>> >>>>>>> Also, is there some way to put a halt in a subclass of WARequestHandler >>>>>>> so that I can get a continuation that I can debug? Halts just seem to >>>>>>> throw a message to the log, but not pop up a continuation. >>>>>> >>>>>> Can you provide a bit more context? Are you on GemStone with FastCGI? >>>>>> >>>>> >>>>> Yes, I am on Gemstone using FastCGI. >>>> >>>> Hmm, I can remember some posts (pun) from Norbert about this. >>> >>> >>> ;-) This one: http://forum.world.st/About-Zinc-to-replace-HTTPClient-td3453621.html >>> >>> ? >>> >> :) Yes, it is a unfortunate postion at the moment. There is Kom, Swazoo and Hyper. Kom is really basic (and not existent in gemstone, but pharo). Swazoo and Hyper are more into "the real thing". But even swazoo and Hyper seriously lack support for most of the stuff. They support GET and also POST in a urlencoded fashion. That is everything seaside needs. If your needs are beyond that you're out of luck. To repeat my rant I would call it that they are overengineered for what they support working. There was good thinking in both of them as far as I can see but probably they are just unfinished. Zinc is different because it has full support for most things you really need. Zinc should be working in gemstone but I wasn't lucky to get it running reliably. Some more effort needs to be done. >> If you want to do POST then you should think if you can live with urlencoded data. That should work in any of the mentioned adaptors. Of course you want to just use the body but that's a no-go as far as I can tell. >> I don't like the situation and I don't like my free time only leaves enough space to complain (instead of just fixing it) but anyhow we need to get zinc running on gemstone. In pharo the situation is just wonderful and I did newer projects in pharo instead of gemstone because of that (and SSL). >> >> Sorry, for not being of any help here, >> > > > Norbert, > Thanks for your perspective. Well, we got it working this afternoon so that we could pass in a JSON string and parse it. > I was just a little confused with how to access the fields in the WARequest, but I finally figured it out. It's too bad that > putting a halt in the handleFIltered: method does not pop a continuation. Is there some way to make that happen? > Subclasses of WAComponent spin off a continuation when they hit a halt, > > So, I think I have what I need to go forward, unless I'm missing something. > Uhh, I need to roll back a bit. I shouldn't write mails when I'm coming from the Biergarten being extremely tired.:) Basically it is true what I said about the usability of most of the adaptors. But there is certainly more possible then I said. I'm using fastcgi on gemstone and I'm also using the body and multipart data for uploads. The body I request via self requestContext request bodyDecoded and multipart files via self requestContext request postFields at: aString in the latter you need to check if you get a string or a WAFile. And you need to decode manually Norbert From mac.hive at me.com Tue May 15 10:28:30 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Tue May 15 10:28:34 2012 Subject: [Seaside] Sending data through POST or PUT, with nginx In-Reply-To: <5FD139AE-BBBE-40B7-B654-8EA0D4A0E4F2@hartl.name> References: <4FA7FCB4.20100@gmail.com> <0110B47C-D1C1-40B3-9394-E1716D999052@tiscali.it> <2E966AF5-F513-43E7-AF2F-E87D80D9C5B0@me.com> <391F3D55-E900-489A-A8F7-23F1637E4095@me.com> <4FAE8EA7.5060104@gmail.com> <147EF8E2-5227-4C1B-BD82-BBFA5E3A507B@me.com> <2BC1E81D-7304-4561-879C-C86725EAABC6@hartl.name> <9F31BB4B-ACD9-4866-BAB8-D945FE520556@me.com> <5FD139AE-BBBE-40B7-B654-8EA0D4A0E4F2@hartl.name> Message-ID: <277DFC64-3E75-4EE0-954E-951398373ADD@me.com> On May 15, 2012, at 4:31 AM, Norbert Hartl wrote: > > Am 15.05.2012 um 01:22 schrieb Lawrence Kellogg: > >> >> On May 14, 2012, at 5:57 PM, Norbert Hartl wrote: >> >>> >>> Am 14.05.2012 um 21:45 schrieb Lawrence Kellogg: >>> >>>> >>>> On May 14, 2012, at 3:22 PM, Philippe Marschall wrote: >>>> >>>>> On Mon, May 14, 2012 at 2:43 PM, Lawrence Kellogg wrote: >>>>>> >>>>>> On May 14, 2012, at 8:38 AM, Philippe Marschall wrote: >>>>>> >>>>>>> On Mon, May 14, 2012 at 1:03 PM, Lawrence Kellogg wrote: >>>>>>>> Hello, >>>>>>>> Do I need to do anything special to enable sending data for POST or PUT >>>>>>>> requests to a WARequestHandler in Seaside? Something in nginx.conf? >>>>>>>> GETs have been working fine for me. >>>>>>>> >>>>>>>> My client app is sending a POST, with data, but nginx shows no >>>>>>>> data and the value in the dictionary fields shows nil for that entry. >>>>>>>> Perhaps the POST should be a PUT, but still, I don't get any data. >>>>>>>> >>>>>>>> Also, is there some way to put a halt in a subclass of WARequestHandler >>>>>>>> so that I can get a continuation that I can debug? Halts just seem to >>>>>>>> throw a message to the log, but not pop up a continuation. >>>>>>> >>>>>>> Can you provide a bit more context? Are you on GemStone with FastCGI? >>>>>>> >>>>>> >>>>>> Yes, I am on Gemstone using FastCGI. >>>>> >>>>> Hmm, I can remember some posts (pun) from Norbert about this. >>>> >>>> >>>> ;-) This one: http://forum.world.st/About-Zinc-to-replace-HTTPClient-td3453621.html >>>> >>>> ? >>>> >>> :) Yes, it is a unfortunate postion at the moment. There is Kom, Swazoo and Hyper. Kom is really basic (and not existent in gemstone, but pharo). Swazoo and Hyper are more into "the real thing". But even swazoo and Hyper seriously lack support for most of the stuff. They support GET and also POST in a urlencoded fashion. That is everything seaside needs. If your needs are beyond that you're out of luck. To repeat my rant I would call it that they are overengineered for what they support working. There was good thinking in both of them as far as I can see but probably they are just unfinished. Zinc is different because it has full support for most things you really need. Zinc should be working in gemstone but I wasn't lucky to get it running reliably. Some more effort needs to be done. >>> If you want to do POST then you should think if you can live with urlencoded data. That should work in any of the mentioned adaptors. Of course you want to just use the body but that's a no-go as far as I can tell. >>> I don't like the situation and I don't like my free time only leaves enough space to complain (instead of just fixing it) but anyhow we need to get zinc running on gemstone. In pharo the situation is just wonderful and I did newer projects in pharo instead of gemstone because of that (and SSL). >>> >>> Sorry, for not being of any help here, >>> >> >> >> Norbert, >> Thanks for your perspective. Well, we got it working this afternoon so that we could pass in a JSON string and parse it. >> I was just a little confused with how to access the fields in the WARequest, but I finally figured it out. It's too bad that >> putting a halt in the handleFIltered: method does not pop a continuation. Is there some way to make that happen? >> Subclasses of WAComponent spin off a continuation when they hit a halt, >> >> So, I think I have what I need to go forward, unless I'm missing something. >> > Uhh, I need to roll back a bit. I shouldn't write mails when I'm coming from the Biergarten being extremely tired.:) Basically it is true what I said about the usability of most of the adaptors. But there is certainly more possible then I said. I'm using fastcgi on gemstone and I'm also using the body and multipart data for uploads. > > The body I request via > > self requestContext request bodyDecoded > > and multipart files via > > self requestContext request postFields at: aString > > in the latter you need to check if you get a string or a WAFile. And you need to decode manually > Ah, body decoded, I'll try that. Right now, I am using aRequestContext request fields at: 'key' to get the JSON string. Works ok. I realize that the fields is a WAMergedFields object so I should probably just use postFields. Any idea why I can't debug a subclass of a WARequestHandler? That problem is slowing me down. I used to work in Germany. Every Friday, all of us would go out to the Biergarten. If the boss had just one beer, we would too, and would then go back and work for a few more hours. If the boss had two beers, we were pretty much done for the day. ;-) Larry > Norbert > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From norbert at hartl.name Wed May 16 16:16:55 2012 From: norbert at hartl.name (Norbert Hartl) Date: Wed May 16 16:17:02 2012 Subject: [Seaside] Render into a separate document while sharing context Message-ID: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> I'm doing a page at the moment that contains a google map. On the html page there is a list with all entries and on the map there are the markers on the geo position. To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. thanks, Norbert From mac.hive at me.com Wed May 16 16:41:56 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Wed May 16 16:42:29 2012 Subject: [Seaside] Natural language translation In-Reply-To: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> Message-ID: <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> So, I would like to translate my Seaside site into French and Spanish. I probably should have kept all of the text in one place for easy translation, but that didn't happen. :-) Is there some place I can hook into the Seaside rendering cycle so as to lookup text strings in a dictionary and substitute the translated string? Regards, Larry From boris at deepcovelabs.com Wed May 16 16:52:20 2012 From: boris at deepcovelabs.com (Boris Popov, DeepCove Labs) Date: Wed May 16 16:52:30 2012 Subject: [Seaside] Natural language translation In-Reply-To: <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> Message-ID: Lawrence, In VisualWorks you can use message catalogs to do the translation of UserMessage instances during rendering depending on the locale of the session, (html label) for: 'form-company'; with: #Company << #raven en.lbl encoding: #UTF_8 catalog: #raven cacheSize: 500 Company='Company' fr.lbl encoding: #UTF_8 catalog: #raven cacheSize: 500 Company='Entreprise' de.lbl encoding: #UTF_8 catalog: #raven cacheSize: 500 Company='Firma' HTH, -Boris -----Original Message----- From: seaside-bounces@lists.squeakfoundation.org [mailto:seaside-bounces@lists.squeakfoundation.org] On Behalf Of Lawrence Kellogg Sent: Wednesday, May 16, 2012 12:42 PM To: Seaside - general discussion Subject: [Seaside] Natural language translation So, I would like to translate my Seaside site into French and Spanish. I probably should have kept all of the text in one place for easy translation, but that didn't happen. :-) Is there some place I can hook into the Seaside rendering cycle so as to lookup text strings in a dictionary and substitute the translated string? Regards, Larry _______________________________________________ seaside mailing list seaside@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From boris at deepcovelabs.com Wed May 16 16:54:21 2012 From: boris at deepcovelabs.com (Boris Popov, DeepCove Labs) Date: Wed May 16 16:54:29 2012 Subject: [Seaside] Natural language translation In-Reply-To: References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name><560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> Message-ID: As a hack, you could try doing this in String>>renderOn: as well. -Boris -----Original Message----- From: seaside-bounces@lists.squeakfoundation.org [mailto:seaside-bounces@lists.squeakfoundation.org] On Behalf Of Boris Popov, DeepCove Labs Sent: Wednesday, May 16, 2012 12:52 PM To: Seaside - general discussion Subject: RE: [Seaside] Natural language translation Lawrence, In VisualWorks you can use message catalogs to do the translation of UserMessage instances during rendering depending on the locale of the session, (html label) for: 'form-company'; with: #Company << #raven en.lbl encoding: #UTF_8 catalog: #raven cacheSize: 500 Company='Company' fr.lbl encoding: #UTF_8 catalog: #raven cacheSize: 500 Company='Entreprise' de.lbl encoding: #UTF_8 catalog: #raven cacheSize: 500 Company='Firma' HTH, -Boris -----Original Message----- From: seaside-bounces@lists.squeakfoundation.org [mailto:seaside-bounces@lists.squeakfoundation.org] On Behalf Of Lawrence Kellogg Sent: Wednesday, May 16, 2012 12:42 PM To: Seaside - general discussion Subject: [Seaside] Natural language translation So, I would like to translate my Seaside site into French and Spanish. I probably should have kept all of the text in one place for easy translation, but that didn't happen. :-) Is there some place I can hook into the Seaside rendering cycle so as to lookup text strings in a dictionary and substitute the translated string? Regards, Larry _______________________________________________ seaside mailing list seaside@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside _______________________________________________ seaside mailing list seaside@lists.squeakfoundation.org http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From mac.hive at me.com Wed May 16 16:56:59 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Wed May 16 16:57:12 2012 Subject: [Seaside] Natural language translation In-Reply-To: References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> Message-ID: Thanks, Boris, that's exactly what I need. Unfortunately, I'm on Pharo. Maybe I can write something similar on my own. Larry Sent from my iPhone On May 16, 2012, at 12:52 PM, "Boris Popov, DeepCove Labs" wrote: > Lawrence, > > In VisualWorks you can use message catalogs to do the translation of > UserMessage instances during rendering depending on the locale of the > session, > > (html label) > for: 'form-company'; > with: #Company << #raven > > en.lbl > encoding: #UTF_8 > catalog: #raven > cacheSize: 500 > Company='Company' > > fr.lbl > encoding: #UTF_8 > catalog: #raven > cacheSize: 500 > Company='Entreprise' > > de.lbl > encoding: #UTF_8 > catalog: #raven > cacheSize: 500 > Company='Firma' > > HTH, > > -Boris > > -----Original Message----- > From: seaside-bounces@lists.squeakfoundation.org > [mailto:seaside-bounces@lists.squeakfoundation.org] On Behalf Of > Lawrence Kellogg > Sent: Wednesday, May 16, 2012 12:42 PM > To: Seaside - general discussion > Subject: [Seaside] Natural language translation > > So, I would like to translate my Seaside site into French and Spanish. > I probably should have kept all of the text in one place for easy > translation, but that didn't happen. :-) > > Is there some place I can hook into the Seaside rendering cycle so as > to lookup text strings in a dictionary and substitute the translated > string? > > Regards, > > Larry > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From yanni at rogers.com Wed May 16 17:02:03 2012 From: yanni at rogers.com (Yanni Chiu) Date: Wed May 16 17:02:17 2012 Subject: [Seaside] Re: Natural language translation In-Reply-To: References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> Message-ID: On 16/05/12 12:56 PM, Lawrence Kellogg wrote: > Thanks, Boris, that's exactly what I need. Unfortunately, I'm on Pharo. > > Maybe I can write something similar on my own. Pharo/Squeak has had a multi-language framework for years. Look at implementers of #translated, which should lead you to the class NaturalLanguageTranslator. From tulipe.moutarde at gmail.com Wed May 16 17:08:15 2012 From: tulipe.moutarde at gmail.com (Francois Stephany) Date: Wed May 16 17:08:21 2012 Subject: [Seaside] Re: Natural language translation In-Reply-To: References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> Message-ID: <4FB3DEFF.60103@gmail.com> There is also the GetText package which can work with Seaside. Sebastian wrote a blog post about a custom solution: http://blog.flowingconcept.com/brandIt/multiligual-web-applications-design-ala-smalltalk On 16/05/12 10:02, Yanni Chiu wrote: > On 16/05/12 12:56 PM, Lawrence Kellogg wrote: >> Thanks, Boris, that's exactly what I need. Unfortunately, I'm on Pharo. >> >> Maybe I can write something similar on my own. > > Pharo/Squeak has had a multi-language framework for years. > > Look at implementers of #translated, which should lead you to the class > NaturalLanguageTranslator. > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -- http://tulipemoutarde.be CA: +1 778 558 3225 BE: +32 65 709 131 From mac.hive at me.com Wed May 16 17:39:39 2012 From: mac.hive at me.com (Lawrence Kellogg) Date: Wed May 16 18:15:32 2012 Subject: [Seaside] Re: Natural language translation In-Reply-To: <4FB3DEFF.60103@gmail.com> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <560CA6ED-15CF-4A12-AEFB-6F7480D3C310@me.com> <4FB3DEFF.60103@gmail.com> Message-ID: Thanks, Stephane and Yanni, I'll check it out. Larry Sent from my iPhone On May 16, 2012, at 1:08 PM, Francois Stephany wrote: > There is also the GetText package which can work with Seaside. > > Sebastian wrote a blog post about a custom solution: > http://blog.flowingconcept.com/brandIt/multiligual-web-applications-design-ala-smalltalk > > > On 16/05/12 10:02, Yanni Chiu wrote: >> On 16/05/12 12:56 PM, Lawrence Kellogg wrote: >>> Thanks, Boris, that's exactly what I need. Unfortunately, I'm on Pharo. >>> >>> Maybe I can write something similar on my own. >> >> Pharo/Squeak has had a multi-language framework for years. >> >> Look at implementers of #translated, which should lead you to the class >> NaturalLanguageTranslator. >> >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > -- > http://tulipemoutarde.be > CA: +1 778 558 3225 > BE: +32 65 709 131 > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From pdebruic at gmail.com Wed May 16 18:50:45 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Wed May 16 18:50:51 2012 Subject: [Seaside] Render into a separate document while sharing context In-Reply-To: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> Message-ID: <4FB3F705.9010000@gmail.com> On 05/16/2012 09:16 AM, Norbert Hartl wrote: > To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. > > Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. > > thanks, > > Norbert____ Could you do something like what I suggested in the Zinc Callback Limit thread a few days ago? http://forum.world.st/Zinc-Callback-Limit-tp4630181p4630195.html From norbert at hartl.name Thu May 17 09:32:24 2012 From: norbert at hartl.name (Norbert Hartl) Date: Thu May 17 09:32:34 2012 Subject: [Seaside] Render into a separate document while sharing context In-Reply-To: <4FB3F705.9010000@gmail.com> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <4FB3F705.9010000@gmail.com> Message-ID: <261A1A73-42F1-4F6D-9F8E-149A8D5AB717@hartl.name> Am 16.05.2012 um 20:50 schrieb Paul DeBruicker: > On 05/16/2012 09:16 AM, Norbert Hartl wrote: >> To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. >> >> Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. >> >> thanks, >> >> Norbert____ > > > Could you do something like what I suggested in the Zinc Callback Limit thread a few days ago? > > http://forum.world.st/Zinc-Callback-Limit-tp4630181p4630195.html I don't think so. You are tunneling virtual callbacks over one real callback. But that one real callback you need to draw in this canvas. My problem is the place where the rendered string should be drawn. Basically I have ... "this is anchor1" html anchor onClick: (html jQuery ajax ...) with: 'foo'. html script: (JSStream on: ' var aMarker = new google.maps.Marker({ position: new google.maps.LatLng(marker.lat, marker.lon), map: map }); google.maps.event.addListener(aMarker, "click", clickedMarker); aMarker.info = new google.maps.InfoWindow({ content: 'foo' }); '. ... So I have anchor1 that is rendered on the canvas. Then I need to render a script on that canvas that creates a marker on a map. If you look at the "content: ' References: <9AE5B1D1-92D2-45AF-9411-7A0DD9BA53A8@hartl.name> <20178913-DCCF-4005-A91E-8D224F78BDD6@hartl.name> Message-ID: On Tue, May 15, 2012 at 12:20 AM, Julian Fitzell wrote: > On Mon, May 14, 2012 at 9:00 PM, Philippe Marschall > wrote: >> >> On Mon, May 14, 2012 at 8:30 PM, Julian Fitzell >> wrote: >> > I can't tell for sure, but this *sounds* like it's related to work I was >> > playing with at ESUG last year. There were two parts: >> > ?1) Making session continuations into request handlers. This is >> > implemented >> > in the 3.1 repository. A new render loop can thus be easily started by >> > creating a new request handler and delegating to it or registering it in >> > a >> > dispatcher or registry. >> >> I though about that too. But I haven't yet figured out the details. >> Should it be an application, a registry or something else? In which >> object should the request hander cache be an in which the REST >> methods? I guess we should experiment. >> >> Also, I'm a bit worried about our senders of #application :-( > > > How so? (apologies, the details of the change are fuzzy at the moment, but I > thought the impacts were pretty minor) There are various places where we access the application configuration by sending #application. For example GRPlatform >> #seasideHandlerPreferenceAt:ifAbsent: Cheers Philippe From marianopeck at gmail.com Thu May 17 13:13:30 2012 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Thu May 17 13:13:50 2012 Subject: [Seaside] Re: [Metacello] collecting all packages of a configuration In-Reply-To: <1865241089.3742665.1336925064017.JavaMail.root@zimbra-prod-mbox-2.vmware.com> References: <1865241089.3742665.1336925064017.JavaMail.root@zimbra-prod-mbox-2.vmware.com> Message-ID: Hi Dale. Now I was a little bit more sucessful. But still, I have a problem during the initialization of classes. More precisily in: WAWalkbackErrorHandler class >> initialize WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler put: self I get a WAAttributeNotFound with #exceptionHandler ... what I do is I follow the order of packages as Metacello answered me, and then I do something like: (packageNames collect: [:each | PackageInfo named: each]) do: [:aPackage | "We should not send #initialize to traits" ((aPackage classes select: [:each | each isBehavior]) sort: [:a :b | a allSuperclasses size < b allSuperclasses size ]) do: [:aClass | Transcript show: 'Initializing class named: ', aClass name; cr. aClass initializeOnLoad] ]. ] I have debugged a little bit and it looks like WAAdmin applicationExceptionHandlingDefaults allAttributes -> an IdentityDictionary() WAAdmin applicationExceptionHandlingDefaults ancestors -> an IdentitySet() so something is not good. I saw your issue http://code.google.com/p/seaside/issues/detail?id=643 but evaluating (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each | each instance perform: #clearSearchContexts. each instance perform: #clearDescription ]. did not help. Any ideas? thanks On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs wrote: > Mariano, > > I've said it before and I'll say it again ... I'd rather have noise than > real problems go unreported ... > > Thanks for taking the time to characterize the problem in detail... > > Dale > > ----- Original Message ----- > | From: "Mariano Martinez Peck" > | To: metacello@googlegroups.com > | Sent: Sunday, May 13, 2012 8:39:52 AM > | Subject: Re: [Metacello] collecting all packages of a configuration > | > | > | > | > | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < dhenrich@vmware.com > | > wrote: > | > | > | Mariano, > | > | The loadDirectives are actually used for the Metacello load, so you > | are getting the load order from the horse's mouth... > | > | Seaside-Core is one of the first packages that needs to be loaded so > | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... > | > | WARegistry class is in Seaside-Core, but the method WARegistry > | class>>#clearAllHandlers is actually in the Seaside-Tools-Core > | package (*seaside-tools-core) so everything is consistent... > | > | > | hehehehehe interesting....you discovered a bad side effect of my > | experiment ;) sorry, I though I was checking in a "clean" image but > | a bad side effect of my experiment changed the category for > | extension methods. So...indeed, you are right and the method I have > | is that I need. > | > | Thanks Dale and sorry for the noise. > | > | > | > | > | Dale > | > | ----- Original Message ----- > | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > > | | To: metacello@googlegroups.com > | > | > | | Sent: Sunday, May 13, 2012 6:50:18 AM > | | Subject: Re: [Metacello] collecting all packages of a configuration > | | > | | Hi Dale. For a different purpose, I need again something related to > | | this. > | | What I actually need is to ask Metacello the list of packages I > | | need > | | when I do load: xxx SORTED by the load order. I mean, I want they > | | to > | | be sorted in the way that those that need to be loaded first go > | | first. > | | > | | Take this example. I have download seaside this way: > | | > | | > | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: > | | #stable) > | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' > | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' > | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' > | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' > | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' > | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' > | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' > | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' > | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' > | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' > | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' > | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' > | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' > | | ). > | | > | | But those pacakages/groups have another dependencies etc etc. So I > | | am > | | using this to query: > | | > | | | pkgs loader | > | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project > | | version: > | | ' 3.0.6.3 ') > | | ignoreImage: true; > | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' > | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' > | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' > | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' > | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' > | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' > | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' > | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' > | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' > | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' > | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' > | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' > | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' > | | ). > | | pkgs := OrderedCollection new. > | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: > | | directive spec name ]. > | | ^ pkgs > | | > | | > | | It loooks like if that would answer the list of packages in load > | | order, but this is not true. If you inspect that, you obtain this: > | | > | | an OrderedCollection('ConfigurationOfGrease' > | | 'ConfigurationOfGrease' > | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' > | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' 'Grease-Pharo-Core' > | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' > | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' > | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' > | | 'Javascript-Core' > | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' > | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' > | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' > | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' > | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' > | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' 'Seaside-Environment' > | | 'Seaside-Pharo-Environment' 'Seaside-Development' > | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' > | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' > | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' > | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' 'RSS-Tests-Core' > | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' > | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' > | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' > | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' 'Prototype-Tests-Core' > | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' > | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' > | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' > | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' > | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' > | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' > | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' > | | 'Seaside-Pharo-Development') > | | > | | As you can see, for example, 'Seaside-Tools-Core' is AFTER > | | 'Seaside-Core'. Right? However, for example, WARegistry >> > | | #clearAllHandlers (package 'Seaside-Core') has references to > | | WAAdmin > | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' > | | actually loaded before 'Seaside-Core'? if true, how can I query > | | that > | | to Metacello. If false, why don't you get the ugly Monticello popup > | | saying you that you have dependencies on ... > | | > | | Thanks! > | | > | | > | | > | | > | | > | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < dhenrich@vmware.com > | | > > | | wrote: > | | > | | > | | Mariano, > | | > | | Regarding your complaint about having the OmniBrowser packages show > | | up when you are using the #loadDirective based variant. The 'Core' > | | group for Seaside includes Seaside-Tools-OmniBrowser, so when you > | | load the 'Core' group OmniBrowser is a required package. You are > | | sitting in a Pharo image that already has OmniBrowser loaded, so > | | when you load Seaside30 you don't see the OB packages getting > | | loaded. However, in the #loadDirective variant, you are using > | | #ignoreImage: and when Metacello ignores the image, it ignores the > | | fact that OB is already loaded as well ... If you want to know what > | | would be loaded into the current image, then don't set #ignoreImage > | | to true ... the OmniBrowser packages and any other packages that > | | are > | | already loaded won't show up ... > | | > | | If there is a set of configs that you would like to > | | include/exclude, > | | then a more complex load directive algorithm can be used... > | | > | | Regarding the duplication of packages, I would say that since you > | | are > | | only interested in the list of packages that would be loaded, you > | | can safely ignore the duplicates. > | | > | | Regarding the inclusion of the ConfigurationOfXXX files, > | | technically, > | | those files are needed for a load. No version information is > | | associated with the configuration file, because config files always > | | have their latest available version loaded ... If you want to > | | filter > | | those files out, then there is a more complex loadDirective > | | traversal algorithm you could use, or you can filter out the > | | configs > | | with #beginsWith:... > | | > | | > | | Dale > | | > | | ----- Original Message ----- > | | > | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > > | | | To: metacello@googlegroups.com > | | | Sent: Saturday, December 3, 2011 4:27:13 PM > | | > | | > | | | Subject: Re: [Metacello] collecting all packages of a > | | | configuration > | | | > | | | > | | | > | | | > | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < > | | | dhenrich@vmware.com > | | | > wrote: > | | | > | | | > | | | Jannik, > | | | > | | | There are two routes you can take to answer your question. > | | | Firstly, > | | | you can directly query the version itself: > | | | > | | | ((ConfigurationOfMetacello project currentVersion) > | | | allPackagesForSpecNamed: 'ALL') > | | | collect: [:spec | spec file ]. > | | | > | | | Or you can use #record: and then collect the information you > | | | want: > | | | > | | | | pkgs loader | > | | | loader := (ConfigurationOfMetacello project currentVersion) > | | | ignoreImage: true; > | | | record: 'ALL'. > | | | pkgs := OrderedCollection new. > | | | loader loadDirective packageDirectivesDo: [:directive |pkgs add: > | | | directive spec file ]. > | | | pkgs. > | | | > | | | > | | | > | | | Hi Dale. I have notice that both ways are different. For example, > | | | the > | | | first one does not take into account those ConfigurationOfXXX > | | | packages, whereas the second one does. Moreoever, in the second > | | | one, > | | | I see that there are repetitions. For example: > | | | > | | | | pkgs loader | > | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project > | | | version: > | | | ' 3.0.6.3 ') > | | | ignoreImage: true; > | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). > | | | pkgs := OrderedCollection new. > | | | loader loadDirective packageDirectivesDo: [:directive |pkgs add: > | | | directive spec file ]. > | | | pkgs. > | | | > | | | size gives me 127, but asSet size, 106. It seems some packages > | | | appear > | | | more than once like ConfigurationOfGrease. > | | | > | | | ConfigurationOfXXX do not have version number in their name, but > | | | the > | | | rest do have. > | | | > | | | Now, the main problem is that none of them is what I need: I need > | | | ALL > | | | the required packages that are needed to load such project with > | | | metacello. I want to capture the exact list of packages needed > | | | when > | | | I do, for example: > | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: > | | | ' 3.0.6.3 ') > | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). > | | | > | | | The first one doesn't even take into account ConfigurationOfXX, > | | | so > | | | it > | | | doesn't help me. The second one, not only has repetitions, but > | | | also > | | | it lists packages that I really don't need. For example, > | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I don't > | | | understand how those packages arrived to the list. If I take a > | | | clean > | | | image, and install Seaside with the way I showed you, those > | | | packages > | | | are not even downloaded. So why do they appear here? > | | | > | | | So...all in all, what I need is a list of the exact packages I > | | | need > | | | to reproduce something I have loaded with Metacello. In other > | | | words, > | | | if I start an image with an empty package-cache, and execute the > | | | load of seaside, how can I know the list of packages that were > | | | downloaded? of course, not inspecting the package-cache ;) > | | | > | | | Thanks in advance Dale!!! > | | | > | | | > | | | > | | | > | | | Dale > | | | > | | | > | | | > | | | ----- Original Message ----- > | | | | From: "jannik.laval" < jannik.laval@gmail.com > > | | | | To: metacello@googlegroups.com > | | | | Sent: Thursday, November 17, 2011 5:11:09 AM > | | | | Subject: [Metacello] collecting all packages of a configuration > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | Hi guys, > | | | | > | | | | > | | | | With mariano, we had a discussion about a problem I have: > | | | | How can I collect all packages from a configuration with > | | | | resolving > | | | | all sub projects ? > | | | | > | | | | > | | | | Thank you for your help. > | | | | Cheers, > | | | | Jannik > | | | | > | | | | > | | | | > | | | | Begin forwarded message: > | | | | > | | | | > | | | | > | | | | From: Mariano Martinez Peck < marianopeck@gmail.com > > | | | | > | | | | Subject: Re: Metacello question > | | | | > | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 > | | | | > | | | | To: "jannik.laval" < jannik.laval@gmail.com > > | | | | > | | | | > | | | | > | | | | > | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < > | | | | jannik.laval@gmail.com > wrote: > | | | | > | | | | > | | | | > | | | | > | | | | Hi Mariano, > | | | | > | | | | > | | | | I understand your code and It seems to be the same as mine. > | | | | version40 make the same as "project version: '4.0'". > | | | | > | | | | > | | | | The problem is the resolution of internal projects. > | | | | We should collect the methods recursively... and possibly with > | | | | circular dependencies. > | | | | So, Metacello can resolve them, but I do not know Metacello :( > | | | | > | | | | > | | | | > | | | | > | | | | I have no idea :( > | | | | Ask in metacello mailing list: metacello@googlegroups.com , > | | | | > | | | | good luck > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | Jannik > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < > | | | | jannik.laval@gmail.com > wrote: > | | | | > | | | | > | | | | Hi Mariano, > | | | | How are you ? > | | | | Here, at Bordeaux, I am fine, and all the family too :) > | | | | > | | | | > | | | | > | | | | Excellent, nice to hear that :) > | | | | I am in Argentina in holidays (after Smalltalks) and all > | | | | familiy > | | | | good > | | | | as well hahahahah > | | | | > | | | | > | | | | > | | | | I have a question about Metacello, and you know well Metacello > | | | | :) > | | | | I would like to collect all the files to load of a > | | | | Configuration > | | | | with > | | | | all dependencies already resolved. > | | | | > | | | | For now, I have this code in a transcript: > | | | | === > | | | | ConfigurationOfMoose version40 spec packages map select:[:e | e > | | | | isKindOf: MetacelloPackageSpec ] > | | | | thenCollect: [:e | e repositories list isEmpty > | | | | ifTrue: [e file] > | | | | ifFalse: [e repositories list first name, '/' , e file]]. > | | | | === > | | | | It allows me to have all files in ConfigurationOfMoose, but I > | | | | have > | | | | two problems: > | | | | > | | | | - if I change version40 by version42, I have no more the name > | | | | of > | | | | packages. > | | | | Here is an example: > | | | | with version40, the first value of my collection is: ' > | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' > | | | | with version42, it is: ' > | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' > | | | | ==> I have no more the versions to load. > | | | | > | | | | > | | | | > | | | | (ConfigurationOfMoose project version: '4.0') packages collect: > | | | | [ > | | | | :each | each name ] as: Set. > | | | | > | | | | or .. > | | | | > | | | | (ConfigurationOfMoose project version: '4.2') packages collect: > | | | | [ > | | | | :each | each name ] as: Set. > | | | | > | | | | does that help ? > | | | | > | | | | > | | | | > | | | | - the second problem is about depending project. Moose load > | | | | other > | | | | projects, and there are some cyclic dependencies between the > | | | | loads: > | | | | for example DSM needs Moose, and Moose loads DSM..... > | | | | I know that Metacello resolves this kind of problems. > | | | | > | | | | So, my question is: is it possible to obtain a list of all > | | | | packages > | | | | of a configuration ? > | | | | > | | | | Thank you > | | | | --- > | | | | Jannik Laval > | | | | > | | | | > | | | | > | | | | > | | | | -- > | | | | Mariano > | | | | http://marianopeck.wordpress.com > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | --- > | | | | Jannik Laval > | | | | > | | | | > | | | | > | | | | -- > | | | | Mariano > | | | | http://marianopeck.wordpress.com > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | --- > | | | | Jannik Laval > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | > | | | | --- > | | | | Jannik Laval > | | | | > | | | > | | | > | | | > | | | -- > | | | Mariano > | | | http://marianopeck.wordpress.com > | | | > | | | > | | > | | > | | > | | -- > | | Mariano > | | http://marianopeck.wordpress.com > | | > | | > | > | > | > | -- > | Mariano > | http://marianopeck.wordpress.com > | > | > -- Mariano http://marianopeck.wordpress.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120517/ae6a3fc5/attachment-0001.htm From norbert at hartl.name Thu May 17 15:59:55 2012 From: norbert at hartl.name (Norbert Hartl) Date: Thu May 17 15:59:59 2012 Subject: [Seaside] Render into a separate document while sharing context In-Reply-To: <261A1A73-42F1-4F6D-9F8E-149A8D5AB717@hartl.name> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <4FB3F705.9010000@gmail.com> <261A1A73-42F1-4F6D-9F8E-149A8D5AB717@hartl.name> Message-ID: <86A83ED3-15FD-43F4-AF34-A6D18C72C22B@hartl.name> Or different asked: Using WARenderCanvas builder render: [:h| ...] enables me to render something into a string. But if the rendered block produces callbacks they aren't registered anywhere and cannot be called aftwards, right? Norbert Am 17.05.2012 um 11:32 schrieb Norbert Hartl: > > Am 16.05.2012 um 20:50 schrieb Paul DeBruicker: > >> On 05/16/2012 09:16 AM, Norbert Hartl wrote: >>> To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. >>> >>> Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. >>> >>> thanks, >>> >>> Norbert____ >> >> >> Could you do something like what I suggested in the Zinc Callback Limit thread a few days ago? >> >> http://forum.world.st/Zinc-Callback-Limit-tp4630181p4630195.html > > I don't think so. You are tunneling virtual callbacks over one real callback. But that one real callback you need to draw in this canvas. My problem is the place where the rendered string should be drawn. Basically I have > > ... > "this is anchor1" > html anchor > onClick: (html jQuery ajax ...) > with: 'foo'. > html script: (JSStream on: ' > > var aMarker = new google.maps.Marker({ > position: new google.maps.LatLng(marker.lat, marker.lon), > map: map > }); > google.maps.event.addListener(aMarker, "click", clickedMarker); > aMarker.info = new google.maps.InfoWindow({ > content: 'foo' > }); '. > ... > > So I have anchor1 that is rendered on the canvas. Then I need to render a script on that canvas that creates a marker on a map. If you look at the "content: ' > Norbert > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From pdebruic at gmail.com Thu May 17 16:19:58 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Thu May 17 16:20:04 2012 Subject: [Seaside] Render into a separate document while sharing context In-Reply-To: <86A83ED3-15FD-43F4-AF34-A6D18C72C22B@hartl.name> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <4FB3F705.9010000@gmail.com> <261A1A73-42F1-4F6D-9F8E-149A8D5AB717@hartl.name> <86A83ED3-15FD-43F4-AF34-A6D18C72C22B@hartl.name> Message-ID: <4FB5252E.6070602@gmail.com> When I send a 'reset your password' email I think I'm doing what you're asking about in your original question. e.g. MyWAComponentSubclass>>#sendPasswordResetLinkToUser:html newUrl := html context actionUrl withParameter: (html callbacks store: (WAValueCallback on: [self home. self show: (ResetPassword new user: member) ])). urlToEmail := html context resourceUrl greaseString , newUrl greaseString. self sendMailWithUrl: urlToEmail toMember: member. So when clicked in their email their browser opens up the 'reset password' form in a page on my site. It doesn't use WABuilder and does store a callback that does get executed in the current render context. It also expires when the current session expires. On 05/17/2012 08:59 AM, Norbert Hartl wrote: > Or different asked: > > Using > > WARenderCanvas builder render: [:h| ...] > > enables me to render something into a string. But if the rendered block produces callbacks they aren't registered anywhere and cannot be called aftwards, right? > > Norbert > Am 17.05.2012 um 11:32 schrieb Norbert Hartl: > >> >> Am 16.05.2012 um 20:50 schrieb Paul DeBruicker: >> >>> On 05/16/2012 09:16 AM, Norbert Hartl wrote: >>>> To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. >>>> >>>> Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. >>>> >>>> thanks, >>>> >>>> Norbert____ >>> >>> >>> Could you do something like what I suggested in the Zinc Callback Limit thread a few days ago? >>> >>> http://forum.world.st/Zinc-Callback-Limit-tp4630181p4630195.html >> >> I don't think so. You are tunneling virtual callbacks over one real callback. But that one real callback you need to draw in this canvas. My problem is the place where the rendered string should be drawn. Basically I have >> >> ... >> "this is anchor1" >> html anchor >> onClick: (html jQuery ajax ...) >> with: 'foo'. >> html script: (JSStream on: ' >> >> var aMarker = new google.maps.Marker({ >> position: new google.maps.LatLng(marker.lat, marker.lon), >> map: map >> }); >> google.maps.event.addListener(aMarker, "click", clickedMarker); >> aMarker.info = new google.maps.InfoWindow({ >> content: 'foo' >> }); '. >> ... >> >> So I have anchor1 that is rendered on the canvas. Then I need to render a script on that canvas that creates a marker on a map. If you look at the "content: '> >> Norbert >> >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From dhenrich at vmware.com Thu May 17 17:37:43 2012 From: dhenrich at vmware.com (Dale Henrichs) Date: Thu May 17 17:37:47 2012 Subject: [Seaside] Re: [Metacello] collecting all packages of a configuration In-Reply-To: Message-ID: <1657712540.3975349.1337276263107.JavaMail.root@zimbra-prod-mbox-2.vmware.com> Mariano, I guess you are trying to upgrade an existing Seaside application? Are you having trouble doing this upgrade using Metacello, or is this a problem trying to do the upgrade using the package order derived from the loadDirectives? If the Metacello load works fine, then I would guess that you're not running your initializers in the right order at the right time. Your little loop over packageNames looks close to what Monticello does when it fires the initializers, but it's not quite the same ... for example Monticello only fires initializers for class initialization methods that are changed/new during the load. Also, if I remember correctly Metacello fires the initializers for Seaside packages immediately after the package is loaded and does not wait until the end to fire initializers ... I'd focus on duplicating the initialization pattern of Metacello (instrumenting the Monticello loader where the initializations are fired would give you that info). Dale ----- Original Message ----- | From: "Mariano Martinez Peck" | To: metacello@googlegroups.com | Cc: "Seaside - general discussion" | Sent: Thursday, May 17, 2012 6:13:30 AM | Subject: Re: [Metacello] collecting all packages of a configuration | | Hi Dale. Now I was a little bit more sucessful. But still, I have a | problem during the initialization of classes. More precisily in: | | WAWalkbackErrorHandler class >> initialize | WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler | put: self | | I get a WAAttributeNotFound with #exceptionHandler ... what I do is I | follow the order of packages as Metacello answered me, and then I do | something like: | | (packageNames collect: [:each | PackageInfo named: each]) | do: [:aPackage | | "We should not send #initialize to traits" | ((aPackage classes select: [:each | each isBehavior]) | sort: [:a :b | a allSuperclasses size < b allSuperclasses size ]) | do: [:aClass | | Transcript show: 'Initializing class named: ', aClass name; cr. | aClass initializeOnLoad] | ]. | ] | | | I have debugged a little bit and it looks like | | WAAdmin applicationExceptionHandlingDefaults allAttributes -> an | IdentityDictionary() | WAAdmin applicationExceptionHandlingDefaults ancestors -> an | IdentitySet() | | so something is not good. I saw your issue | http://code.google.com/p/seaside/issues/detail?id=643 | but evaluating | | (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each | | each instance perform: #clearSearchContexts. | each instance perform: #clearDescription ]. | | did not help. | | Any ideas? | | thanks | | | On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs < dhenrich@vmware.com | > wrote: | | | Mariano, | | I've said it before and I'll say it again ... I'd rather have noise | than real problems go unreported ... | | Thanks for taking the time to characterize the problem in detail... | | | Dale | | ----- Original Message ----- | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | To: metacello@googlegroups.com | | | | Sent: Sunday, May 13, 2012 8:39:52 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | dhenrich@vmware.com | | > wrote: | | | | | | Mariano, | | | | The loadDirectives are actually used for the Metacello load, so you | | are getting the load order from the horse's mouth... | | | | Seaside-Core is one of the first packages that needs to be loaded | | so | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | package (*seaside-tools-core) so everything is consistent... | | | | | | hehehehehe interesting....you discovered a bad side effect of my | | experiment ;) sorry, I though I was checking in a "clean" image but | | a bad side effect of my experiment changed the category for | | extension methods. So...indeed, you are right and the method I have | | is that I need. | | | | Thanks Dale and sorry for the noise. | | | | | | | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | | To: metacello@googlegroups.com | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | Hi Dale. For a different purpose, I need again something related | | | to | | | this. | | | What I actually need is to ask Metacello the list of packages I | | | need | | | when I do load: xxx SORTED by the load order. I mean, I want they | | | to | | | be sorted in the way that those that need to be loaded first go | | | first. | | | | | | Take this example. I have download seaside this way: | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | #stable) | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | ). | | | | | | But those pacakages/groups have another dependencies etc etc. So | | | I | | | am | | | using this to query: | | | | | | | pkgs loader | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | version: | | | ' 3.0.6.3 ') | | | ignoreImage: true; | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | ). | | | pkgs := OrderedCollection new. | | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: | | | directive spec name ]. | | | ^ pkgs | | | | | | | | | It loooks like if that would answer the list of packages in load | | | order, but this is not true. If you inspect that, you obtain | | | this: | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | 'ConfigurationOfGrease' | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | 'Grease-Pharo-Core' | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | 'Javascript-Core' | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | 'Seaside-Environment' | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | 'RSS-Tests-Core' | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' 'Prototype-Tests-Core' | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | 'Seaside-Pharo-Development') | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | WAAdmin | | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' | | | actually loaded before 'Seaside-Core'? if true, how can I query | | | that | | | to Metacello. If false, why don't you get the ugly Monticello | | | popup | | | saying you that you have dependencies on ... | | | | | | Thanks! | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | dhenrich@vmware.com | | | > | | | wrote: | | | | | | | | | Mariano, | | | | | | Regarding your complaint about having the OmniBrowser packages | | | show | | | up when you are using the #loadDirective based variant. The | | | 'Core' | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when you | | | load the 'Core' group OmniBrowser is a required package. You are | | | sitting in a Pharo image that already has OmniBrowser loaded, so | | | when you load Seaside30 you don't see the OB packages getting | | | loaded. However, in the #loadDirective variant, you are using | | | #ignoreImage: and when Metacello ignores the image, it ignores | | | the | | | fact that OB is already loaded as well ... If you want to know | | | what | | | would be loaded into the current image, then don't set | | | #ignoreImage | | | to true ... the OmniBrowser packages and any other packages that | | | are | | | already loaded won't show up ... | | | | | | If there is a set of configs that you would like to | | | include/exclude, | | | then a more complex load directive algorithm can be used... | | | | | | Regarding the duplication of packages, I would say that since you | | | are | | | only interested in the list of packages that would be loaded, you | | | can safely ignore the duplicates. | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | technically, | | | those files are needed for a load. No version information is | | | associated with the configuration file, because config files | | | always | | | have their latest available version loaded ... If you want to | | | filter | | | those files out, then there is a more complex loadDirective | | | traversal algorithm you could use, or you can filter out the | | | configs | | | with #beginsWith:... | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | | | To: metacello@googlegroups.com | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | dhenrich@vmware.com | | | | > wrote: | | | | | | | | | | | | Jannik, | | | | | | | | There are two routes you can take to answer your question. | | | | Firstly, | | | | you can directly query the version itself: | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | allPackagesForSpecNamed: 'ALL') | | | | collect: [:spec | spec file ]. | | | | | | | | Or you can use #record: and then collect the information you | | | | want: | | | | | | | | | pkgs loader | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | ignoreImage: true; | | | | record: 'ALL'. | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | add: | | | | directive spec file ]. | | | | pkgs. | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | example, | | | | the | | | | first one does not take into account those ConfigurationOfXXX | | | | packages, whereas the second one does. Moreoever, in the second | | | | one, | | | | I see that there are repetitions. For example: | | | | | | | | | pkgs loader | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | version: | | | | ' 3.0.6.3 ') | | | | ignoreImage: true; | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | add: | | | | directive spec file ]. | | | | pkgs. | | | | | | | | size gives me 127, but asSet size, 106. It seems some packages | | | | appear | | | | more than once like ConfigurationOfGrease. | | | | | | | | ConfigurationOfXXX do not have version number in their name, | | | | but | | | | the | | | | rest do have. | | | | | | | | Now, the main problem is that none of them is what I need: I | | | | need | | | | ALL | | | | the required packages that are needed to load such project with | | | | metacello. I want to capture the exact list of packages needed | | | | when | | | | I do, for example: | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | ' 3.0.6.3 ') | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | The first one doesn't even take into account ConfigurationOfXX, | | | | so | | | | it | | | | doesn't help me. The second one, not only has repetitions, but | | | | also | | | | it lists packages that I really don't need. For example, | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I don't | | | | understand how those packages arrived to the list. If I take a | | | | clean | | | | image, and install Seaside with the way I showed you, those | | | | packages | | | | are not even downloaded. So why do they appear here? | | | | | | | | So...all in all, what I need is a list of the exact packages I | | | | need | | | | to reproduce something I have loaded with Metacello. In other | | | | words, | | | | if I start an image with an empty package-cache, and execute | | | | the | | | | load of seaside, how can I know the list of packages that were | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | From: "jannik.laval" < jannik.laval@gmail.com > | | | | | To: metacello@googlegroups.com | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | Subject: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | How can I collect all packages from a configuration with | | | | | resolving | | | | | all sub projects ? | | | | | | | | | | | | | | | Thank you for your help. | | | | | Cheers, | | | | | Jannik | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < marianopeck@gmail.com > | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | To: "jannik.laval" < jannik.laval@gmail.com > | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | jannik.laval@gmail.com > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | I understand your code and It seems to be the same as mine. | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | We should collect the methods recursively... and possibly | | | | | with | | | | | circular dependencies. | | | | | So, Metacello can resolve them, but I do not know Metacello | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | Ask in metacello mailing list: metacello@googlegroups.com , | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | jannik.laval@gmail.com > wrote: | | | | | | | | | | | | | | | Hi Mariano, | | | | | How are you ? | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | familiy | | | | | good | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | Metacello | | | | | :) | | | | | I would like to collect all the files to load of a | | | | | Configuration | | | | | with | | | | | all dependencies already resolved. | | | | | | | | | | For now, I have this code in a transcript: | | | | | === | | | | | ConfigurationOfMoose version40 spec packages map select:[:e | | | | | | e | | | | | isKindOf: MetacelloPackageSpec ] | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | ifTrue: [e file] | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | === | | | | | It allows me to have all files in ConfigurationOfMoose, but I | | | | | have | | | | | two problems: | | | | | | | | | | - if I change version40 by version42, I have no more the name | | | | | of | | | | | packages. | | | | | Here is an example: | | | | | with version40, the first value of my collection is: ' | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | with version42, it is: ' | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | collect: | | | | | [ | | | | | :each | each name ] as: Set. | | | | | | | | | | or .. | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | collect: | | | | | [ | | | | | :each | each name ] as: Set. | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose load | | | | | other | | | | | projects, and there are some cyclic dependencies between the | | | | | loads: | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | So, my question is: is it possible to obtain a list of all | | | | | packages | | | | | of a configuration ? | | | | | | | | | | Thank you | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | From marianopeck at gmail.com Thu May 17 18:13:41 2012 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Thu May 17 18:13:45 2012 Subject: [Seaside] Re: [Metacello] collecting all packages of a configuration In-Reply-To: <1657712540.3975349.1337276263107.JavaMail.root@zimbra-prod-mbox-2.vmware.com> References: <1657712540.3975349.1337276263107.JavaMail.root@zimbra-prod-mbox-2.vmware.com> Message-ID: On Thu, May 17, 2012 at 7:37 PM, Dale Henrichs wrote: > Mariano, > > I guess you are trying to upgrade an existing Seaside application? > > Are you having trouble doing this upgrade using Metacello, or is this a > problem trying to do the upgrade using the package order derived from the > loadDirectives? > > I should explain what I am doing. I am exporting packages using Fuel. What I do is to query Metacello to know which packages I need and the order (for the future load). Then, during load, after having materialized all packages, I iterate over the packages (in the order I stored during the export), and I initialize the classes for each package. In this example, I am NOT upgrading nothing. I am just trying to import seaside in a clean image using Fuel. > If the Metacello load works fine, indeed, it works fine. > then I would guess that you're not running your initializers in the right > order at the right time. Indeed, I also thought that I have a problem with the initialization. I sent this mail because maybe this particular problem moves some bell ;) > Your little loop over packageNames looks close to what Monticello does > when it fires the initializers, You mean MCMethodDefinition >> postloadOver: right? > but it's not quite the same ... for example Monticello only fires > initializers for class initialization methods that are changed/new during > the load. > yes, you mean the if: self source ~= aDefinition source right? In my case, I am loading methods that DO NOT have source code. So.. > > Also, if I remember correctly Metacello fires the initializers for Seaside > packages immediately after the package is loaded and does not wait until > the end to fire initializers ... > > mmmm #atomic loader type? where can I see more info about this? > I'd focus on duplicating the initialization pattern of Metacello > (instrumenting the Monticello loader where the initializations are fired > would give you that info). > > where can I see this? Thanks > Dale > > ----- Original Message ----- > | From: "Mariano Martinez Peck" > | To: metacello@googlegroups.com > | Cc: "Seaside - general discussion" > | Sent: Thursday, May 17, 2012 6:13:30 AM > | Subject: Re: [Metacello] collecting all packages of a configuration > | > | Hi Dale. Now I was a little bit more sucessful. But still, I have a > | problem during the initialization of classes. More precisily in: > | > | WAWalkbackErrorHandler class >> initialize > | WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler > | put: self > | > | I get a WAAttributeNotFound with #exceptionHandler ... what I do is I > | follow the order of packages as Metacello answered me, and then I do > | something like: > | > | (packageNames collect: [:each | PackageInfo named: each]) > | do: [:aPackage | > | "We should not send #initialize to traits" > | ((aPackage classes select: [:each | each isBehavior]) > | sort: [:a :b | a allSuperclasses size < b allSuperclasses size ]) > | do: [:aClass | > | Transcript show: 'Initializing class named: ', aClass name; cr. > | aClass initializeOnLoad] > | ]. > | ] > | > | > | I have debugged a little bit and it looks like > | > | WAAdmin applicationExceptionHandlingDefaults allAttributes -> an > | IdentityDictionary() > | WAAdmin applicationExceptionHandlingDefaults ancestors -> an > | IdentitySet() > | > | so something is not good. I saw your issue > | http://code.google.com/p/seaside/issues/detail?id=643 > | but evaluating > | > | (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each | > | each instance perform: #clearSearchContexts. > | each instance perform: #clearDescription ]. > | > | did not help. > | > | Any ideas? > | > | thanks > | > | > | On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs < dhenrich@vmware.com > | > wrote: > | > | > | Mariano, > | > | I've said it before and I'll say it again ... I'd rather have noise > | than real problems go unreported ... > | > | Thanks for taking the time to characterize the problem in detail... > | > | > | Dale > | > | ----- Original Message ----- > | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > > | | To: metacello@googlegroups.com > | > | > | | Sent: Sunday, May 13, 2012 8:39:52 AM > | | Subject: Re: [Metacello] collecting all packages of a configuration > | | > | | > | | > | | > | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < > | | dhenrich@vmware.com > | | > wrote: > | | > | | > | | Mariano, > | | > | | The loadDirectives are actually used for the Metacello load, so you > | | are getting the load order from the horse's mouth... > | | > | | Seaside-Core is one of the first packages that needs to be loaded > | | so > | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... > | | > | | WARegistry class is in Seaside-Core, but the method WARegistry > | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core > | | package (*seaside-tools-core) so everything is consistent... > | | > | | > | | hehehehehe interesting....you discovered a bad side effect of my > | | experiment ;) sorry, I though I was checking in a "clean" image but > | | a bad side effect of my experiment changed the category for > | | extension methods. So...indeed, you are right and the method I have > | | is that I need. > | | > | | Thanks Dale and sorry for the noise. > | | > | | > | | > | | > | | Dale > | | > | | ----- Original Message ----- > | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > > | | | To: metacello@googlegroups.com > | | > | | > | | | Sent: Sunday, May 13, 2012 6:50:18 AM > | | | Subject: Re: [Metacello] collecting all packages of a > | | | configuration > | | | > | | | Hi Dale. For a different purpose, I need again something related > | | | to > | | | this. > | | | What I actually need is to ask Metacello the list of packages I > | | | need > | | | when I do load: xxx SORTED by the load order. I mean, I want they > | | | to > | | | be sorted in the way that those that need to be loaded first go > | | | first. > | | | > | | | Take this example. I have download seaside this way: > | | | > | | | > | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: > | | | #stable) > | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' > | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' > | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' > | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' > | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' > | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' > | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' > | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' > | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' > | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' > | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' > | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' > | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' > | | | ). > | | | > | | | But those pacakages/groups have another dependencies etc etc. So > | | | I > | | | am > | | | using this to query: > | | | > | | | | pkgs loader | > | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project > | | | version: > | | | ' 3.0.6.3 ') > | | | ignoreImage: true; > | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' > | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' > | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' > | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' > | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' 'Seaside-Welcome' > | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' > | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' > | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' > | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' > | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' > | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' > | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' > | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' > | | | ). > | | | pkgs := OrderedCollection new. > | | | loader loadDirective packageDirectivesDo: [:directive | pkgs add: > | | | directive spec name ]. > | | | ^ pkgs > | | | > | | | > | | | It loooks like if that would answer the list of packages in load > | | | order, but this is not true. If you inspect that, you obtain > | | | this: > | | | > | | | an OrderedCollection('ConfigurationOfGrease' > | | | 'ConfigurationOfGrease' > | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' > | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' > | | | 'Grease-Pharo-Core' > | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' > | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' > | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' > | | | 'Javascript-Core' > | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' > | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' > | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' > | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' > | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' > | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' > | | | 'Seaside-Environment' > | | | 'Seaside-Pharo-Environment' 'Seaside-Development' > | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' > | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' > | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' > | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' > | | | 'RSS-Tests-Core' > | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' > | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' > | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' > | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' 'Prototype-Tests-Core' > | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' > | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' > | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' > | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' > | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' > | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' > | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' > | | | 'Seaside-Pharo-Development') > | | | > | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER > | | | 'Seaside-Core'. Right? However, for example, WARegistry >> > | | | #clearAllHandlers (package 'Seaside-Core') has references to > | | | WAAdmin > | | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' > | | | actually loaded before 'Seaside-Core'? if true, how can I query > | | | that > | | | to Metacello. If false, why don't you get the ugly Monticello > | | | popup > | | | saying you that you have dependencies on ... > | | | > | | | Thanks! > | | | > | | | > | | | > | | | > | | | > | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < > | | | dhenrich@vmware.com > | | | > > | | | wrote: > | | | > | | | > | | | Mariano, > | | | > | | | Regarding your complaint about having the OmniBrowser packages > | | | show > | | | up when you are using the #loadDirective based variant. The > | | | 'Core' > | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when you > | | | load the 'Core' group OmniBrowser is a required package. You are > | | | sitting in a Pharo image that already has OmniBrowser loaded, so > | | | when you load Seaside30 you don't see the OB packages getting > | | | loaded. However, in the #loadDirective variant, you are using > | | | #ignoreImage: and when Metacello ignores the image, it ignores > | | | the > | | | fact that OB is already loaded as well ... If you want to know > | | | what > | | | would be loaded into the current image, then don't set > | | | #ignoreImage > | | | to true ... the OmniBrowser packages and any other packages that > | | | are > | | | already loaded won't show up ... > | | | > | | | If there is a set of configs that you would like to > | | | include/exclude, > | | | then a more complex load directive algorithm can be used... > | | | > | | | Regarding the duplication of packages, I would say that since you > | | | are > | | | only interested in the list of packages that would be loaded, you > | | | can safely ignore the duplicates. > | | | > | | | Regarding the inclusion of the ConfigurationOfXXX files, > | | | technically, > | | | those files are needed for a load. No version information is > | | | associated with the configuration file, because config files > | | | always > | | | have their latest available version loaded ... If you want to > | | | filter > | | | those files out, then there is a more complex loadDirective > | | | traversal algorithm you could use, or you can filter out the > | | | configs > | | | with #beginsWith:... > | | | > | | | > | | | Dale > | | | > | | | ----- Original Message ----- > | | | > | | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > > | | | | To: metacello@googlegroups.com > | | | | Sent: Saturday, December 3, 2011 4:27:13 PM > | | | > | | | > | | | | Subject: Re: [Metacello] collecting all packages of a > | | | | configuration > | | | | > | | | | > | | | | > | | | | > | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < > | | | | dhenrich@vmware.com > | | | | > wrote: > | | | | > | | | | > | | | | Jannik, > | | | | > | | | | There are two routes you can take to answer your question. > | | | | Firstly, > | | | | you can directly query the version itself: > | | | | > | | | | ((ConfigurationOfMetacello project currentVersion) > | | | | allPackagesForSpecNamed: 'ALL') > | | | | collect: [:spec | spec file ]. > | | | | > | | | | Or you can use #record: and then collect the information you > | | | | want: > | | | | > | | | | | pkgs loader | > | | | | loader := (ConfigurationOfMetacello project currentVersion) > | | | | ignoreImage: true; > | | | | record: 'ALL'. > | | | | pkgs := OrderedCollection new. > | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs > | | | | add: > | | | | directive spec file ]. > | | | | pkgs. > | | | | > | | | | > | | | | > | | | | Hi Dale. I have notice that both ways are different. For > | | | | example, > | | | | the > | | | | first one does not take into account those ConfigurationOfXXX > | | | | packages, whereas the second one does. Moreoever, in the second > | | | | one, > | | | | I see that there are repetitions. For example: > | | | | > | | | | | pkgs loader | > | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project > | | | | version: > | | | | ' 3.0.6.3 ') > | | | | ignoreImage: true; > | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). > | | | | pkgs := OrderedCollection new. > | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs > | | | | add: > | | | | directive spec file ]. > | | | | pkgs. > | | | | > | | | | size gives me 127, but asSet size, 106. It seems some packages > | | | | appear > | | | | more than once like ConfigurationOfGrease. > | | | | > | | | | ConfigurationOfXXX do not have version number in their name, > | | | | but > | | | | the > | | | | rest do have. > | | | | > | | | | Now, the main problem is that none of them is what I need: I > | | | | need > | | | | ALL > | | | | the required packages that are needed to load such project with > | | | | metacello. I want to capture the exact list of packages needed > | | | | when > | | | | I do, for example: > | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: > | | | | ' 3.0.6.3 ') > | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). > | | | | > | | | | The first one doesn't even take into account ConfigurationOfXX, > | | | | so > | | | | it > | | | | doesn't help me. The second one, not only has repetitions, but > | | | | also > | | | | it lists packages that I really don't need. For example, > | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I don't > | | | | understand how those packages arrived to the list. If I take a > | | | | clean > | | | | image, and install Seaside with the way I showed you, those > | | | | packages > | | | | are not even downloaded. So why do they appear here? > | | | | > | | | | So...all in all, what I need is a list of the exact packages I > | | | | need > | | | | to reproduce something I have loaded with Metacello. In other > | | | | words, > | | | | if I start an image with an empty package-cache, and execute > | | | | the > | | | | load of seaside, how can I know the list of packages that were > | | | | downloaded? of course, not inspecting the package-cache ;) > | | | | > | | | | Thanks in advance Dale!!! > | | | | > | | | | > | | | | > | | | | > | | | | Dale > | | | | > | | | | > | | | | > | | | | ----- Original Message ----- > | | | | | From: "jannik.laval" < jannik.laval@gmail.com > > | | | | | To: metacello@googlegroups.com > | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM > | | | | | Subject: [Metacello] collecting all packages of a > | | | | | configuration > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | Hi guys, > | | | | | > | | | | | > | | | | | With mariano, we had a discussion about a problem I have: > | | | | | How can I collect all packages from a configuration with > | | | | | resolving > | | | | | all sub projects ? > | | | | | > | | | | | > | | | | | Thank you for your help. > | | | | | Cheers, > | | | | | Jannik > | | | | | > | | | | | > | | | | | > | | | | | Begin forwarded message: > | | | | | > | | | | | > | | | | | > | | | | | From: Mariano Martinez Peck < marianopeck@gmail.com > > | | | | | > | | | | | Subject: Re: Metacello question > | | | | | > | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 > | | | | | > | | | | | To: "jannik.laval" < jannik.laval@gmail.com > > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < > | | | | | jannik.laval@gmail.com > wrote: > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | Hi Mariano, > | | | | | > | | | | | > | | | | | I understand your code and It seems to be the same as mine. > | | | | | version40 make the same as "project version: '4.0'". > | | | | | > | | | | | > | | | | | The problem is the resolution of internal projects. > | | | | | We should collect the methods recursively... and possibly > | | | | | with > | | | | | circular dependencies. > | | | | | So, Metacello can resolve them, but I do not know Metacello > | | | | | :( > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | I have no idea :( > | | | | | Ask in metacello mailing list: metacello@googlegroups.com , > | | | | | > | | | | | good luck > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | Jannik > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < > | | | | | jannik.laval@gmail.com > wrote: > | | | | | > | | | | | > | | | | | Hi Mariano, > | | | | | How are you ? > | | | | | Here, at Bordeaux, I am fine, and all the family too :) > | | | | | > | | | | | > | | | | | > | | | | | Excellent, nice to hear that :) > | | | | | I am in Argentina in holidays (after Smalltalks) and all > | | | | | familiy > | | | | | good > | | | | | as well hahahahah > | | | | | > | | | | | > | | | | | > | | | | | I have a question about Metacello, and you know well > | | | | | Metacello > | | | | | :) > | | | | | I would like to collect all the files to load of a > | | | | | Configuration > | | | | | with > | | | | | all dependencies already resolved. > | | | | | > | | | | | For now, I have this code in a transcript: > | | | | | === > | | | | | ConfigurationOfMoose version40 spec packages map select:[:e | > | | | | | e > | | | | | isKindOf: MetacelloPackageSpec ] > | | | | | thenCollect: [:e | e repositories list isEmpty > | | | | | ifTrue: [e file] > | | | | | ifFalse: [e repositories list first name, '/' , e file]]. > | | | | | === > | | | | | It allows me to have all files in ConfigurationOfMoose, but I > | | | | | have > | | | | | two problems: > | | | | | > | | | | | - if I change version40 by version42, I have no more the name > | | | | | of > | | | | | packages. > | | | | | Here is an example: > | | | | | with version40, the first value of my collection is: ' > | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' > | | | | | with version42, it is: ' > | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' > | | | | | ==> I have no more the versions to load. > | | | | | > | | | | | > | | | | | > | | | | | (ConfigurationOfMoose project version: '4.0') packages > | | | | | collect: > | | | | | [ > | | | | | :each | each name ] as: Set. > | | | | | > | | | | | or .. > | | | | | > | | | | | (ConfigurationOfMoose project version: '4.2') packages > | | | | | collect: > | | | | | [ > | | | | | :each | each name ] as: Set. > | | | | | > | | | | | does that help ? > | | | | | > | | | | | > | | | | | > | | | | | - the second problem is about depending project. Moose load > | | | | | other > | | | | | projects, and there are some cyclic dependencies between the > | | | | | loads: > | | | | | for example DSM needs Moose, and Moose loads DSM..... > | | | | | I know that Metacello resolves this kind of problems. > | | | | | > | | | | | So, my question is: is it possible to obtain a list of all > | | | | | packages > | | | | | of a configuration ? > | | | | | > | | | | | Thank you > | | | | | --- > | | | | | Jannik Laval > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | -- > | | | | | Mariano > | | | | | http://marianopeck.wordpress.com > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | --- > | | | | | Jannik Laval > | | | | | > | | | | | > | | | | | > | | | | | -- > | | | | | Mariano > | | | | | http://marianopeck.wordpress.com > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | --- > | | | | | Jannik Laval > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | > | | | | | --- > | | | | | Jannik Laval > | | | | | > | | | | > | | | | > | | | | > | | | | -- > | | | | Mariano > | | | | http://marianopeck.wordpress.com > | | | | > | | | | > | | | > | | | > | | | > | | | -- > | | | Mariano > | | | http://marianopeck.wordpress.com > | | | > | | | > | | > | | > | | > | | -- > | | Mariano > | | http://marianopeck.wordpress.com > | | > | | > | > | > | > | -- > | Mariano > | http://marianopeck.wordpress.com > | > | > -- Mariano http://marianopeck.wordpress.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120517/1280804f/attachment-0001.htm From dhenrich at vmware.com Thu May 17 21:14:28 2012 From: dhenrich at vmware.com (Dale Henrichs) Date: Thu May 17 21:14:33 2012 Subject: [Seaside] Re: [Metacello] collecting all packages of a configuration In-Reply-To: Message-ID: <778878871.3991423.1337289268259.JavaMail.root@zimbra-prod-mbox-2.vmware.com> Mariano, Metacello let's Monticello do the initialization, but decides which sets of packages to load at the same time ... #atomic projects load all of the packages at once, then initialize. While #linear projects load and initialize each package individually ... I believe that Seaside is #linear. Things can get a bit complicated when #atomic and #linear projects are intermixed (via dependencies) If you throw a `Transcript show` into the postLoadOver: method (at least that seems like the right one) and run Metacello, you'll have a record of when each package was initialiazed during the load. You should be able to tell from loadDirective structure what's going to happen...oh wait there are preload and postload doits besides the standard initialization stuff ... but that too is in the loadDirective structure ... typically the ExplicitLoadDirective is used to get a Configuration loaded "right now" during fetch, so focus on the AtomicLoadDirective and LinearLoadDiretives... If you want to duplicate what Metacello does, you should consider serializing the loadDirectives (in some fashion) so that you can guarantee that you track any behavior changes that I might introduce into Metacello ... I don't have any planned, but you never know when some changes will be called for ... Dale ----- Original Message ----- | From: "Mariano Martinez Peck" | To: metacello@googlegroups.com | Cc: "Seaside - general discussion" | Sent: Thursday, May 17, 2012 11:13:41 AM | Subject: Re: [Metacello] collecting all packages of a configuration | | | | | On Thu, May 17, 2012 at 7:37 PM, Dale Henrichs < dhenrich@vmware.com | > wrote: | | | Mariano, | | I guess you are trying to upgrade an existing Seaside application? | | Are you having trouble doing this upgrade using Metacello, or is this | a problem trying to do the upgrade using the package order derived | from the loadDirectives? | | | | I should explain what I am doing. I am exporting packages using Fuel. | What I do is to query Metacello to know which packages I need and | the order (for the future load). | Then, during load, after having materialized all packages, I iterate | over the packages (in the order I stored during the export), and I | initialize the classes for each package. | | In this example, I am NOT upgrading nothing. I am just trying to | import seaside in a clean image using Fuel. | | | | If the Metacello load works fine, | | indeed, it works fine. | | | then I would guess that you're not running your initializers in the | right order at the right time. | | Indeed, I also thought that I have a problem with the initialization. | I sent this mail because maybe this particular problem moves some | bell ;) | | | Your little loop over packageNames looks close to what Monticello | does when it fires the initializers, | | | You mean MCMethodDefinition >> postloadOver: right? | | | but it's not quite the same ... for example Monticello only fires | initializers for class initialization methods that are changed/new | during the load. | | | yes, you mean the if: self source ~= aDefinition source right? | In my case, I am loading methods that DO NOT have source code. So.. | | | | Also, if I remember correctly Metacello fires the initializers for | Seaside packages immediately after the package is loaded and does | not wait until the end to fire initializers ... | | | | mmmm #atomic loader type? where can I see more info about this? | | | | I'd focus on duplicating the initialization pattern of Metacello | (instrumenting the Monticello loader where the initializations are | fired would give you that info). | | | | | where can I see this? | | Thanks | | | | Dale | | ----- Original Message ----- | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | To: metacello@googlegroups.com | | | | Cc: "Seaside - general discussion" < | | seaside@lists.squeakfoundation.org > | | Sent: Thursday, May 17, 2012 6:13:30 AM | | Subject: Re: [Metacello] collecting all packages of a configuration | | | | Hi Dale. Now I was a little bit more sucessful. But still, I have a | | problem during the initialization of classes. More precisily in: | | | | WAWalkbackErrorHandler class >> initialize | | WAAdmin applicationExceptionHandlingDefaults at: #exceptionHandler | | put: self | | | | I get a WAAttributeNotFound with #exceptionHandler ... what I do is | | I | | follow the order of packages as Metacello answered me, and then I | | do | | something like: | | | | (packageNames collect: [:each | PackageInfo named: each]) | | do: [:aPackage | | | "We should not send #initialize to traits" | | ((aPackage classes select: [:each | each isBehavior]) | | sort: [:a :b | a allSuperclasses size < b allSuperclasses size ]) | | do: [:aClass | | | Transcript show: 'Initializing class named: ', aClass name; cr. | | aClass initializeOnLoad] | | ]. | | ] | | | | | | I have debugged a little bit and it looks like | | | | WAAdmin applicationExceptionHandlingDefaults allAttributes -> an | | IdentityDictionary() | | WAAdmin applicationExceptionHandlingDefaults ancestors -> an | | IdentitySet() | | | | so something is not good. I saw your issue | | http://code.google.com/p/seaside/issues/detail?id=643 | | but evaluating | | | | (Smalltalk at: #WASystemConfiguration) allSubclasses do: [ :each | | | each instance perform: #clearSearchContexts. | | each instance perform: #clearDescription ]. | | | | did not help. | | | | Any ideas? | | | | thanks | | | | | | On Sun, May 13, 2012 at 6:04 PM, Dale Henrichs < | | dhenrich@vmware.com | | > wrote: | | | | | | Mariano, | | | | I've said it before and I'll say it again ... I'd rather have noise | | than real problems go unreported ... | | | | Thanks for taking the time to characterize the problem in detail... | | | | | | Dale | | | | ----- Original Message ----- | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | | To: metacello@googlegroups.com | | | | | | | Sent: Sunday, May 13, 2012 8:39:52 AM | | | Subject: Re: [Metacello] collecting all packages of a | | | configuration | | | | | | | | | | | | | | | On Sun, May 13, 2012 at 5:05 PM, Dale Henrichs < | | | dhenrich@vmware.com | | | > wrote: | | | | | | | | | Mariano, | | | | | | The loadDirectives are actually used for the Metacello load, so | | | you | | | are getting the load order from the horse's mouth... | | | | | | Seaside-Core is one of the first packages that needs to be loaded | | | so | | | Seaside-Tools-Core should be loaded _after_ Seaside-Core ... | | | | | | WARegistry class is in Seaside-Core, but the method WARegistry | | | class>>#clearAllHandlers is actually in the Seaside-Tools-Core | | | package (*seaside-tools-core) so everything is consistent... | | | | | | | | | hehehehehe interesting....you discovered a bad side effect of my | | | experiment ;) sorry, I though I was checking in a "clean" image | | | but | | | a bad side effect of my experiment changed the category for | | | extension methods. So...indeed, you are right and the method I | | | have | | | is that I need. | | | | | | Thanks Dale and sorry for the noise. | | | | | | | | | | | | | | | Dale | | | | | | ----- Original Message ----- | | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | | | To: metacello@googlegroups.com | | | | | | | | | | Sent: Sunday, May 13, 2012 6:50:18 AM | | | | Subject: Re: [Metacello] collecting all packages of a | | | | configuration | | | | | | | | Hi Dale. For a different purpose, I need again something | | | | related | | | | to | | | | this. | | | | What I actually need is to ask Metacello the list of packages I | | | | need | | | | when I do load: xxx SORTED by the load order. I mean, I want | | | | they | | | | to | | | | be sorted in the way that those that need to be loaded first go | | | | first. | | | | | | | | Take this example. I have download seaside this way: | | | | | | | | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | #stable) | | | | load: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | ). | | | | | | | | But those pacakages/groups have another dependencies etc etc. | | | | So | | | | I | | | | am | | | | using this to query: | | | | | | | | | pkgs loader | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | version: | | | | ' 3.0.6.3 ') | | | | ignoreImage: true; | | | | record: #('Base' 'Zinc-Seaside' 'Base Tests' 'RSS-Core' | | | | 'Javascript-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-HTML5' | | | | 'Seaside-InternetExplorer' 'Seaside-Examples' 'RSS-Examples' | | | | 'Seaside-Tools-Web' 'Scriptaculous-Components' | | | | 'Seaside-Welcome' | | | | 'Seaside-FileSystem' 'RSS-Tests-Core' 'Javascript-Tests-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Prototype-Tests-Core' 'Scriptaculous-Tests-Core' | | | | 'Scriptaculous-Tests-Components' 'JQuery-Tests-Core' | | | | 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Tests-Welcome' | | | | ). | | | | pkgs := OrderedCollection new. | | | | loader loadDirective packageDirectivesDo: [:directive | pkgs | | | | add: | | | | directive spec name ]. | | | | ^ pkgs | | | | | | | | | | | | It loooks like if that would answer the list of packages in | | | | load | | | | order, but this is not true. If you inspect that, you obtain | | | | this: | | | | | | | | an OrderedCollection('ConfigurationOfGrease' | | | | 'ConfigurationOfGrease' | | | | 'ConfigurationOfSPort2' 'ConfigurationOfZincHTTPComponents' | | | | 'Grease-Core' 'Grease-Pharo-Core' 'Grease-Core' | | | | 'Grease-Pharo-Core' | | | | 'Grease-Tests-Core' 'Grease-Tests-Pharo-Core' 'Zinc-HTTP' | | | | 'Seaside-Core' 'Seaside-Pharo-Core' 'Seaside-Component' | | | | 'Seaside-Canvas' 'Seaside-Pharo-Canvas' 'RSS-Core' | | | | 'Javascript-Core' | | | | 'Javascript-Pharo-Core' 'Prototype-Core' 'Scriptaculous-Core' | | | | 'JQuery-Core' 'JQuery-UI' 'Seaside-Email' 'Seaside-Pharo-Email' | | | | 'Seaside-HTML5' 'Seaside-InternetExplorer' 'Seaside-Session' | | | | 'Seaside-RenderLoop' 'Seaside-Tools-Core' 'Seaside-Flow' | | | | 'Seaside-Examples' 'RSS-Examples' 'Seaside-Widgets' | | | | 'Seaside-Tools-Web' 'Seaside-Pharo-Tools-Web' | | | | 'Seaside-Environment' | | | | 'Seaside-Pharo-Environment' 'Seaside-Development' | | | | 'Scriptaculous-Components' 'Zinc-Seaside' 'Seaside-Tests-Core' | | | | 'Seaside-Tests-Pharo-Core' 'Seaside-Tests-Session' | | | | 'Seaside-Tests-RenderLoop' 'Seaside-Tests-Component' | | | | 'Seaside-Tests-Canvas' 'Seaside-Tests-Environment' | | | | 'RSS-Tests-Core' | | | | 'Javascript-Tests-Core' 'Javascript-Tests-Pharo-Core' | | | | 'Seaside-Tests-Email' 'Seaside-Tests-Functional' | | | | 'Seaside-Tests-Pharo-Functional' 'Seaside-Tests-Flow' | | | | 'Seaside-Welcome' 'Seaside-Pharo-Welcome' | | | | 'Prototype-Tests-Core' | | | | 'Scriptaculous-Tests-Core' 'Scriptaculous-Tests-Components' | | | | 'JQuery-Tests-Core' 'JQuery-Tests-UI' 'Seaside-Tests-HTML5' | | | | 'Seaside-Tests-InternetExplorer' 'Seaside-Tests-Examples' | | | | 'Seaside-Tests-Tools-Web' 'Seaside-Tests-UTF8' | | | | 'Seaside-Tests-Welcome' 'Sport' 'Seaside-FileSystem' | | | | 'Seaside-Tests-FileSystem' 'Seaside-Pharo-Continuation' | | | | 'Seaside-Tests-Pharo-Continuation' 'Seaside-Pharo-Flow' | | | | 'Seaside-Pharo-Development') | | | | | | | | As you can see, for example, 'Seaside-Tools-Core' is AFTER | | | | 'Seaside-Core'. Right? However, for example, WARegistry >> | | | | #clearAllHandlers (package 'Seaside-Core') has references to | | | | WAAdmin | | | | (present in 'Seaside-Tools-Core''). So? is 'Seaside-Tools-Core' | | | | actually loaded before 'Seaside-Core'? if true, how can I query | | | | that | | | | to Metacello. If false, why don't you get the ugly Monticello | | | | popup | | | | saying you that you have dependencies on ... | | | | | | | | Thanks! | | | | | | | | | | | | | | | | | | | | | | | | On Mon, Dec 5, 2011 at 6:53 PM, Dale Henrichs < | | | | dhenrich@vmware.com | | | | > | | | | wrote: | | | | | | | | | | | | Mariano, | | | | | | | | Regarding your complaint about having the OmniBrowser packages | | | | show | | | | up when you are using the #loadDirective based variant. The | | | | 'Core' | | | | group for Seaside includes Seaside-Tools-OmniBrowser, so when | | | | you | | | | load the 'Core' group OmniBrowser is a required package. You | | | | are | | | | sitting in a Pharo image that already has OmniBrowser loaded, | | | | so | | | | when you load Seaside30 you don't see the OB packages getting | | | | loaded. However, in the #loadDirective variant, you are using | | | | #ignoreImage: and when Metacello ignores the image, it ignores | | | | the | | | | fact that OB is already loaded as well ... If you want to know | | | | what | | | | would be loaded into the current image, then don't set | | | | #ignoreImage | | | | to true ... the OmniBrowser packages and any other packages | | | | that | | | | are | | | | already loaded won't show up ... | | | | | | | | If there is a set of configs that you would like to | | | | include/exclude, | | | | then a more complex load directive algorithm can be used... | | | | | | | | Regarding the duplication of packages, I would say that since | | | | you | | | | are | | | | only interested in the list of packages that would be loaded, | | | | you | | | | can safely ignore the duplicates. | | | | | | | | Regarding the inclusion of the ConfigurationOfXXX files, | | | | technically, | | | | those files are needed for a load. No version information is | | | | associated with the configuration file, because config files | | | | always | | | | have their latest available version loaded ... If you want to | | | | filter | | | | those files out, then there is a more complex loadDirective | | | | traversal algorithm you could use, or you can filter out the | | | | configs | | | | with #beginsWith:... | | | | | | | | | | | | Dale | | | | | | | | ----- Original Message ----- | | | | | | | | | From: "Mariano Martinez Peck" < marianopeck@gmail.com > | | | | | To: metacello@googlegroups.com | | | | | Sent: Saturday, December 3, 2011 4:27:13 PM | | | | | | | | | | | | | Subject: Re: [Metacello] collecting all packages of a | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | On Thu, Nov 17, 2011 at 6:57 PM, Dale Henrichs < | | | | | dhenrich@vmware.com | | | | | > wrote: | | | | | | | | | | | | | | | Jannik, | | | | | | | | | | There are two routes you can take to answer your question. | | | | | Firstly, | | | | | you can directly query the version itself: | | | | | | | | | | ((ConfigurationOfMetacello project currentVersion) | | | | | allPackagesForSpecNamed: 'ALL') | | | | | collect: [:spec | spec file ]. | | | | | | | | | | Or you can use #record: and then collect the information you | | | | | want: | | | | | | | | | | | pkgs loader | | | | | | loader := (ConfigurationOfMetacello project currentVersion) | | | | | ignoreImage: true; | | | | | record: 'ALL'. | | | | | pkgs := OrderedCollection new. | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | add: | | | | | directive spec file ]. | | | | | pkgs. | | | | | | | | | | | | | | | | | | | | Hi Dale. I have notice that both ways are different. For | | | | | example, | | | | | the | | | | | first one does not take into account those ConfigurationOfXXX | | | | | packages, whereas the second one does. Moreoever, in the | | | | | second | | | | | one, | | | | | I see that there are repetitions. For example: | | | | | | | | | | | pkgs loader | | | | | | loader := ((Smalltalk at: #ConfigurationOfSeaside30) project | | | | | version: | | | | | ' 3.0.6.3 ') | | | | | ignoreImage: true; | | | | | record: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | pkgs := OrderedCollection new. | | | | | loader loadDirective packageDirectivesDo: [:directive |pkgs | | | | | add: | | | | | directive spec file ]. | | | | | pkgs. | | | | | | | | | | size gives me 127, but asSet size, 106. It seems some | | | | | packages | | | | | appear | | | | | more than once like ConfigurationOfGrease. | | | | | | | | | | ConfigurationOfXXX do not have version number in their name, | | | | | but | | | | | the | | | | | rest do have. | | | | | | | | | | Now, the main problem is that none of them is what I need: I | | | | | need | | | | | ALL | | | | | the required packages that are needed to load such project | | | | | with | | | | | metacello. I want to capture the exact list of packages | | | | | needed | | | | | when | | | | | I do, for example: | | | | | ((Smalltalk at: #ConfigurationOfSeaside30) project version: | | | | | ' 3.0.6.3 ') | | | | | load: #('Core' 'Tests' 'Zinc-Seaside' ). | | | | | | | | | | The first one doesn't even take into account | | | | | ConfigurationOfXX, | | | | | so | | | | | it | | | | | doesn't help me. The second one, not only has repetitions, | | | | | but | | | | | also | | | | | it lists packages that I really don't need. For example, | | | | | OB-Morphic-lr.164 and Seaside-Tools-OmniBrowser-lr.25. I | | | | | don't | | | | | understand how those packages arrived to the list. If I take | | | | | a | | | | | clean | | | | | image, and install Seaside with the way I showed you, those | | | | | packages | | | | | are not even downloaded. So why do they appear here? | | | | | | | | | | So...all in all, what I need is a list of the exact packages | | | | | I | | | | | need | | | | | to reproduce something I have loaded with Metacello. In other | | | | | words, | | | | | if I start an image with an empty package-cache, and execute | | | | | the | | | | | load of seaside, how can I know the list of packages that | | | | | were | | | | | downloaded? of course, not inspecting the package-cache ;) | | | | | | | | | | Thanks in advance Dale!!! | | | | | | | | | | | | | | | | | | | | | | | | | Dale | | | | | | | | | | | | | | | | | | | | ----- Original Message ----- | | | | | | From: "jannik.laval" < jannik.laval@gmail.com > | | | | | | To: metacello@googlegroups.com | | | | | | Sent: Thursday, November 17, 2011 5:11:09 AM | | | | | | Subject: [Metacello] collecting all packages of a | | | | | | configuration | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi guys, | | | | | | | | | | | | | | | | | | With mariano, we had a discussion about a problem I have: | | | | | | How can I collect all packages from a configuration with | | | | | | resolving | | | | | | all sub projects ? | | | | | | | | | | | | | | | | | | Thank you for your help. | | | | | | Cheers, | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | Begin forwarded message: | | | | | | | | | | | | | | | | | | | | | | | | From: Mariano Martinez Peck < marianopeck@gmail.com > | | | | | | | | | | | | Subject: Re: Metacello question | | | | | | | | | | | | Date: November 16, 2011 4:09:38 PM GMT+01:00 | | | | | | | | | | | | To: "jannik.laval" < jannik.laval@gmail.com > | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 11:57 AM, jannik.laval < | | | | | | jannik.laval@gmail.com > wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | | | | | | | | | | | | | I understand your code and It seems to be the same as mine. | | | | | | version40 make the same as "project version: '4.0'". | | | | | | | | | | | | | | | | | | The problem is the resolution of internal projects. | | | | | | We should collect the methods recursively... and possibly | | | | | | with | | | | | | circular dependencies. | | | | | | So, Metacello can resolve them, but I do not know Metacello | | | | | | :( | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I have no idea :( | | | | | | Ask in metacello mailing list: metacello@googlegroups.com , | | | | | | | | | | | | good luck | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Jannik | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Nov 16, 2011, at 15:36 , Mariano Martinez Peck wrote: | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | On Wed, Nov 16, 2011 at 6:59 AM, jannik.laval < | | | | | | jannik.laval@gmail.com > wrote: | | | | | | | | | | | | | | | | | | Hi Mariano, | | | | | | How are you ? | | | | | | Here, at Bordeaux, I am fine, and all the family too :) | | | | | | | | | | | | | | | | | | | | | | | | Excellent, nice to hear that :) | | | | | | I am in Argentina in holidays (after Smalltalks) and all | | | | | | familiy | | | | | | good | | | | | | as well hahahahah | | | | | | | | | | | | | | | | | | | | | | | | I have a question about Metacello, and you know well | | | | | | Metacello | | | | | | :) | | | | | | I would like to collect all the files to load of a | | | | | | Configuration | | | | | | with | | | | | | all dependencies already resolved. | | | | | | | | | | | | For now, I have this code in a transcript: | | | | | | === | | | | | | ConfigurationOfMoose version40 spec packages map select:[:e | | | | | | | | | | | | | e | | | | | | isKindOf: MetacelloPackageSpec ] | | | | | | thenCollect: [:e | e repositories list isEmpty | | | | | | ifTrue: [e file] | | | | | | ifFalse: [e repositories list first name, '/' , e file]]. | | | | | | === | | | | | | It allows me to have all files in ConfigurationOfMoose, but | | | | | | I | | | | | | have | | | | | | two problems: | | | | | | | | | | | | - if I change version40 by version42, I have no more the | | | | | | name | | | | | | of | | | | | | packages. | | | | | | Here is an example: | | | | | | with version40, the first value of my collection is: ' | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-tg.3 ' | | | | | | with version42, it is: ' | | | | | | http://www.squeaksource.com/Arki/Arki-Reporter-Browser ' | | | | | | ==> I have no more the versions to load. | | | | | | | | | | | | | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.0') packages | | | | | | collect: | | | | | | [ | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | or .. | | | | | | | | | | | | (ConfigurationOfMoose project version: '4.2') packages | | | | | | collect: | | | | | | [ | | | | | | :each | each name ] as: Set. | | | | | | | | | | | | does that help ? | | | | | | | | | | | | | | | | | | | | | | | | - the second problem is about depending project. Moose load | | | | | | other | | | | | | projects, and there are some cyclic dependencies between | | | | | | the | | | | | | loads: | | | | | | for example DSM needs Moose, and Moose loads DSM..... | | | | | | I know that Metacello resolves this kind of problems. | | | | | | | | | | | | So, my question is: is it possible to obtain a list of all | | | | | | packages | | | | | | of a configuration ? | | | | | | | | | | | | Thank you | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | Mariano | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | | Mariano | | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | --- | | | | | | Jannik Laval | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | | Mariano | | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | | | | | | | -- | | | | Mariano | | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | | | | | | | -- | | | Mariano | | | http://marianopeck.wordpress.com | | | | | | | | | | | | | | -- | | Mariano | | http://marianopeck.wordpress.com | | | | | | | | -- | Mariano | http://marianopeck.wordpress.com | | From thereluctantprogrammer at fastmail.fm Fri May 18 16:32:24 2012 From: thereluctantprogrammer at fastmail.fm (Helene Bilbo) Date: Fri May 18 16:32:28 2012 Subject: [Seaside] MessageNotUnderstood: ZnManagingMultiThreadedServer>>reader: with Pharo 1.4 Message-ID: <1337358744631-4630795.post@n4.nabble.com> Hello, i tried the Seaside on Pharo 1.4 image from Pharo's Jenkins Server and have the problem that I can?t start a ZnZincServerAdaptor. When i try to start one via the Seaside Control panel nothing happens at all, and when i evaluate: ZnZincServerAdaptor startOn: 8080 i get this error: MessageNotUnderstood: ZnManagingMultiThreadedServer>>reader: Is there an ?official? Seaside on Pharo 1.4 image? Helene. -- View this message in context: http://forum.world.st/MessageNotUnderstood-ZnManagingMultiThreadedServer-reader-with-Pharo-1-4-tp4630795.html Sent from the Seaside General mailing list archive at Nabble.com. From sven at beta9.be Fri May 18 17:16:10 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Fri May 18 17:16:35 2012 Subject: [Seaside] MessageNotUnderstood: ZnManagingMultiThreadedServer>>reader: with Pharo 1.4 In-Reply-To: <1337358744631-4630795.post@n4.nabble.com> References: <1337358744631-4630795.post@n4.nabble.com> Message-ID: Helene, On 18 May 2012, at 18:32, Helene Bilbo wrote: > Hello, > i tried the Seaside on Pharo 1.4 image from Pharo's Jenkins Server and have > the problem that I can?t start a ZnZincServerAdaptor. > > When i try to start one via the Seaside Control panel nothing happens at > all, > > and when i evaluate: > ZnZincServerAdaptor startOn: 8080 > > i get this error: > MessageNotUnderstood: ZnManagingMultiThreadedServer>>reader: > > Is there an ?official? Seaside on Pharo 1.4 image? > Helene. The problem is that the Seaside adaptor code is more recent than the Zinc implementation in Pharo 1.4 #reader: was recently added. You could try loading the lastest Zinc code manually, that should fix the problem. I will request an official update of Zn in Pharo 1.3, 1.4 and 2.0 later this week. Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill From thereluctantprogrammer at fastmail.fm Fri May 18 19:23:34 2012 From: thereluctantprogrammer at fastmail.fm (Helene Bilbo) Date: Fri May 18 19:23:38 2012 Subject: [Seaside] Re: MessageNotUnderstood: ZnManagingMultiThreadedServer>>reader: with Pharo 1.4 In-Reply-To: References: <1337358744631-4630795.post@n4.nabble.com> Message-ID: <1337369014874-4630818.post@n4.nabble.com> Sven Van Caekenberghe wrote > > Helene, > You could try loading the lastest Zinc code manually, that should fix the > problem. > > > I will request an official update of Zn in Pharo 1.3, 1.4 and 2.0 later > this week. > > Sven > Thank you, Sven, for the fast reply. Loading the newer code fixed the problem with the adaptor. I can manually start and stop it now and everything works fine. What still does not work is the Seaside control panel, it does not allow to start, stop or remove an adaptor. Helene. -- View this message in context: http://forum.world.st/MessageNotUnderstood-ZnManagingMultiThreadedServer-reader-with-Pharo-1-4-tp4630795p4630818.html Sent from the Seaside General mailing list archive at Nabble.com. From sven at beta9.be Fri May 18 20:42:38 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Fri May 18 20:42:42 2012 Subject: [Seaside] MessageNotUnderstood: ZnManagingMultiThreadedServer>>reader: with Pharo 1.4 In-Reply-To: <1337369014874-4630818.post@n4.nabble.com> References: <1337358744631-4630795.post@n4.nabble.com> <1337369014874-4630818.post@n4.nabble.com> Message-ID: On 18 May 2012, at 21:23, Helene Bilbo wrote: > What still does not work is the Seaside control panel, it does not allow to > start, stop or remove an adaptor. I have no time to test with the image you are refering to, maybe do a WAServerManager default initialize. after stopping all adaptors (and checking the process manager they are gone). Inspect a bit around, it should normally work, maybe you got in a weird state somehow. Sven From lasmiste at gmail.com Mon May 21 15:37:43 2012 From: lasmiste at gmail.com (Dav) Date: Mon May 21 15:37:48 2012 Subject: [Seaside] Problems with Zinc and DigestAuthentication Message-ID: <1337614663613-4631194.post@n4.nabble.com> Hi, There is something wrong with Zinc but I can't find how to solve it. It happens with Zinc and Digest Authentication, sometimes the debugger shows me a primitiveFailed, see the stack below --- The full stack --- ByteString class(Object)>>primitiveFailed: ByteString class(Object)>>primitiveFailed ByteString class(Behavior)>>basicNew: ByteString class(String class)>>new: ByteString(SequenceableCollection)>>copyFrom:to: [:fragment | | tokens i key value | tokens := fragment trimBoth. i := tokens indexOf: $=. i > 0 ifTrue: [key := tokens copyFrom: 1 to: i - 1. value := tokens copyFrom: i + 1 to: tokens size. dict at: key put: (value copyFrom: 2 to: value size - 1)]] in ZnDigestAuthenticator class>>parseAuthRequest: Array(SequenceableCollection)>>do: ZnDigestAuthenticator class>>parseAuthRequest: ZnDigestAuthenticator>>isRequestAuthenticated: ZnDigestAuthenticator(ZnBasicAuthenticator)>>authenticateRequest:do: ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>authenticateRequest:do: ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>handleRequest: ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn: [self executeRequestResponseLoopOn: stream] in [[self executeRequestResponseLoopOn: stream] ensure: [self log debug: 'Closing stream'. self closeSocketStream: stream]] in [[[self executeRequestResponseLoopOn: stream] ensure: [self log debug: 'Closing stream'. self closeSocketStream: stream]] ifCurtailed: [self log debug: 'Destroying socket'. socket destroy]] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: BlockClosure>>ensure: [[self executeRequestResponseLoopOn: stream] ensure: [self log debug: 'Closing stream'. self closeSocketStream: stream]] in [[[self executeRequestResponseLoopOn: stream] ensure: [self log debug: 'Closing stream'. self closeSocketStream: stream]] ifCurtailed: [self log debug: 'Destroying socket'. socket destroy]] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: BlockClosure>>ifCurtailed: [[[self executeRequestResponseLoopOn: stream] ensure: [self log debug: 'Closing stream'. self closeSocketStream: stream]] ifCurtailed: [self log debug: 'Destroying socket'. socket destroy]] in ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: [self value. Processor terminateActive] in BlockClosure>>newProcess ------------------------------------------------------------------------------- It seems when there are bots that go on the page. Can you help me please? If you need other info I can supply them of course Dave -- View this message in context: http://forum.world.st/Problems-with-Zinc-and-DigestAuthentication-tp4631194.html Sent from the Seaside General mailing list archive at Nabble.com. From sven at beta9.be Mon May 21 16:00:43 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Mon May 21 16:00:45 2012 Subject: [Seaside] Problems with Zinc and DigestAuthentication In-Reply-To: <1337614663613-4631194.post@n4.nabble.com> References: <1337614663613-4631194.post@n4.nabble.com> Message-ID: Hi Dave, On 21 May 2012, at 17:37, Dav wrote: > Hi, > > There is something wrong with Zinc but I can't find how to solve it. It > happens with Zinc and Digest Authentication, sometimes the debugger shows me > a primitiveFailed, see the stack below > > --- The full stack --- > ByteString class(Object)>>primitiveFailed: > ByteString class(Object)>>primitiveFailed > ByteString class(Behavior)>>basicNew: > ByteString class(String class)>>new: > ByteString(SequenceableCollection)>>copyFrom:to: > [:fragment | > | tokens i key value | > tokens := fragment trimBoth. > i := tokens indexOf: $=. > i > 0 > ifTrue: [key := tokens copyFrom: 1 to: i - 1. > value := tokens copyFrom: i + 1 to: tokens size. > dict > at: key > put: (value copyFrom: 2 to: value size - 1)]] in ZnDigestAuthenticator > class>>parseAuthRequest: > Array(SequenceableCollection)>>do: > ZnDigestAuthenticator class>>parseAuthRequest: > ZnDigestAuthenticator>>isRequestAuthenticated: > ZnDigestAuthenticator(ZnBasicAuthenticator)>>authenticateRequest:do: > ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>authenticateRequest:do: > ZnManagingMultiThreadedServer(ZnSingleThreadedServer)>>handleRequest: > ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>executeRequestResponseLoopOn: > [self executeRequestResponseLoopOn: stream] in [[self > executeRequestResponseLoopOn: stream] > ensure: [self log debug: 'Closing stream'. > self closeSocketStream: stream]] in [[[self executeRequestResponseLoopOn: > stream] > ensure: [self log debug: 'Closing stream'. > self closeSocketStream: stream]] > ifCurtailed: [self log debug: 'Destroying socket'. > socket destroy]] in > ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: > BlockClosure>>ensure: > [[self executeRequestResponseLoopOn: stream] > ensure: [self log debug: 'Closing stream'. > self closeSocketStream: stream]] in [[[self executeRequestResponseLoopOn: > stream] > ensure: [self log debug: 'Closing stream'. > self closeSocketStream: stream]] > ifCurtailed: [self log debug: 'Destroying socket'. > socket destroy]] in > ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: > BlockClosure>>ifCurtailed: > [[[self executeRequestResponseLoopOn: stream] > ensure: [self log debug: 'Closing stream'. > self closeSocketStream: stream]] > ifCurtailed: [self log debug: 'Destroying socket'. > socket destroy]] in > ZnManagingMultiThreadedServer(ZnMultiThreadedServer)>>serveConnectionsOn: > [self value. > Processor terminateActive] in BlockClosure>>newProcess > ------------------------------------------------------------------------------- > > > It seems when there are bots that go on the page. Can you help me please? If > you need other info I can supply them of course > > Dave Some more context would be welcome, what specific versions of Smalltalk/Zinc are you using ? What is your setup? Can you get your hands on the argument to ZnDigestAuthenticator class>>parseAuthRequest: that crashes ? Sven From lasmiste at gmail.com Mon May 21 16:49:02 2012 From: lasmiste at gmail.com (Dav) Date: Mon May 21 16:49:05 2012 Subject: [Seaside] Re: Problems with Zinc and DigestAuthentication In-Reply-To: References: <1337614663613-4631194.post@n4.nabble.com> Message-ID: <1337618942668-4631210.post@n4.nabble.com> Hi Sven You are right, here some more info: Version: Pharo1.4 of 18 April 2012 update 14438 - Zinc HTTP Components 1.0 My setup is: ZnZincServerAdaptor startOn:8080 . authenticator := ZnDigestAuthenticator new. authenticator realm:'........'. authenticator atUsername: '....' putPassword: '.....' . ZnZincServerAdaptor default server authenticator: authenticator . and finally I can post some more stack info: ------------------------------------------------------------------------------- THERE_BE_DRAGONS_HERE PrimitiveFailed: primitive #basicNew: in ByteString class failed VM: unix - i686 - linux-gnu - CoInterpreter VMMaker-oscog-EstebanLorenzano.158 uuid: 82eded98-68af-4c80-a472-4f6de293adcf May 1 2012, StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.158 uuid: 82eded98-68af-4c80-a472-4f6de293adcf May 1 2012, https://git.gitorious.org/cogvm/blessed.git Commit: 6aa3fd0f1188078d3167dec1a53031a61b97b688 Date: Tue May 1 20:28:14 2012 +0200 By: Esteban Lorenzano Image: Pharo1.4 [Latest update: #14438] ByteString class(Object)>>primitiveFailed: Receiver: ByteString Arguments and temporary variables: selector: #basicNew: Receiver's instance variables: superclass: String methodDict: a MethodDictionary(#asByteArray->(ByteString>>#asByteArray "a Compi...etc... format: 23554 instanceVariables: nil organization: ('accessing' at: at:put: byteAt: byteAt:put: byteSize indexOfAnyO...etc... subclasses: nil name: #ByteString classPool: a Dictionary(#NonAsciiMap->#[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Collections-Strings' traitComposition: {} localSelectors: nil ByteString class(Object)>>primitiveFailed Receiver: ByteString Arguments and temporary variables: Receiver's instance variables: superclass: String methodDict: a MethodDictionary(#asByteArray->(ByteString>>#asByteArray "a Compi...etc... format: 23554 instanceVariables: nil organization: ('accessing' at: at:put: byteAt: byteAt:put: byteSize indexOfAnyO...etc... subclasses: nil name: #ByteString classPool: a Dictionary(#NonAsciiMap->#[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Collections-Strings' traitComposition: {} localSelectors: nil ByteString class(Behavior)>>basicNew: Receiver: ByteString Arguments and temporary variables: sizeRequested: -2 Receiver's instance variables: superclass: String methodDict: a MethodDictionary(#asByteArray->(ByteString>>#asByteArray "a Compi...etc... format: 23554 instanceVariables: nil organization: ('accessing' at: at:put: byteAt: byteAt:put: byteSize indexOfAnyO...etc... subclasses: nil name: #ByteString classPool: a Dictionary(#NonAsciiMap->#[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Collections-Strings' traitComposition: {} localSelectors: nil ByteString class(String class)>>new: Receiver: ByteString Arguments and temporary variables: sizeRequested: -2 Receiver's instance variables: superclass: String methodDict: a MethodDictionary(#asByteArray->(ByteString>>#asByteArray "a Compi...etc... format: 23554 instanceVariables: nil organization: ('accessing' at: at:put: byteAt: byteAt:put: byteSize indexOfAnyO...etc... subclasses: nil name: #ByteString classPool: a Dictionary(#NonAsciiMap->#[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...etc... sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Collections-Strings' traitComposition: {} localSelectors: nil ByteString(SequenceableCollection)>>copyFrom:to: Receiver: '' Arguments and temporary variables: start: 2 stop: -1 newSize: -2 Receiver's instance variables: '' [:fragment | | tokens i key value | tokens := fragment trimBoth. i := tokens indexOf: $=. i > 0 ifTrue: [key := tokens copyFrom: 1 to: i - 1. value := tokens copyFrom: i + 1 to: tokens size. dict at: key put: (value copyFrom: 2 to: value size - 1)]] in ZnDigestAuthenticator class>>parseAuthRequest: Receiver: ZnDigestAuthenticator Arguments and temporary variables: dict: ' algorithm=' fragment: a Dictionary('nonce'->'hidden nonce' 'realm'->'hidden realm..etc... tokens: 'algorithm=' i: 10 key: 'algorithm' value: '' Receiver's instance variables: superclass: ZnBasicAuthenticator methodDict: a MethodDictionary(#a1for:->(ZnDigestAuthenticator>>#a1for: "a Comp...etc... format: 136 instanceVariables: #('nonces') organization: ('accessing' nonces) ('public' authHeader) ('testing' isRequestAu...etc... subclasses: nil name: #ZnDigestAuthenticator classPool: nil sharedPools: nil environment: a SystemDictionary(lots of globals) category: #'Zinc-HTTP-Support' traitComposition: {} localSelectors: nil Array(SequenceableCollection)>>do: Receiver: #('username=""' ' realm="hidden realm... Arguments and temporary variables: aBlock: [:fragment | | tokens i key value | tokens := fragment trimBoth. i :=...etc... index: 5 indexLimiT: 10 Receiver's instance variables: #('username=""' ' realm="hidden realm... As you can see username is empty string, realm and nonce are hidden by me. Unfortunately I tried to simulate the bug authenticating myself with empty string but no errors occurred Cheers Dave Sven Van Caekenberghe wrote > > > Some more context would be welcome, what specific versions of > Smalltalk/Zinc are you using ? > What is your setup? > Can you get your hands on the argument to ZnDigestAuthenticator > class>>parseAuthRequest: that crashes ? > > Sven > > > _______________________________________________ > seaside mailing list > seaside@.squeakfoundation > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -- View this message in context: http://forum.world.st/Problems-with-Zinc-and-DigestAuthentication-tp4631194p4631210.html Sent from the Seaside General mailing list archive at Nabble.com. From sven at beta9.be Mon May 21 19:16:15 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Mon May 21 19:16:29 2012 Subject: [Seaside] Problems with Zinc and DigestAuthentication In-Reply-To: <1337618942668-4631210.post@n4.nabble.com> References: <1337614663613-4631194.post@n4.nabble.com> <1337618942668-4631210.post@n4.nabble.com> Message-ID: <4E761E38-B654-4C0B-AB80-6C7DFE62C47C@beta9.be> Dave, On 21 May 2012, at 18:49, Dav wrote: > As you can see username is empty string, realm and nonce are hidden by me. > Unfortunately I tried to simulate the bug authenticating myself with empty > string but no errors occurred It is a bit hard to debug without an actual example string, you will have to try to do that yourself. Now what I can infer from the stacktrace is that #copyFrom:to: is called with args 2 and -1, the latter being an error of course. ZnDigestAuthenticator class>>parseAuthRequest: is not very robust it seems, I think this can only happen if value size = 0 from a fragment like 'key='. Maybe you can try putting an extra guard there when computing the value. We always appreciate contributions, however small ;-) Sven From lasmiste at gmail.com Mon May 21 19:59:38 2012 From: lasmiste at gmail.com (Dav) Date: Mon May 21 19:59:41 2012 Subject: [Seaside] Re: Problems with Zinc and DigestAuthentication In-Reply-To: <4E761E38-B654-4C0B-AB80-6C7DFE62C47C@beta9.be> References: <1337614663613-4631194.post@n4.nabble.com> <1337618942668-4631210.post@n4.nabble.com> <4E761E38-B654-4C0B-AB80-6C7DFE62C47C@beta9.be> Message-ID: <1337630378639-4631230.post@n4.nabble.com> Sven I'm gonna send you an email about the issue. Dave -- View this message in context: http://forum.world.st/Problems-with-Zinc-and-DigestAuthentication-tp4631194p4631230.html Sent from the Seaside General mailing list archive at Nabble.com. From sven at beta9.be Tue May 22 08:57:06 2012 From: sven at beta9.be (Sven Van Caekenberghe) Date: Tue May 22 08:57:11 2012 Subject: [Seaside] Problems with Zinc and DigestAuthentication In-Reply-To: <1337630378639-4631230.post@n4.nabble.com> References: <1337614663613-4631194.post@n4.nabble.com> <1337618942668-4631210.post@n4.nabble.com> <4E761E38-B654-4C0B-AB80-6C7DFE62C47C@beta9.be> <1337630378639-4631230.post@n4.nabble.com> Message-ID: Dave, On 21 May 2012, at 21:59, Dave wrote: > Sven I'm gonna send you an email about the issue. > Dave Please try again after updating manually to the lastest Zn version: ==================== Summary ==================== Name: Zinc-HTTP-SvenVanCaekenberghe.278 Author: SvenVanCaekenberghe Time: 22 May 2012, 10:48:12 am UUID: 5c5f70f9-0f04-4941-a09a-cbf28ba154e4 Ancestors: Zinc-HTTP-SvenVanCaekenberghe.277 added multiline/continuation header line parsing to ZnHeaders; added some extra guards to ZnDigestAuthenticator class>>#parseAuthRequest ==================== Summary ==================== Name: Zinc-Tests-SvenVanCaekenberghe.144 Author: SvenVanCaekenberghe Time: 22 May 2012, 10:50:47 am UUID: 5fd44833-78c7-4a88-9c52-d0f4b0737f76 Ancestors: Zinc-Tests-SvenVanCaekenberghe.143 added tests for multiline/continuation header line parsing to ZnHeadersTests; added some ZnDigestAuthenticatorTests ============ Now, I hope this would help with your problem. ZnDigestAuthenticator needs more work, but at the moment, I do not have the time take a detailed look (I did not write this code, I would have to study the specs in details first). HTH, Sven -- Sven Van Caekenberghe http://stfx.eu Smalltalk is the Red Pill From lasmiste at gmail.com Tue May 22 14:59:08 2012 From: lasmiste at gmail.com (Dav) Date: Tue May 22 14:59:10 2012 Subject: [Seaside] Re: Problems with Zinc and DigestAuthentication In-Reply-To: References: <1337614663613-4631194.post@n4.nabble.com> <1337618942668-4631210.post@n4.nabble.com> <4E761E38-B654-4C0B-AB80-6C7DFE62C47C@beta9.be> <1337630378639-4631230.post@n4.nabble.com> Message-ID: <1337698748052-4631402.post@n4.nabble.com> Thanks Sven, I'm gonna try and feedback you. D. Sven Van Caekenberghe wrote > > Dave, > > > On 21 May 2012, at 21:59, Dave wrote: > >> Sven I'm gonna send you an email about the issue. >> Dave > > Please try again after updating manually to the lastest Zn version: > -- View this message in context: http://forum.world.st/Problems-with-Zinc-and-DigestAuthentication-tp4631194p4631402.html Sent from the Seaside General mailing list archive at Nabble.com. From norbert at hartl.name Tue May 22 15:42:40 2012 From: norbert at hartl.name (Norbert Hartl) Date: Tue May 22 15:46:16 2012 Subject: [Seaside] Render into a separate document while sharing context In-Reply-To: <4FB5252E.6070602@gmail.com> References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <4FB3F705.9010000@gmail.com> <261A1A73-42F1-4F6D-9F8E-149A8D5AB717@hartl.name> <86A83ED3-15FD-43F4-AF34-A6D18C72C22B@hartl.name> <4FB5252E.6070602@gmail.com> Message-ID: Paul, Am 17.05.2012 um 18:19 schrieb Paul DeBruicker: > When I send a 'reset your password' email I think I'm doing what you're asking about in your original question. e.g. > > MyWAComponentSubclass>>#sendPasswordResetLinkToUser:html > newUrl := html context actionUrl > withParameter: > (html callbacks > store: > (WAValueCallback > on: [self home. > self show: (ResetPassword new user: member) ])). > > urlToEmail := html context resourceUrl greaseString , newUrl greaseString. > > self sendMailWithUrl: urlToEmail toMember: member. > > > > So when clicked in their email their browser opens up the 'reset password' form in a page on my site. It doesn't use WABuilder and does store a callback that does get executed in the current render context. It also expires when the current session expires. > Thanks for this tip. This is part of the solution I need. I need also to render some markup surrounding that link. So I'm looking for some intermediate canvas that can be drawn on and from which I can get the html as string. thanks, Norbert > > > > > > On 05/17/2012 08:59 AM, Norbert Hartl wrote: >> Or different asked: >> >> Using >> >> WARenderCanvas builder render: [:h| ...] >> >> enables me to render something into a string. But if the rendered block produces callbacks they aren't registered anywhere and cannot be called aftwards, right? >> >> Norbert >> Am 17.05.2012 um 11:32 schrieb Norbert Hartl: >> >>> >>> Am 16.05.2012 um 20:50 schrieb Paul DeBruicker: >>> >>>> On 05/16/2012 09:16 AM, Norbert Hartl wrote: >>>>> To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. >>>>> >>>>> Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. >>>>> >>>>> thanks, >>>>> >>>>> Norbert____ >>>> >>>> >>>> Could you do something like what I suggested in the Zinc Callback Limit thread a few days ago? >>>> >>>> http://forum.world.st/Zinc-Callback-Limit-tp4630181p4630195.html >>> >>> I don't think so. You are tunneling virtual callbacks over one real callback. But that one real callback you need to draw in this canvas. My problem is the place where the rendered string should be drawn. Basically I have >>> >>> ... >>> "this is anchor1" >>> html anchor >>> onClick: (html jQuery ajax ...) >>> with: 'foo'. >>> html script: (JSStream on: ' >>> >>> var aMarker = new google.maps.Marker({ >>> position: new google.maps.LatLng(marker.lat, marker.lon), >>> map: map >>> }); >>> google.maps.event.addListener(aMarker, "click", clickedMarker); >>> aMarker.info = new google.maps.InfoWindow({ >>> content: 'foo' >>> }); '. >>> ... >>> >>> So I have anchor1 that is rendered on the canvas. Then I need to render a script on that canvas that creates a marker on a map. If you look at the "content: '>> >>> Norbert >>> >>> >>> _______________________________________________ >>> seaside mailing list >>> seaside@lists.squeakfoundation.org >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From dtrussardi at tiscali.it Tue May 22 16:52:06 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Tue May 22 16:52:20 2012 Subject: [Seaside] answer: and jQuery In-Reply-To: <74996DB2A7D4F849A732A31320BACECE038865C9@im04.cincom.com> References: <4F61A16D.9040302@googlemail.com> <74996DB2A7D4F849A732A31320BACECE038865C9@im04.cincom.com> Message-ID: Ciao, i porting some code from Scriptaculous to JQ framework. I found some problem to port some code based on lightbox implementation to JQDialog widget. With lightbox i rendering some Magritte description container in it and all work fine. > FWIW, we have been successfully using the JQuery extensions from Nick Ager (JQuery-Extensions-NickAger.2.mcz) in VisualWorks and I believe it would do what you are after. It allows you to "call" a component in a JQuery dialog and get a response object from the component when the dialog closes. Works a bit like the now old-fashioned #lightbox: method. I read this message on Seaside mail-list. Question: where i found the JQuery-Extensions-NickAger.2.mcz I work with Pharo and Seaside 3.0.1 Thank for any consideration about it and JQDialog widget integrations. Dario -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120522/cb0800d4/attachment.htm From norbert at hartl.name Tue May 22 16:53:59 2012 From: norbert at hartl.name (Norbert Hartl) Date: Tue May 22 16:54:04 2012 Subject: [Seaside] Render into a separate document while sharing context In-Reply-To: References: <2AA1DF2C-E31B-4F8B-AD9E-A64B7FFDA374@hartl.name> <4FB3F705.9010000@gmail.com> <261A1A73-42F1-4F6D-9F8E-149A8D5AB717@hartl.name> <86A83ED3-15FD-43F4-AF34-A6D18C72C22B@hartl.name> <4FB5252E.6070602@gmail.com> Message-ID: <7B0E0EAC-2DA1-435E-8462-2960E49B7613@hartl.name> Just for the record. What I was looking for is ^ String streamContents: [:stream| | canvas | canvas := WARenderCanvas new initializeWithContext: ( aCanvas context copy document: (WAHtmlDocument on: stream codec: GRNullCodec new)). aBlock value: canvas. canvas flush ] Norbert Am 22.05.2012 um 17:42 schrieb Norbert Hartl: > Paul, > > > Am 17.05.2012 um 18:19 schrieb Paul DeBruicker: > >> When I send a 'reset your password' email I think I'm doing what you're asking about in your original question. e.g. >> >> MyWAComponentSubclass>>#sendPasswordResetLinkToUser:html >> newUrl := html context actionUrl >> withParameter: >> (html callbacks >> store: >> (WAValueCallback >> on: [self home. >> self show: (ResetPassword new user: member) ])). >> >> urlToEmail := html context resourceUrl greaseString , newUrl greaseString. >> >> self sendMailWithUrl: urlToEmail toMember: member. >> >> >> >> So when clicked in their email their browser opens up the 'reset password' form in a page on my site. It doesn't use WABuilder and does store a callback that does get executed in the current render context. It also expires when the current session expires. >> > Thanks for this tip. This is part of the solution I need. I need also to render some markup surrounding that link. So I'm looking for some intermediate canvas that can be drawn on and from which I can get the html as string. > > thanks, > > Norbert >> >> >> >> >> >> On 05/17/2012 08:59 AM, Norbert Hartl wrote: >>> Or different asked: >>> >>> Using >>> >>> WARenderCanvas builder render: [:h| ...] >>> >>> enables me to render something into a string. But if the rendered block produces callbacks they aren't registered anywhere and cannot be called aftwards, right? >>> >>> Norbert >>> Am 17.05.2012 um 11:32 schrieb Norbert Hartl: >>> >>>> >>>> Am 16.05.2012 um 20:50 schrieb Paul DeBruicker: >>>> >>>>> On 05/16/2012 09:16 AM, Norbert Hartl wrote: >>>>>> To place a marker I need to call some javascript function. That function takes latitude, longitude and a definition of a window that pops up if the marker is pressed. The popup window needs to contain an html anchor. Therefor I need to add the callbacks to the current renderer. >>>>>> >>>>>> Is there something that assists in doing this. WABuilder would be fine but it creates a new render context. >>>>>> >>>>>> thanks, >>>>>> >>>>>> Norbert____ >>>>> >>>>> >>>>> Could you do something like what I suggested in the Zinc Callback Limit thread a few days ago? >>>>> >>>>> http://forum.world.st/Zinc-Callback-Limit-tp4630181p4630195.html >>>> >>>> I don't think so. You are tunneling virtual callbacks over one real callback. But that one real callback you need to draw in this canvas. My problem is the place where the rendered string should be drawn. Basically I have >>>> >>>> ... >>>> "this is anchor1" >>>> html anchor >>>> onClick: (html jQuery ajax ...) >>>> with: 'foo'. >>>> html script: (JSStream on: ' >>>> >>>> var aMarker = new google.maps.Marker({ >>>> position: new google.maps.LatLng(marker.lat, marker.lon), >>>> map: map >>>> }); >>>> google.maps.event.addListener(aMarker, "click", clickedMarker); >>>> aMarker.info = new google.maps.InfoWindow({ >>>> content: 'foo' >>>> }); '. >>>> ... >>>> >>>> So I have anchor1 that is rendered on the canvas. Then I need to render a script on that canvas that creates a marker on a map. If you look at the "content: '>>> >>>> Norbert >>>> >>>> >>>> _______________________________________________ >>>> seaside mailing list >>>> seaside@lists.squeakfoundation.org >>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>> >>> _______________________________________________ >>> seaside mailing list >>> seaside@lists.squeakfoundation.org >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From janus1859 at googlemail.com Wed May 23 12:36:29 2012 From: janus1859 at googlemail.com (janus) Date: Wed May 23 12:36:34 2012 Subject: [Seaside] Checkbox with JQuery Message-ID: <1337776589194-4631550.post@n4.nabble.com> Hello, I would like to use a checkbox with JQuery. How is it possible to use the onchange-event to show the checked-status of the checkbox. This is my approach so far: /renderCheckBoxFor: eachAccount on: html | ID parentID checkBox | parentID := html nextId. ID := html nextId. html div id: parentID; with: [ html label for: ID; with: 'CheckBox: '. html checkbox id: ID; value: checkBox; callback: [ :value | checkBox := value ]; onChange: (html jQuery ajax callback: [ :value | Transcript show: value; cr ] value: (html jQuery this parent: '#' , parentID; find: ('#', ID)) serialize) ]./ html break -- View this message in context: http://forum.world.st/Checkbox-with-JQuery-tp4631550.html Sent from the Seaside General mailing list archive at Nabble.com. From ryan.craig.simmons at gmail.com Wed May 23 12:46:24 2012 From: ryan.craig.simmons at gmail.com (Ryan Simmons) Date: Wed May 23 12:46:31 2012 Subject: [Seaside] Checkbox with JQuery In-Reply-To: <1337776589194-4631550.post@n4.nabble.com> References: <1337776589194-4631550.post@n4.nabble.com> Message-ID: I think it is something like this onChange: (html jQuery ajax serializeChildren: (htnl jQuery id: parentID); script: [:script | checkBox ifTrue: [script alert: 'True'] ifFalse: [script alert: 'False']]) On 23 May 2012 14:36, janus wrote: > Hello, > I would like to use a checkbox with JQuery. How is it possible to use the > onchange-event to show the checked-status of the checkbox. > This is my approach so far: > > /renderCheckBoxFor: eachAccount on: html > | ID parentID checkBox | > parentID := html nextId. > ID := html nextId. > html div > id: parentID; > with: [ > html label > for: ID; > with: 'CheckBox: '. > html checkbox > id: ID; > value: checkBox; > callback: [ :value | > checkBox := value ]; > onChange: > (html > jQuery ajax > > callback: [ :value | Transcript show: value; cr ] > > value: > > (html jQuery this > > parent: '#' , parentID; > > find: ('#', ID)) serialize) ]./ > html break > > -- > View this message in context: > http://forum.world.st/Checkbox-with-JQuery-tp4631550.html > Sent from the Seaside General mailing list archive at Nabble.com. > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120523/72c7f400/attachment.htm From janus1859 at googlemail.com Wed May 23 12:50:09 2012 From: janus1859 at googlemail.com (Michael Backmann) Date: Wed May 23 12:50:15 2012 Subject: [Seaside] Checkbox with JQuery In-Reply-To: References: <1337776589194-4631550.post@n4.nabble.com> Message-ID: <4FBCDD01.7040707@googlemail.com> Thank you very much! It works perfectly. Am 23.05.2012 14:46, schrieb Ryan Simmons: > I think it is something like this > > onChange: > (html > jQuery ajax > > serializeChildren: (htnl jQuery id: parentID); > > script: [:script | checkBox ifTrue: [script alert: 'True'] > > ifFalse: [script alert: > 'False']]) > > On 23 May 2012 14:36, janus > wrote: > > Hello, > I would like to use a checkbox with JQuery. How is it possible to > use the > onchange-event to show the checked-status of the checkbox. > This is my approach so far: > > /renderCheckBoxFor: eachAccount on: html > | ID parentID checkBox | > parentID := html nextId. > ID := html nextId. > html div > id: parentID; > with: [ > html label > for: ID; > with: 'CheckBox: '. > html checkbox > id: ID; > value: checkBox; > callback: [ :value > | checkBox := value ]; > onChange: > > (html jQuery ajax > > callback: [ :value | Transcript show: value; cr ] > > value: > > (html jQuery this > > parent: '#' , parentID; > > find: ('#', ID)) serialize) ]./ > html break > > -- > View this message in context: > http://forum.world.st/Checkbox-with-JQuery-tp4631550.html > Sent from the Seaside General mailing list archive at Nabble.com. > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120523/56b39eb7/attachment.htm From guillermopolito at gmail.com Wed May 23 22:06:14 2012 From: guillermopolito at gmail.com (Guillermo Polito) Date: Wed May 23 22:06:18 2012 Subject: [Seaside] Out of date ConfigurationOfMagritte? Message-ID: Hi! I was downloading ConfigurationOfMagritte on a 3.0.7 seaside image and noticed that it depends on - seaside 2.8 Can't I use it with Seaside 3.0? - Announcements. Announcements is introduced by default in 1.4. - OB Does it really depend on OB? or it is just a way to download everything in one shot? I do not know if this is this question should come in this list or not :/. Thanks! Guille -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120524/c2546faa/attachment.htm From fusion at storytotell.org Wed May 23 22:32:20 2012 From: fusion at storytotell.org (Daniel Lyons) Date: Wed May 23 22:32:23 2012 Subject: [Seaside] Out of date ConfigurationOfMagritte? In-Reply-To: References: Message-ID: <20120523223220.GD13167@clanspum.net> On Thu, May 24, 2012 at 12:06:14AM +0200, Guillermo Polito wrote: > - OB > Does it really depend on OB? or it is just a way to download > everything in one shot? I'm using Pharo 1.4. The OB dependency is also there for ConfigurationOfSeaside30-NickAger.373. I also find this puzzling. It also seems to mean that if you load Nautilus before Seaside, Seaside won't load, but if you load Seaside first, then you can load Nautilus. I haven't tested beyond that point though. -- Daniel Lyons From guillermopolito at gmail.com Wed May 23 22:35:59 2012 From: guillermopolito at gmail.com (Guillermo Polito) Date: Wed May 23 22:36:12 2012 Subject: [Seaside] Out of date ConfigurationOfMagritte? In-Reply-To: <20120523223220.GD13167@clanspum.net> References: <20120523223220.GD13167@clanspum.net> Message-ID: Ok, Esteban just told me to use ConfigurationOfMagritte2/3 :). On Thu, May 24, 2012 at 12:32 AM, Daniel Lyons wrote: > On Thu, May 24, 2012 at 12:06:14AM +0200, Guillermo Polito wrote: > > - OB > > Does it really depend on OB? or it is just a way to download > > everything in one shot? > > I'm using Pharo 1.4. > > The OB dependency is also there for ConfigurationOfSeaside30-NickAger.373. > > I also find this puzzling. It also seems to mean that if you load > Nautilus before Seaside, Seaside won't load, but if you load Seaside > first, then you can load Nautilus. I haven't tested beyond that point > though. > > -- > Daniel Lyons > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120524/2fc79029/attachment.htm From philippe.marschall at gmail.com Thu May 24 07:19:13 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Thu May 24 07:19:20 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? Message-ID: Hi As in the past we're considering to do a Seaside Sprint at one or two days following ESUG. We're trying to find out whether there are enough people interested. Cheers Philippe From dhenrich at vmware.com Thu May 24 15:19:13 2012 From: dhenrich at vmware.com (Dale Henrichs) Date: Thu May 24 15:19:16 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: Message-ID: <880173189.129588.1337872753138.JavaMail.root@vmware.com> I'm interested. ----- Original Message ----- | From: "Philippe Marschall" | To: "Seaside - general discussion" | Sent: Thursday, May 24, 2012 12:19:13 AM | Subject: [Seaside] Interested in Seaside Sprint @ ESUG? | | Hi | | As in the past we're considering to do a Seaside Sprint at one or two | days following ESUG. We're trying to find out whether there are | enough | people interested. | | Cheers | Philippe | _______________________________________________ | seaside mailing list | seaside@lists.squeakfoundation.org | http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside | From astares at gmx.de Thu May 24 19:41:06 2012 From: astares at gmx.de (Torsten Bergmann) Date: Thu May 24 19:41:15 2012 Subject: [Seaside] [ANN] CodeMirror / WABrowser with Smalltalk Syntax highlighting Message-ID: <20120524194106.91110@gmx.net> Hi there, I wrote a simple seaside wrapper for the CodeMirror JavaScript Editor, the code lives in http://ss3.gemstone.com/ss/Seaside-CodeMirror It was actually very easy to wrap due to the new WAFileMetadataLibrary facility. Since this editor includes also a "Smalltalk mode" you can also use the project in combination with the attached patch changeset for WABrowser to style your web served Seaside code browser/editor. (Screenshot attached) Look at http://codemirror.net/mode/smalltalk/index.html to try the mode online. Have fun! Bye Torsten -- Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de -------------- next part -------------- A non-text attachment was scrubbed... Name: CodeMirrorInWABrowser.1.cs Type: application/octet-stream Size: 1688 bytes Desc: not available Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120524/0060899a/CodeMirrorInWABrowser.1-0001.obj -------------- next part -------------- A non-text attachment was scrubbed... Name: styled.png Type: image/png Size: 33221 bytes Desc: not available Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120524/0060899a/styled-0001.png From nick.ager at gmail.com Fri May 25 17:59:27 2012 From: nick.ager at gmail.com (Nick Ager) Date: Fri May 25 17:59:31 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: <880173189.129588.1337872753138.JavaMail.root@vmware.com> References: <880173189.129588.1337872753138.JavaMail.root@vmware.com> Message-ID: my too On 24 May 2012 16:19, Dale Henrichs wrote: > I'm interested. > > ----- Original Message ----- > | From: "Philippe Marschall" > | To: "Seaside - general discussion" > | Sent: Thursday, May 24, 2012 12:19:13 AM > | Subject: [Seaside] Interested in Seaside Sprint @ ESUG? > | > | Hi > | > | As in the past we're considering to do a Seaside Sprint at one or two > | days following ESUG. We're trying to find out whether there are > | enough > | people interested. > | > | Cheers > | Philippe > | _______________________________________________ > | seaside mailing list > | seaside@lists.squeakfoundation.org > | http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > | > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From stephane.ducasse at free.fr Sat May 26 09:28:45 2012 From: stephane.ducasse at free.fr (stephane ducasse) Date: Sat May 26 09:28:50 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: References: Message-ID: I'm sure that esug can help and sponsor it. Do not hesitate to ask Stef On May 24, 2012, at 9:19 AM, Philippe Marschall wrote: > Hi > > As in the past we're considering to do a Seaside Sprint at one or two > days following ESUG. We're trying to find out whether there are enough > people interested. > > Cheers > Philippe > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > From johan at inceptive.be Sat May 26 15:39:12 2012 From: johan at inceptive.be (Johan Brichau) Date: Sat May 26 15:39:15 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: References: Message-ID: Count me in too. We should be able to use the same location as Camp Smalltalk (which are our "offices" in Gent) for free on Saturday. On Friday afternoon, we will be able to remain at Vooruit (main conference location). If anybody wants to sponsor food and drinks, that would be cool of course ;-) On 26 May 2012, at 11:28, stephane ducasse wrote: > I'm sure that esug can help and sponsor it. > Do not hesitate to ask > > Stef > > On May 24, 2012, at 9:19 AM, Philippe Marschall wrote: > >> Hi >> >> As in the past we're considering to do a Seaside Sprint at one or two >> days following ESUG. We're trying to find out whether there are enough >> people interested. >> >> Cheers >> Philippe >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From dhenrich at vmware.com Sat May 26 16:42:36 2012 From: dhenrich at vmware.com (Dale Henrichs) Date: Sat May 26 16:42:41 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: Message-ID: <65820037.185724.1338050556495.JavaMail.root@vmware.com> I'll check into having VMWare sponsor refreshments ... Dale ----- Original Message ----- | From: "Johan Brichau" | To: "Seaside - general discussion" | Sent: Saturday, May 26, 2012 8:39:12 AM | Subject: Re: [Seaside] Interested in Seaside Sprint @ ESUG? | | Count me in too. | | We should be able to use the same location as Camp Smalltalk (which | are our "offices" in Gent) for free on Saturday. On Friday | afternoon, we will be able to remain at Vooruit (main conference | location). | | If anybody wants to sponsor food and drinks, that would be cool of | course ;-) | | On 26 May 2012, at 11:28, stephane ducasse wrote: | | > I'm sure that esug can help and sponsor it. | > Do not hesitate to ask | > | > Stef | > | > On May 24, 2012, at 9:19 AM, Philippe Marschall wrote: | > | >> Hi | >> | >> As in the past we're considering to do a Seaside Sprint at one or | >> two | >> days following ESUG. We're trying to find out whether there are | >> enough | >> people interested. | >> | >> Cheers | >> Philippe | >> _______________________________________________ | >> seaside mailing list | >> seaside@lists.squeakfoundation.org | >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside | >> | > | > _______________________________________________ | > seaside mailing list | > seaside@lists.squeakfoundation.org | > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside | | _______________________________________________ | seaside mailing list | seaside@lists.squeakfoundation.org | http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside | From philippe.marschall at gmail.com Sun May 27 10:22:27 2012 From: philippe.marschall at gmail.com (Philippe Marschall) Date: Sun May 27 10:22:32 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: References: Message-ID: On Sat, May 26, 2012 at 5:39 PM, Johan Brichau wrote: > Count me in too. > > We should be able to use the same location as Camp Smalltalk (which are our "offices" in Gent) for free on Saturday. On Friday afternoon, we will be able to remain at Vooruit (main conference location). > > If anybody wants to sponsor food and drinks, that would be cool of course ;-) I love it when stuff organizes itself. Thanks guys Philippe From razavi at acm.org Sun May 27 10:56:36 2012 From: razavi at acm.org (Reza Razavi) Date: Sun May 27 10:56:43 2012 Subject: [Seaside] Interested in Seaside Sprint @ ESUG? In-Reply-To: References: Message-ID: <599673$7m0pvl@smtp.pt.lu> At 17:39 26/05/2012, Johan Brichau wrote: >If anybody wants to sponsor food and drinks, that would be cool of course ;-) Hello Johan, all, I'll also check into having AAS sponsor food ... Cheers, Reza From marianopeck at gmail.com Sun May 27 18:57:18 2012 From: marianopeck at gmail.com (Mariano Martinez Peck) Date: Sun May 27 18:57:23 2012 Subject: [Seaside] Fwd: [Pharo-users] [ANN] Fuel Release Version 1.8 In-Reply-To: References: Message-ID: Since a serializer may be useful for webapps... ---------- Forwarded message ---------- From: Martin Dias Date: Sat, May 26, 2012 at 7:04 AM Subject: [Pharo-users] [ANN] Fuel Release Version 1.8 To: A friendly place where any question about pharo is welcome < pharo-users@lists.gforge.inria.fr>, pharo-project@lists.gforge.inria.fr Hi all, We are proud to announce Fuel 1.8 with a lot of new features and documentation. Of course, we don't stop working but it was time to freeze a stable version. Fuel is an open-source general-purpose object serialization framework developed in Pharo Smalltalk environment. More information on our website [1]. Fuel works out of the box in Pharo from 1.1 up to 2.0 (checked at #20094). Please check our documentation [2] for complete installation and use guides. Below, there are some remarkable changes. - Much more complete user guides. - Improved API for customizing how graph is traced. - FuelMetalevel: serialization of stuff like classes and compiled methods moved to an optional package. - Customize objects to be treated as globals. - Migrations: declare at materialization time class and variables renames. - Weak references properly managed. Thanks to Juan Vuletich and Levente. - Thanks Pavel for helping us improving FuelPackageLoader with wonderful ideas and bug reports. - Serialization speed up on large graphs by using specialized collections. Thanks Levente. - Encoder and Decoder: new reifications that clarify the design. Thanks Colin Putney. - Optimized serialization of "clean" BlockClosures, which don't need the whole stack of contexts. Thanks Juan Vuletich and Eliot Miranda. - Added a clear error hierarchy. - Debug facilities, including graph visualization using Roassal. Thanks Alexandre and Doru. - Many more new tests. Including those from extension packages, we have almost 600 tests. - Repository moved from 'http://www.squeaksource.com/Fuel' to 'http://ss3.gemstone.com/ss/Fuel'. If you are a Fuel user we are not aware of, please let us know! Best regards, Martin and Mariano [1]: http://rmod.lille.inria.fr/web/pier/software/Fuel [2]: http://rmod.lille.inria.fr/web/pier/software/Fuel/Version1.8/Documentation -- Mariano http://marianopeck.wordpress.com -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120527/05e3cd7e/attachment.htm From dtrussardi at tiscali.it Mon May 28 08:40:00 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Mon May 28 08:40:06 2012 Subject: [Seaside] JQuery Dialog -Extensions with GMDraggableMarkers problem Message-ID: Ciao, i'm interested to work with JQuery Dialog widget to replicate the Scriptaculous lightbox. For now i load the JQuery-Extensions-NickAger.2.mcz . It work fine and replicate well the lightbox. But i have problem when i open jqDialog on component with GoogleMaps instance. For example component with GMDraggableMarkers. html anchor callback:[ rsl:= self jqDialog: GMDraggableMarkers new ]; with: 'GoogleTest' When open it with jqDialog: the Goggle Maps is right render but the relative event is not manage. I think that the GMDraggableMarkers loadScript ^' var map = new GMap2(document.getElementById(" ..................... is not loaded properly when the dialog is open. Does anyone have idea on how resolve the issue? Thank, Dario -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120528/8ae008b9/attachment.htm From gaston.dalloglio at gmail.com Mon May 28 14:23:26 2012 From: gaston.dalloglio at gmail.com (=?ISO-8859-1?Q?Gast=F3n_Dall=27_Oglio?=) Date: Mon May 28 14:23:53 2012 Subject: [Seaside] Twitter Bootstrap and Magritte In-Reply-To: References: Message-ID: Hi. I'm making right now some templates for pier, and I can't to decide to use Blueprint or TwitterBootstrap :( Pier templates for blog currently use Blueprint, but I guess that Bootstrap is the better choise for make something from cero (like me). Any comment/thought is welcome :). Thanks in advance. Regards. 2012/3/23 Nick Ager > Hi Jan, > > I extended the code a little with a subclass of MAReport so you can use >> Bootstrap to style your tables/reports. Including the pagination controls. >> > > Thanks that's a fantastic addition. I've updated > http://twitterbootstrap.seasidehosting.st/ > > >> I am working on a web application that is based on jQueryUI and the >> Blueprint CSS Framework. Perhaps I can replace Blueprint with Bootstrap. It >> seems that Bootstrap has a lot more to offer than Blueprint. I think I will >> still need jQueryUI for the datepicker and dialog controls. >> > > Bootstrap supports dialogs - which it calls modals -> > http://twitter.github.com/bootstrap/javascript.html#modals > Last time I looked they were not as functional JQueryUI dialogs though > bootstrap is developing so quickly that if it doesn't do what you need now, > it could soon... > > BTW: I integrated the JQueryUI date picker with Magritte - > see MAJQDateInputComponent in Magritte-JQuery of > http://source.lukas-renggli.ch/magritte3addons > > Cheers > > Nick > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120528/c0ec8262/attachment.htm From nick.ager at gmail.com Mon May 28 14:47:08 2012 From: nick.ager at gmail.com (Nick Ager) Date: Mon May 28 14:47:11 2012 Subject: [Seaside] Twitter Bootstrap and Magritte In-Reply-To: References: Message-ID: I would go with Twitterbootstrap - it has widespread adoption, and encompasses considerably more than blueprint. - ideally I'd like to update the "standard" templates to use Twitterbootstrap On 28 May 2012 15:23, Gast?n Dall' Oglio wrote: > Hi. > > I'm making right now some templates for pier, and I can't to decide to use > Blueprint or TwitterBootstrap :( > Pier templates for blog currently use Blueprint, but I guess that Bootstrap > is the better choise for make something from cero (like me). > > Any comment/thought is welcome :). Thanks in advance. > Regards. > > 2012/3/23 Nick Ager >> >> Hi Jan, >> >>> I extended the code a little with a subclass of MAReport so you can use >>> Bootstrap to style your tables/reports. Including the pagination controls. >> >> >> Thanks that's a fantastic addition. I've >> updated?http://twitterbootstrap.seasidehosting.st/ >> >>> >>> I am working on a web application that is based on jQueryUI and the >>> Blueprint CSS Framework. Perhaps I can replace Blueprint with Bootstrap. It >>> seems that Bootstrap has a lot more to offer than Blueprint. I think I will >>> still need jQueryUI for the datepicker and dialog controls. >> >> >> Bootstrap supports dialogs - which it calls modals >> ->?http://twitter.github.com/bootstrap/javascript.html#modals >> Last time I looked they were not as functional JQueryUI dialogs though >> bootstrap is developing so quickly that if it doesn't do what you need now, >> it could soon... >> >> BTW: I integrated the JQueryUI date picker with Magritte - >> see?MAJQDateInputComponent in?Magritte-JQuery >> of?http://source.lukas-renggli.ch/magritte3addons >> >> Cheers >> >> Nick >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > From gaston.dalloglio at gmail.com Mon May 28 15:08:44 2012 From: gaston.dalloglio at gmail.com (=?ISO-8859-1?Q?Gast=F3n_Dall=27_Oglio?=) Date: Mon May 28 15:08:49 2012 Subject: [Seaside] Twitter Bootstrap and Magritte In-Reply-To: References: Message-ID: Hi Nick. 2012/5/28 Nick Ager > I would go with Twitterbootstrap - it has widespread adoption, and > encompasses considerably more than blueprint. > I would go with Twitterbootstrap - it has widespread adoption, and encompasses considerably more than blueprint. ok, I go for it! I will share my templates, if I can do something good :) > > - ideally I'd like to update the "standard" templates to use > Twitterbootstrap > yes, that would good. Thanks you. > > On 28 May 2012 15:23, Gast?n Dall' Oglio > wrote: > > Hi. > > > > I'm making right now some templates for pier, and I can't to decide to > use > > Blueprint or TwitterBootstrap :( > > Pier templates for blog currently use Blueprint, but I guess that > Bootstrap > > is the better choise for make something from cero (like me). > > > > Any comment/thought is welcome :). Thanks in advance. > > Regards. > > > > 2012/3/23 Nick Ager > >> > >> Hi Jan, > >> > >>> I extended the code a little with a subclass of MAReport so you can use > >>> Bootstrap to style your tables/reports. Including the pagination > controls. > >> > >> > >> Thanks that's a fantastic addition. I've > >> updated http://twitterbootstrap.seasidehosting.st/ > >> > >>> > >>> I am working on a web application that is based on jQueryUI and the > >>> Blueprint CSS Framework. Perhaps I can replace Blueprint with > Bootstrap. It > >>> seems that Bootstrap has a lot more to offer than Blueprint. I think I > will > >>> still need jQueryUI for the datepicker and dialog controls. > >> > >> > >> Bootstrap supports dialogs - which it calls modals > >> -> http://twitter.github.com/bootstrap/javascript.html#modals > >> Last time I looked they were not as functional JQueryUI dialogs though > >> bootstrap is developing so quickly that if it doesn't do what you need > now, > >> it could soon... > >> > >> BTW: I integrated the JQueryUI date picker with Magritte - > >> see MAJQDateInputComponent in Magritte-JQuery > >> of http://source.lukas-renggli.ch/magritte3addons > >> > >> Cheers > >> > >> Nick > >> > >> _______________________________________________ > >> seaside mailing list > >> seaside@lists.squeakfoundation.org > >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > >> > > > > > > _______________________________________________ > > seaside mailing list > > seaside@lists.squeakfoundation.org > > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120528/382e86fd/attachment.htm From gaston.dalloglio at gmail.com Mon May 28 21:08:17 2012 From: gaston.dalloglio at gmail.com (=?ISO-8859-1?Q?Gast=F3n_Dall=27_Oglio?=) Date: Mon May 28 21:08:24 2012 Subject: [Seaside] Twitter Bootstrap and Magritte In-Reply-To: References: Message-ID: Skipped content of type multipart/alternative-------------- next part -------------- A non-text attachment was scrubbed... Name: PRBlogKernelDistribution-templates.st Type: application/octet-stream Size: 7898 bytes Desc: not available Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120528/c7eb7592/PRBlogKernelDistribution-templates-0001.obj From nick.ager at gmail.com Tue May 29 09:03:51 2012 From: nick.ager at gmail.com (Nick Ager) Date: Tue May 29 09:03:57 2012 Subject: [Seaside] Twitter Bootstrap and Magritte In-Reply-To: References: Message-ID: Thanks Gaston - I'll have a look at it tonight - sounds great On 28 May 2012 22:08, Gast?n Dall' Oglio wrote: > Hi Nick. > > I have modified blog template for to use TWBS, instead Blueprint. I have > added a fluid version of templates. The templates used in structures can be > changed from PierAdmin -> context menu -> settings -> template. > I have added a new template for a blog post, how can I set it for default > to a new posts? > > For try, load the st attached, create a new kernel from blog distribution, > remove PRBlueprintLibrary and add TWBSDevelopmentLibrary. > > This works fine (I guess), but I only changed templates, I know there are > several other sites in Pier where Blueprint is used. > > Regards. > > 2012/5/28 Gast?n Dall' Oglio > >> Hi Nick. >> >> 2012/5/28 Nick Ager >> >>> I would go with Twitterbootstrap - it has widespread adoption, and >>> encompasses considerably more than blueprint. >>> >> >> I would go with Twitterbootstrap - it has widespread adoption, and >> encompasses considerably more than blueprint. >> >> ok, I go for it! I will share my templates, if I can do something good :) >> >> >>> >>> - ideally I'd like to update the "standard" templates to use >>> Twitterbootstrap >>> >> >> yes, that would good. >> >> Thanks you. >> >> >>> >>> On 28 May 2012 15:23, Gast?n Dall' Oglio >>> wrote: >>> > Hi. >>> > >>> > I'm making right now some templates for pier, and I can't to decide to >>> use >>> > Blueprint or TwitterBootstrap :( >>> > Pier templates for blog currently use Blueprint, but I guess that >>> Bootstrap >>> > is the better choise for make something from cero (like me). >>> > >>> > Any comment/thought is welcome :). Thanks in advance. >>> > Regards. >>> > >>> > 2012/3/23 Nick Ager >>> >> >>> >> Hi Jan, >>> >> >>> >>> I extended the code a little with a subclass of MAReport so you can >>> use >>> >>> Bootstrap to style your tables/reports. Including the pagination >>> controls. >>> >> >>> >> >>> >> Thanks that's a fantastic addition. I've >>> >> updated http://twitterbootstrap.seasidehosting.st/ >>> >> >>> >>> >>> >>> I am working on a web application that is based on jQueryUI and the >>> >>> Blueprint CSS Framework. Perhaps I can replace Blueprint with >>> Bootstrap. It >>> >>> seems that Bootstrap has a lot more to offer than Blueprint. I think >>> I will >>> >>> still need jQueryUI for the datepicker and dialog controls. >>> >> >>> >> >>> >> Bootstrap supports dialogs - which it calls modals >>> >> -> http://twitter.github.com/bootstrap/javascript.html#modals >>> >> Last time I looked they were not as functional JQueryUI dialogs though >>> >> bootstrap is developing so quickly that if it doesn't do what you >>> need now, >>> >> it could soon... >>> >> >>> >> BTW: I integrated the JQueryUI date picker with Magritte - >>> >> see MAJQDateInputComponent in Magritte-JQuery >>> >> of http://source.lukas-renggli.ch/magritte3addons >>> >> >>> >> Cheers >>> >> >>> >> Nick >>> >> >>> >> _______________________________________________ >>> >> seaside mailing list >>> >> seaside@lists.squeakfoundation.org >>> >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>> >> >>> > >>> > >>> > _______________________________________________ >>> > seaside mailing list >>> > seaside@lists.squeakfoundation.org >>> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>> > >>> _______________________________________________ >>> seaside mailing list >>> seaside@lists.squeakfoundation.org >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>> >> >> > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120529/9ae442a3/attachment.htm From gaston.dalloglio at gmail.com Tue May 29 11:53:01 2012 From: gaston.dalloglio at gmail.com (=?ISO-8859-1?Q?Gast=F3n_Dall=27_Oglio?=) Date: Tue May 29 11:53:08 2012 Subject: [Seaside] Twitter Bootstrap and Magritte In-Reply-To: References: Message-ID: You're welcome. The changes I made was very simples, only change some markups, so that only there some visually changes, but is really good see how now layout respond to browser size changes. And of course could be used ton of twbs's characteristic in blog templates, without be required make Pier's wrappers for jquery plugins, directly pier's widget with twbs markup. I guess that for really change to twbs some deep cleanup is need is Pier, in css and markup, let us know if we can help. Definitively, twbs will be that I use for Pier templates :) Regards. 2012/5/29 Nick Ager > Thanks Gaston - I'll have a look at it tonight - sounds great > > > On 28 May 2012 22:08, Gast?n Dall' Oglio wrote: > >> Hi Nick. >> >> I have modified blog template for to use TWBS, instead Blueprint. I have >> added a fluid version of templates. The templates used in structures can be >> changed from PierAdmin -> context menu -> settings -> template. >> I have added a new template for a blog post, how can I set it for default >> to a new posts? >> >> For try, load the st attached, create a new kernel from blog >> distribution, remove PRBlueprintLibrary and add TWBSDevelopmentLibrary. >> >> This works fine (I guess), but I only changed templates, I know there are >> several other sites in Pier where Blueprint is used. >> >> Regards. >> >> 2012/5/28 Gast?n Dall' Oglio >> >>> Hi Nick. >>> >>> 2012/5/28 Nick Ager >>> >>>> I would go with Twitterbootstrap - it has widespread adoption, and >>>> encompasses considerably more than blueprint. >>>> >>> >>> I would go with Twitterbootstrap - it has widespread adoption, and >>> encompasses considerably more than blueprint. >>> >>> ok, I go for it! I will share my templates, if I can do something good :) >>> >>> >>>> >>>> - ideally I'd like to update the "standard" templates to use >>>> Twitterbootstrap >>>> >>> >>> yes, that would good. >>> >>> Thanks you. >>> >>> >>>> >>>> On 28 May 2012 15:23, Gast?n Dall' Oglio >>>> wrote: >>>> > Hi. >>>> > >>>> > I'm making right now some templates for pier, and I can't to decide >>>> to use >>>> > Blueprint or TwitterBootstrap :( >>>> > Pier templates for blog currently use Blueprint, but I guess that >>>> Bootstrap >>>> > is the better choise for make something from cero (like me). >>>> > >>>> > Any comment/thought is welcome :). Thanks in advance. >>>> > Regards. >>>> > >>>> > 2012/3/23 Nick Ager >>>> >> >>>> >> Hi Jan, >>>> >> >>>> >>> I extended the code a little with a subclass of MAReport so you can >>>> use >>>> >>> Bootstrap to style your tables/reports. Including the pagination >>>> controls. >>>> >> >>>> >> >>>> >> Thanks that's a fantastic addition. I've >>>> >> updated http://twitterbootstrap.seasidehosting.st/ >>>> >> >>>> >>> >>>> >>> I am working on a web application that is based on jQueryUI and the >>>> >>> Blueprint CSS Framework. Perhaps I can replace Blueprint with >>>> Bootstrap. It >>>> >>> seems that Bootstrap has a lot more to offer than Blueprint. I >>>> think I will >>>> >>> still need jQueryUI for the datepicker and dialog controls. >>>> >> >>>> >> >>>> >> Bootstrap supports dialogs - which it calls modals >>>> >> -> http://twitter.github.com/bootstrap/javascript.html#modals >>>> >> Last time I looked they were not as functional JQueryUI dialogs >>>> though >>>> >> bootstrap is developing so quickly that if it doesn't do what you >>>> need now, >>>> >> it could soon... >>>> >> >>>> >> BTW: I integrated the JQueryUI date picker with Magritte - >>>> >> see MAJQDateInputComponent in Magritte-JQuery >>>> >> of http://source.lukas-renggli.ch/magritte3addons >>>> >> >>>> >> Cheers >>>> >> >>>> >> Nick >>>> >> >>>> >> _______________________________________________ >>>> >> seaside mailing list >>>> >> seaside@lists.squeakfoundation.org >>>> >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>>> >> >>>> > >>>> > >>>> > _______________________________________________ >>>> > seaside mailing list >>>> > seaside@lists.squeakfoundation.org >>>> > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>>> > >>>> _______________________________________________ >>>> seaside mailing list >>>> seaside@lists.squeakfoundation.org >>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>>> >>> >>> >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120529/49e6665b/attachment.htm From dtrussardi at tiscali.it Wed May 30 09:23:29 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Wed May 30 09:23:40 2012 Subject: [Seaside] JQuery Dialog -Extensions with GMDraggableMarkers problem In-Reply-To: References: Message-ID: Ciao, excuse me for replication but i don't solve the question. Can anyone give me some ideas on how to solve the problem ? Or i have not sufficiently described the issue ? Thanks in advance for any considerations. Best regards, Dario > Ciao, > > i'm interested to work with JQuery Dialog widget to replicate the Scriptaculous lightbox. > > For now i load the JQuery-Extensions-NickAger.2.mcz . > > It work fine and replicate well the lightbox. > > But i have problem when i open jqDialog on component with GoogleMaps instance. > > For example component with GMDraggableMarkers. > > html anchor > callback:[ rsl:= self jqDialog: GMDraggableMarkers new ]; > with: 'GoogleTest' > > When open it with jqDialog: the Goggle Maps is right render but the relative event is not manage. > > I think that the GMDraggableMarkers loadScript ^' var map = new GMap2(document.getElementById(" ..................... > > is not loaded properly when the dialog is open. > > > Does anyone have idea on how resolve the issue? > > Thank, > > Dario > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120530/23154e26/attachment.htm From pdebruic at gmail.com Wed May 30 15:11:07 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Wed May 30 15:11:17 2012 Subject: [Seaside] JQuery Dialog -Extensions with GMDraggableMarkers problem In-Reply-To: References: Message-ID: <4FC6388B.9040300@gmail.com> Does #jqDialog: use ajax to load the dialog? If so the onLoad event won't be fired. I've not used google maps with the jQuery dialog but if there is a place where it uses #addLoadScript: you should try to change that to just #script: and see if that helps. On 05/30/2012 02:23 AM, dtrussardi@tiscali.it wrote: > Ciao, > > excuse me for replication but i don't solve the question. > Can anyone give me some ideas on how to solve the problem ? > > Or i have not sufficiently described the issue ? > > Thanks in advance for any considerations. > > Best regards, > > Dario > >> Ciao, >> >> i'm interested to work with JQuery Dialog widget to replicate the >> Scriptaculous lightbox. >> >> For now i load the JQuery-Extensions-NickAger.2.mcz . >> >> It work fine and replicate well the lightbox. >> >> But i have problem when i open jqDialog on component with GoogleMaps >> instance. >> >> For example component with GMDraggableMarkers. >> >> html anchor callback:[ rsl:= self jqDialog: GMDraggableMarkers new ]; >> with: 'GoogleTest' >> >> When open it with jqDialog: the Goggle Maps is right render but the >> relative event is not manage. >> >> I think that the GMDraggableMarkers loadScript ^' var map = new >> GMap2(document.getElementById(" ..................... >> >> is not loaded properly when the dialog is open. >> >> >> Does anyone have idea on how resolve the issue? >> >> Thank, >> >> Dario >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From dtrussardi at tiscali.it Thu May 31 14:03:48 2012 From: dtrussardi at tiscali.it (dtrussardi@tiscali.it) Date: Thu May 31 14:03:59 2012 Subject: [Seaside] JQuery Dialog -Extensions with GMDraggableMarkers problem In-Reply-To: <4FC6388B.9040300@gmail.com> References: <4FC6388B.9040300@gmail.com> Message-ID: Thank Paul, i do some test to understand what generating the problem. I work with GMDraggavleMarkers with this rendering method set to: renderContentOn: aCanvas aCanvas div id: mapID; style: self mapStyle; with: []. aCanvas document addLoadScript: 'if (GBrowserIsCompatible()) { ' , self loadScript , '}'. Where loadScript method is: ^' var map = new GMap2(document.getElementById("' , self mapID , '")); var center = new GLatLng' , self gemstoneLatLong , '; map.setCenter(center, 13); var marker = new GMarker(center, {draggable: true}); GEvent.addListener(marker, "dragstart", function() { map.closeInfoWindow(); }); GEvent.addListener(marker, "dragend", function() { marker.openInfoWindowHtml("Just bouncing along..."); }); map.addOverlay(marker); '. ------------------------------------------------------------------------------------- When i rendering it with self call: GMDraggavleMarkers new all work fine a) the map is rendering ok b) the move of the marker inside the canvas open and close the infoWindow. c) when i move the marker, but the mouse out the map canvas, the moving of the background map in the map canvas ending When i rendering it with self jqDialog: GMDraggavleMarkers new i found this : a) the map is rendering ok b) the marker is rendering but the move of it inside the map canvas don't generating the open- close of infoWindow c) when i move the marker and the mouse go outside the map canvas, the movement of the background map in the map canvas goes on d) when i move the marker outside the map canvas ( at top and right side ) and release the mouse immediately the infoWindow is open e) after some situation when i move the background map directly ( not move the marker but the background map ) the infoWindow is open after any movement > Does #jqDialog: use ajax to load the dialog? If so the onLoad event won't be fired. I've not used google maps with the jQuery dialog but if there is a place where it uses #addLoadScript: you should try to change that to just #script: and see if that helps. I do some test with your indication but change the: aCanvas document addLoadScript: 'if (GBrowserIsCompatible()) { ' , self loadScript , '}'. with: aCanvas script: self loadScript generating some background map misalignment . My idea of the problem is relative to the map.addOverlay(marker); i think it go in 'confusion' when rendering on other level. Thanks for any idea on how to solve the problem. Dario > > > On 05/30/2012 02:23 AM, dtrussardi@tiscali.it wrote: >> Ciao, >> >> excuse me for replication but i don't solve the question. >> Can anyone give me some ideas on how to solve the problem ? >> >> Or i have not sufficiently described the issue ? >> >> Thanks in advance for any considerations. >> >> Best regards, >> >> Dario >> >>> Ciao, >>> >>> i'm interested to work with JQuery Dialog widget to replicate the >>> Scriptaculous lightbox. >>> >>> For now i load the JQuery-Extensions-NickAger.2.mcz . >>> >>> It work fine and replicate well the lightbox. >>> >>> But i have problem when i open jqDialog on component with GoogleMaps >>> instance. >>> >>> For example component with GMDraggableMarkers. >>> >>> html anchor callback:[ rsl:= self jqDialog: GMDraggableMarkers new ]; >>> with: 'GoogleTest' >>> >>> When open it with jqDialog: the Goggle Maps is right render but the >>> relative event is not manage. >>> >>> I think that the GMDraggableMarkers loadScript ^' var map = new >>> GMap2(document.getElementById(" ..................... >>> >>> is not loaded properly when the dialog is open. >>> >>> >>> Does anyone have idea on how resolve the issue? >>> >>> Thank, >>> >>> Dario >>> _______________________________________________ >>> seaside mailing list >>> seaside@lists.squeakfoundation.org >>> >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120531/70fad0d4/attachment.htm From pdebruic at gmail.com Thu May 31 16:21:17 2012 From: pdebruic at gmail.com (Paul DeBruicker) Date: Thu May 31 16:21:24 2012 Subject: [Seaside] JQuery Dialog -Extensions with GMDraggableMarkers problem In-Reply-To: References: <4FC6388B.9040300@gmail.com> Message-ID: <4FC79A7D.1090207@gmail.com> Ahh. With that information I might try this: https://forum.jquery.com/topic/modal-dialog-and-google-maps My prior suggestion should be reverted. On 05/31/2012 07:03 AM, dtrussardi@tiscali.it wrote: > Thank Paul, > > i do some test to understand what generating the problem. > > I work with GMDraggavleMarkers with this rendering method set to: > > renderContentOn: aCanvas > aCanvas div > id: mapID; > style: self mapStyle; > with: []. > > aCanvas document addLoadScript: 'if (GBrowserIsCompatible()) { ' , self > loadScript , '}'. > > > > Where loadScript method is: > > ^' > var map = new GMap2(document.getElementById("' , self mapID , '")); > var center = new GLatLng' , self gemstoneLatLong , '; > map.setCenter(center, 13); > var marker = new GMarker(center, {draggable: true}); > GEvent.addListener(marker, "dragstart", function() { > map.closeInfoWindow(); }); > GEvent.addListener(marker, "dragend", function() { > marker.openInfoWindowHtml("Just bouncing along..."); }); > map.addOverlay(marker); > '. > > ------------------------------------------------------------------------------------- > > > When i rendering it with self call: GMDraggavleMarkers newall work fine > > a) the map is rendering ok > > b) the move of the marker inside the canvas open and close the infoWindow. > > c) when i move the marker, but the mouse out the map canvas, the moving > of the background map in the map canvas ending > > > When i rendering it withself jqDialog: GMDraggavleMarkers newi found this : > > a) the map is rendering ok > > b) the marker is rendering but the move of it inside the map canvas > don't generating the open- close of infoWindow > > c) when i move the marker and the mouse go outside the map canvas, the > movement of the background map in the map canvas goes on > d) when i move the marker outside the map canvas ( at top and right side > ) and release the mouse immediately the infoWindow is open > > e) after some situation when i move the background map directly ( not > move the marker but the background map ) the infoWindow is open after > any movement > > >> Does #jqDialog: use ajax to load the dialog? If so the onLoad event >> won't be fired. I've not used google maps with the jQuery dialog but >> if there is a place where it uses #addLoadScript: you should try to >> change that to just #script: and see if that helps. > > I do some test with your indication but > > change the: > > aCanvas document addLoadScript: 'if (GBrowserIsCompatible()) { ' , self > loadScript , '}'. > with: > > aCanvas script: self loadScript > > generating some background map misalignment . > > > My idea of the problem is relative to the > > map.addOverlay(marker); > > i think it go in 'confusion' when rendering on other level. > > > Thanks for any idea on how to solve the problem. > > Dario > >> >> >> On 05/30/2012 02:23 AM, dtrussardi@tiscali.it >> wrote: >>> Ciao, >>> >>> excuse me for replication but i don't solve the question. >>> Can anyone give me some ideas on how to solve the problem ? >>> >>> Or i have not sufficiently described the issue ? >>> >>> Thanks in advance for any considerations. >>> >>> Best regards, >>> >>> Dario >>> >>>> Ciao, >>>> >>>> i'm interested to work with JQuery Dialog widget to replicate the >>>> Scriptaculous lightbox. >>>> >>>> For now i load the JQuery-Extensions-NickAger.2.mcz . >>>> >>>> It work fine and replicate well the lightbox. >>>> >>>> But i have problem when i open jqDialog on component with GoogleMaps >>>> instance. >>>> >>>> For example component with GMDraggableMarkers. >>>> >>>> html anchor callback:[ rsl:= self jqDialog: GMDraggableMarkers new ]; >>>> with: 'GoogleTest' >>>> >>>> When open it with jqDialog: the Goggle Maps is right render but the >>>> relative event is not manage. >>>> >>>> I think that the GMDraggableMarkers loadScript ^' var map = new >>>> GMap2(document.getElementById(" ..................... >>>> >>>> is not loaded properly when the dialog is open. >>>> >>>> >>>> Does anyone have idea on how resolve the issue? >>>> >>>> Thank, >>>> >>>> Dario >>>> _______________________________________________ >>>> seaside mailing list >>>> seaside@lists.squeakfoundation.org >>>> >>>> >>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >>> >>> >>> >>> _______________________________________________ >>> seaside mailing list >>> seaside@lists.squeakfoundation.org >>> >>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside >> >> _______________________________________________ >> seaside mailing list >> seaside@lists.squeakfoundation.org >> >> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside > > > > _______________________________________________ > seaside mailing list > seaside@lists.squeakfoundation.org > http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside From varunisacc at gmail.com Thu May 17 06:23:27 2012 From: varunisacc at gmail.com (varun isac) Date: Sun Mar 24 15:11:20 2013 Subject: [Seaside] Help !! Tab Widget Problem in jquery - Seaside- Pharo smalltalk Message-ID: Skipped content of type multipart/alternative-------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/png Size: 213862 bytes Desc: not available Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120517/2d70b1de/attachment.png -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: image/png Size: 190764 bytes Desc: not available Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20120517/2d70b1de/attachment-0001.png