This is good, specially if on your website you implement some sort of
"skinning" allowing the users to dynamically switch "layouts" using
the same css file, thanks for sharing this.

On Oct 7, 8:19 am, Jonathan Lundell <jlund...@pobox.com> wrote:
> On Oct 6, 2009, at 2:54 PM, Eric Vicenti wrote:
>
>
>
> > Thanks, mdi and Jonathan. I will borrow your __cssheaders() function,
> > if you don't mind.
>
> I should have commented it a bit first, but it's not all that subtle.
>
> By the time the controller runs, the response has been set up as a  
> standard html page. So we delete cookies and the default caching, and  
> use Expires caching (an hour as shown) so that, in theory anyway (I  
> haven't tested this against browsers yet) the performance should be  
> fairly close to static.
>
> When I'm actually working on the CSS, I reduce the Expires timeout to  
> 3 seconds (or whatever you like) so that my changes appear promptly.
>
> Here's a slightly cleaner version:
>
> def __cssheaders():
>      '''
>      edit default response headers for CSS
>      serve text/css with no cookies, limited caching
>      '''
>      response.cookies = Storage()  # no cookies
>      for header in ('Last-Modified', 'Expires', 'Pragma'):
>         if header in response.headers: del response.headers[header]
>      response.headers['Content-Type']='text/css'
>      response.headers['Cache-Control'] = 'max-age=3600, must-revalidate'
>      response.headers['Cache-Control'] = 'max-age=3, must-revalidate'
>
>
>
> > Is there any way to have some code in the css.py controller which will
> > automatically define functions for all my css files in /views/css/ ?
> > All it would need to do is run the __cssheaders() function and return
> > dict(), but it feels unnecessary to maintain a list of functions when
> > there are files.
>
> > -Eric
>
> > On Oct 6, 2:29 pm, Jonathan Lundell <jlund...@pobox.com> wrote:
> >> On Oct 6, 2009, at 1:35 PM, mdipierro wrote:
>
> >>> It is good practice to put in the CSS only relative urls to other
> >>> static files. That is not a problem with web2py.
>
> >>> If you need to include in the CSS urls generated by {{=URL(....)}}
> >>> then you should promote the css from a static file to a dynamic  
> >>> page:
> >>> 1) make a controller for it
> >>> 2) make a view ending in .css
> >>> 3) call the action from the layout ending in .css
> >>> 4) in the .css view use absolute paths to include images
>
> >> When I tried serving dynamic CSS (I wanted to dynamically control
> >> colors, fonts, etc), I had to do some work to get the result served  
> >> as
> >> text/css (which is necessary). I ended up hacking that (and some  
> >> other
> >> header stuff, like caching) in the controller, but I suppose it could
> >> happen in the view.
>
> >> I notice that there's no generic.css.
>
> >> I have a controller, css.py, that looks like this:
>
> >> import time
> >> from gluon.storage import Storage
>
> >> def __cssheaders():
> >>      '''
> >>      edit default response headers for CSS
> >>      serve text/css with limited caching
> >>      '''
> >>      response.cookies = Storage()
> >>      response.headers['Content-Type']='text/css'
> >>      response.headers['Cache-Control'] = 'max-age=3600, must-
> >> revalidate'
> >>      if 'Last-Modified' in response.headers: del response.headers
> >> ['Last-Modified']
> >>      if 'Expires' in response.headers: del response.headers
> >> ['Expires']
> >>      if 'Pragma' in response.headers: del response.headers['Pragma']
>
> >> def xxx():
> >>      '''
> >>      app/css/xxx.css
> >>      set fonts and colors to be substituted via xxx.css view
> >>      '''
> >>      __cssheaders()
> >>      font_serif = 'cambria, georgia, "times new roman", serif'
> >>      font_sans = 'corbel, "Helvetica Neue", Helvetica, Arial, sans-
> >> serif'
> >>      return dict(dark_color="#8e1650", second_color="#635e54",
> >> light_color="#e9e7de",
> >>          accent_color="#edab05", flash_color="white",
> >> flash_background="#8e1650",
> >>          body_background_color="#e8e8e8",
> >> content_background_color="white",
> >>          font_body=font_serif,
> >>          font_logo=font_sans,
> >>          font_head=font_sans,)
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to