[Seaside] How do I get the base URL? I want to send out an email with a link

Pat Maddox patmaddox at me.com
Thu Aug 5 20:01:03 UTC 2010


requestContext request url doesn't return the full URL for me. Here's what I ended up doing:

MyCustomWASession#applicationUrl 
	| url request |
	applicationUrl ifNil: [
		request := self requestContext request.
		url := request url withoutQuery.
		(self application url relativeTo: url) do: [ :each |
			url path removeLast ].
		applicationUrl := 'http://' , request host , url asString ].
	^ applicationUrl.

Then my WAComponent subclass just delegates to 'session applicationUrl'.

I have some objects that aren't WAObject descendants at all, so I made a WAObject subclass called ARPApplicationConfig, which I added applicationUrl as a class method to, and then it uses the singleton pattern to create a new instance and delegate applicationUrl to that instance.  So in my other objects that need access to the URL, I can just call  'ARPApplicationConfig applicationUrl'.

Thanks everyone for the input.  I'll report back if I run into any problems with it.

Pat


On Aug 4, 2010, at 10:00 PM, Philippe Marschall wrote:

> 2010/8/4 Pat Maddox <patmaddox at me.com>:
>> Okay so the high level goal is to send out an email that contains a link to my application.  Think http://myapplication.com/invite/abc123
>> 
>> I'm not sure how to go about doing this.  I found  WAApplication#url which sent me on an interesting journey...because when I did "self halt" inside of a WAComponent subclass and ran "self application" then I get a WARequestContextNotFound error, although apparently that's only when I launch a debugger.
>> 
>> So after figuring out that I can't access "self application" from the debugger I finally got "self application url" rendered on my page, and saw that it was only the path.  How can I get the full URL?  I don't want to hardcode it...I assume I should be able to get the base URL of my application from somewhere but I'm not sure.
> 
> 
> Try something like this:
> 
> 	| url |
> 	url := self requestContext request url withoutQuery.
> 	(self application url relativeTo: url) do: [ :each |
> 		url path removeLast ].
> 
> Cheers
> Philippe
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside



More information about the seaside mailing list