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