James Moger
2011-04-25 1e83907b001a2df3f14a35fc36c47ea8f49155c4
Sprinkled some icons throughout ui. Centralized icon retrieval.
6 files added
23 files modified
294 ■■■■ changed files
gitblit.properties 16 ●●●●● patch | view | raw | blame | history
src/com/gitblit/GitBlit.java 10 ●●●● patch | view | raw | blame | history
src/com/gitblit/utils/JGitUtils.java 20 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/GitBlitWebApp.properties 6 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/RepositoryPage.java 12 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/WicketUtils.java 34 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/models/RepositoryModel.java 3 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/EditRepositoryPage.html 14 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/EditRepositoryPage.java 17 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RepositoriesPage.html 8 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/RepositoriesPage.java 34 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/SummaryPage.java 3 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/TreePage.html 1 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/TreePage.java 3 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/BasePanel.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/HistoryPanel.java 9 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/LogPanel.java 9 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/PageLinksPanel.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/PageLinksPanel.java 37 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/RefsPanel.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/SearchPanel.java 9 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/TagsPanel.java 5 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/resources/book_16x16.png patch | view | raw | blame | history
src/com/gitblit/wicket/resources/bug_16x16.png patch | view | raw | blame | history
src/com/gitblit/wicket/resources/file_16x16.png patch | view | raw | blame | history
src/com/gitblit/wicket/resources/folder_16x16.png patch | view | raw | blame | history
src/com/gitblit/wicket/resources/gitblit.css 36 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/resources/lock_16x16.png patch | view | raw | blame | history
src/com/gitblit/wicket/resources/pixel.png patch | view | raw | blame | history
gitblit.properties
@@ -66,6 +66,10 @@
# Control if email addresses are shown in web ui
web.showEmailAddresses = true
# Shows a combobox in the page links header with commit, committer, and author
# search selection.  Default search is commit.
web.showSearchTypeSelection = false
# Generates a line graph of repository activity over time on the Summary page.
# This is a real-time graph so generation may be expensive. 
web.generateActivityGraph = true
@@ -78,9 +82,9 @@
# Value must exceed 0 else default of 5 is used
web.summaryRefsCount = 5
# The number of commits to show on each page of a Log
# Value must exceed 0 else default of 50 is used
web.logPageCommitCount = 50
# The number of items to show on a page before showing the first, prev, next
# pagination links.  A default if 50 is used for any invalid value.
web.itemsPerPage = 50
# Registered extensions for google-code-prettify
web.prettyPrintExtensions = c cpp cs css htm html java js php pl prefs properties py rb sh sql xml vb
@@ -112,12 +116,6 @@
# Example per-repository regex substitutions overrides global
#regex.myrepository.bug = \\b(Bug:)(\\s*[#]?|-){0,1}(\\d+)\\b!!!<a href="http://elsewhere/bug/$3">Bug-Id: $3</a>
# Enable tickets pages for all repositories (if ticgit branch is present)
tickets.global = false
# Enable tickets pages for specified repository (if ticgit branch is present)
#tickets.myrepository = true
#
# Server Settings
src/com/gitblit/GitBlit.java
@@ -116,7 +116,7 @@
        JGitUtils.setRepositoryOwner(r, repository.owner);
        JGitUtils.setRepositoryUseTickets(r, repository.useTickets);
        JGitUtils.setRepositoryUseDocs(r, repository.useDocs);
        JGitUtils.setRepositoryUseNamedUsers(r, repository.useNamedUsers);
        JGitUtils.setRepositoryRestrictedAccess(r, repository.useRestrictedAccess);
    }
    public List<String> getRepositoryList() {
@@ -130,9 +130,15 @@
            Repository r = getRepository(repo);
            String description = JGitUtils.getRepositoryDescription(r);
            String owner = JGitUtils.getRepositoryOwner(r);
            String group = JGitUtils.getRepositoryGroup(r);
            Date lastchange = JGitUtils.getLastChange(r);
            RepositoryModel model = new RepositoryModel(repo, description, owner, lastchange);
            model.group = group;
            model.useTickets = JGitUtils.getRepositoryUseTickets(r);
            model.useDocs = JGitUtils.getRepositoryUseDocs(r);
            model.useRestrictedAccess = JGitUtils.getRepositoryRestrictedAccess(r);
            r.close();
            repositories.add(new RepositoryModel(repo, description, owner, lastchange));
            repositories.add(model);
        }
        return repositories;
    }
