private static void handleInlineTargets(BootstrapContext context, Element head, Element body, InlineTargets targets) { targets.getInlineHead(Inline.Position.PREPEND).stream() .map(dependency -> createDependencyElement(context, dependency)) .forEach( element -> insertElements(element, head::prependChild)); targets.getInlineHead(Inline.Position.APPEND).stream() .map(dependency -> createDependencyElement(context, dependency)) .forEach(element -> insertElements(element, head::appendChild)); targets.getInlineBody(Inline.Position.PREPEND).stream() .map(dependency -> createDependencyElement(context, dependency)) .forEach( element -> insertElements(element, body::prependChild)); targets.getInlineBody(Inline.Position.APPEND).stream() .map(dependency -> createDependencyElement(context, dependency)) .forEach(element -> insertElements(element, body::appendChild)); }
private static void handleInitialPageSettings(BootstrapContext context, Element head, InitialPageSettings initialPageSettings) { if (initialPageSettings.getViewport() != null) { Elements viewport = head.getElementsByAttributeValue("name", VIEWPORT); if (!viewport.isEmpty() && viewport.size() == 1) { viewport.get(0).attr(CONTENT_ATTRIBUTE, initialPageSettings.getViewport()); } else { head.appendElement(META_TAG).attr("name", VIEWPORT).attr( CONTENT_ATTRIBUTE, initialPageSettings.getViewport()); } } initialPageSettings.getInline(InitialPageSettings.Position.PREPEND) .stream() .map(dependency -> createDependencyElement(context, dependency)) .forEach( element -> insertElements(element, head::prependChild)); initialPageSettings.getInline(InitialPageSettings.Position.APPEND) .stream() .map(dependency -> createDependencyElement(context, dependency)) .forEach(element -> insertElements(element, head::appendChild)); initialPageSettings.getElement(InitialPageSettings.Position.PREPEND) .forEach( element -> insertElements(element, head::prependChild)); initialPageSettings.getElement(InitialPageSettings.Position.APPEND) .forEach(element -> insertElements(element, head::appendChild)); }
private static List<Element> inlineDependenciesInHead(Element head, BootstrapUriResolver uriResolver, LoadMode loadMode, JsonArray dependencies) { List<Element> dependenciesToInlineInBody = new ArrayList<>(); for (int i = 0; i < dependencies.length(); i++) { JsonObject dependencyJson = dependencies.getObject(i); Dependency.Type dependencyType = Dependency.Type .valueOf(dependencyJson.getString(Dependency.KEY_TYPE)); Element dependencyElement = createDependencyElement(uriResolver, loadMode, dependencyJson, dependencyType); if (loadMode == LoadMode.INLINE && dependencyType == Dependency.Type.HTML_IMPORT) { dependenciesToInlineInBody.add(dependencyElement); } else { head.appendChild(dependencyElement); } } return dependenciesToInlineInBody; }
private static void handleThemeContents(BootstrapContext context, Document document) { ThemeSettings themeSettings = BootstrapUtils.getThemeSettings(context); if (themeSettings == null) { // no theme configured for the application return; } List<JsonObject> themeContents = themeSettings.getHeadContents(); if (themeContents != null) { themeContents.stream().map( dependency -> createDependencyElement(context, dependency)) .forEach(element -> insertElements(element, document.head()::appendChild)); } JsonObject themeContent = themeSettings.getHeadInjectedContent(); if (themeContent != null) { Element dependency = createDependencyElement(context, themeContent); insertElements(dependency, document.head()::appendChild); } if (themeSettings.getBodyAttributes() != null) { themeSettings.getBodyAttributes() .forEach((key, value) -> document.body().attr(key, value)); } }
private static Element createDependencyElement(BootstrapContext context, JsonObject dependencyJson) { String type = dependencyJson.getString(Dependency.KEY_TYPE); if (Dependency.Type.contains(type)) { Dependency.Type dependencyType = Dependency.Type.valueOf(type); return createDependencyElement(context.getUriResolver(), LoadMode.INLINE, dependencyJson, dependencyType); } return Jsoup.parse(dependencyJson.getString(Dependency.KEY_CONTENTS), "", Parser.xmlParser()); }