Index: src/main/resources/hudson/plugins/sectioned_view/ListViewSection/config.jelly
===================================================================
--- src/main/resources/hudson/plugins/sectioned_view/ListViewSection/config.jelly (revision 37273)
+++ src/main/resources/hudson/plugins/sectioned_view/ListViewSection/config.jelly (working copy)
@@ -27,6 +27,16 @@
+
+
+
+
+
+
+
Index: src/main/java/hudson/plugins/sectioned_view/ListViewSection.java
===================================================================
--- src/main/java/hudson/plugins/sectioned_view/ListViewSection.java (revision 37273)
+++ src/main/java/hudson/plugins/sectioned_view/ListViewSection.java (working copy)
@@ -5,6 +5,7 @@
import hudson.model.Descriptor;
import hudson.model.Hudson;
import hudson.model.Saveable;
+import hudson.model.TopLevelItem;
import hudson.model.Descriptor.FormException;
import hudson.util.DescribableList;
import hudson.views.BuildButtonColumn;
@@ -14,11 +15,13 @@
import hudson.views.LastSuccessColumn;
import hudson.views.ListViewColumn;
import hudson.views.StatusColumn;
+import hudson.views.ViewJobFilter;
import hudson.views.WeatherColumn;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
@@ -32,6 +35,7 @@
public class ListViewSection extends SectionedViewSection {
private DescribableList> columns;
+ private DescribableList> jobFilters;
@DataBoundConstructor
public ListViewSection(String name, Width width, Positioning alignment) {
@@ -41,7 +45,29 @@
public Iterable getColumns() {
return columns;
}
+
+ public Iterable getJobFilters() {
+ return jobFilters;
+ }
+ public boolean hasJobFilterExtensions() {
+ return !ViewJobFilter.all().isEmpty();
+ }
+
+ @Override
+ public Collection getItems() {
+ Collection itemsCollection = super.getItems();
+ List items = new ArrayList(itemsCollection);
+ // check the filters
+ Iterable jobFilters = getJobFilters();
+ List allItems = Hudson.getInstance().getItems();
+ for (ViewJobFilter jobFilter: jobFilters) {
+ items = jobFilter.filter(items, allItems, null);
+ }
+ return items;
+ }
+
+
public static List getDefaultColumns() {
ArrayList r = new ArrayList();
DescriptorExtensionList> all = ListViewColumn.all();
@@ -75,6 +101,14 @@
} catch (IOException e) {
throw new FormException("Error rebuilding list of columns.", e, "columns");
}
+ if (section.jobFilters == null) {
+ section.jobFilters = new DescribableList>(Saveable.NOOP);
+ }
+ try {
+ section.jobFilters.rebuildHetero(req, formData, ViewJobFilter.all(), "jobFilters");
+ } catch (IOException e) {
+ throw new FormException("Error rebuilding list of view job filters.", e, "jobFilters");
+ }
return section;
}