src/com/gitblit/utils/JGitUtils.java
@@ -749,6 +749,14 @@
        setRepositoryConfigString(r, "owner", owner);
    }
    
    public static String getRepositoryGroup(Repository r) {
        return getRepositoryConfigString(r, "group");
    }
    public static void setRepositoryGroup(Repository r, String group) {
        setRepositoryConfigString(r, "group", group);
    }
    public static boolean getRepositoryUseTickets(Repository r) {
        return getRepositoryConfigBoolean(r, "useTickets", false);
    }
@@ -765,12 +773,12 @@
        setRepositoryConfigBoolean(r, "useDocs", value);
    }
    
    public static boolean getRepositoryUseNamedUsers(Repository r) {
        return getRepositoryConfigBoolean(r, "useNamedUsers", false);
    public static boolean getRepositoryRestrictedAccess(Repository r) {
        return getRepositoryConfigBoolean(r, "restrictedAccess", false);
    }
    
    public static void setRepositoryUseNamedUsers(Repository r, boolean value) {
        setRepositoryConfigBoolean(r, "useNamedUsers", value);
    public static void setRepositoryRestrictedAccess(Repository r, boolean value) {
        setRepositoryConfigBoolean(r, "restrictedAccess", value);
    }    
    
    public static String getRepositoryConfigString(Repository r, String field) {
@@ -886,6 +894,10 @@
        metrics.add(0, total);
        return metrics;
    }
    public static RefModel getDocumentsBranch(Repository r) {
        return getTicketsBranch(r);
    }
    public static RefModel getTicketsBranch(Repository r) {
        RefModel ticgitBranch = null;
src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -66,4 +66,8 @@
gb.missingUsername = Missing Username
gb.edit = edit
gb.searchTypeTooltip = Select Search Type
gb.searchTooltip = Search Git:Blit
gb.searchTooltip = Search Git:Blit
gb.rename = rename
gb.delete = delete
gb.docs = docs
gb.restrictedAccess = restricted access
src/com/gitblit/wicket/RepositoryPage.java
@@ -140,26 +140,26 @@
    
    protected void setPersonSearchTooltip(Component component, String value, SearchType searchType) {
        if (searchType.equals(SearchType.AUTHOR)) {
            WicketUtils.setHtmlTitle(component, getString("gb.searchForAuthor") + " " + value);
            WicketUtils.setHtmlTooltip(component, getString("gb.searchForAuthor") + " " + value);
        } else if (searchType.equals(SearchType.COMMITTER)) {
            WicketUtils.setHtmlTitle(component, getString("gb.searchForCommitter") + " " + value);
            WicketUtils.setHtmlTooltip(component, getString("gb.searchForCommitter") + " " + value);
        }
    }
    
    protected void setChangeTypeTooltip(Component container, ChangeType type) {
        switch (type) {
        case ADD:
            WicketUtils.setHtmlTitle(container, getString("gb.addition"));
            WicketUtils.setHtmlTooltip(container, getString("gb.addition"));
            break;
        case COPY:
        case RENAME:
            WicketUtils.setHtmlTitle(container, getString("gb.rename"));
            WicketUtils.setHtmlTooltip(container, getString("gb.rename"));
            break;
        case DELETE:
            WicketUtils.setHtmlTitle(container, getString("gb.deletion"));
            WicketUtils.setHtmlTooltip(container, getString("gb.deletion"));
            break;
        case MODIFY:
            WicketUtils.setHtmlTitle(container, getString("gb.modification"));
            WicketUtils.setHtmlTooltip(container, getString("gb.modification"));
            break;
        }
    }
src/com/gitblit/wicket/WicketUtils.java
@@ -9,6 +9,8 @@
import org.apache.wicket.PageParameters;
import org.apache.wicket.behavior.SimpleAttributeModifier;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.apache.wicket.resource.ContextRelativeResource;
import org.eclipse.jgit.diff.DiffEntry.ChangeType;
import org.eclipse.jgit.lib.Constants;
@@ -28,7 +30,7 @@
        container.add(new SimpleAttributeModifier("style", value));
    }
    public static void setHtmlTitle(Component container, String value) {
    public static void setHtmlTooltip(Component container, String value) {
        container.add(new SimpleAttributeModifier("title", value));
    }
@@ -77,8 +79,32 @@
    public static Label createAuthorLabel(String wicketId, String author) {
        Label label = new Label(wicketId, author);
        WicketUtils.setHtmlTitle(label, author);
        WicketUtils.setHtmlTooltip(label, author);
        return label;
    }
    public static ContextImage newClearPixel(String wicketId) {
        return newImage(wicketId, "pixel.png");
    }
    public static ContextImage newBlankImage(String wicketId) {
        return newImage(wicketId, "blank.png");
    }
    public static ContextImage newImage(String wicketId, String file) {
        return newImage(wicketId, file, null);
    }
    public static ContextImage newImage(String wicketId, String file, String tooltip) {
        ContextImage img = new ContextImage(wicketId, "/com/gitblit/wicket/resources/" + file);
        if (!StringUtils.isEmpty(tooltip)) {
            setHtmlTooltip(img, tooltip);
        }
        return img;
    }
    public static ContextRelativeResource getResource(String file) {
        return new ContextRelativeResource("/com/gitblit/wicket/resources/" + file);
    }
    public static PageParameters newRepositoryParameter(String repositoryName) {
@@ -170,7 +196,7 @@
        }
        Label label = new Label(wicketId, dateString);
        WicketUtils.setCssClass(label, TimeUtils.timeAgoCss(date));
        WicketUtils.setHtmlTitle(label, title);
        WicketUtils.setHtmlTooltip(label, title);
        return label;
    }
@@ -182,7 +208,7 @@
        String dateString = df.format(date);
        String title = TimeUtils.timeAgo(date);
        Label label = new Label(wicketId, dateString);
        WicketUtils.setHtmlTitle(label, title);
        WicketUtils.setHtmlTooltip(label, title);
        return label;
    }
}
src/com/gitblit/wicket/models/RepositoryModel.java
@@ -9,10 +9,11 @@
    public String name;
    public String description;
    public String owner;
    public String group;
    public Date lastChange;
    public boolean useTickets;
    public boolean useDocs;
    public boolean useNamedUsers;
    public boolean useRestrictedAccess;
    public RepositoryModel(String name, String description, String owner, Date lastchange) {
        this.name = name;
src/com/gitblit/wicket/pages/EditRepositoryPage.html
@@ -13,13 +13,13 @@
    <form wicket:id="editForm">
        <table class="plain">
            <tbody>
                <tr><th>Name</th><td><input type="text" wicket:id="name" size="30" /></td></tr>
                <tr><th>Description</th><td><input type="text" wicket:id="description" size="80" /></td></tr>
                <tr><th>Owner</th><td><input type="text" wicket:id="owner" size="30" /></td></tr>
                <tr><th>Use Git:Blit Tickets</th><td><input type="checkbox" wicket:id="useTickets"/>distributed Git:Blit ticketing</td></tr>
                <tr><th>Use Git:Blit Docs</th><td><input type="checkbox" wicket:id="useDocs"/>distributed Git:Blit documentation</td></tr>
                <tr><th>Named User Access</th><td><input type="checkbox" wicket:id="useNamedUsers"/>not implemented</td></tr>
                <tr><td colspan="2"><input type="submit" value="Submit"/></td></tr>
                <tr><th>Name</th><td class="edit"><input type="text" wicket:id="name" size="30" tabindex="1" /></td></tr>
                <tr><th>Description</th><td class="edit"><input type="text" wicket:id="description" size="80" tabindex="2" /></td></tr>
                <tr><th>Owner</th><td class="edit"><input type="text" wicket:id="owner" size="30" tabindex="3" /></td></tr>
                <tr><th>Group</th><td class="edit"><input type="text" wicket:id="group" size="30" tabindex="4" /></td></tr>
                <tr><th>Enable Tickets</th><td class="edit"><input type="checkbox" wicket:id="useTickets" tabindex="5" /> <i>distributed Ticgit ticketing</i></td></tr>
                <tr><th>Enable Docs</th><td class="edit"><input type="checkbox" wicket:id="useDocs" tabindex="6" /> <i>distributed Markdown documentation</i></td></tr>
                <tr><td class="edit" colspan="2"><input type="submit" value="Submit" tabindex="7" /></td></tr>
            </tbody>
        </table>
    </form>    
src/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -7,8 +7,10 @@
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.CompoundPropertyModel;
import org.eclipse.jgit.lib.Repository;
import com.gitblit.GitBlit;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.AdminPage;
import com.gitblit.wicket.BasePage;
import com.gitblit.wicket.WicketUtils;
@@ -30,8 +32,17 @@
        // edit constructor
        super(params);
        isCreate = false;
        String repositoryName = WicketUtils.getRepositoryName(params);
        setupPage(new RepositoryModel(repositoryName, "", "", new Date()));
        String name = WicketUtils.getRepositoryName(params);
        Repository r = GitBlit.self().getRepository(name);
        String description = JGitUtils.getRepositoryDescription(r);
        String owner = JGitUtils.getRepositoryOwner(r);
        String group = JGitUtils.getRepositoryGroup(r);
        RepositoryModel model = new RepositoryModel(name, description, owner, new Date());
        model.group = group;
        model.useTickets = JGitUtils.getRepositoryUseTickets(r);
        model.useDocs = JGitUtils.getRepositoryUseDocs(r);
        model.useRestrictedAccess = JGitUtils.getRepositoryRestrictedAccess(r);
        setupPage(model);
    }
    protected void setupPage(final RepositoryModel repository) {
@@ -55,9 +66,9 @@
        form.add(new TextField<String>("name").setEnabled(isCreate));
        form.add(new TextField<String>("description"));
        form.add(new TextField<String>("owner"));
        form.add(new TextField<String>("group"));
        form.add(new CheckBox("useTickets"));
        form.add(new CheckBox("useDocs"));
        form.add(new CheckBox("useNamedUsers"));
        add(form);
    }
