Skip to content

Commit

Permalink
CSS layers support for web applications (#607)
Browse files Browse the repository at this point in the history
* issue97157 css layer support

* CloseStyles methos for correct css references ordering

* java naming style
  • Loading branch information
dmendez authored Aug 31, 2022
1 parent a23f681 commit 9330d53
Showing 1 changed file with 25 additions and 8 deletions.
33 changes: 25 additions & 8 deletions java/src/main/java/com/genexus/internet/HttpContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ public void ajax_sending_grid_row(com.genexus.webpanels.GXWebRow row)

private static HashMap<String, Messages> cachedMessages = new HashMap<String, Messages>();
private String currentLanguage = null;
private Vector<Object> userStyleSheetFiles = new Vector<Object>();
private String themekbPrefix;
private String themestyleSheet;
private String themeurlBuildNumber;

private boolean isServiceWorkerDefined()
{
Expand Down Expand Up @@ -457,7 +461,7 @@ private String FetchCustomCSS()
return cssContent;
}

public void AddThemeStyleSheetFile(String kbPrefix, String styleSheet, String urlBuildNumber)
public void CloseStyles()
{
String cssContent = FetchCustomCSS();
boolean bHasCustomContent = ! cssContent.isEmpty();
Expand All @@ -466,26 +470,37 @@ public void AddThemeStyleSheetFile(String kbPrefix, String styleSheet, String ur
writeTextNL("<style id=\"gx-inline-css\">" + cssContent + "</style>");
styleSheets.add(getRequest().getServletPath());
}
String[] referencedFiles = ThemeHelper.getThemeCssReferencedFiles(PrivateUtilities.removeExtension(styleSheet));
String[] referencedFiles = ThemeHelper.getThemeCssReferencedFiles(PrivateUtilities.removeExtension(themestyleSheet));
for (int i=0; i<referencedFiles.length; i++)
{
String file = referencedFiles[i];
String extension = PrivateUtilities.getExtension(file);
if (extension != null)
{
if (extension.equals("css"))
AddStyleSheetFile(file, urlBuildNumber, false, bHasCustomContent);
AddStyleSheetFile(file, themeurlBuildNumber, false, bHasCustomContent);
else if (extension.equals("js"))
AddDeferredJavascriptSource(file, urlBuildNumber);
AddDeferredJavascriptSource(file, themeurlBuildNumber);
}
}
AddStyleSheetFile(kbPrefix + "Resources/" + getLanguage() + "/" + styleSheet, urlBuildNumber, true, bHasCustomContent);
for (Object data : this.userStyleSheetFiles)
{
String[] sdata = (String[]) data;
AddStyleSheetFile(sdata[0], sdata[1], false, false);
}
AddStyleSheetFile(themekbPrefix + "Resources/" + getLanguage() + "/" + themestyleSheet, themeurlBuildNumber, true, bHasCustomContent);
}

public void AddThemeStyleSheetFile(String kbPrefix, String styleSheet)
{
AddThemeStyleSheetFile(kbPrefix, styleSheet, "");
}
public void AddThemeStyleSheetFile(String kbPrefix, String styleSheet, String urlBuildNumber)
{
this.themekbPrefix = kbPrefix;
this.themestyleSheet = styleSheet;
this.themeurlBuildNumber = urlBuildNumber;
}

public void AddStyleSheetFile(String styleSheet)
{
Expand All @@ -495,7 +510,7 @@ public void AddStyleSheetFile(String styleSheet)
public void AddStyleSheetFile(String styleSheet, String urlBuildNumber)
{
urlBuildNumber = getURLBuildNumber(styleSheet, urlBuildNumber);
AddStyleSheetFile(styleSheet, urlBuildNumber, false);
userStyleSheetFiles.add(new String[] { styleSheet, urlBuildNumber });
}

private String getURLBuildNumber(String resourcePath, String urlBuildNumber)
Expand All @@ -520,13 +535,15 @@ private void AddStyleSheetFile(String styleSheet, String urlBuildNumber, boolean
if (!styleSheets.contains(styleSheet))
{
styleSheets.add(styleSheet);
String sUncachedURL = oldConvertURL(styleSheet) + urlBuildNumber;
String sLayerName = styleSheet.replace("/", "_").replace(".","_");
if (!this.getHtmlHeaderClosed() && this.isEnabled)
{
String sRelAtt = (isDeferred ? "rel=\"preload\" as=\"style\" " : "rel=\"stylesheet\"");
if (isGxThemeHidden)
writeTextNL("<link id=\"gxtheme_css_reference\" " + sRelAtt + " type=\"text/css\" href=\"" + oldConvertURL(styleSheet) + urlBuildNumber + "\" " + htmlEndTag(HTMLElement.LINK));
writeTextNL("<link id=\"gxtheme_css_reference\" " + sRelAtt + " type=\"text/css\" href=\"" + sUncachedURL + "\" " + htmlEndTag(HTMLElement.LINK));
else
writeTextNL("<link " + sRelAtt + " type=\"text/css\" href=\"" + oldConvertURL(styleSheet) + urlBuildNumber + "\" " + htmlEndTag(HTMLElement.LINK));
writeTextNL("<style data-gx-href=\""+ sUncachedURL + "\"> @import url(\"" + sUncachedURL + "\") layer(" + sLayerName + ") </style>");
}
else
{
Expand Down

0 comments on commit 9330d53

Please sign in to comment.