[JENKINS-68286] Allow extra classes with <layout:icon> (#6510)

Co-authored-by: Tim Jacomb <21194782+timja@users.noreply.github.com>
This commit is contained in:
ikedamandTim Jacomb authored and GitHub committed 2022-05-09 07:47:33 +01:00
1 parent db743e7e8d
commit 0f90eba886
3 files changed
+55 -7

No files matched your search

+14 -3
View File
@@ -2293,12 +2293,17 @@ public class Functions {
return null;
}
StaplerRequest currentRequest = Stapler.getCurrentRequest();
currentRequest.getWebApp().getDispatchValidator().allowDispatch(currentRequest, Stapler.getCurrentResponse());
Icon iconMetadata = IconSet.icons.getIconByClassSpec(iconGuess);
// `iconGuess` must be class names if it contains a whitespace.
// It may contains extra css classes unrelated to icons.
// Filter classes with `icon-` prefix.
if (iconMetadata == null && iconGuess.contains(" ")) {
iconMetadata = IconSet.icons.getIconByClassSpec(filterIconNameClasses(iconGuess));
}
if (iconMetadata == null) {
// Icon could be provided as a simple iconFileName e.g. "settings.png"
// Icon could be provided as a simple iconFileName e.g. "help.svg"
iconMetadata = IconSet.icons.getIconByClassSpec(IconSet.toNormalizedIconNameClass(iconGuess) + " icon-md");
}
@@ -2310,6 +2315,12 @@ public class Functions {
return iconMetadata;
}
private static @NonNull String filterIconNameClasses(@NonNull String classNames) {
return Arrays.stream(StringUtils.split(classNames, ' '))
.filter(className -> className.startsWith("icon-"))
.collect(Collectors.joining(" "));
}
@Restricted(NoExternalUse.class)
public static String extractPluginNameFromIconSrc(String iconSrc) {
if (iconSrc == null) {