src/com/gitblit/wicket/pages/RepositoriesPage.html
@@ -20,6 +20,7 @@
            <th wicket:id="orderByRepository"><wicket:message key="gb.repository">Repository</wicket:message></th>
            <th wicket:id="orderByDescription"><wicket:message key="gb.description">Description</wicket:message></th>
            <th wicket:id="orderByOwner"><wicket:message key="gb.owner">Owner</wicket:message></th>
            <th></th>
            <th wicket:id="orderByDate"><wicket:message key="gb.lastChange">Last Change</wicket:message></th>
            <th></th>
        </tr>
@@ -28,8 +29,9 @@
                 <td><div class="list" wicket:id="repositoryName">[repository name]</div></td>
                 <td><div class="list" wicket:id="repositoryDescription">[repository description]</div></td>
                 <td class="author"><span wicket:id="repositoryOwner">[repository owner]</span></td>
                 <td class="icon"><img wicket:id="ticketsIcon" /><img wicket:id="docsIcon" /><img wicket:id="restrictedAccessIcon" /></td>
                 <td><span wicket:id="repositoryLastChange">[last change]</span></td>
                 <td><a wicket:id="repositoryLinks"><wicket:message key="gb.edit">[edit]</wicket:message></a></td>
                 <td class="rightAlign"><span wicket:id="repositoryLinks"></span></td>
               </tr>
        </tbody>
    </table>
