query_string parameters when switching language

2 messages Options
Embed this post
Permalink
francoise

query_string parameters when switching language

Reply Threaded More More options
Print post
Permalink
Hello,

My site has many Zope pages templates, Zope folders and also Plone pages, Plone folders.

This create problems for the navigation menu and also for translation but I can't rewrite all the site now.

The query_string is used to pass parameters to Zope pages :
   http://myssite/teams?id=14&tab=members

My problem is that Plone Language Tool and LinguaPlone "loose" the query_string parameters when switching language.

I found the following workarounds though it could get me into troubles but I am really bothered by the query_string parameters lost.

1. Plone Language Tool
   I customized switchLanguage.py in the ZMI

   replaced :
      qst="?"
      for k, v in query.items():

   by :
      qst="?"

      reqreferer = REQUEST['HTTP_REFERER'].split('?')
      if len(reqreferer) > 1:
         for p in reqreferer[-1].split("&"):
             if (p.find('set_language') == -1) and (p.find('cl=') == -1):
                qst += p + "&"

      for k, v in query.items():

2. LinguaPlone
   I modified LinguaPlone/browser/selector.py

   replaced :
      try:
          data['url'] = state.view_url() + '?set_language=' + data['code']
      except AttributeError:
   
   by :
      try:
          # Rebuild query_string
          qst = ""

          if self.request is not None and self.request.form is not None:
             form = self.request.form
             for k,v in form.items():
                 if k != "-C" and k != "set_language":  # Empty forms
                      qst += "&%s=%s" % (k,v)

          elif self.request is not None and self.request['HTTP_REFERER'] is not None:
             reqreferer = self.request['HTTP_REFERER'].split('?')
             if len(reqreferer) > 1:
                for p in reqreferer[-1].split("&"):
                   if (p.find('set_language') == -1) and (p.find('cl=') == -1):
                      qst += "&" + p

          data['url'] = state.view_url() + '?set_language=' + data['code'] + qst
      except AttributeError:

Regards
francoise

Re: query_string parameters when switching language

Reply Threaded More More options
Print post
Permalink
I forgot a few details : I am using Plone-3.2.3 and LinguaPlone 2.4