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"
|
||||
level="debug">
|
||||
</Logger>
|
||||
<Logger name="org.libreccm.theming.xslt.CcmUriResolver"
|
||||
level="debug">
|
||||
</Logger>
|
||||
<Logger name="org.libreccm.ui.admin.usersgroupsroles.RolesController"
|
||||
level="debug">
|
||||
</Logger>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ public class Images {
|
|||
* @return A {@link Response} containing the scaled image or an error value.
|
||||
*/
|
||||
@GET
|
||||
@Path("/{path:.+}")
|
||||
@Path("/{path:^(?!uuid).+$}")
|
||||
public Response getImage(
|
||||
@PathParam("content-section")
|
||||
final String sectionName,
|
||||
|
|
@ -220,7 +220,7 @@ public class Images {
|
|||
* image.
|
||||
*/
|
||||
@GET
|
||||
@Path("/{path:.*}/properties")
|
||||
@Path("/{path:^(?!uuid).+$}/properties")
|
||||
public Response getImageProperties(
|
||||
@PathParam("content-section") final String sectionName,
|
||||
@PathParam("path") final String path) {
|
||||
|
|
|
|||
|
|
@ -18,12 +18,13 @@
|
|||
*/
|
||||
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.ThemeVersion;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
|
||||
import javax.xml.transform.Source;
|
||||
import javax.xml.transform.TransformerException;
|
||||
|
|
@ -36,6 +37,9 @@ import javax.xml.transform.stream.StreamSource;
|
|||
*/
|
||||
class CcmUriResolver implements URIResolver {
|
||||
|
||||
private static final Logger LOGGER = LogManager
|
||||
.getLogger(CcmUriResolver.class);
|
||||
|
||||
private final String theme;
|
||||
private final ThemeVersion version;
|
||||
private final ThemeProvider themeProvider;
|
||||
|
|
@ -48,6 +52,13 @@ class CcmUriResolver implements URIResolver {
|
|||
Objects.requireNonNull(version);
|
||||
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.version = version;
|
||||
this.themeProvider = themeProvider;
|
||||
|
|
@ -57,12 +68,17 @@ class CcmUriResolver implements URIResolver {
|
|||
public Source resolve(final String href,
|
||||
final String base) throws TransformerException {
|
||||
|
||||
LOGGER.debug("Resolving href = \"{}\" using base = \"{}\"...",
|
||||
href,
|
||||
base);
|
||||
|
||||
final String path;
|
||||
if (base == null) {
|
||||
path = href;
|
||||
} else {
|
||||
path = String.join("/", href, base);
|
||||
path = String.join("/", base, href);
|
||||
}
|
||||
LOGGER.debug("Using path \"{}\"...", path);
|
||||
|
||||
final InputStream inputStream = themeProvider
|
||||
.getThemeFileAsStream(theme, version, path)
|
||||
|
|
@ -76,6 +92,9 @@ class CcmUriResolver implements URIResolver {
|
|||
version,
|
||||
themeProvider.getClass().getName())));
|
||||
|
||||
LOGGER.debug("Resolved href = \"{}\" with base \"{}\" successfully.",
|
||||
href,
|
||||
path);
|
||||
return new StreamSource(inputStream);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -201,6 +201,9 @@ public class XsltThemeProcessor implements ThemeProcessor {
|
|||
final TransformerFactory transformerFactory = TransformerFactory
|
||||
.newInstance(TransformerFactoryImpl.class.getName(),
|
||||
getClass().getClassLoader());
|
||||
transformerFactory.setURIResolver(new CcmUriResolver(theme.getName(),
|
||||
theme.getVersion(),
|
||||
themeProvider));
|
||||
final TransformerFactoryImpl transformerFactoryImpl
|
||||
= (TransformerFactoryImpl) transformerFactory;
|
||||
final Configuration configuration = transformerFactoryImpl
|
||||
|
|
@ -215,9 +218,9 @@ public class XsltThemeProcessor implements ThemeProcessor {
|
|||
final Transformer transformer;
|
||||
try {
|
||||
transformer = transformerFactory.newTransformer(xslFileStreamSource);
|
||||
transformer.setURIResolver(new CcmUriResolver(theme.getName(),
|
||||
theme.getVersion(),
|
||||
themeProvider));
|
||||
// transformer.setURIResolver(new CcmUriResolver(theme.getName(),
|
||||
// theme.getVersion(),
|
||||
// themeProvider));
|
||||
transformer.setErrorListener(new ErrorListener() {
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@
|
|||
xmlns:ccm="http://xmlns.libreccm.org"
|
||||
exclude-result-prefixes="ccm xsl">
|
||||
|
||||
<xsl:import href="footer.xsl" />
|
||||
|
||||
<xsl:output method="html"
|
||||
doctype-system="about:legacy-compat"
|
||||
indent="yes"
|
||||
|
|
@ -51,7 +53,8 @@
|
|||
</div>
|
||||
<!--<xsl:apply-templates select="greetingItem" />-->
|
||||
</main>
|
||||
<footer>
|
||||
<xsl:call-template name="footer" />
|
||||
<!--<footer>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/impressum">Impressum</a>
|
||||
|
|
@ -60,8 +63,7 @@
|
|||
<a href="/privacy">Privacy</a>
|
||||
</li>
|
||||
</ul>
|
||||
</footer>
|
||||
|
||||
</footer>-->
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
|
|
|||
Loading…
Reference in New Issue