diff --git a/core/src/main/java/hudson/PluginManager.java b/core/src/main/java/hudson/PluginManager.java
index a235146efc..9b6a987a86 100644
--- a/core/src/main/java/hudson/PluginManager.java
+++ b/core/src/main/java/hudson/PluginManager.java
@@ -126,6 +126,7 @@ import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
@@ -2245,6 +2246,33 @@ public abstract class PluginManager extends AbstractModelObject implements OnMas
return this;
}
+ @Restricted(DoNotUse.class) // Used from table.jelly
+ public boolean isMetaLabel(String label) {
+ return "adopt-this-plugin".equals(label);
+ }
+
+ @Restricted(DoNotUse.class) // Used from table.jelly
+ public boolean hasAdoptThisPluginLabel(UpdateSite.Plugin plugin) {
+ final String[] categories = plugin.categories;
+ if (categories == null) {
+ return false;
+ }
+ return Arrays.asList(categories).contains("adopt-this-plugin");
+ }
+
+ @Restricted(DoNotUse.class) // Used from table.jelly
+ public boolean hasAdoptThisPluginLabel(PluginWrapper plugin) {
+ final UpdateSite.Plugin pluginMeta = Jenkins.get().getUpdateCenter().getPlugin(plugin.getShortName());
+ if (pluginMeta == null) {
+ return false;
+ }
+ final String[] categories = pluginMeta.categories;
+ if (categories == null) {
+ return false;
+ }
+ return Arrays.asList(categories).contains("adopt-this-plugin");
+ }
+
/**
* Escape hatch for StaplerProxy-based access control
*/
diff --git a/core/src/main/resources/hudson/PluginManager/installed.jelly b/core/src/main/resources/hudson/PluginManager/installed.jelly
index 954300d4bd..c6ea9155d8 100644
--- a/core/src/main/resources/hudson/PluginManager/installed.jelly
+++ b/core/src/main/resources/hudson/PluginManager/installed.jelly
@@ -111,6 +111,11 @@ THE SOFTWARE.
+