FreemarkerPresentationManager now passes several parameters like the dispatcherPrefix to the template

git-svn-id: https://svn.libreccm.org/ccm/trunk@5826 8810af33-2d31-482b-a856-94f89814c4df
master
jensp 2019-02-11 19:29:01 +00:00
parent 3c0720078a
commit 6f633e4715
2 changed files with 58 additions and 0 deletions

View File

@ -1,6 +1,8 @@
package org.libreccm.theming; package org.libreccm.theming;
import com.arsdigita.bebop.Bebop;
import com.arsdigita.domain.DataObjectNotFoundException; import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.globalization.GlobalizationHelper;
import com.arsdigita.subsite.Site; import com.arsdigita.subsite.Site;
import com.arsdigita.templating.PresentationManager; import com.arsdigita.templating.PresentationManager;
import com.arsdigita.themedirector.ThemeDirector; import com.arsdigita.themedirector.ThemeDirector;
@ -27,6 +29,7 @@ import java.io.InputStream;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.HashMap; import java.util.HashMap;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Optional; import java.util.Optional;
@ -182,8 +185,50 @@ public class FreeMarkerPresentationManager implements PresentationManager {
configuration.setDefaultEncoding("UTF-8"); configuration.setDefaultEncoding("UTF-8");
final Map<String, Object> data = new HashMap<>(); final Map<String, Object> data = new HashMap<>();
// The XML document
data.put("ccm", NodeModel.wrap(root)); data.put("ccm", NodeModel.wrap(root));
// Parameters (in XSL provided as XSL parameters)
data.put("contextPath", request.getContextPath());
data.put("contextPrefix",
Web.getWebContext().getRequestURL().getContextPath());
data.put("dcpOnButtons",
Bebop.getConfig().doubleClickProtectionOnButtons());
data.put("dcpOnLinks",
Bebop.getConfig().doubleClickProtectionOnLinks());
data.put("dispatcherPrefix", com.arsdigita.web.URL.getDispatcherPath());
final String host;
if (request.getServerPort() == 80) {
host = String.format("%s://%s",
request.getScheme(),
request.getServerName());
} else {
host = String.format("%s://%s:%d",
request.getScheme(),
request.getServerName(),
request.getServerPort());
}
data.put("host", host);
data.put("internalTheme",
Web.getWebContext().getRequestURL().getContextPath()
+ com.arsdigita.web.URL.INTERNAL_THEME_DIR);
data.put("negotiatedLanguage",
GlobalizationHelper.getNegotiatedLocale().getLanguage());
data.put("requestScheme", request.getScheme());
data.put("rootContextPrefix",
Web.getConfig().getDispatcherContextPath());
final Locale selectedLocale = GlobalizationHelper
.getSelectedLocale(request);
if (selectedLocale == null) {
data.put("selectedLanguage", "");
} else {
data.put("selectedLanguage", selectedLocale.getLanguage());
}
data.put("serverName", request.getServerName());
data.put("serverPort", request.getServerPort());
data.put("userAgent", request.getHeader("user-Agent"));
final Template template; final Template template;
try { try {
template = configuration.getTemplate(applicationTemplatePath); template = configuration.getTemplate(applicationTemplatePath);

View File

@ -0,0 +1,13 @@
<#ftl ns_prefixes={
"bebop":"http://www.arsdigita.com/bebop/1.0",
"cms":"http://www.arsdigita.com/cms/1.0",
"nav":"http://ccm.redhat.com/navigation",
"ui": "http://www.arsdigita.com/ui/1.0"}
>
<#macro pageTitle>
${ccm["//nav:categoryMenu/nav:category/@title"]}
</#macro>