From c15d698f84d77c34393d33dbe492d44694619010 Mon Sep 17 00:00:00 2001
From: =?utf8?q?Benoi=CC=82t=20Pin?= <pin@cri.ensmp.fr>
Date: Wed, 17 Sep 2014 15:05:01 +0200
Subject: [PATCH] =?utf8?q?Pr=C3=A9f=C3=A9rences=20linguistiques=20enregist?=
 =?utf8?q?r=C3=A9es=20dans=20les=20donn=C3=A9es=20utilisateur=20et=20utili?=
 =?utf8?q?s=C3=A9es=20en=20priorit=C3=A9=20(par=20rapport=20au=20pr=C3=A9f?=
 =?utf8?q?=C3=A9rences=20du=20navigateur).?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit

---
 overrides.zcml                           |  6 ++++++
 skins/custom_generic/personalize_form.pt | 10 ++++++++++
 userlanguages.py                         | 14 ++++++++++++++
 3 files changed, 30 insertions(+)
 create mode 100644 userlanguages.py

diff --git a/overrides.zcml b/overrides.zcml
index bf37e72..3c01665 100644
--- a/overrides.zcml
+++ b/overrides.zcml
@@ -15,4 +15,10 @@
              Products.CMFCore.interfaces.ICatalogTool"
         provides="Products.CMFCore.interfaces.IIndexableObject"
         factory=".catalog_adapters.PlinnIndexableObjectWrapper" />
+    <adapter
+        for="zope.publisher.interfaces.http.IHTTPRequest"
+        provides="zope.i18n.interfaces.IUserPreferredLanguages"
+        factory=".userlanguages.AuthenticatedUserLanguages"
+        />
+    
 </configure>
diff --git a/skins/custom_generic/personalize_form.pt b/skins/custom_generic/personalize_form.pt
index 6836348..149f1dc 100755
--- a/skins/custom_generic/personalize_form.pt
+++ b/skins/custom_generic/personalize_form.pt
@@ -41,6 +41,16 @@
                   <input type="text" name="email" value="" tal:attributes="value python:member.getProperty('email', None)" />
                 </td>
               </tr>
+              <tr>
+                <th i18n:translate="">Preferred languages</th>
+                <td>
+                  <input type="text" name="preferred_languages:tokens"
+                         tal:attributes="value python:' '.join(member.getProperty('preferred_languages', []))"/>
+                  <dl class="FieldHelp">
+                    <dd i18n:translate="">Please enter language codes separated by spaces.</dd>
+                  </dl>
+                </td>
+              </tr>
               <tr>
                 <td><br /></td>
                 <td>
diff --git a/userlanguages.py b/userlanguages.py
new file mode 100644
index 0000000..8103d15
--- /dev/null
+++ b/userlanguages.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+from zope.publisher.browser import BrowserLanguages
+from Products.CMFCore.utils import getUtilityByInterfaceName
+
+class AuthenticatedUserLanguages(BrowserLanguages):
+
+    def getPreferredLanguages(self) :
+        mtool = getUtilityByInterfaceName('Products.CMFCore.interfaces.IMembershipTool')
+        if mtool.isAnonymousUser() :
+            return super(AuthenticatedUserLanguages, self).getPreferredLanguages()
+        else :
+            m = mtool.getAuthenticatedMember()
+            userLangs = m.getProperty('preferred_languages', [])
+            return userLangs or super(AuthenticatedUserLanguages, self).getPreferredLanguages()
-- 
2.20.1