Can't reproduce with this :

def component_container():
    form = SQLFORM(db.auth_user)
    if form.process().accepted:
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill out the form'
    return dict(form=form)


def form1():
    form = SQLFORM(db.auth_group)
    if form.process(formname='form1').accepted:
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill out the form'
    return dict(form=form)


def form2():
    form = SQLFORM(db.auth_permission)
    if form.process(formname='form2').accepted:
        response.flash = 'form accepted'
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill out the form'
    return dict(form=form)


I will try later with custom form to see issue come from there...

Richard

On Thu, Jun 23, 2016 at 9:38 AM, Richard Vézina <ml.richard.vez...@gmail.com
> wrote:

> Can try... But my guess is that it's cause by the "ifs" there must be some
> annoying thing happening cause of them... But when I look into the page
> source everything seems fine... I am suspecting something with javascript...
>
> Richard
>
> On Thu, Jun 23, 2016 at 5:28 AM, Massimo Di Pierro <
> massimo.dipie...@gmail.com> wrote:
>
>> Can you reproduce the problem with some simpler code?
>>
>>
>> On Tuesday, 21 June 2016 14:42:03 UTC-5, Richard wrote:
>>>
>>> Any clue?
>>>
>>> On Tue, Jun 21, 2016 at 10:51 AM, Richard <ml.richard.vez...@gmail.com>
>>> wrote:
>>>
>>>> As you which!!
>>>>
>>>> # Controllers
>>>> Form 1
>>>> def phone_numbers_form():
>>>>     """
>>>>     phone_numbers_form() allow to create/update/display phone(s)
>>>> number(s).
>>>>
>>>>     Args (vars):
>>>>         readonlyform: If set to "True" the function only display phones
>>>> numbers in row, no create form and buttons
>>>>                       to modify add phone number is available.
>>>>         remove_phone_number_id: If phone number id is passed through
>>>> url with this vars phone number specify id
>>>>                                 record is deleted.
>>>>         request_modify_phone_id: The passed phone number with this vars
>>>> will make the phone_numbers_form() to return
>>>>                                  an update form for the specified phone
>>>> number id record.
>>>>
>>>>     """
>>>>     user_id = None
>>>>
>>>>     # To display only the phone numbers
>>>>     readonlyform = False
>>>>     if request.vars.readonlyform:
>>>>         if request.vars.readonlyform in ['True']:
>>>>             readonlyform = True
>>>>
>>>>     if request.args(0) is not None:
>>>>         try:
>>>>             user_id = int(request.args(0))
>>>>         except:
>>>>             user_id = db(db.auth_user.username ==
>>>> request.args(0)).select(db.auth_user.id).first().id
>>>>     if user_id is None:
>>>>         user_id = auth.user_id
>>>>     if request.vars.remove_phone_number_id is not None:
>>>>         db(db.phone_number.id ==
>>>> int(request.vars.remove_phone_number_id)).delete()
>>>>     record_to_modify = request.vars.request_modify_phone_id
>>>>     phone_numbers = db(db.phone_number.user_id == user_id).select()
>>>>     db.phone_number.user_id.default = user_id
>>>>     db.phone_number.user_id.update = user_id
>>>>     if record_to_modify is None:
>>>>         buttons = [
>>>>             TAG.button(I('', _class='icon-ban-circle icon-large
>>>> icon-white'), _type='button',
>>>>
>>>>  _onClick='web2py_component("%s","phone_number_component");' %
>>>> URL(c='directory',
>>>>
>>>>                  f='phone_numbers_form',
>>>>
>>>>                  extension='load',
>>>>
>>>>                  args=request.args(0)),
>>>>                        _class='btn btn-mini btn-inverse'),
>>>>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
>>>> CAT('  '), STRONG(T('Add'))), _type='submit',
>>>>                        _class='btn btn-mini btn-primary',
>>>> _style='white-space: nowrap;')]
>>>>     else:
>>>>         buttons = [
>>>>             TAG.button(I('', _class='icon-ban-circle icon-large
>>>> icon-white'), _type='button',
>>>>
>>>>  _onClick='web2py_component("%s","phone_number_component");' %
>>>> URL(c='directory',
>>>>
>>>>                  f='phone_numbers_form',
>>>>
>>>>                  extension='load',
>>>>
>>>>                  args=request.args(0)),
>>>>                        _class='btn btn-mini btn-inverse'),
>>>>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
>>>> CAT('  '), STRONG(T('Ok'))), _type='submit',
>>>>                        _class='btn btn-mini btn-primary')]
>>>>         # form.element(_type='submit')['_value'] = T('ok')
>>>>         # form.element(_type='submit')['_class'] = 'btn btn-mini
>>>> pull-right'
>>>>     form = SQLFORM(db.phone_number, record=None if record_to_modify is
>>>> None else int(record_to_modify),
>>>>                    buttons=buttons if readonlyform is False else None,
>>>>                    readonly=True if readonlyform is True else False,
>>>>                    _id='phone_number_form_id')
>>>>     if form.process(formname='phone_number_form').accepted:
>>>>         if record_to_modify is not None:
>>>>             response.flash = T('Successfully inserted')
>>>>         else:
>>>>             response.flash = T('Successfully updated')
>>>>         response.js =
>>>> 'web2py_component("%(URL)s","phone_number_component");' % {'URL':
>>>> URL(c='directory',
>>>>
>>>>                     f='phone_numbers_form',
>>>>
>>>>                     extension='load',
>>>>
>>>>                     args=request.args(0))}
>>>>     elif form.errors:
>>>>         response.flash = T('Errors...')
>>>>
>>>>     #
>>>> -----------------------------------------------------------------------------
>>>>     # <script>
>>>>     #     $(document).ready(function() {
>>>>     #         var add_phone_number_translation = "{{=T('Add a phone
>>>> number')}}"
>>>>     #         $("tr#input_new_phone_number").children().hide();
>>>>     #         $("tr#input_new_phone_number").append('<td colspan="3"
>>>> id="new_phone_number"><button type="button" class="btn btn-small
>>>> pull-right" onclick="$(\'tr#input_new_phone_number\').children().show();
>>>> $(\'td#new_phone_number\').hide();"><strong>' +
>>>> add_phone_number_translation + '</strong></button></td>');
>>>>     #         });
>>>>     # </script>
>>>>     # What below is a replacement for the jQuery code above
>>>>     if readonlyform is False:
>>>>         controller_view_js = \
>>>>
>>>> common_functions.flash_message_from_js(tr_id='new_phone_number',
>>>>                                                    colspan='3',
>>>>                                                    button_text='Add a
>>>> phone number',
>>>>                                                    flash_text='Please
>>>> add your phone number...',
>>>>
>>>>  form_id='phone_number_form_id')
>>>>     else:
>>>>         controller_view_js = ''
>>>>     #
>>>> -----------------------------------------------------------------------------
>>>>
>>>>     return dict(phone_numbers=phone_numbers,
>>>>                 form=form,
>>>>                 controller_view_js=controller_view_js,
>>>>                 readonlyform=readonlyform)
>>>>
>>>>
>>>> Form 2
>>>>
>>>> def group_membership():
>>>>     if not auth.has_membership('admin'):
>>>>         redirect(URL(c='permission', f='not_authorized'))
>>>>     user_id = None
>>>>     if request.args(0) is not None:
>>>>         try:
>>>>             user_id = int(request.args(0))
>>>>         except ValueError:
>>>>             user_id = db(db.auth_user.username ==
>>>> request.args(0)).select(db.auth_user.id).first().id
>>>>     # if user_id is None:
>>>>     #     user_id = auth.user_id  # Extrêmement douteux...
>>>>     if request.vars.remove_membership_id is not None:
>>>>         db(db.auth_membership.id ==
>>>> int(request.vars.remove_membership_id)).delete()
>>>>     record_to_modify = request.vars.request_modify_membership_id
>>>>     memberships = db(db.auth_membership.user_id == user_id
>>>>                      ).select(db.auth_membership.ALL,
>>>>                               db.auth_group.ALL,
>>>>                               join=db.auth_group.on(db.auth_group.id
>>>> == db.auth_membership.group_id),
>>>>                               orderby=db.auth_group.role_gui)
>>>>     db.auth_membership.user_id.default = user_id
>>>>     db.auth_membership.user_id.update = user_id
>>>>     #
>>>> ------------------------------------------------------------------------------------------------------------------
>>>>     # We don't need all the user id to be present in the drop down as
>>>> group selected should apply to only a single user
>>>>     #
>>>> ------------------------------------------------------------------------------------------------------------------
>>>>     user_id_set = db(db.auth_user.id == user_id)
>>>>     db.auth_membership.user_id.requires = IS_IN_DB(user_id_set, '
>>>> auth_user.id', '%(first_name)s %(last_name)s (%(id)s)')
>>>>     #
>>>> ------------------------------------------------------------------------------------------------------------------
>>>>     #
>>>> ------------------------------------------------------------------------------------------------------------------
>>>>     # We don't need other user_X groups as the user can't be assign to
>>>> other user group
>>>>     #
>>>> ------------------------------------------------------------------------------------------------------------------
>>>>     groups_set = db(~db.auth_group.role.startswith('user_'))
>>>>     db.auth_membership.group_id.requires = IS_IN_DB(groups_set, '
>>>> auth_group.id', '%(role)s-%(description)s (%(id)s)')
>>>>     #
>>>> ------------------------------------------------------------------------------------------------------------------
>>>>     if record_to_modify is None:
>>>>         buttons = [
>>>>             TAG.button(I('', _class='icon-ban-circle icon-large
>>>> icon-white'), _type='button',
>>>>
>>>>  _onClick='web2py_component("%s","membership_component");' %
>>>> URL(c='directory',
>>>>
>>>>                  f='group_membership',
>>>>
>>>>                  extension='load',
>>>>
>>>>                  args=request.args(0)),
>>>>                        _class='btn btn-mini btn-inverse'),
>>>>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
>>>> CAT('  '), STRONG(T('Add'))), _type='submit',
>>>>                        _class='btn btn-mini btn-primary',
>>>> _style='white-space: nowrap;')]
>>>>     else:
>>>>         buttons = [
>>>>             TAG.button(I('', _class='icon-ban-circle icon-large
>>>> icon-white'), _type='button',
>>>>
>>>>  _onClick='web2py_component("%s","membership_component");' %
>>>> URL(c='directory',
>>>>
>>>>                  f='group_membership',
>>>>
>>>>                  extension='load',
>>>>
>>>>                  args=request.args(0)),
>>>>                        _class='btn btn-mini btn-inverse'),
>>>>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
>>>> CAT('  '), STRONG(T('Ok'))), _type='submit',
>>>>                        _class='btn btn-mini btn-primary')]
>>>>         # form.element(_type='submit')['_value'] = T('ok')
>>>>         # form.element(_type='submit')['_class'] = 'btn btn-mini
>>>> pull-right'
>>>>     form = SQLFORM(db.auth_membership, record=None if record_to_modify
>>>> is None else int(record_to_modify),
>>>>                    buttons=buttons, _id='membership_form_id')
>>>>     if form.process(formname='membership_form').accepted:
>>>>         if record_to_modify is None:
>>>>             response.flash = T('Successfully inserted')
>>>>         else:
>>>>             response.flash = T('Successfully updated')
>>>>         response.js =
>>>> 'web2py_component("%(URL)s","membership_component");' % {'URL':
>>>> URL(c='directory',
>>>>
>>>>                   f='group_membership',
>>>>
>>>>                   extension='load',
>>>>
>>>>                   args=request.args(0))}
>>>>     elif form.errors:
>>>>         response.flash = T('Errors...')
>>>>
>>>>     thead = THEAD(TR(TH(T('Role(s)'))))
>>>>     trs = []
>>>>     for r in memberships:
>>>>         if request.vars.request_modify_membership_id is not None and \
>>>>                 r.auth_membership.id ==
>>>> int(request.vars.request_modify_membership_id):
>>>>             trs.append(TR(TD(form.custom.widget.group_id,
>>>>                              DIV(A(I('', _class='icon-ban-circle
>>>> icon-large icon-white'),
>>>>                                    _class='btn btn-mini btn-inverse',
>>>>                                    _href=URL('group_membership',
>>>> extension='load',
>>>>                                              args=request.args(0)),
>>>> cid=request.cid),
>>>>                                  BUTTON(I('', _class='icon-ok
>>>> icon-large icon-white'),
>>>>                                         _class='btn btn-mini
>>>> btn-primary',
>>>>                                         _type='submit'),
>>>>                                  _class='pull-right'))))
>>>>         else:
>>>>             trs.append(TR(TD(T(r.auth_group.role_gui),
>>>>                              DIV(A(I('', _class='icon-edit
>>>> icon-large'), _class='btn btn-mini',
>>>>                                    _href=URL('group_membership',
>>>> extension='load', args=request.args(0),
>>>>
>>>>  vars=dict(request_modify_membership_id=r.auth_membership.id)),
>>>>                                    cid=request.cid),
>>>>                                  A(I('', _class='icon-remove icon-large
>>>> icon-white'), _class='btn btn-mini btn-danger',
>>>>                                    _href=URL('group_membership',
>>>> extension='load', args=request.args(0),
>>>>
>>>>  vars=dict(remove_membership_id=r.auth_membership.id)),
>>>> cid=request.cid),
>>>>                                  _class='pull-right'))))
>>>>     if request.vars.request_modify_membership_id == None:
>>>>         trs.append(TR(TD(form.custom.widget.group_id,
>>>>                          SPAN(form.custom.widget.user_id,
>>>> _style='display: none;'),  # There is an issue with this...
>>>>
>>>>              # NO form.vars.user_id available
>>>>
>>>>              # for update form!!
>>>>                          SPAN(form.custom.submit,
>>>> _class='pull-right')), _id='input_new_membership'))
>>>>     memberships_table = TABLE(thead, TBODY(*trs), _class='table
>>>> table-condensed table-hover')
>>>>
>>>>     #
>>>> -----------------------------------------------------------------------------
>>>>     # $(document).ready(function() {
>>>>     #     var add_membership_translation = '{{=T('Add membership')}}'
>>>>     #     $("tr#input_new_membership").children().hide();
>>>>     #     $("tr#input_new_membership").append('<td colspan="3"
>>>> id="new_membership"><button type="button" class="btn btn-small pull-right"
>>>> onclick="$(\'tr#input_new_membership\').children().show();
>>>> $(\'td#new_membership\').hide();"><strong>' + add_membership_translation +
>>>> '</strong></button></td>');
>>>>     #     });
>>>>     # What below is a replacement for the jQuery code above
>>>>     controller_view_js = \
>>>>         common_functions.flash_message_from_js(tr_id='new_membership',
>>>>                                                colspan='3',
>>>>                                                button_text='Add
>>>> membership',
>>>>                                                flash_text='Please
>>>> select a role...',
>>>>
>>>>  form_id='membership_form_id')
>>>>     #
>>>> -----------------------------------------------------------------------------
>>>>
>>>>     return dict(memberships_table=memberships_table, form=form,
>>>> controller_view_js=controller_view_js)
>>>>
>>>> Container page controller
>>>> @auth.requires_login()
>>>> def manage_users():
>>>>     if not auth.has_membership('manage_users'):
>>>>         redirect(URL(c='permission', f='not_authorized'))
>>>>     if request.args(0) is not None:
>>>>         try:
>>>>                 user_id = int(request.args(0))
>>>>         except ValueError:
>>>>             user_id = db(db.auth_user.username ==
>>>> request.args(0)).select(db.auth_user.id).first().id
>>>>     else:
>>>>         user_id = None
>>>>         db.auth_user.address_id.requires = \
>>>>             IS_EMPTY_OR(IS_IN_DB(db, db.address.id, '%(address_code)s
>>>> - %(door_number)s, %(street)s'))
>>>>         db.auth_user.initials.requires = \
>>>>             IS_EMPTY_OR(IS_NOT_IN_DB(db, 'auth_user.initials',
>>>> error_message=T('Initials already exist!')))
>>>>         db.auth_user.password.requires =
>>>> IS_EMPTY_OR(CRYPT(min_length=auth.settings.password_min_length,
>>>>
>>>>  error_message=T('too short')))
>>>>
>>>>     for field in db.auth_user.fields:
>>>>         db.auth_user[field].readable = False
>>>>         db.auth_user[field].writable = False
>>>>     fields = (db.auth_user.first_name,
>>>>               db.auth_user.last_name,
>>>>               db.auth_user.address_id,
>>>>               db.auth_user.email,
>>>>               db.auth_user.initials,
>>>>               db.auth_user.title_fr,
>>>>               db.auth_user.title_en,
>>>>               db.auth_user.manager_id,
>>>>               db.auth_user.gender,
>>>>               db.auth_user.registration_key,
>>>>               db.auth_user.picture)
>>>>     for field in fields:
>>>>         field.readable = True
>>>>         field.writable = True
>>>>     db.auth_user.registration_key.requires =
>>>> IS_EMPTY_OR(IS_IN_SET(['pending', 'disabled']))
>>>>     db.auth_user.registration_key.default = 'pending'
>>>>     buttons = [TAG.button((I('', _class='icon-ban-circle icon-large
>>>> icon-white'), CAT('  '), STRONG(T('Cancel'))),
>>>>                           _type='button',
>>>>                           _onClick="javascript:void(history.go(-1))",
>>>>                           _class='btn btn-small btn-inverse'),
>>>>                TAG.button((I('', _class='icon-ok icon-large
>>>> icon-white'), CAT('  '), STRONG(T('Update'))),
>>>>                           _type='submit',
>>>>                           _class='btn btn-small btn-primary')]
>>>>     form = SQLFORM(db.auth_user, record=user_id, buttons=buttons,
>>>> formstyle=formstyle, separator=separator)
>>>>     if form.process(dbio=False).accepted:
>>>>         if user_id is None:
>>>>             session.flash = T('User created')
>>>>             form.vars.ceo = False
>>>>             form.vars.note = ''
>>>>             if form.vars.email is not None:
>>>>                 form.vars.username = form.vars.email.split('@')[0]
>>>>             id = db.auth_user.insert(**{str(var): form.vars[var] for
>>>> var in form.vars})
>>>>             user_id_role_exist = db(db.auth_group.role == 'user_%d' %
>>>> id).count() == 1
>>>>             if user_id_role_exist is False:
>>>>                 db.auth_group.insert(role='user_%d' % id,
>>>> description='Individual user group user_ + user id',
>>>>                                      role_gui=form.vars.username)
>>>>             member_of_basic_access_group = \
>>>>                 db((db.auth_membership.user_id == id) &
>>>>                    (db.auth_membership.group_id ==
>>>> db(db.auth_group.role == 'basic_access'
>>>>                                                       ).select(
>>>> db.auth_group.id).first().id)
>>>>                    ).count() == 1
>>>>             if member_of_basic_access_group is False:
>>>>                 db.auth_membership.insert(user_id=id,
>>>>
>>>> group_id=db(db.auth_group.role == 'basic_access'
>>>>                                                       ).select(
>>>> db.auth_group.id).first().id)
>>>>             # Push new user into Redmine
>>>>             redmine_utility.push_active_user_into_redmine(db=db)
>>>>         else:
>>>>             session.flash = T('User updated')
>>>>             db(db.auth_user.id == user_id).update(**{str(var):
>>>> form.vars[var] for var in form.vars})
>>>>
>>>>         if form.vars.title_fr is not None and form.vars.title_fr != '' \
>>>>                 and form.vars.title_en is not None and
>>>> form.vars.title_en != '':
>>>>
>>>> common_functions.value_translation_update(en_field_name='title_en',
>>>> fr_field_name='title_fr', form=form)
>>>>         if request.args(0) is not None:
>>>>             username = request.args(0)
>>>>         elif form.vars.username is not None:
>>>>             username = form.vars.username
>>>>         else:
>>>>             username = None
>>>>         redirect(URL(c='directory', f='employee', args=username))
>>>>     elif form.errors:
>>>>         response.flash = T('Form has error')
>>>>     else:
>>>>         response.flash = T('Please complete or update the form')
>>>>     return dict(form=form)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> # View ".load"
>>>> Form 1
>>>> <strong>{{=T('Phone numbers')}}</strong>
>>>> {{=form.custom.begin}}
>>>> <table class="table table-condensed table-hover">
>>>>     <tbody>
>>>>         {{for phone_number in phone_numbers:}}
>>>>             <tr>
>>>>                 {{if request.vars.request_modify_phone_id is not None
>>>> and phone_number.id == int(request.vars.request_modify_phone_id):}}
>>>>
>>>> <td>{{=form.custom.widget.phone_number_kind_id}}</td>
>>>>                     <td>{{=form.custom.widget.phone_number}}</td>
>>>>                     <td>
>>>>                         <span style="display:
>>>> none;">{{=form.custom.widget.user_id}}</span>
>>>>                         {{=form.custom.widget.extension}}
>>>>                         <div class="pull-right">
>>>>                         {{=A(I('', _class='icon-ban-circle
>>>> icon-white'), _class='btn btn-mini btn-inverse',
>>>>                              _href=URL('phone_numbers_form',
>>>> extension='load', args=request.args(0)), cid=request.cid)}}
>>>>                         {{=BUTTON(I('', _class='icon-ok icon-white'),
>>>> _class='btn btn-mini btn-primary', _type='submit')}}
>>>>                         </div>
>>>>                     </td>
>>>>                 {{else:}}
>>>>
>>>> <td>{{=db.phone_number_kind[phone_number.phone_number_kind_id].phone_number_kind}}</td>
>>>>                     <td>{{=phone_number.phone_number}}</td>
>>>>                     <td>
>>>>                         {{if phone_number.extension is not None and
>>>> phone_number.extension != '':}}
>>>>                             ({{=phone_number.extension}})
>>>>                         {{pass}}
>>>>                         {{if readonlyform is False:}}
>>>>                             <div class="pull-right">
>>>>                             {{=A(I('',_class='icon-edit'), _class='btn
>>>> btn-mini',
>>>>                                  _href=URL('phone_numbers_form',
>>>> extension='load', args=request.args(0),
>>>>
>>>>  vars=dict(request_modify_phone_id=phone_number.id)),
>>>> cid=request.cid)}}
>>>>                             {{=A(I('',_class='icon-remove icon-white'),
>>>> _class='btn btn-mini btn-danger',
>>>>                                  _href=URL('phone_numbers_form',
>>>> extension='load', args=request.args(0),
>>>>
>>>>  vars=dict(remove_phone_number_id=phone_number.id)), cid=request.cid)}}
>>>>                             </div>
>>>>                         {{pass}}
>>>>                     </td>
>>>>                 {{pass}}
>>>>             </tr>
>>>>         {{pass}}
>>>>         {{if readonlyform is False:}}
>>>>             {{if request.vars.request_modify_phone_id == None:}}
>>>>                 <tr id="input_new_phone_number">
>>>>
>>>> <td>{{=form.custom.widget.phone_number_kind_id}}</td>
>>>>                     <td>{{=form.custom.widget.phone_number}}</td>
>>>>                     <td>{{=form.custom.widget.extension}}
>>>>                         <span style="display:
>>>> none;">{{=form.custom.widget.user_id}}</span>
>>>>                         <span
>>>> class='pull-right'>{{=form.custom.submit}}</span>
>>>>                     </td>
>>>>                 </tr>
>>>>             {{pass}}
>>>>         {{pass}}
>>>>     </tbody>
>>>> </table>
>>>> {{=form.custom.end}}
>>>>
>>>> <script>
>>>>     {{=XML(controller_view_js)}}
>>>> </script>
>>>>
>>>>
>>>>
>>>> Form 2
>>>> <strong>{{=T('User membership')}}</strong>
>>>> {{=form.custom.begin}}
>>>>     {{=memberships_table}}
>>>> {{=form.custom.end}}
>>>>
>>>> <script>
>>>>     {{=XML(controller_view_js)}}
>>>> </script>
>>>>
>>>>
>>>> Container page
>>>> {{extend 'layout_form.html'}}
>>>>
>>>>     <div class="span4">
>>>>         <div class="thumbnail">
>>>>             <div>
>>>>                 {{=form}}
>>>>             </div>
>>>>         </div>
>>>>     </div>
>>>>     {{if request.args(0) is not None:}}
>>>>         <div class="span6">
>>>>             <div class="thumbnail">
>>>>                 <div>
>>>>                     {{=LOAD(c='directory', f='phone_numbers_form',
>>>> extension='load',
>>>>                             args=request.args(0), ajax=True,
>>>> target='phone_number_component')}}
>>>>                 </div>
>>>>             </div>
>>>>         </div>
>>>>         {{if auth.has_membership('admin') and request.args(0) is not
>>>> None:}}
>>>>             <div class="span6">
>>>>                 <div class="thumbnail">
>>>>                     <div>
>>>>                         {{=LOAD(c='directory', f='group_membership',
>>>> extension='load',
>>>>                                 args=request.args(0), ajax=True,
>>>> target='membership_component')}}
>>>>                     </div>
>>>>                 </div>
>>>>             </div>
>>>>         {{pass}}
>>>>     {{pass}}
>>>>
>>>>
>>>>
>>>>
>>>> # modules JS generation snippet
>>>> def flash_message_from_js(tr_id, colspan, button_text, flash_text,
>>>> form_id=None):
>>>>     """
>>>>     Set flash message with $.web2py.flash() so the flash message get
>>>> fire in the right context
>>>>     Need this in view :
>>>>
>>>>     <script>
>>>>         {{=XML(controller_view_js)}}
>>>>     </script>
>>>>
>>>>     NOTE: We now generate this piece of JS from python to solve issue
>>>> with quoting escape cause by to many single
>>>>           and double quotes. The code breaks when whe translate "Please
>>>> fill out the form..." with
>>>>           "S'il vous plaît remplir le formulaire..." the single quote
>>>> were not escape properly with the Javascript
>>>>           implementation.
>>>>     NOTE: The issue has multiple facet... Mainly the issue is related
>>>> to the fact that we want to translate flash
>>>>           message and for this reason we need to generate JS at some
>>>> level from python even if it only the content of
>>>>           a string variable. Then since we need to generating also HTML
>>>> from Javascript it makes multiple level of
>>>>           abstraction and a lot of quoting... When you add over all
>>>> that there is single quote using in the translated
>>>>           text and that we deal with byte (python str) and not
>>>> unicode... That were you end up...
>>>>
>>>>           :param colspan:
>>>>           :param tr_id:
>>>>           :param flash_text:
>>>>           :param button_text:
>>>>     """
>>>>     elements_to_be_added = \
>>>>         TD(TAG.button(STRONG(current.T(button_text).decode('utf8')),
>>>>                       _type='button',
>>>>                       _class='btn btn-small pull-right',
>>>>                       _onclick='$("tr#input_%s").children().show(); '
>>>>                                '$("td#%s").hide(); '
>>>>                                '$.web2py.flash("%s");' % (tr_id, tr_id,
>>>> current.T(flash_text).decode('utf8'))),
>>>>            _colspan=colspan,
>>>>            _id=tr_id)
>>>>
>>>>     controller_view_js = \
>>>>         '''$(document).ready(function() {
>>>>             if(!$('#%s .error').length) {
>>>>                 $("tr#input_%s").children().hide();
>>>>                 $("tr#input_%s").append('%s');
>>>>                 }
>>>>             });''' % (form_id, tr_id, tr_id, elements_to_be_added)
>>>>     #
>>>> -----------------------------------------------------------------------------
>>>>     return controller_view_js
>>>>
>>>>
>>>>
>>>>
>>>> You have everything...
>>>>
>>>> --
>>>> 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.
>>>>
>>>
>>> --
>> 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.
>>
>
>

-- 
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