Re: adding css to custom widgets

2 views
Skip to first unread message

Matías Iturburu

unread,
Mar 28, 2008, 6:22:51 PM3/28/08
to turbo...@googlegroups.com
Hi again. I've just founded this thread
http://groups.google.com/group/toscawidgets-discuss/browse_frm/thread/107ea02d6ba4ce5e/983f2bf2f9164f72?tvc=1#

where alberto gives nice instructions that I've followed and it's working.
Nevertheless I'm suffering the same issue that Chris (having /toscawidgets/resources appended before to my modules'  path)

For alberto or anyone that knows. How can I prevent that from happening?


On Fri, Mar 28, 2008 at 5:53 PM, Matías Iturburu <matu...@gmail.com> wrote:
Hi. I'm giving my first steps with toscawidgets and the like.

I've made myself a set of custom widgets, like this one:

class ContactList(Widget):
    params=['contact']
    contact={'title':'Nombre Contacto','phone':'Nombre Contacto','email':'Nombre Contacto'}
    engine_name = 'genshi'
    template='''
            <div xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/" py:strip="">
                <ul class="contactList">
                    <li><h3>Contactos</h3></li>
                        <li class="contactData">
                        <dl>
                            <dt><a href="${contact}" py:content="contact.title">Nombre Contacto</a></dt>
                            <dd><span>Telefono:<span py:content="contact.phone">2200202</span><br />
                                email:<span py:content="contact.email">asdasddsd</span></span>
                            </dd>
                        </dl>
                        </li>
                    <li><a href="#">Agregar Contacto</a></li>
           
                </ul>
            </div>
        '''

and I want to encapsulate a stylesheet that get pulled when the widget is instantiated.
I've been struggling with the toscawidgets' documentation but this kind of things are laking or I'm too blind to see :P

Eventually I would like to do the proper with javascript so... is there an easy way of registering this kind of resources (js, css) from the widget it self and that those get pulled when the widget is intatiated?


I'm using tg 1.0 and genshi BTW.

Thanks in advance.

Matías Iturburu
Revoluciones Informáticas
www.revolucionesweb.com.ar

Kevin Horn

unread,
Mar 28, 2008, 7:34:07 PM3/28/08
to turbo...@googlegroups.com

Matías Iturburu

unread,
Mar 28, 2008, 7:55:20 PM3/28/08
to turbo...@googlegroups.com
Hi kevin, I've seen that post a little ago.
I'm quite noobish with python and try to avoid getting so low level in the libraries. That said what I don't realize is how to override the prefix in toscawidgets.middleware (although I've seen the code). Can you give me an snipet please?.

What I'm doing to workaround this is to give the <link> right in the template string but that makes the css link to render right in the middle of the ul instead of placing it self properly in the head section so I think it's not a really proper way to go.

Thanks for your feedback.

Matías Iturburu

unread,
Mar 28, 2008, 4:53:48 PM3/28/08
to turbo...@googlegroups.com

Kevin Horn

unread,
Mar 29, 2008, 1:28:19 PM3/29/08
to turbo...@googlegroups.com
On Fri, Mar 28, 2008 at 6:55 PM, Matías Iturburu <matu...@gmail.com> wrote:
Hi kevin, I've seen that post a little ago.
I'm quite noobish with python and try to avoid getting so low level in the libraries. That said what I don't realize is how to override the prefix in toscawidgets.middleware (although I've seen the code). Can you give me an snipet please?.

What I'm doing to workaround this is to give the <link> right in the template string but that makes the css link to render right in the middle of the ul instead of placing it self properly in the head section so I think it's not a really proper way to go.

Thanks for your feedback.


I haven't dealt much with ToscaWidgets yet, but this bit looked helpful:

'''
As you've said, the /toscawidgets part is easy to override in  
TGWidgetsMiddleware, however, the /resources part is trickier, but  
possible:
from toscawidgets import resources
resources.registry = resources.ResourcesApp("/another_prefix")
'''


Kevin Horn

Matías Iturburu

unread,
Mar 29, 2008, 5:40:58 PM3/29/08
to turbo...@googlegroups.com
Kevin, everyone:

May be I'm not being enough clear. Let me rewind for a second:

Take for instance a CSSLink daclared like this:

class MyWidget(Widget):
    css = [CSSLink(modname="aji", filename="css/jobList.css")]

that will render an url like this one:

/toscawidgets/resources/aji/css/jobList.css?v=0

where /toscawidgets/resources/ are hardcoded path from toscawidgets it self. Note that the proper path would be /aji/static/css/jobList.css

if I do something like

resources.registry = resources.ResourcesApp("/static")
then it renders this way:

/toscawidgets/static/aji/css/jobList.css?v=0

my app name (aji) is put after the resources path and the /toscawidgets/ bit reamins untouched.
From the post that kevin ponted me at. They suggest overriding the /toscawidgets/ prefix from toscawidget.middleware (from another class I think as it would brake the other widgets). That's the part I quite dont understand how to do.

Any whay, having hardcoded paths is a really weird thing.
What should be the best practice in this case, to develop all my widgets inside the tosca package, so it will share the path with the other widgets?

As I stated before I'm workwaround this issue inserting the link tag right in my template string, this way:

class MyWidget(Widget):
    engine_name = 'genshi'
    template='''
            <py:strip xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/">
            <link rel="stylesheet" href="/static/css/jobList.css" type="text/css" />
....

Which is, IMHO, throwing litter to the DOM. Is there any other way to work around this issue?.

Thanks again
Reply all
Reply to author
Forward
0 new messages