Vitaliy Filippov
2015-09-29 b4d9581961d219f6a8fbfd0e391b39d7e45e8e10
Add "all repositories" parameter
3 files modified
29 ■■■■■ changed files
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.html 1 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.java 27 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -48,6 +48,7 @@
gb.tagger = tagger
gb.moreHistory = more history...
gb.difftocurrent = diff to current
gb.allrepos = in all repositories
gb.search = search
gb.searchForAuthor = Search for commits authored by
gb.searchForCommitter = Search for commits committed by
src/main/java/com/gitblit/wicket/pages/LuceneSearchPage.html
@@ -24,6 +24,7 @@
            <div class="span3">
                <h3><wicket:message key="gb.repositories"></wicket:message></h3>
                <select wicket:id="repositories" ></select>
                <label><input type="checkbox" wicket:id="allrepos" /> <span><wicket:message key="gb.allrepos"></wicket:message></span></label>
            </div>
            <div class="span9" style="margin-left:10px">
                <div>
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