Einführung einer statischen Konstante für die sprachunabhängige "Sprache" und eines Konfigurationsparameter.
git-svn-id: https://svn.libreccm.org/ccm/trunk@1174 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
7345401d96
commit
4a32d33f55
|
|
@ -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 */
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue