From 85885a777e7b10cf72afe6c11959db100af6d949 Mon Sep 17 00:00:00 2001 From: quasi Date: Sat, 22 Oct 2011 08:27:05 +0000 Subject: [PATCH] =?UTF-8?q?Sprachunabh=C3=A4ngige=20ContentItems?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * AbstractObjectList: Anzeige korrigiert, sollte nun in Ordnung sein. git-svn-id: https://svn.libreccm.org/ccm/trunk@1187 8810af33-2d31-482b-a856-94f89814c4df --- .../arsdigita/london/navigation/Navigation.pdl | 17 +++++++++++++++++ .../navigation/ui/AbstractObjectList.java | 5 ++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/ccm-ldn-navigation/pdl/com/arsdigita/london/navigation/Navigation.pdl b/ccm-ldn-navigation/pdl/com/arsdigita/london/navigation/Navigation.pdl index 8190689db..75d7618c8 100755 --- a/ccm-ldn-navigation/pdl/com/arsdigita/london/navigation/Navigation.pdl +++ b/ccm-ldn-navigation/pdl/com/arsdigita/london/navigation/Navigation.pdl @@ -6,6 +6,23 @@ object type Navigation extends Application { reference key (nav_app.application_id); } +// Subquery for AbstractObjectList used as a filter +// to figure out which object have a match in the +// selected languages and don't have to match to a +// language independent content item +query getParentIDsOfMatchedItems { + BigDecimal parent; + + do { + select parent_id + from cms_items + where version = 'live' + and language = :language + } map { + parent = parent_id; + } +} + query ItemsByCategory { BigDecimal itemID; 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 ea7d1e6d0..b255785c2 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 @@ -101,7 +101,10 @@ public abstract class AbstractObjectList 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)); + addFilter(ff.and(). + addFilter(ff.equals("language", GlobalizationHelper.LANG_INDEPENDENT)). + addFilter(ff.notIn("parent", "com.arsdigita.london.navigation.getParentIDsOfMatchedItems") + .set("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage()))); objects.addFilter(filter); } else { objects.addEqualsFilter("language", com.arsdigita.globalization.GlobalizationHelper.getNegotiatedLocale().getLanguage());