James Moger
2012-03-20 31a89771cd05b24317bd50e8cdfd73da45ef32c4
Display tag links on indexed commits and tweaked term highlight color
3 files modified
88 ■■■■■ changed files
resources/gitblit.css 3 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/LuceneSearchPage.html 11 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/LuceneSearchPage.java 74 ●●●●● patch | view | raw | blame | history
resources/gitblit.css
@@ -295,8 +295,7 @@
}
div.searchResult .highlight {
    background-color: #ffffaa;
    border: 1px solid #ffcc00;
    background-color: #ccff66;
    padding: 0 2px;
}
src/com/gitblit/wicket/pages/LuceneSearchPage.html
@@ -68,11 +68,11 @@
    <div class="row-fluid">    
    <!--  search result repeater -->
    <div class="searchResult" wicket:id="searchResults">
        <div><i wicket:id="type"></i><span class="summary" wicket:id="summary"></span></div>
        <div><i wicket:id="type"></i><span class="summary" wicket:id="summary"></span> <span wicket:id="tags" style="padding-left:10px;"></span></div>
        <div class="body">
            <div class="fragment" wicket:id="fragment"></div>
            <div><span class="author" wicket:id="author"></span> <span class="date" ><wicket:message key="gb.authored"></wicket:message> <span class="date" wicket:id="date"></span></span></div>
            <span class="repository" wicket:id="repository"></span>:<span class="branch" wicket:id="branch"></span>
            <span class="repository" wicket:id="repository"></span>:<span class="branch" wicket:id="branch"></span>
        </div>
    </div>
@@ -81,5 +81,12 @@
    </div>    
</body>
    <wicket:fragment wicket:id="tagsPanel">
        <span wicket:id="tag">
            <span wicket:id="tagLink">[tag]</span>
        </span>
    </wicket:fragment>
</wicket:extend>
</html>
src/com/gitblit/wicket/pages/LuceneSearchPage.java
@@ -19,11 +19,13 @@
import java.util.ArrayList;
import java.util.List;
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.ListMultipleChoice;
import org.apache.wicket.markup.html.form.StatelessForm;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
import org.apache.wicket.markup.repeater.data.ListDataProvider;
@@ -71,7 +73,7 @@
                repositories.add(repository);
            }
            page = WicketUtils.getPage(params);
            page = WicketUtils.getPage(params);
            
            if (params.containsKey("repositories")) {
                String value = params.getString("repositories", "");
@@ -175,13 +177,32 @@
        final DataView<SearchResult> resultsView = new DataView<SearchResult>("searchResults", resultsDp) {
            private static final long serialVersionUID = 1L;
            public void populateItem(final Item<SearchResult> item) {
                SearchResult sr = item.getModelObject();
                final SearchResult sr = item.getModelObject();
                switch(sr.type) {
                case commit: {
                    Label icon = WicketUtils.newIcon("type", "icon-refresh");
                    WicketUtils.setHtmlTooltip(icon, "commit");
                    item.add(icon);
                    item.add(new LinkPanel("summary", null, sr.summary, CommitPage.class, WicketUtils.newObjectParameter(sr.repository, sr.commitId)));
                    // show tags
                    Fragment fragment = new Fragment("tags", "tagsPanel", LuceneSearchPage.this);
                    List<String> tags = sr.tags;
                    if (tags == null) {
                        tags = new ArrayList<String>();
                    }
                    ListDataProvider<String> tagsDp = new ListDataProvider<String>(tags);
                    final DataView<String> tagsView = new DataView<String>("tag", tagsDp) {
                        private static final long serialVersionUID = 1L;
                        public void populateItem(final Item<String> item) {
                            String tag = item.getModelObject();
                            Component c = new LinkPanel("tagLink", null, tag, TagPage.class,
                                    WicketUtils.newObjectParameter(sr.repository, Constants.R_TAGS + tag));
                            WicketUtils.setCssClass(c, "tagRef");
                            item.add(c);
                        }
                    };
                    fragment.add(tagsView);
                    item.add(fragment);
                    break;
                }
                case blob: {
@@ -189,6 +210,7 @@
                    WicketUtils.setHtmlTooltip(icon, "blob");
                    item.add(icon);
                    item.add(new LinkPanel("summary", null, sr.path, BlobPage.class, WicketUtils.newPathParameter(sr.repository, sr.branch, sr.path)));
                    item.add(new Label("tags").setVisible(false));
                    break;
                }
                case issue: {
@@ -196,6 +218,7 @@
                    WicketUtils.setHtmlTooltip(icon, "issue");
                    item.add(icon);
                    item.add(new Label("summary", "issue: " + sr.issueId));
                    item.add(new Label("tags").setVisible(false));
                    break;
                }
                }
@@ -224,51 +247,4 @@
        add(new PagerPanel("topPager", page, totalPages, LuceneSearchPage.class, pagerParams));
        add(new PagerPanel("bottomPager", page, totalPages, LuceneSearchPage.class, pagerParams));
    }
//    private String buildPager(int currentPage, int count, int total) {
//        int pages = (total / count) + (total % count == 0 ? 0 : 1);
//
//        // pages are 1-indexed
//        // previous page link
//        if (currentPage <= 1) {
//            sb.append(MessageFormat.format(li, "disabled", "#", "&larr;"));
//        } else {
//            List<String> parameters = new ArrayList<String>();
//            if (!StringUtils.isEmpty(penString)) {
//                parameters.add(penString);
//            }
//            parameters.add(MessageFormat.format(pg, currentPage - 1));
//            sb.append(MessageFormat.format(li, "", StringUtils.flattenStrings(parameters, "&"), "&larr;"));
//        }
//
//        // page links in middle
//        int minpage = Math.max(1, currentPage - Math.min(2, 2));
//        int maxpage = Math.min(pages, minpage + 4);
//        for (int i = minpage; i <= maxpage; i++) {
//            String cssClass = "";
//            if (i == currentPage) {
//                cssClass = "active";
//            }
//            List<String> parameters = new ArrayList<String>();
//            if (!StringUtils.isEmpty(penString)) {
//                parameters.add(penString);
//            }
//            parameters.add(MessageFormat.format(pg, i));
//            sb.append(MessageFormat.format(li, cssClass, StringUtils.flattenStrings(parameters, "&"), i));
//        }
//
//        // next page link
//        if (currentPage == pages) {
//            sb.append(MessageFormat.format(li, "disabled", "#", "&rarr;"));
//        } else {
//            List<String> parameters = new ArrayList<String>();
//            if (!StringUtils.isEmpty(penString)) {
//                parameters.add(penString);
//            }
//            parameters.add(MessageFormat.format(pg, currentPage + 1));
//            sb.append(MessageFormat.format(li, "", StringUtils.flattenStrings(parameters, "&"), "&rarr;"));
//        }
//        return sb.toString();
//    }
}