[Seaside] Multiple style sheets

Philippe Marschall philippe.marschall at gmail.com
Mon Oct 2 10:13:35 UTC 2006


Hi

See attached file for an example that works for me.

God damn WA(Rendered)HtmlRoot is such a piece of crap. Hack on top of
hack. Uglier than the night. Needs canvas now!

Philippe


2006/10/1, Burella Juan M. <juan.burella at gmail.com>:
> Philippe, thanks for your reply. I've downloaded the latest Seaside and
> tested your suggestion but the styles aren't swapped at all.
> If you look carefully, there's two values of the "rel" property:
>
> <link rel="stylesheet"  ...
> <link rel="alternate stylesheet" ...
>
> rel="stylesheet" it means to "default stylesheet"
> So I've added the following:
>
> addLinkToStyle: url titled: aString media: aMediaString
>
>         self addHeadElement:
>                 (self addStyleElementWithHref: (self absoluteUrlForResource:
> url asString)
>                       titled: aString
>                       media: aMediaString)
>
> addStyleElementWithHref: anUrlString titled: aTitleString media:
> aMediaString
>         ^(self styleElementWithHref: anUrlString)
>     attributeAt: 'rel' put: 'alternate stylesheet';
>                 attributeAt: 'title' put: aTitleString;
>                 attributeAt: 'media' put: aMediaString;
>                 yourself
>
> and finally in my WATestComponent
>
> updateRoot: aRoot
>     "Configure the receiver's meta-data'"
>
>    super updateRoot: aRoot.
>   aRoot addHeadElement:
>     ((WAHtmlElement named: 'meta')
>         attributeAt: 'author' put: '-';
>         attributeAt: 'description' put: '-';
>         attributeAt: 'content-type' put: 'text/html; charset=UTF-8'
>         yourself).
>    aRoot linkToStyle: 'template\styles\bare.css' titled: 'Bare' media:
> 'screen, projection'.
>    aRoot addLinkToStyle: 'template\styles\blue.css' titled: 'Blue' media:
> 'screen, projection'.
>     aRoot linkToScript: 'template\styles\styleswitch.js'
>
> It doesn't work. I've putted an alert() in the .js file and is showed when
> the page is rendered, but it seems the styles aren't read or parsed,
> although they both "<link rel=...>" specificationes appear in the head of
> the xhtml. Commenting out the super send doesn´t have any effect too.
> However, when I've defined the message #style
>
> style
>     | file |
>     file := (FileStream readOnlyFileNamed: 'template\styles\blue.css')
> ascii.
>     ^[file contents] ensure: [file close].
>
> the page is rendered with the blue.css style. But nothing happens when I
> clicked the link to swap the style. Hence it seems to be like the style
> stuff is hardcoded to the #style message in the client class (my
> WATestComponent). Any ideas? Is this a bug?
> I've tested with Squeak 3.8 and Firefox 1.5 and Opera 9. You can test with
> the attached .js
>
> Greetings
>
>
> On 9/20/06, Philippe Marschall < philippe.marschall at gmail.com> wrote:
> > 2006/9/20, Philippe Marschall < philippe.marschall at gmail.com>:
> > > 2006/9/20, Burella Juan M. <juan.burella at gmail.com>:
> > > > I want my page to be able to alternate between two stylesheets. You
> can read
> > > > the technique here:
> > > > http://www.alistapart.com/stories/alternate/
> > > >
> > > > and examples here: http://www.csszengarden.com/
> > > >
> > > > I've written this using XHTML/CSS and a Javascript styleswitcher (so
> it's
> > > > client side switching)  in the following way:
> > > >
> > > > <link rel="stylesheet" href="styles/bare.css" type="text/css"
> title="Bare"
> > > > media="screen, projection" />
> > > > <link rel="alternate stylesheet" href="styles/blue.css"
> type="text/css"
> > > > title="Blue" media="screen, projection" />
> > > > <script type="text/javascript"
> > > > src="styles/styleswitch.js"></script>
> > > >
> > > > does anybody knows how can (or at least the easiest way) achieve this
> in
> > > > Seaside?
> > > >
> > > > (I´m using Squeak with Seaside 2.61-mb8. I've seen an e-mail from Avi
> Bryant
> > > > from may 2004 but haven't found anything in the SqueakMap and Cincom
> Public
> > > > Repository, any idea?).
> > >
> > > Try the following, add these methods to WAHtmlRoot
> > >
> > > styleElementWithHref: anUrlString titled: aTitleString media:
> aMediaString
> > >         ^(self styleElementWithHref: anUrlString)
> > >                 attributeAt: 'title' put: aTitleString;
> > >                 attributeAt: 'media' put: aMediaString;
> > >                 yourself
> > >
> > > linkToStyle: url titled: aString media: aMediaString
> > >         self addHeadElement:
> > >                 (self
> > >                         styleElementWithHref: (self
> absoluteUrlForResource: url asString)
> > >                         titled: aString
> > >                          media: aMediaString)
> > >
> > > then in your root component class:
> > >
> > > updateRoot: anHtmlRoot
> > >         super updateRoot: anHtmlRoot.
> > >         anHtmlRoot linkToStyle: 'styles/bare.css' titled: 'Bare' media:
> > > 'screen, projection'.
> > >         anHtmlRoot linkToStyle: 'styles/blue.css' titled: 'Blue' media:
> > > 'screen, projection'.
> > >         anHtmlRoot linkToStyle: 'styles/styleswitch.js'
> >
> > The last line should of course read:
> >
> >          anHtmlRoot linkToScript: 'styles/styleswitch.js'
> >
> > Philippe
> > _______________________________________________
> > Seaside mailing list
> > Seaside at lists.squeakfoundation.org
> >
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
> >
>
>
>
> _______________________________________________
> Seaside mailing list
> Seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
>
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: StyleDemo-pmm.1.mcz
Type: application/octet-stream
Size: 1593 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/seaside/attachments/20061002/f4c51925/StyleDemo-pmm.1.obj


More information about the Seaside mailing list