LOAD() works like URL(), so,  to pass args/vars to modal_content you could 
write
m_cont = LOAD(f='*modal_content**.load*', *args=[ ],  vars={ }*,   
ajax=True, ajax_trap=True  )  # see LOAD in web2py book

in modal_content controller there is nothing new, everything is as usual  
def modal_content():
   arg_0 = request.args(0)
   a = request.vars.a

  

On Friday, February 12, 2016 at 1:16:35 AM UTC+3, billmac...@gmail.com 
wrote:
>
> Thank you! Val  and the app works great.
>
> One question:
>
> Instead of controller, I have the button displayed in the view as:
>
> {{=BUTTON( 'Apply',_type="button",_class = "btn 
> btn-default",_style="background-color:green;background-image:none",_onclick="""
>  
> $('#cont_id').modal('show')   """ )}}
>
> It works, however, I need to pass an argument to my controller 
> "modal_content". How do I  pass a request.args(0) from my view to the 
> controller in above? Just like I would do 
>
>  <button 
> onclick='window.open("{{=URL("*modal_content*",args=something.id)}}", 
> "mywindow");'>Apply</button>
>
>
> Since I don't see the URL or callback to the javascript. Thanks in advance.
>
>
> On Thursday, February 11, 2016 at 4:27:22 PM UTC-5, Val K wrote:
>>
>> Hi!
>> Here is my solution.  I have modal_wrapper function. In controller file, 
>> I have two controllers -  main_page and modal_content: 
>>
>>
>>
>> def *main_page*():
>>
>>     main_pg=DIV(<any your content>)
>>     
>>     m_cont = LOAD(f='*modal_content**.load*', ajax=True, ajax_trap=True 
>>  )  
>>
>>     dialog = modal_wrapper(m_cont, _id='*cont_id*', header='Header', 
>> footer='footer')
>>     
>>     show_modal_btn = BUTTON( 'Show modal',
>>                                                        _type="button",
>>                                                        _class = "btn 
>> btn-default",
>>                                                        _onclick=""" $('#
>> *cont_id*').modal('show')   """)
>>
>>     #don't forget to add dialog and show_modal_btn to main page
>>     main_pg.append(show_modal_btn)   # or main_pg.append( 
>> DIV(show_modal_btn) 
>>  ) or something else
>>     main_pg.append(dialog)
>>
>>        return dict(main_pg = main_pg)
>>
>>
>>
>>
>> # keep in mind just one thing:
>> #   this controller is exposed by *.load, so it must return a dict of ONE 
>> element 
>> #   to return more than one element - wrap all in one DIV:
>> #   ret = DIV()
>> #   ret.append( ... ) 
>> #   ret.append( form )  
>> #      ret.append( ... )
>> #      return dict(ret = ret) 
>>
>> def *modal_content*():
>>     
>>     form = SQLFORM(...) # or even form = SQLFORM.grid(...)
>>
>>     return dict(form=form)
>>
>>
>>
>> # means bootstrap 3
>> def* modal_wrapper*(content, _id, header='', footer=''):
>>
>>     main_wrap = DIV('',  _class="modal fade",  _role="dialog", _id=_id, 
>> _tabindex="-1" )
>>     title_id = _id + '_title'
>>     main_wrap['_aria-labelledby']=title_id
>>
>>     dialog_div=DIV('', _class="modal-dialog" , _role="document")
>>     content_div=DIV('', _class="modal-content")
>>     header_div = DIV( _class="modal-header")
>>
>>     close_cross = BUTTON(
>>                         SPAN(XML('&times'), **{'_aria-hidden':"true"}),
>>                         _type="button",  _class="close",
>>                          data={'dismiss':"modal"},
>>                          **{'_aria-label':"Close"}
>>                          )
>>     title_h4 = H4( header,  _class="modal-title",  _id = title_id)
>>     body_div = DIV( content, _class="modal-body")
>>
>>
>>     close_btn = BUTTON('Close',  _type="button", _class="btn 
>> btn-default", data={'dismiss':"modal"})
>>     footer_div =  DIV( footer, close_btn, _class="modal-footer")
>>
>>     # gluon all
>>     main_wrap[0] = dialog_div
>>     dialog_div[0] = content_div
>>
>>     header_div.append(close_cross)
>>     header_div.append(title_h4)
>>
>>     [content_div.append(c) for c in (header_div, body_div, footer_div)]
>>     return main_wrap
>>
>>
>>
>>
>>
>>
>>
>>
>> On Thursday, February 11, 2016 at 8:07:32 PM UTC+3, billmac...@gmail.com 
>> wrote:
>>>
>>> Thank you for your answer Massimo. When I implemented this. 
>>>
>>> <button onclick='window.open("{{=URL("my_view",args=something.id)}}", 
>>> "mywindow");'>Apply To This Post</button>
>>>
>>> It shows me a button and then I get redirected to another page. I just 
>>> wanted a pop up window open up with a form to submit that user can move 
>>> around without being redirected to another page.
>>>
>>>
>>>
>>>
>>>
>>> On Wednesday, February 10, 2016 at 10:51:11 PM UTC-5, Massimo Di Pierro 
>>> wrote:
>>>>
>>>> I see you want a different window, not a modal.
>>>>
>>>> then you have to put the form logic in its own controller action and 
>>>> call it from js
>>>>
>>>> <button onclick="window.open("{{=URL('form_action)}}");">click 
>>>> me</button>
>>>>
>>>> On Wednesday, 10 February 2016 18:00:44 UTC-6, billmac...@gmail.com 
>>>> wrote:
>>>>>
>>>>> Thank you for the answer Massimo. I did this like you said to put the 
>>>>> form in the body in index/popup.html however, it didn't pop up like the 
>>>>> example in the link above. Instead I got it in the same browser. I am 
>>>>> guessing my implementation is wrong.
>>>>>
>>>>> <div class="modal fade">
>>>>>   <div class="modal-dialog">
>>>>>     <div class="modal-content">
>>>>>       <div class="modal-header">
>>>>>         <button type="button" class="close" data-dismiss="modal" 
>>>>> aria-hidden="true">×</button>
>>>>>         <h4 class="modal-title">Modal title</h4>
>>>>>       </div>
>>>>>       <div class="modal-body">
>>>>>         
>>>>>           {{=form}}
>>>>>           
>>>>>       </div>
>>>>>       <div class="modal-footer">
>>>>>         <button type="button" class="btn btn-default" 
>>>>> data-dismiss="modal">Close</button>
>>>>>         <button type="button" class="btn btn-primary">Save 
>>>>> changes</button>
>>>>>       </div>
>>>>>     </div><!-- /.modal-content -->
>>>>>   </div><!-- /.modal-dialog -->
>>>>> </div><!-- /.modal -->
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Wednesday, February 10, 2016 at 5:06:28 PM UTC-5, Massimo Di Pierro 
>>>>> wrote:
>>>>>>
>>>>>> Bootstrap3 has built-int modals: 
>>>>>> https://nakupanda.github.io/bootstrap3-dialog/
>>>>>> You can but {{=form}} in the body of the modal.
>>>>>>
>>>>>> On Tuesday, 9 February 2016 14:26:05 UTC-6, billmac...@gmail.com 
>>>>>> wrote:
>>>>>>>
>>>>>>> Hello, A new user migrating from Django to web2py and absolutely 
>>>>>>> loving it. A quick question. How do I use a light box or a pop up 
>>>>>>> window to 
>>>>>>> display a form in my view?
>>>>>>>
>>>>>>>
>>>>>>> for example in default/index.html
>>>>>>>
>>>>>>> {{=form}}
>>>>>>>
>>>>>>> Want to show that form  in a pop up window.  
>>>>>>>
>>>>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to