James Moger
2011-12-30 8f86e2d6469269323bcd7b0788c56cf08ac34c49
Indicate selected filters. Strip default db value from links.
6 files modified
100 ■■■■■ changed files
resources/bootstrap.gb.css 10 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/PageRegistration.java 43 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/ActivityPage.java 11 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RepositoriesPage.java 12 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RootPage.java 19 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/DropDownMenu.java 5 ●●●● patch | view | raw | blame | history
resources/bootstrap.gb.css
@@ -86,12 +86,22 @@
    border-color: #eee;
}
.topbar div > ul .menu-dropdown .selected, .nav .menu-dropdown .selected, .topbar div > ul .dropdown-menu .selected, .nav .dropdown-menu .selected {
    background-image: url("bullet_blue.png");
    background-repeat: no-repeat;
    background-position: left;
}
.topbar div > ul .menu-dropdown li a, .nav .menu-dropdown li a, .topbar div > ul .dropdown-menu li a, .nav .dropdown-menu li a {
    color: #555;
    text-shadow: none;
    outline: 0;
}
.topbar ul .menu-dropdown li a, .topbar ul .dropdown-menu li a {
    padding: 4px 22px;
}
topbar div>ul .menu-dropdown li a:hover,.nav .menu-dropdown li a:hover,.topbar div>ul .dropdown-menu li a:hover,.nav .dropdown-menu li a:hover{
    background-color: #000070;
    background-repeat:no-repeat;
src/com/gitblit/wicket/PageRegistration.java
@@ -76,19 +76,17 @@
        private static final long serialVersionUID = 1L;
        final PageParameters params;
        final PageParameters parameters;
        final String displayText;
        final String parameter;
        final String value;
        final boolean isSelected;
        /**
         * Divider constructor.
         */
        public DropDownMenuItem() {
            displayText = null;
            parameter = null;
            value = null;
            params = null;
            this(null, null, null, null);
        }
        /**
@@ -114,16 +112,37 @@
            this.displayText = displayText;
            this.parameter = parameter;
            this.value = value;
            if (params == null) {
                this.params = new PageParameters();
                // no parameters specified
                parameters = new PageParameters();
                setParameter(parameter, value);
                isSelected = false;
            } else {
                this.params = new PageParameters(params);
                parameters = new PageParameters(params);
                if (parameters.containsKey(parameter)) {
                    isSelected = params.getString(parameter).equals(value);
                    if (isSelected) {
                        // already selected, so remove this enables toggling
                        parameters.remove(parameter);
                    } else {
                        // set the new selection value
                        setParameter(parameter, value);
                    }
                } else {
                    // not currently selected
                    isSelected = false;
                    setParameter(parameter, value);
                }
            }
        }
        private void setParameter(String parameter, String value) {
            if (!StringUtils.isEmpty(parameter)) {
                if (StringUtils.isEmpty(value)) {
                    this.params.remove(parameter);
                    this.parameters.remove(parameter);
                } else {
                    this.params.put(parameter, value);
                    this.parameters.put(parameter, value);
                }
            }
        }
@@ -136,13 +155,17 @@
        }
        public PageParameters getPageParameters() {
            return params;
            return parameters;
        }
        public boolean isDivider() {
            return displayText == null && value == null && parameter == null;
        }
        public boolean isSelected() {
            return isSelected;
        }
        @Override
        public int hashCode() {
            if (isDivider()) {
src/com/gitblit/wicket/pages/ActivityPage.java
@@ -109,16 +109,13 @@
        PageParameters currentParameters = getPageParameters();
        int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 14);
        if (currentParameters.containsKey("db")) {
            daysBack = currentParameters.getInt("db");
        }
        if (daysBack < 1) {
            daysBack = 14;
        if (currentParameters != null && !currentParameters.containsKey("db")) {
            currentParameters.put("db", daysBack);
        }
        // preserve time filter options on repository choices
        filters.menuItems.addAll(getRepositoryFilterItems(new PageParameters("db=" + daysBack)));
        filters.menuItems.addAll(getRepositoryFilterItems(currentParameters));
        // preserve repository filter options on time choices
        filters.menuItems.addAll(getTimeFilterItems(currentParameters));
src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -91,20 +91,16 @@
    @Override
    protected void addDropDownMenus(List<PageRegistration> pages) {
        int daysBack = 0;
        PageParameters currentParameters = getPageParameters();
        if (currentParameters != null && currentParameters.containsKey("db")) {
            daysBack = currentParameters.getInt("db");
        }
        PageParameters params = null;
        if (daysBack > 0) {
            params = new PageParameters("db=" + daysBack);
        int daysBack = GitBlit.getInteger(Keys.web.activityDuration, 14);
        if (currentParameters != null && !currentParameters.containsKey("db")) {
            currentParameters.put("db", daysBack);
        }
        DropDownMenuRegistration menu = new DropDownMenuRegistration("gb.filters",
                RepositoriesPage.class);
        // preserve time filter option on repository choices
        menu.menuItems.addAll(getRepositoryFilterItems(params));
        menu.menuItems.addAll(getRepositoryFilterItems(currentParameters));
        
        // preserve repository filter option on time choices
        menu.menuItems.addAll(getTimeFilterItems(currentParameters));
src/com/gitblit/wicket/pages/RootPage.java
@@ -171,12 +171,19 @@
    private PageParameters getRootPageParameters() {
        if (reusePageParameters()) {
            PageParameters params = getPageParameters();
            if (params != null) {
            PageParameters pp = getPageParameters();
            if (pp != null) {
                PageParameters params = new PageParameters(pp);
                // remove named repository parameter
                params.remove("r");
            }
            return params;
                // remove days back parameter if it is the default value
                if (params.containsKey("db")
                        && params.getInt("db") == GitBlit.getInteger(Keys.web.activityDuration, 14)) {
                    params.remove("db");
                }
                return params;
            }
        }
        return null;
    }
@@ -262,7 +269,7 @@
            if (addedExpression) {
                filters.add(new DropDownMenuItem());
            }
        }
        }
        return new ArrayList<DropDownMenuItem>(filters);
    }
@@ -362,7 +369,7 @@
        if (!hasParameter) {
            models.addAll(availableModels);
        }
        // time-filter the list
        if (daysBack > 0) {
            Calendar cal = Calendar.getInstance();
src/com/gitblit/wicket/panels/DropDownMenu.java
@@ -43,9 +43,12 @@
                if (entry.isDivider()) {
                    item.add(new Label("menuItem").setRenderBodyOnly(true));
                    WicketUtils.setCssClass(item, "divider");
                } else {
                } else {
                    item.add(new LinkPanel("menuItem", null, entry.toString(), menu.pageClass,
                            entry.getPageParameters()).setRenderBodyOnly(true));
                    if (entry.isSelected()) {
                        WicketUtils.setCssClass(item, "selected");
                    }
                }
            }
        };