From ed552ba47c02779c270ffd62841d6d1048dade70 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 22 Nov 2015 14:37:16 -0500 Subject: [PATCH] Merge branch 'develop' --- src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java | 34 +++++++++++++++++++++++----------- 1 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java b/src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java index 4d4545a..b2fd903 100644 --- a/src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java +++ b/src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java @@ -17,11 +17,14 @@ import java.text.MessageFormat; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Set; import org.apache.wicket.Component; import org.apache.wicket.PageParameters; import org.apache.wicket.markup.html.basic.Label; +import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.markup.html.form.ListMultipleChoice; import org.apache.wicket.markup.html.form.TextField; import org.apache.wicket.markup.html.panel.Fragment; @@ -66,6 +69,15 @@ int page = 1; int pageSize = app().settings().getInteger(Keys.web.itemsPerPage, 50); + // display user-accessible selections + UserModel user = GitBlitWebSession.get().getUser(); + List<String> availableRepositories = new ArrayList<String>(); + for (RepositoryModel model : app().repositories().getRepositoryModels(user)) { + if (model.hasCommits && !ArrayUtils.isEmpty(model.indexedBranches)) { + availableRepositories.add(model.name); + } + } + if (params != null) { String repository = WicketUtils.getRepositoryName(params); if (!StringUtils.isEmpty(repository)) { @@ -78,6 +90,10 @@ String value = params.getString("repositories", ""); List<String> list = StringUtils.getStringsFromValue(value); repositories.addAll(list); + } + + if (params.containsKey("allrepos")) { + repositories.addAll(availableRepositories); } if (params.containsKey("query")) { @@ -96,14 +112,6 @@ } } - // display user-accessible selections - UserModel user = GitBlitWebSession.get().getUser(); - List<String> availableRepositories = new ArrayList<String>(); - for (RepositoryModel model : app().repositories().getRepositoryModels(user)) { - if (model.hasCommits && !ArrayUtils.isEmpty(model.indexedBranches)) { - availableRepositories.add(model.name); - } - } boolean luceneEnabled = app().settings().getBoolean(Keys.web.allowLuceneIndexing, true); if (luceneEnabled) { if (availableRepositories.size() == 0) { @@ -114,16 +122,18 @@ } // enforce user-accessible repository selections - ArrayList<String> searchRepositories = new ArrayList<String>(); + Set<String> uniqueRepositories = new LinkedHashSet<String>(); for (String selectedRepository : repositories) { if (availableRepositories.contains(selectedRepository)) { - searchRepositories.add(selectedRepository); + uniqueRepositories.add(selectedRepository); } } + ArrayList<String> searchRepositories = new ArrayList<String>(uniqueRepositories); // search form final Model<String> queryModel = new Model<String>(query); final Model<ArrayList<String>> repositoriesModel = new Model<ArrayList<String>>(searchRepositories); + final Model<Boolean> allreposModel = new Model<Boolean>(params != null && params.containsKey("allrepos")); SessionlessForm<Void> form = new SessionlessForm<Void>("searchForm", getClass()) { private static final long serialVersionUID = 1L; @@ -135,13 +145,14 @@ error(getString("gb.undefinedQueryWarning")); return; } - if (repositoriesModel.getObject().size() == 0) { + if (repositoriesModel.getObject().size() == 0 && !allreposModel.getObject()) { error(getString("gb.noSelectedRepositoriesWarning")); return; } PageParameters params = new PageParameters(); params.put("repositories", StringUtils.flattenStrings(repositoriesModel.getObject())); params.put("query", queryModel.getObject()); + params.put("allrepos", allreposModel.getObject()); LuceneSearchPage page = new LuceneSearchPage(params); setResponsePage(page); } @@ -152,6 +163,7 @@ selections.setMaxRows(8); form.add(selections.setEnabled(luceneEnabled)); form.add(new TextField<String>("query", queryModel).setEnabled(luceneEnabled)); + form.add(new CheckBox("allrepos", allreposModel)); add(form.setEnabled(luceneEnabled)); // execute search -- Gitblit v1.9.1