Hi All, I'd like to add a feedback form in layout.html so that the users can click on it on whatever page they are and send a message to the site admin. To be useful, the form must include the current page and vars so that the admin can click on a link and go to exactly the same place where the user wrote the feedback from.
in layout I've added {{=LOAD('default', 'send_suggestion', vars={ 'c':request.controller, 'f':request.function, 'args':request.args, 'vars':request.vars}, ajax_trap=True)}} in default.py def send_suggestion(): form = SQLFORM.factory( Field('message', 'text', requires=IS_NOT_EMPTY()) ) if form.process().accepted: _c = request.vars['c'] _f = request.vars['f'] _args = request.vars['args'] or [] _vars = request.vars['vars'] or {} subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args) ##### <---- it works subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args,vars=_vars) ##### <---- vars doesn't like Storage response.flash = 'Thanks for your feedback' # will send email return form The problem is that URL *vars* doesn't like storage... Traceback (most recent call last): File "/home/sebas/dev/web2py/peerservices/gluon/restricted.py", line 205, in restricted exec ccode in environment File "/home/sebas/dev/web2py/peerservices/applications/peerservices/controllers/default.py" <http://localhost:8000/admin/default/edit/peerservices/controllers/default.py>, line 370, in <module> File "/home/sebas/dev/web2py/peerservices/gluon/globals.py", line 173, in <lambda> self._caller = lambda f: f() File "/home/sebas/dev/web2py/peerservices/applications/peerservices/controllers/default.py" <http://localhost:8000/admin/default/edit/peerservices/controllers/default.py>, line 301, in send_suggestion subject = 'FEEDBACK: %s' % URL(c=_c,f=_f,args=_args,vars=_vars) File "/home/sebas/dev/web2py/peerservices/gluon/html.py", line 290, in URL if vars.has_key('_signature'): vars.pop('_signature') AttributeError: 'str' object has no attribute 'has_key' Any better way than converting the Storage into dict ? thanks -- Sebastian E. Ovide