@@ -40,6 +42,10 @@
            <a wicket:id="newRepository"><wicket:message key="gb.newRepository"></wicket:message></a> | <a wicket:id="newUser"><wicket:message key="gb.newUser"></wicket:message></a>
        </div>    
    </wicket:fragment>
    <wicket:fragment wicket:id="repositoryAdminLinks">
        <span class="link"><a wicket:id="editRepository"><wicket:message key="gb.edit">[edit]</wicket:message></a> | <a wicket:id="renameRepository"><wicket:message key="gb.rename">[rename]</wicket:message></a> | <a wicket:id="deleteRepository"><wicket:message key="gb.delete">[delete]</wicket:message></a></span>
    </wicket:fragment>
</wicket:extend>
</body>
</html>
src/com/gitblit/wicket/pages/RepositoriesPage.java
@@ -48,7 +48,7 @@
        } else {
            showAdmin = GitBlit.self().settings().getBoolean(Keys.web.allowAdministration, false);
        }
        Fragment adminLinks = new Fragment("adminPanel", "adminLinks", this);
        adminLinks.add(new BookmarkablePageLink<Void>("newRepository", EditRepositoryPage.class));
        adminLinks.add(new BookmarkablePageLink<Void>("newUser", RepositoriesPage.class));
@@ -60,7 +60,7 @@
        if (messageSource.equalsIgnoreCase("gitblit")) {
            // Read default welcome message
            try {
                ContextRelativeResource res = new ContextRelativeResource("/com/gitblit/wicket/resources/welcome.mkd");
                ContextRelativeResource res = WicketUtils.getResource("welcome.mkd");
                InputStream is = res.getResourceStream().getInputStream();
                InputStreamReader reader = new InputStreamReader(is);
                StringWriter writer = new StringWriter();
@@ -112,6 +112,25 @@
                PageParameters pp = WicketUtils.newRepositoryParameter(entry.name);
                item.add(new LinkPanel("repositoryName", "list", entry.name, SummaryPage.class, pp));
                item.add(new LinkPanel("repositoryDescription", "list", entry.description, SummaryPage.class, pp));
                if (entry.useTickets) {
                    item.add(WicketUtils.newImage("ticketsIcon", "bug_16x16.png", getString("gb.tickets")));
                } else {
                    item.add(WicketUtils.newClearPixel("ticketsIcon"));
                }
                if (entry.useDocs) {
                    item.add(WicketUtils.newImage("docsIcon", "book_16x16.png", getString("gb.docs")));
                } else {
                    item.add(WicketUtils.newClearPixel("docsIcon"));
                }
                if (entry.useRestrictedAccess) {
                    item.add(WicketUtils.newImage("restrictedAccessIcon", "lock_16x16.png", getString("gb.restrictedAccess")));
                } else {
                    item.add(WicketUtils.newClearPixel("restrictedAccessIcon"));
                }
                item.add(new Label("repositoryOwner", entry.owner));
                String lastChange = TimeUtils.timeAgo(entry.lastChange);
@@ -119,8 +138,15 @@
                item.add(lastChangeLabel);
                WicketUtils.setCssClass(lastChangeLabel, TimeUtils.timeAgoCss(entry.lastChange));
                item.add(new BookmarkablePageLink<Void>("repositoryLinks", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setVisible(showAdmin));
                if (showAdmin) {
                    Fragment repositoryLinks = new Fragment("repositoryLinks", "repositoryAdminLinks", this);
                    repositoryLinks.add(new BookmarkablePageLink<Void>("editRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)));
                    repositoryLinks.add(new BookmarkablePageLink<Void>("renameRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setEnabled(false));
                    repositoryLinks.add(new BookmarkablePageLink<Void>("deleteRepository", EditRepositoryPage.class, WicketUtils.newRepositoryParameter(entry.name)).setEnabled(false));
                    item.add(repositoryLinks);
                } else {
                    item.add(new Label("repositoryLinks"));
                }
                WicketUtils.setAlternatingBackground(item, counter);
                counter++;
            }
src/com/gitblit/wicket/pages/SummaryPage.java
@@ -7,7 +7,6 @@
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.eclipse.jgit.lib.Repository;
import org.wicketstuff.googlecharts.AbstractChartData;
import org.wicketstuff.googlecharts.Chart;
@@ -100,7 +99,7 @@
            
            add(new Chart("commitsChart", provider));
        } else {
            add(new ContextImage("commitsChart", "blank.png"));
            add(WicketUtils.newBlankImage("commitsChart"));
        }
    }
src/com/gitblit/wicket/pages/TreePage.html
@@ -24,6 +24,7 @@
    <!-- changed paths -->    
    <table style="width:100%" class="pretty">
        <tr wicket:id="changedPath">
            <td class="icon"><img wicket:id="pathIcon" /></td>
            <td><span wicket:id="pathName"></span></td>            
            <td class="size"><span wicket:id="pathSize">[path size]</span></td>
            <td class="mode"><span wicket:id="pathPermissions">[path permissions]</span></td>
src/com/gitblit/wicket/pages/TreePage.java
@@ -57,12 +57,14 @@
                item.add(new Label("pathPermissions", JGitUtils.getPermissionsFromMode(entry.mode)));
                if (entry.isParentPath) {
                    // parent .. path
                    item.add(WicketUtils.newBlankImage("pathIcon"));
                    item.add(new Label("pathSize", ""));
                    item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path)));
                    item.add(new Label("pathLinks", ""));
                } else {
                    if (entry.isTree()) {
                        // folder/tree link
                        item.add(WicketUtils.newImage("pathIcon", "folder_16x16.png"));
                        item.add(new Label("pathSize", ""));
                        item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path)));
