CCM NG:
- URIResolver for XSLT Themes now works (and with that xsl:import etc. in the XSL files) - Fixed ambiguous URL patterns in Images git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5261 8810af33-2d31-482b-a856-94f89814c4dfccm-docs
parent
60cbb627c1
commit
5455b23d55
|
|
@ -80,6 +80,9 @@
|
||||||
<Logger name="org.libreccm.security.Shiro"
|
<Logger name="org.libreccm.security.Shiro"
|
||||||
level="debug">
|
level="debug">
|
||||||
</Logger>
|
</Logger>
|
||||||
|
<Logger name="org.libreccm.theming.xslt.CcmUriResolver"
|
||||||
|
level="debug">
|
||||||
|
</Logger>
|
||||||
<Logger name="org.libreccm.ui.admin.usersgroupsroles.RolesController"
|
<Logger name="org.libreccm.ui.admin.usersgroupsroles.RolesController"
|
||||||
level="debug">
|
level="debug">
|
||||||
</Logger>
|
</Logger>
|
||||||
|
|
|
||||||
|
|
@ -161,7 +161,7 @@ public class Images {
|
||||||
* @return A {@link Response} containing the scaled image or an error value.
|
* @return A {@link Response} containing the scaled image or an error value.
|
||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/{path:.+}")
|
@Path("/{path:^(?!uuid).+$}")
|
||||||
public Response getImage(
|
public Response getImage(
|
||||||
@PathParam("content-section")
|
@PathParam("content-section")
|
||||||
final String sectionName,
|
final String sectionName,
|
||||||
|
|
@ -220,7 +220,7 @@ public class Images {
|
||||||
* image.
|
* image.
|
||||||
*/
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/{path:.*}/properties")
|
@Path("/{path:^(?!uuid).+$}/properties")
|
||||||
public Response getImageProperties(
|
public Response getImageProperties(
|
||||||
@PathParam("content-section") final String sectionName,
|
@PathParam("content-section") final String sectionName,
|
||||||
@PathParam("path") final String path) {
|
@PathParam("path") final String path) {
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,13 @@
|
||||||
*/
|
*/
|
||||||
package org.libreccm.theming.xslt;
|
package org.libreccm.theming.xslt;
|
||||||
|
|
||||||
|
import org.apache.logging.log4j.LogManager;
|
||||||
|
import org.apache.logging.log4j.Logger;
|
||||||
import org.libreccm.theming.ThemeProvider;
|
import org.libreccm.theming.ThemeProvider;
|
||||||
import org.libreccm.theming.ThemeVersion;
|
import org.libreccm.theming.ThemeVersion;
|
||||||
|
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import javax.xml.transform.Source;
|
import javax.xml.transform.Source;
|
||||||
import javax.xml.transform.TransformerException;
|
import javax.xml.transform.TransformerException;
|
||||||
|
|
@ -36,6 +37,9 @@ import javax.xml.transform.stream.StreamSource;
|
||||||
*/
|
*/
|
||||||
class CcmUriResolver implements URIResolver {
|
class CcmUriResolver implements URIResolver {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LogManager
|
||||||
|
.getLogger(CcmUriResolver.class);
|
||||||
|
|
||||||
private final String theme;
|
private final String theme;
|
||||||
private final ThemeVersion version;
|
private final ThemeVersion version;
|
||||||
private final ThemeProvider themeProvider;
|
private final ThemeProvider themeProvider;
|
||||||
|
|
@ -48,6 +52,13 @@ class CcmUriResolver implements URIResolver {
|
||||||
Objects.requireNonNull(version);
|
Objects.requireNonNull(version);
|
||||||
Objects.requireNonNull(themeProvider);
|
Objects.requireNonNull(themeProvider);
|
||||||
|
|
||||||
|
LOGGER.debug("Creating new instance of {} with these parameters:",
|
||||||
|
getClass().getName());
|
||||||
|
LOGGER.debug("\ttheme = {}", theme);
|
||||||
|
LOGGER.debug("\tversion = {}", Objects.toString(version));
|
||||||
|
LOGGER.debug("\tthemeProvider = {}",
|
||||||
|
themeProvider.getClass().getName());
|
||||||
|
|
||||||
this.theme = theme;
|
this.theme = theme;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
this.themeProvider = themeProvider;
|
this.themeProvider = themeProvider;
|
||||||
|
|
@ -57,12 +68,17 @@ class CcmUriResolver implements URIResolver {
|
||||||
public Source resolve(final String href,
|
public Source resolve(final String href,
|
||||||
final String base) throws TransformerException {
|
final String base) throws TransformerException {
|
||||||
|
|
||||||
|
LOGGER.debug("Resolving href = \"{}\" using base = \"{}\"...",
|
||||||
|
href,
|
||||||
|
base);
|
||||||
|
|
||||||
final String path;
|
final String path;
|
||||||
if (base == null) {
|
if (base == null) {
|
||||||
path = href;
|
path = href;
|
||||||
} else {
|
} else {
|
||||||
path = String.join("/", href, base);
|
path = String.join("/", base, href);
|
||||||
}
|
}
|
||||||
|
LOGGER.debug("Using path \"{}\"...", path);
|
||||||
|
|
||||||
final InputStream inputStream = themeProvider
|
final InputStream inputStream = themeProvider
|
||||||
.getThemeFileAsStream(theme, version, path)
|
.getThemeFileAsStream(theme, version, path)
|
||||||
|
|
@ -76,6 +92,9 @@ class CcmUriResolver implements URIResolver {
|
||||||
version,
|
version,
|
||||||
themeProvider.getClass().getName())));
|
themeProvider.getClass().getName())));
|
||||||
|
|
||||||
|
LOGGER.debug("Resolved href = \"{}\" with base \"{}\" successfully.",
|
||||||
|
href,
|
||||||
|
path);
|
||||||
return new StreamSource(inputStream);
|
return new StreamSource(inputStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -201,6 +201,9 @@ public class XsltThemeProcessor implements ThemeProcessor {
|
||||||
final TransformerFactory transformerFactory = TransformerFactory
|
final TransformerFactory transformerFactory = TransformerFactory
|
||||||
.newInstance(TransformerFactoryImpl.class.getName(),
|
.newInstance(TransformerFactoryImpl.class.getName(),
|
||||||
getClass().getClassLoader());
|
getClass().getClassLoader());
|
||||||
|
transformerFactory.setURIResolver(new CcmUriResolver(theme.getName(),
|
||||||
|
theme.getVersion(),
|
||||||
|
themeProvider));
|
||||||
final TransformerFactoryImpl transformerFactoryImpl
|
final TransformerFactoryImpl transformerFactoryImpl
|
||||||
= (TransformerFactoryImpl) transformerFactory;
|
= (TransformerFactoryImpl) transformerFactory;
|
||||||
final Configuration configuration = transformerFactoryImpl
|
final Configuration configuration = transformerFactoryImpl
|
||||||
|
|
@ -215,9 +218,9 @@ public class XsltThemeProcessor implements ThemeProcessor {
|
||||||
final Transformer transformer;
|
final Transformer transformer;
|
||||||
try {
|
try {
|
||||||
transformer = transformerFactory.newTransformer(xslFileStreamSource);
|
transformer = transformerFactory.newTransformer(xslFileStreamSource);
|
||||||
transformer.setURIResolver(new CcmUriResolver(theme.getName(),
|
// transformer.setURIResolver(new CcmUriResolver(theme.getName(),
|
||||||
theme.getVersion(),
|
// theme.getVersion(),
|
||||||
themeProvider));
|
// themeProvider));
|
||||||
transformer.setErrorListener(new ErrorListener() {
|
transformer.setErrorListener(new ErrorListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
xmlns:ccm="http://xmlns.libreccm.org"
|
xmlns:ccm="http://xmlns.libreccm.org"
|
||||||
exclude-result-prefixes="ccm xsl">
|
exclude-result-prefixes="ccm xsl">
|
||||||
|
|
||||||
|
<xsl:import href="footer.xsl" />
|
||||||
|
|
||||||
<xsl:output method="html"
|
<xsl:output method="html"
|
||||||
doctype-system="about:legacy-compat"
|
doctype-system="about:legacy-compat"
|
||||||
indent="yes"
|
indent="yes"
|
||||||
|
|
@ -51,7 +53,8 @@
|
||||||
</div>
|
</div>
|
||||||
<!--<xsl:apply-templates select="greetingItem" />-->
|
<!--<xsl:apply-templates select="greetingItem" />-->
|
||||||
</main>
|
</main>
|
||||||
<footer>
|
<xsl:call-template name="footer" />
|
||||||
|
<!--<footer>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="/impressum">Impressum</a>
|
<a href="/impressum">Impressum</a>
|
||||||
|
|
@ -60,8 +63,7 @@
|
||||||
<a href="/privacy">Privacy</a>
|
<a href="/privacy">Privacy</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</footer>
|
</footer>-->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
</xsl:template>
|
</xsl:template>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue