Better handling if navigation category is not available in one of the languages in the Accept-Language header of the request
git-svn-id: https://svn.libreccm.org/ccm/trunk@4972 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
70171a8e8c
commit
aaead492e1
|
|
@ -31,6 +31,7 @@ import org.apache.log4j.Logger;
|
|||
|
||||
import com.arsdigita.categorization.Category;
|
||||
import com.arsdigita.categorization.CategoryCollection;
|
||||
import com.arsdigita.categorization.CategoryLocalizationCollection;
|
||||
import com.arsdigita.cms.CMSConfig;
|
||||
import com.arsdigita.cms.TemplateContext;
|
||||
import com.arsdigita.dispatcher.DispatcherHelper;
|
||||
|
|
@ -46,6 +47,7 @@ import com.arsdigita.web.DefaultApplicationFileResolver;
|
|||
import com.arsdigita.web.Web;
|
||||
|
||||
import com.arsdigita.globalization.GlobalizationHelper;
|
||||
import com.arsdigita.kernel.KernelConfig;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
|
@ -64,9 +66,6 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
|
|||
public static final String PATH_COOKIE_NAME = "ad_path";
|
||||
public static final char PATH_COOKIE_SEPARATOR = '|';
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public RequestDispatcher resolve(String templatePath,
|
||||
HttpServletRequest sreq,
|
||||
|
|
@ -86,7 +85,7 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
|
|||
GlobalizationHelper.setSelectedLocale(lang);
|
||||
} else {
|
||||
|
||||
final String lang;
|
||||
String lang;
|
||||
if (GlobalizationHelper.getSelectedLocale(sreq) == null) {
|
||||
lang = GlobalizationHelper.getNegotiatedLocale().getLanguage();
|
||||
} else {
|
||||
|
|
@ -99,6 +98,17 @@ public class NavigationFileResolver extends DefaultApplicationFileResolver {
|
|||
redirectTo.append(DispatcherHelper.getWebappContext());
|
||||
}
|
||||
|
||||
//Is category available in lang? If not change lang to default language
|
||||
final Category[] cats = resolvePath(getRootCategory(), path);
|
||||
if (cats == null) {
|
||||
lang = KernelConfig.getConfig().getDefaultLanguage();
|
||||
} else {
|
||||
final CategoryLocalizationCollection langs = cats[cats.length - 1].getCategoryLocalizationCollection();
|
||||
if (!langs.localizationExists(lang)) {
|
||||
lang = KernelConfig.getConfig().getDefaultLanguage();
|
||||
}
|
||||
}
|
||||
|
||||
redirectTo
|
||||
.append("/ccm")
|
||||
.append(app.getPath())
|
||||
|
|
|
|||
Loading…
Reference in New Issue