@@ -73,6 +75,7 @@
                        item.add(links);
                    } else {
                        // blob link
                        item.add(WicketUtils.newImage("pathIcon", "file_16x16.png"));
                        item.add(new Label("pathSize", byteFormat.format(entry.size)));
                        item.add(new LinkPanel("pathName", "list", entry.name, BlobPage.class, newPathParameter(entry.path)));
src/com/gitblit/wicket/panels/BasePanel.java
@@ -25,9 +25,9 @@
    protected void setPersonSearchTooltip(Component component, String value, SearchType searchType) {
        if (searchType.equals(SearchType.AUTHOR)) {
            WicketUtils.setHtmlTitle(component, getString("gb.searchForAuthor") + " " + value);
            WicketUtils.setHtmlTooltip(component, getString("gb.searchForAuthor") + " " + value);
        } else if (searchType.equals(SearchType.COMMITTER)) {
            WicketUtils.setHtmlTitle(component, getString("gb.searchForCommitter") + " " + value);
            WicketUtils.setHtmlTooltip(component, getString("gb.searchForCommitter") + " " + value);
        }
    }
}
src/com/gitblit/wicket/panels/HistoryPanel.java
@@ -5,7 +5,6 @@
import java.util.Map;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
@@ -43,7 +42,7 @@
    public HistoryPanel(String wicketId, final String repositoryName, final String objectId, final String path, Repository r, int limit, int pageOffset) {
        super(wicketId);
        boolean pageResults = limit <= 0;
        int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.logPageCommitCount, 50);
        int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.itemsPerPage, 50);
        if (itemsPerPage <= 1) {
            itemsPerPage = 50;
        }
