Here is one more demo:

   http://www.web2py.com/events/default/index

Here is the source code:

   http://www.web2py.com/examples/static/web2py.app.events.tar

Look into default.py and the associated view.

Massimo


On Apr 4, 2:24 pm, ceej <[email protected]> wrote:
> I think there should defiantly be an option to have the contents
> already loaded without having to click a link.
>
> On Apr 4, 11:50 am, mdipierro <[email protected]> wrote:
>
> > Note to self. Things to be fixed:
>
> > 1) the action needs knowledge on whether it is in a container.
> > Solution: add a header that says so.
>
> > 2) the action response needs to be able to reference other containers
> > in order to trigger actions  there. Right now each container is
> > identified by a unique but random id and there is no way to guess it.
> > Solution: have the user specify the "name" of each container.
>
> > 3) if a container contains a form that selft submit and then redirect
> > the content to a another action that also has a form. This second form
> > will not work properly. Solution 1: the programmer needs to specify
> > the [SQL]FORM(_action=) but this is a problem form legacy code that
> > you want to ajaxify. Solution 2: have the jDiv code automatically
> > determine the action from context.
>
> > 4) right now every container has a link (that triggers the loading of
> > the content) and a div with the content. To what extent should this be
> > customizable? For example, you may want the container to have a top
> > bar with additional buttons. Should this customization be a feature of
> > the current container class (jDiv) or should the class be subclassed?
> > This opens a big can of worms since the "frame" of the components
> > needs to have some standard hooks in order to expose functions like
> > "reload the content", "close it", etc. (what else?).
>
> > can you think of anything else?
>
> > Massimo
>
> > On Apr 4, 1:02 am, mdipierro <[email protected]> wrote:
>
> > > I re-posted a slightly better version.
>
> > > The new version work in this way:
>
> > > say you have an action like:
>
> > > def myform():
> > >      form=SQLFORM(...)
> > >      if form.accepts(....):
> > >           # do something
> > >           redirect(URL(....));
> > >      return dict(form=form)
>
> > > You can turn it into a partial by replacing "redirect" with
> > > "jDiv.redirect or "jDiv.flash"
>
> > > def myform():
> > >      form=SQLFORM(...)
> > >      if form.accepts(....):
> > >           # do something
> > >           jDiv.redirect("done!!!");
> > >      return dict(form=form)
>
> > > and create a view that DOES NOT extend the layout and does not have
> > > HTML and BODY tags. Something like this will do:
>
> > > {{=form}}
>
> > > Then create a parent action and in the view embed this partial
>
> > > {{=jDiv("click me to ajax the partial",URL(r=request,f="myform"))}}
>
> > > Mind that a partial can be served by another application (within the
> > > same web2py installation), can be a proxy to a different web-site and
> > > can contain an IFRAME (not recommended but possible).
>
> > > @Yarko. I agree that this that this is not yet a complete solution but
> > > more of a hack. Nevertheless it lets you take forms you have already
> > > created and turn them into ajax forms. It does not require any
> > > modification in web2py nor any third party libraries (it only requires
> > > the new layout and new web2py_ajax.html).
>
> > > I have been looking but I cannot really find a detailed decsription of
> > > how those other systems work.
>
> > > On Apr 3, 11:19 pm, ceej <[email protected]> wrote:
>
> > > > I'm really liking this idea Massimo, I'm going to be using it in a
> > > > project I'm about to start and grow on it :)
>
> > > > Keeps using ajax very DRY.
>
> > > > On Apr 3, 4:08 pm, mdipierro <[email protected]> wrote:
>
> > > > > There has been a lot of discussion in the past about forms that submit
> > > > > via ajax and may or may not refresh the entire page. It is also useful
> > > > > to be able to break html pages into "modules" or "plugins" or
> > > > > "components" each with its own model, view, controller in such a way
> > > > > that they communicate both serversize (by sharing session and
> > > > > database) and clientsize (one boxed component should be able for
> > > > > example to refresh the entire page or trigger a flash).
>
> > > > > I have prototype application that does this.
>
> > > > >    http://www.web2py.com/examples/static/web2py.app.events.tar
>
> > > > > It uses jquery publisher subscriber mechanism. All the code is in a
> > > > > new web2py_ajax and a class call jDiv (similar to Rails Partial but
> > > > > more powerful in my opinion) which I could include in html.py
>
> > > > > It allows you to write code like this:
>
> > > > > def index():
> > > > >    return dict(partial1=jDiv('click me for text','mycallback1'),
> > > > >                partial2=jDiv('click me for flash','mycallback2'),
> > > > >                partial3=jDiv('click me to redirect','mycallback3'),
> > > > >                partial4=jDiv('click me for form','mycallback4'))
>
> > > > > def mycallback1():
> > > > >    return 'hello world'
>
> > > > > def mycallback2():
> > > > >    return jDiv.flash('this is a test') # flash on the container page
>
> > > > > def mycallback3():
> > > > >    return jDiv.redirect('http://www.yahoo.com') # redirects entire
> > > > > page
>
> > > > > def mycallback4():
> > > > >    form=FORM('your name:',
> > > > >              INPUT(_name='name',requires=IS_NOT_EMPTY()),
> > > > >              INPUT(_type='submit'))
> > > > >    if form.accepts(request.vars):
> > > > >        return jDiv.flash('hello '+form.vars.name)
> > > > >    return form
>
> > > > > Can you figure out what it does?
> > > > > Not that the page is never reloaded. Only parts (partials, jDivs) of
> > > > > the reloaded. Each jDiv lives in its own container, has one action,
> > > > > can have a view, and can talk to each other.
>
> > > > > This may require some more thought.
>
> > > > > Comments?
>
> > > > > Massimo
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" 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/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to