From 4a32d33f556b8ab00db93cc9d6df85b0c9b5033c Mon Sep 17 00:00:00 2001 From: quasi Date: Tue, 18 Oct 2011 05:51:06 +0000 Subject: [PATCH] =?UTF-8?q?Einf=C3=BChrung=20einer=20statischen=20Konstant?= =?UTF-8?q?e=20f=C3=BCr=20die=20sprachunabh=C3=A4ngige=20"Sprache"=20und?= =?UTF-8?q?=20eines=20Konfigurationsparameter.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.libreccm.org/ccm/trunk@1174 8810af33-2d31-482b-a856-94f89814c4df --- .../com/arsdigita/cms/util/LanguageUtil.java | 9 +++- .../globalization/GlobalizationHelper.java | 1 + .../com/arsdigita/kernel/KernelConfig.java | 7 +++ .../kernel/KernelConfig_parameter.properties | 4 ++ .../navigation/ui/AbstractObjectList.java | 50 ++++++++++--------- 5 files changed, 46 insertions(+), 25 deletions(-) diff --git a/ccm-cms/src/com/arsdigita/cms/util/LanguageUtil.java b/ccm-cms/src/com/arsdigita/cms/util/LanguageUtil.java index 254780786..ef9b7f19e 100755 --- a/ccm-cms/src/com/arsdigita/cms/util/LanguageUtil.java +++ b/ccm-cms/src/com/arsdigita/cms/util/LanguageUtil.java @@ -20,7 +20,9 @@ package com.arsdigita.cms.util; import com.arsdigita.cms.ContentBundle; import com.arsdigita.cms.ContentPage; +import com.arsdigita.globalization.GlobalizationHelper; import com.arsdigita.globalization.GlobalizedMessage; +import com.arsdigita.kernel.Kernel; import com.arsdigita.util.Assert; import com.arsdigita.util.Pair; @@ -36,6 +38,7 @@ import java.util.StringTokenizer; * Utility methods for dealing with the multilingual items. * * @author Shashin Shinde (sshinde@redhat.com) + * @author Sören Bernstein */ public class LanguageUtil { @@ -63,7 +66,11 @@ public class LanguageUtil { * at the server startup */ public static void setSupportedLanguages(String languages) { - s_languages = languages + ",--"; + if(Kernel.getConfig().languageIndependentItems()) { + s_languages = languages + "," + GlobalizationHelper.LANG_INDEPENDENT; + } else { + s_languages = languages; + } } /** Get the comma separated list of all supported languages */ diff --git a/ccm-core/src/com/arsdigita/globalization/GlobalizationHelper.java b/ccm-core/src/com/arsdigita/globalization/GlobalizationHelper.java index 4c174f084..50eddfa45 100644 --- a/ccm-core/src/com/arsdigita/globalization/GlobalizationHelper.java +++ b/ccm-core/src/com/arsdigita/globalization/GlobalizationHelper.java @@ -20,6 +20,7 @@ import javax.servlet.http.HttpSession; */ public class GlobalizationHelper { + public static final String LANG_INDEPENDENT = "--"; private static final String LANG_PARAM = "lang"; // Don't instantiate diff --git a/ccm-core/src/com/arsdigita/kernel/KernelConfig.java b/ccm-core/src/com/arsdigita/kernel/KernelConfig.java index e6103916f..a909f56a0 100755 --- a/ccm-core/src/com/arsdigita/kernel/KernelConfig.java +++ b/ccm-core/src/com/arsdigita/kernel/KernelConfig.java @@ -79,6 +79,8 @@ public final class KernelConfig extends AbstractConfig { private final Parameter m_supportedLanguages = new StringParameter ("waf.kernel.supported_languages", Parameter.REQUIRED, "en,de,fr,nl,it,pt,es"); + private final Parameter m_languageIndependentItems = new BooleanParameter + ("waf.kernel.language_independent_items", Parameter.REQUIRED, Boolean.FALSE); public KernelConfig() { @@ -101,6 +103,7 @@ public final class KernelConfig extends AbstractConfig { register(m_remember); register(m_secureLogin); register(m_supportedLanguages); + register(m_languageIndependentItems); loadInfo(); } @@ -183,4 +186,8 @@ public final class KernelConfig extends AbstractConfig { return ((String) get(m_supportedLanguages)).contains(lang); } + public final boolean languageIndependentItems() { + return ((Boolean) get(m_languageIndependentItems)).booleanValue(); + } + } diff --git a/ccm-core/src/com/arsdigita/kernel/KernelConfig_parameter.properties b/ccm-core/src/com/arsdigita/kernel/KernelConfig_parameter.properties index 4a4971fe5..77eaaaa70 100755 --- a/ccm-core/src/com/arsdigita/kernel/KernelConfig_parameter.properties +++ b/ccm-core/src/com/arsdigita/kernel/KernelConfig_parameter.properties @@ -26,3 +26,7 @@ waf.kernel.supported_languages.title=Set the supported languages for categorizat waf.kernel.supported_languages.purpose=Set the supported languages for categorization. First entry is the default language waf.kernel.supported_languages.example=en,de,fr,nl,it,pt,es waf.kernel.supported_languages.format=[string] +waf.kernel.language_independent_items.title=Allow language independent content items +waf.kernel.language_independent_items.purpose=Allow language independent content items +waf.kernel.language_independent_items.example=false +waf.kernel.language_independent_items.format=true|false diff --git a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/AbstractObjectList.java b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/AbstractObjectList.java index f0ddc3036..ea7d1e6d0 100755 --- a/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/AbstractObjectList.java +++ b/ccm-ldn-navigation/src/com/arsdigita/london/navigation/ui/AbstractObjectList.java @@ -15,10 +15,10 @@ * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ - - package com.arsdigita.london.navigation.ui; +import com.arsdigita.globalization.GlobalizationHelper; +import com.arsdigita.kernel.Kernel; import com.arsdigita.london.navigation.DataCollectionDefinition; import com.arsdigita.london.navigation.DataCollectionRenderer; @@ -34,9 +34,9 @@ import com.arsdigita.xml.Element; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -public abstract class AbstractObjectList - extends AbstractComponent implements ObjectList { - +public abstract class AbstractObjectList + extends AbstractComponent implements ObjectList { + private DataCollectionRenderer m_renderer = new DataCollectionRenderer(); private DataCollectionDefinition m_definition = new DataCollectionDefinition(); @@ -57,14 +57,14 @@ public abstract class AbstractObjectList public final DataCollectionRenderer getRenderer() { return m_renderer; } - + protected DataCollection getObjects(HttpServletRequest request, - HttpServletResponse response) { - // definition needs to know if the renderer is rendering a date - // attribute so that it can decide whether to order by date for - // a date order category - m_definition.setDateAttribute(m_renderer); - + HttpServletResponse response) { + // definition needs to know if the renderer is rendering a date + // attribute so that it can decide whether to order by date for + // a date order category + m_definition.setDateAttribute(m_renderer); + return m_definition.getDataCollection(getModel()); } @@ -76,9 +76,9 @@ public abstract class AbstractObjectList } public Element generateObjectListXML(HttpServletRequest request, - HttpServletResponse response) { + HttpServletResponse response) { Assert.isLocked(this); - + String pageNumberValue = request.getParameter("pageNumber"); Integer pageNumber = null; try { @@ -89,24 +89,26 @@ public abstract class AbstractObjectList } } catch (NumberFormatException ex) { throw new UncheckedWrapperException( - "cannot parse page number " + pageNumber, ex - ); + "cannot parse page number " + pageNumber, ex); } - + DataCollection objects = getObjects(request, response); // Quasimodo: Begin // Limit list to objects in the negotiated language and language invariant items if (objects != null && objects.size() > 0) { - FilterFactory ff = objects.getFilterFactory(); - Filter filter = ff.or(). - addFilter(ff.equals("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage())). - addFilter(ff.equals("language", "--")); - objects.addFilter(filter); -// objects.addEqualsFilter("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage()); + if (Kernel.getConfig().languageIndependentItems()) { + FilterFactory ff = objects.getFilterFactory(); + Filter filter = ff.or(). + addFilter(ff.equals("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage())). + addFilter(ff.equals("language", GlobalizationHelper.LANG_INDEPENDENT)); + objects.addFilter(filter); + } else { + objects.addEqualsFilter("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage()); + } } // Quasimodo: End - + return m_renderer.generateXML(objects, pageNumber.intValue()); } }