@@ -107,16 +106,16 @@
                // merge icon
                if (entry.getParentCount() > 1) {
                    item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png"));
                    item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png"));
                } else {
                    item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/blank.png"));
                    item.add(WicketUtils.newBlankImage("commitIcon"));
                }
                String shortMessage = entry.getShortMessage();
                String trimmedMessage = StringUtils.trimShortLog(shortMessage);
                LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
                if (!shortMessage.equals(trimmedMessage)) {
                    WicketUtils.setHtmlTitle(shortlog, shortMessage);
                    WicketUtils.setHtmlTooltip(shortlog, shortMessage);
                }
                item.add(shortlog);
src/com/gitblit/wicket/panels/LogPanel.java
@@ -5,7 +5,6 @@
import java.util.Map;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
@@ -38,7 +37,7 @@
    public LogPanel(String wicketId, final String repositoryName, final String objectId, Repository r, int limit, int pageOffset) {
        super(wicketId);
        boolean pageResults = limit <= 0;
        int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.logPageCommitCount, 50);
        int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.itemsPerPage, 50);
        if (itemsPerPage <= 1) {
            itemsPerPage = 50;
        }
@@ -87,9 +86,9 @@
                // merge icon
                if (entry.getParentCount() > 1) {
                    item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png"));
                    item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png"));
                } else {
                    item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/blank.png"));
                    item.add(WicketUtils.newBlankImage("commitIcon"));
                }
                
                // short message
@@ -97,7 +96,7 @@
                String trimmedMessage = StringUtils.trimShortLog(shortMessage);
                LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
                if (!shortMessage.equals(trimmedMessage)) {
                    WicketUtils.setHtmlTitle(shortlog, shortMessage);
                    WicketUtils.setHtmlTooltip(shortlog, shortMessage);
                }
                item.add(shortlog);
src/com/gitblit/wicket/panels/PageLinksPanel.html
@@ -9,7 +9,7 @@
    <form wicket:id="searchForm">
        <div class="search">
            <select wicket:id="searchType"/>            
            <input type="text" id="searchBox" wicket:id="searchBox" value=""/>
            <input type="text" id="searchBox" wicket:id="searchBox" size="25" value=""/>
        </div>
    </form>
        
