I recently went through the process of learning a couple of these things, too, so here is what helped me out, given that the documentation is a bit scattered right now.
For the widgets, the single thing that helped me out the most was to look at the widget descriptions in the code. These are in the source code usually right next to the widgets themselves. It used to be easy to do this in IPython using 'widgetnameDesc??' but for whatever reason the Descriptions aren't showing up in the autocomplete right now. You can take a look at the source in the trac at http://trac.turbogears.org/turbogears/browser/tags/0.9a6/turbogears/widgets and look at the {widgetname}Desc class right after the actual widget class. In the class it should show putting the widget together and sometimes it will have a template variable showing how it appears in the kid template. The latter isn't needed, anyways, since it's almost always just widgetinstance.display() anyways. As for the mochikit stuff, the DOM manipulation was pretty straightforward for me and MochiKit has pretty good documentation. The async stuff, however, was unnecessarily confusing to me for awhile. The mochikit documentation wasn't very specific for, obviously, and Brian Beck's tutorial did some very weird and complex stuff that I didn't understand. I eventually found out how incredibly easy it is to do that kind of stuff from the TurboTunes tutorial, which was otherwise overwhelming as a lot of other stuff is going on in there. This is pretty much what you need to know: In the template, you have the element calling the javascript function: <blah blah onclick="niftyAJAX()" /> Then you have the javascript function: function niftyAJAX() { #Standard function stuff var e = loadJSON('getStuff') ; #More on this later e.addCallback(doAJAX) ; } #The function to call afterwards Since you said you use twisted, you probably understand the addCallback stuff but it's pretty much the javascript function to call after it gets a response from the controller. The loadJSON does the request for you on the getStuff url, much like a GET request, and it is an extremely useful function. I'm not sure why Brian Beck had all those extra functions in his tutorial, since this one line seems to do the same thing. Anyways, hopefully you have a getStuff method in your controllers.py: @expose(format="json", allow_json=True) def getStuff(self) return dict(stuff=stuff) The dictionary gets passed to the doAJAX javascript function you specified in your callback from before and then you do whatever. function doAJAX(results) { #results contains the response info var whatever = results.stuff ; #from the dict you passed above! blah blah DOM stuff blah blah ; } And that's it! Once I understood this it was easy to follow along with the rest of the TurboTunes example, which also doubles as a more real world example of how this stuff is used. Also, this is all from my limited understanding of the process so pay special attention to anyone who may correct this post. Hope this helps! -Kaan X-Google-Language: ENGLISH,ASCII-7-bit Received: by 10.11.53.63 with SMTP id b63mr135785cwa; Mon, 22 May 2006 13:57:55 -0700 (PDT) X-Google-Token: -uZCrgwAAABEdXMtRpm7l3lw1FblGfFh Received: from 63.229.31.12 by i39g2000cwa.googlegroups.com with HTTP; Mon, 22 May 2006 20:57:55 +0000 (UTC) From: "Kaan" <[EMAIL PROTECTED]> To: "TurboGears" <[email protected]> Subject: Re: Widgets For Beginers Request Date: Mon, 22 May 2006 13:57:55 -0700 Message-ID: <[EMAIL PROTECTED]> In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.3) Gecko/20060504 Fedora/1.5.0.3-1.1.fc5 Firefox/1.5.0.3 pango-text,gzip(gfe),gzip(gfe) Mime-Version: 1.0 Content-Type: text/plain I recently went through the process of learning a couple of these things, too, so here is what helped me out, given that the documentation is a bit scattered right now. For the widgets, the single thing that helped me out the most was to look at the widget descriptions in the code. These are in the source code usually right next to the widgets themselves. It used to be easy to do this in IPython using 'widgetnameDesc??' but for whatever reason the Descriptions aren't showing up in the autocomplete right now. You can take a look at the source in the trac at http://trac.turbogears.org/turbogears/browser/tags/0.9a6/turbogears/widgets and look at the {widgetname}Desc class right after the actual widget class. In the class it should show putting the widget together and sometimes it will have a template variable showing how it appears in the kid template. The latter isn't needed, anyways, since it's almost always just widgetinstance.display() anyways. As for the mochikit stuff, the DOM manipulation was pretty straightforward for me and MochiKit has pretty good documentation. The async stuff, however, was unnecessarily confusing to me for awhile. The mochikit documentation wasn't very specific for, obviously, and Brian Beck's tutorial did some very weird and complex stuff that I didn't understand. I eventually found out how incredibly easy it is to do that kind of stuff from the TurboTunes tutorial, which was otherwise overwhelming as a lot of other stuff is going on in there. This is pretty much what you need to know: In the template, you have the element calling the javascript function: <blah blah onclick="niftyAJAX()" /> Then you have the javascript function: function niftyAJAX() { #Standard function stuff var e = loadJSON('getStuff') ; #More on this later e.addCallback(doAJAX) ; } #The function to call afterwards Since you said you use twisted, you probably understand the addCallback stuff but it's pretty much the javascript function to call after it gets a response from the controller. The loadJSON does the request for you on the getStuff url, much like a GET request, and it is an extremely useful function. I'm not sure why Brian Beck had all those extra functions in his tutorial, since this one line seems to do the same thing. Anyways, hopefully you have a getStuff method in your controllers.py: @expose(format="json", allow_json=True) def getStuff(self) return dict(stuff=stuff) The dictionary gets passed to the doAJAX javascript function you specified in your callback from before and then you do whatever. function doAJAX(results) { #results contains the response info var whatever = results.stuff ; #from the dict you passed above! blah blah DOM stuff blah blah ; } And that's it! Once I understood this it was easy to follow along with the rest of the TurboTunes example, which also doubles as a more real world example of how this stuff is used. Also, this is all from my limited understanding of the process so pay special attention to anyone who may correct this post. Hope this helps! -Kaan --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "TurboGears" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/turbogears -~----------~----~----~----~------~----~------~--~---

