diff --git a/magnolia-site/src/main/java/info/magnolia/module/site/functions/SiteFunctions.java b/magnolia-site/src/main/java/info/magnolia/module/site/functions/SiteFunctions.java index a88fce1..e5468ab 100644 --- a/magnolia-site/src/main/java/info/magnolia/module/site/functions/SiteFunctions.java +++ b/magnolia-site/src/main/java/info/magnolia/module/site/functions/SiteFunctions.java @@ -90,11 +90,28 @@ return null; } } + + /** + * Returns the {@link info.magnolia.module.site.theme.Theme} of the passed content {@link info.magnolia.jcr.util.ContentMap}. + */ + public Theme theme(ContentMap content) { + return (content == null) ? null : this.theme(content.getJCRNode()); + } + + /** + * Returns the {@link info.magnolia.module.site.theme.Theme} of the passed content {@link javax.jcr.Node}. + */ + public Theme theme(Node content) { + if(content == null) return null; + Site site = this.site(content); + return (site == null) ? null : this.theme(site); + } /** * Returns the {@link info.magnolia.module.site.theme.Theme} of a {@link info.magnolia.module.site.Site}. */ public Theme theme(Site site) { + if(site == null) return null; final String themeName = site.getTheme().getName(); return StringUtils.isBlank(themeName) ? new ConfiguredTheme(imagingSupport) : siteModuleProvider.get().getTheme(themeName); @@ -107,6 +124,7 @@ * @return {@link Site} The according {@link Site} of the passed {@param content} */ public Site site(ContentMap content) { + if(content == null) return null; return site(content.getJCRNode()); }