mirror of
https://github.com/jenkinsci/jenkins.git
synced 2026-10-28 12:05:19 +00:00
Add support for Ionicons (symbols) to <l:Icon> and <l:task> components (#6186)
This commit is contained in:
1 parent
731a29786a
commit
81072df4f7
61 files changed
+314
-259
No files matched your search
@@ -161,6 +161,7 @@ import org.apache.commons.jelly.XMLOutput;
|
||||
import org.apache.commons.jexl.parser.ASTSizeFunction;
|
||||
import org.apache.commons.jexl.util.Introspector;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.jenkins.ui.icon.Icon;
|
||||
import org.jenkins.ui.icon.IconSet;
|
||||
import org.jvnet.tiger_types.Types;
|
||||
import org.kohsuke.accmod.Restricted;
|
||||
@@ -2290,6 +2291,68 @@ public class Functions {
|
||||
}
|
||||
}
|
||||
|
||||
@Restricted(NoExternalUse.class)
|
||||
public static Icon tryGetIcon(String iconGuess) {
|
||||
// Jenkins Symbols don't have metadata so return null
|
||||
if (iconGuess == null || iconGuess.startsWith("symbol-")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
StaplerRequest currentRequest = Stapler.getCurrentRequest();
|
||||
currentRequest.getWebApp().getDispatchValidator().allowDispatch(currentRequest, Stapler.getCurrentResponse());
|
||||
Icon iconMetadata = IconSet.icons.getIconByClassSpec(iconGuess);
|
||||
|
||||
if (iconMetadata == null) {
|
||||
// Icon could be provided as a simple iconFileName e.g. "settings.png"
|
||||
iconMetadata = IconSet.icons.getIconByClassSpec(IconSet.toNormalizedIconNameClass(iconGuess) + " icon-md");
|
||||
}
|
||||
|
||||
if (iconMetadata == null) {
|
||||
// Icon could be provided as an absolute iconFileName e.g. "/plugin/foo/abc.png"
|
||||
iconMetadata = IconSet.icons.getIconByUrl(iconGuess);
|
||||
}
|
||||
|
||||
return iconMetadata;
|
||||
}
|
||||
|
||||
@Restricted(NoExternalUse.class)
|
||||
public static String tryGetIconPath(String iconGuess, JellyContext context) {
|
||||
if (iconGuess == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (iconGuess.startsWith("symbol-")) {
|
||||
return iconGuess;
|
||||
}
|
||||
|
||||
StaplerRequest currentRequest = Stapler.getCurrentRequest();
|
||||
currentRequest.getWebApp().getDispatchValidator().allowDispatch(currentRequest, Stapler.getCurrentResponse());
|
||||
String rootURL = currentRequest.getContextPath();
|
||||
Icon iconMetadata = tryGetIcon(iconGuess);
|
||||
String iconSource = null;
|
||||
|
||||
if (iconMetadata != null) {
|
||||
iconSource = iconMetadata.getQualifiedUrl(context);
|
||||
}
|
||||
|
||||
if (iconMetadata == null) {
|
||||
if (!iconGuess.startsWith("/")) {
|
||||
iconGuess = "/" + iconGuess;
|
||||
}
|
||||
|
||||
iconSource = rootURL + (iconGuess.startsWith("/images/") || iconGuess.startsWith("/plugin/") ? getResourcePath() : "") + iconGuess;
|
||||
}
|
||||
|
||||
if (iconMetadata != null && iconMetadata.getClassSpec() != null) {
|
||||
String translatedIcon = IconSet.tryTranslateTangoIconToSymbol(iconMetadata.getClassSpec());
|
||||
if (translatedIcon != null) {
|
||||
return translatedIcon;
|
||||
}
|
||||
}
|
||||
|
||||
return iconSource;
|
||||
}
|
||||
|
||||
@SuppressFBWarnings(value = "PREDICTABLE_RANDOM", justification = "True randomness isn't necessary for form item IDs")
|
||||
@Restricted(NoExternalUse.class)
|
||||
public static String generateItemId() {
|
||||
|
||||
Reference in new issue
Block a user