src/com/gitblit/wicket/panels/PageLinksPanel.java
@@ -1,6 +1,5 @@
package com.gitblit.wicket.panels;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -63,14 +62,18 @@
        add(new BookmarkablePageLink<Void>("tags", TagsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
        add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newRepositoryParameter(repositoryName)));
        // Get the repository tickets setting
        boolean checkTicgit = GitBlit.self().settings().getBoolean(Keys.tickets.global, false);
        checkTicgit |= GitBlit.self().settings().getBoolean(MessageFormat.format(Keys.tickets._ROOT + ".{0}", repositoryName), false);
        // Add dynamic repository extras
        List<String> extras = new ArrayList<String>();
        if (checkTicgit && JGitUtils.getTicketsBranch(r) != null) {
        // Get the repository tickets setting
        boolean checkTickets = JGitUtils.getRepositoryUseTickets(r);
        if (checkTickets && JGitUtils.getTicketsBranch(r) != null) {
            extras.add("tickets");
        }
        // Get the repository docs setting
        boolean checkDocs = JGitUtils.getRepositoryUseDocs(r);
        if (checkDocs && JGitUtils.getDocumentsBranch(r) != null) {
            extras.add("docs");
        }
        ListDataProvider<String> extrasDp = new ListDataProvider<String>(extras);
@@ -81,7 +84,10 @@
                String extra = item.getModelObject();
                if (extra.equals("tickets")) {
                    item.add(new Label("extraSeparator", " | "));
                    item.add(new LinkPanel("extraLink", null, "tickets", TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
                    item.add(new LinkPanel("extraLink", null, getString("gb.tickets"), TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
                } else if (extra.equals("docs")) {
                    item.add(new Label("extraSeparator", " | "));
                    item.add(new LinkPanel("extraLink", null, getString("gb.docs"), TicketsPage.class, WicketUtils.newRepositoryParameter(repositoryName)));
                }
            }
        };
@@ -110,7 +116,7 @@
        private final String repositoryName;
        private final IModel<String> searchBoxModel = new Model<String>("");
        private final IModel<SearchType> searchTypeModel = new Model<SearchType>(SearchType.COMMIT);
        public SearchForm(String id, String repositoryName) {
@@ -118,11 +124,11 @@
            this.repositoryName = repositoryName;
            DropDownChoice<SearchType> searchType = new DropDownChoice<SearchType>("searchType", Arrays.asList(SearchType.values()));
            searchType.setModel(searchTypeModel);
            WicketUtils.setHtmlTitle(searchType, getString("gb.searchTypeTooltip"));
            add(searchType);
            WicketUtils.setHtmlTooltip(searchType, getString("gb.searchTypeTooltip"));
            add(searchType.setVisible(GitBlit.self().settings().getBoolean(Keys.web.showSearchTypeSelection, false)));
            TextField<String> searchBox = new TextField<String>("searchBox", searchBoxModel);
            add(searchBox);
            WicketUtils.setHtmlTitle(searchBox, getString("gb.searchTooltip"));
            WicketUtils.setHtmlTooltip(searchBox, getString("gb.searchTooltip"));
            WicketUtils.setInputPlaceholder(searchBox, getString("gb.search"));
        }
@@ -130,6 +136,13 @@
        public void onSubmit() {
            SearchType searchType = searchTypeModel.getObject();
            String searchString = searchBoxModel.getObject();
            for (SearchType type : SearchType.values()) {
                if (searchString.toLowerCase().startsWith(type.name().toLowerCase() + ":")) {
                    searchType = type;
                    searchString = searchString.substring(type.name().toLowerCase().length() + 1).trim();
                    break;
                }
            }
            setResponsePage(SearchPage.class, WicketUtils.newSearchParameter(repositoryName, null, searchString, searchType));
        }
    }
src/com/gitblit/wicket/panels/RefsPanel.java
@@ -57,7 +57,7 @@
                    c = new LinkPanel("refName", null, entry, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
                    WicketUtils.setCssClass(c, "otherRef");
                }
                WicketUtils.setHtmlTitle(c, entry);
                WicketUtils.setHtmlTooltip(c, entry);
                item.add(c);
            }
        };
src/com/gitblit/wicket/panels/SearchPanel.java
@@ -4,7 +4,6 @@
import java.util.List;
import java.util.Map;
import org.apache.wicket.markup.html.image.ContextImage;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.repeater.Item;
import org.apache.wicket.markup.repeater.data.DataView;
@@ -34,7 +33,7 @@
    public SearchPanel(String wicketId, final String repositoryName, final String objectId, final String value, SearchType searchType, Repository r, int limit, int pageOffset) {
        super(wicketId);
        boolean pageResults = limit <= 0;
        int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.logPageCommitCount, 50);
        int itemsPerPage = GitBlit.self().settings().getInteger(Keys.web.itemsPerPage, 50);
        if (itemsPerPage <= 1) {
            itemsPerPage = 50;
        }
