From a396a443661b4f6c7132f59cd8754e4575b9e7aa Mon Sep 17 00:00:00 2001
From: Kazuhiko Shiozaki <kazuhiko@nexedi.com>
Date: Mon, 24 Nov 2014 11:10:47 +0100
Subject: [PATCH] fix WebSite_getFullTextSearchResultList so that 'any
 language' search and 'newest only' search work.

---
 .../WebSite_getFullTextSearchResultList.xml   | 20 +++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml b/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml
index 2978ea605a..4e2b6db298 100644
--- a/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml
+++ b/bt5/erp5_km/SkinTemplateItem/portal_skins/erp5_km/WebSite_getFullTextSearchResultList.xml
@@ -53,12 +53,28 @@
             <value> <string>"""\n
   Return the result list of all documents found by specified keyword arguments.\n
 """\n
-return context.getDocumentValueList(**kw)\n
+import re\n
+# if language is not specified in search_text, it means any language.\n
+# if language is specified in search_text, the query anyway includes explicit\n
+# language condition.\n
+kw[\'all_languages\'] = True\n
+if re.search(r\'\\bnewest:yes\\b\', search_text):\n
+  #...and now we check for only the newest versions\n
+  # but we need to preserve order\n
+  language_match = re.search(r\'\\blanguage:(.+?)\\b\', search_text)\n
+  if language_match:\n
+    language = language_match.groups()[0]\n
+  else:\n
+    language = None\n
+  return [doc.getLatestVersionValue(language=language) \\\n
+          for doc in context.getDocumentValueList(search_text=search_text, **kw)]\n
+else:\n
+  return context.getDocumentValueList(search_text=search_text, **kw)\n
 </string> </value>
         </item>
         <item>
             <key> <string>_params</string> </key>
-            <value> <string>**kw</string> </value>
+            <value> <string>search_text=\'\', **kw</string> </value>
         </item>
         <item>
             <key> <string>id</string> </key>
-- 
2.30.9