Vitaliy Filippov
2015-09-29 b4d9581961d219f6a8fbfd0e391b39d7e45e8e10
src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java
@@ -24,6 +24,7 @@
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.ListMultipleChoice;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.form.CheckBox;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
@@ -66,6 +67,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 +88,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 +110,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) {
@@ -124,6 +130,7 @@
      // 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 +142,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 +160,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