@@ -77,9 +76,9 @@
                // merge icon
                if (entry.getParentCount() > 1) {
                    item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/commit_merge_16x16.png"));
                    item.add(WicketUtils.newImage("commitIcon", "commit_merge_16x16.png"));
                } else {
                    item.add(new ContextImage("commitIcon", "/com/gitblit/wicket/resources/blank.png"));
                    item.add(WicketUtils.newBlankImage("commitIcon"));
                }
                String shortMessage = entry.getShortMessage();
@@ -87,7 +86,7 @@
                // TODO highlight matches
                LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getName()));
                if (!shortMessage.equals(trimmedMessage)) {
                    WicketUtils.setHtmlTitle(shortlog, shortMessage);
                    WicketUtils.setHtmlTooltip(shortlog, shortMessage);
                }
                item.add(shortlog);
src/com/gitblit/wicket/panels/TagsPanel.java
@@ -3,7 +3,6 @@
import java.util.List;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.image.ContextImage;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.Fragment;
import org.apache.wicket.markup.repeater.Item;
@@ -54,9 +53,9 @@
                // tag icon
                if (entry.isAnnotatedTag()) {
                    item.add(new ContextImage("tagIcon", "/com/gitblit/wicket/resources/tag_16x16.png"));
                    item.add(WicketUtils.newImage("tagIcon", "tag_16x16.png"));
                } else {
                    item.add(new ContextImage("tagIcon", "/com/gitblit/wicket/resources/blank.png"));
                    item.add(WicketUtils.newBlankImage("tagIcon"));
                }
                
                item.add(new LinkPanel("tagName", "list name", entry.getDisplayName(), CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry.getCommitId().getName())));
src/com/gitblit/wicket/resources/book_16x16.png
src/com/gitblit/wicket/resources/bug_16x16.png
src/com/gitblit/wicket/resources/file_16x16.png
src/com/gitblit/wicket/resources/folder_16x16.png
src/com/gitblit/wicket/resources/gitblit.css
@@ -172,15 +172,20 @@
    color:yellow;
    text-align:right;
    float:right;
    padding:4px 4px 3px 3px;
    padding:4px 4px 3px 3px;
    border-left: 1px solid #8080f0;
    margin: 0px;
    height: 23px;
}
div.search input {
    vertical-align: top;
    background: url(/com/gitblit/wicket/resources/search-icon.png) no-repeat 4px center;
    color: #ddd;
    background-color: #000070;
    border: 1px solid transparent;
    padding: 0px 2px 2px 22px;
    padding: 2px 2px 2px 22px;
    margin: 0px;
}
div.search input:hover, div.search input:focus {
@@ -380,6 +385,7 @@
    float: right;
    padding: 0.4em;
    vertical-align:top;
    margin: 0px;
}
div.commitLegend span {
@@ -424,6 +430,21 @@
    padding: 8px;
}
table.plain td.edit {
    padding: 3px;
}
table.plain td.edit input {
    margin: 0px;
    outline: 1px solid transparent;
    border: 1px solid #ccc;
    padding-left:5px;
}
table.plain td.edit input:focus, table.plain td.edit input:hover{
    border: 1px solid orange;
}
table.pretty, table.repositories, table.comments {
    margin-bottom:5px;
    border-spacing: 0px;
@@ -436,8 +457,8 @@
}
table.pretty td.icon {
    padding: 0px;
    width: 20px;
    padding: 0px 0px 0px 2px;
    width: 18px;
}
table.pretty td.icon img {
@@ -456,11 +477,16 @@
table.repositories th {
    background-color:#D2C3AF;
    padding: 4px;
    border-top: 1px solid #808080;
    border-bottom: 1px solid #808080;
}
table.repositories td {
    padding: 4px;
    padding: 2px;
}
table.repositories td.icon img {
    vertical-align: top;
}
table.repositories th a {
src/com/gitblit/wicket/resources/lock_16x16.png
src/com/gitblit/wicket/resources/pixel.png